{
    "test_file_exists": {
        "test_name": "Checking if the mandatory files according to the contribution manual are present",
        "success": true,
        "message": [
            "The file 'schema.json' exists",
            "The file 'examples/example.json' exists",
            "The file 'examples/example-normalized.json' exists",
            "The file 'examples/example.jsonld' exists",
            "The file 'examples/example-normalized.jsonld' exists",
            "The file 'notes.yaml' exists",
            "The file 'ADOPTERS.yaml' exists"
        ]
    },
    "test_valid_json": {
        "test_name": "Checking that the mandatory json files are valid json files",
        "success": true,
        "message": [
            "file schema.json is a valid json",
            "file examples/example.json is a valid json",
            "file examples/example-normalized.json is a valid json",
            "file examples/example.jsonld is a valid json",
            "file examples/example-normalized.jsonld is a valid json"
        ]
    },
    "test_yaml_files": {
        "test_name": "Checking that ADOPTERS.yaml and notes.yaml are valid YAML files",
        "success": true,
        "message": [
            "The file 'ADOPTERS.yaml' is a valid YAML file.",
            "The file 'notes.yaml' is a valid YAML file."
        ]
    },
    "test_schema_descriptions": {
        "test_name": "Checking that the schema is properly described in all its attributes",
        "success": false,
        "message": [
            "The schema has a root description.",
            "The attribute 'allOf[0].id' is properly documented.",
            "The attribute 'allOf[0].dateCreated' is properly documented.",
            "The attribute 'allOf[0].dateModified' is properly documented.",
            "The attribute 'allOf[0].source' is properly documented.",
            "The attribute 'allOf[0].name' is properly documented.",
            "The attribute 'allOf[0].alternateName' is properly documented.",
            "The attribute 'allOf[0].description' is properly documented.",
            "The attribute 'allOf[0].dataProvider' is properly documented.",
            "The attribute 'allOf[0].owner' is properly documented.",
            "The attribute 'allOf[0].owner.items.anyOf[0]' is properly documented.",
            "The attribute 'allOf[0].owner.items.anyOf[1]' is properly documented.",
            "The attribute 'allOf[0].seeAlso' is properly documented.",
            "The attribute 'allOf[1].location' is properly documented.",
            "The attribute 'allOf[1].address' is properly documented.",
            "The attribute 'allOf[1].address.streetAddress' is properly documented.",
            "The attribute 'allOf[1].address.addressLocality' is properly documented.",
            "The attribute 'allOf[1].address.addressRegion' is properly documented.",
            "The attribute 'allOf[1].address.addressCountry' is properly documented.",
            "The attribute 'allOf[1].address.postalCode' is properly documented.",
            "The attribute 'allOf[1].address.postOfficeBoxNumber' is properly documented.",
            "The attribute 'allOf[1].address.streetNr' is properly documented.",
            "The attribute 'allOf[1].address.district' is properly documented.",
            "The attribute 'allOf[1].areaServed' is properly documented.",
            "The attribute 'allOf[2].type' is properly documented.",
            "The attribute 'allOf[2].refDevice' is properly documented.",
            "The attribute 'allOf[2].refDevice.items' is properly documented.",
            "The attribute 'allOf[2].refTargetDevice' is properly documented.",
            "The attribute 'allOf[2].refTargetDevice.items' is properly documented.",
            "The attribute 'allOf[2].dateEnergyMeteringStarted' is properly documented.",
            "The attribute 'allOf[2].totalActiveEnergyImport' is properly documented.",
            "The attribute 'allOf[2].totalReactiveEnergyImport' is properly documented.",
            "The attribute 'allOf[2].totalApparentEnergyImport' is properly documented.",
            "The attribute 'allOf[2].totalActiveEnergyExport' is properly documented.",
            "The attribute 'allOf[2].totalReactiveEnergyExport' is properly documented.",
            "The attribute 'allOf[2].totalApparentEnergyExport' is properly documented.",
            "The attribute 'allOf[2].frequency' is properly documented.",
            "The attribute 'allOf[2].totalActivePower' is properly documented.",
            "The attribute 'allOf[2].totalReactivePower' is properly documented.",
            "The attribute 'allOf[2].totalApparentPower' is properly documented.",
            "The attribute 'allOf[2].activeEnergyImport' is properly documented.",
            "*** The attribute 'allOf[2].activeEnergyImport.L1' is missing a description.",
            "*** The attribute 'allOf[2].activeEnergyImport.L2' is missing a description.",
            "*** The attribute 'allOf[2].activeEnergyImport.L3' is missing a description.",
            "The attribute 'allOf[2].reactiveEnergyImport' is properly documented.",
            "*** The attribute 'allOf[2].reactiveEnergyImport.L1' is missing a description.",
            "*** The attribute 'allOf[2].reactiveEnergyImport.L2' is missing a description.",
            "*** The attribute 'allOf[2].reactiveEnergyImport.L3' is missing a description.",
            "The attribute 'allOf[2].apparentEnergyImport' is properly documented.",
            "*** The attribute 'allOf[2].apparentEnergyImport.L1' is missing a description.",
            "*** The attribute 'allOf[2].apparentEnergyImport.L2' is missing a description.",
            "*** The attribute 'allOf[2].apparentEnergyImport.L3' is missing a description.",
            "The attribute 'allOf[2].activeEnergyExport' is properly documented.",
            "*** The attribute 'allOf[2].activeEnergyExport.L1' is missing a description.",
            "*** The attribute 'allOf[2].activeEnergyExport.L2' is missing a description.",
            "*** The attribute 'allOf[2].activeEnergyExport.L3' is missing a description.",
            "The attribute 'allOf[2].reactiveEnergyExport' is properly documented.",
            "*** The attribute 'allOf[2].reactiveEnergyExport.L1' is missing a description.",
            "*** The attribute 'allOf[2].reactiveEnergyExport.L2' is missing a description.",
            "*** The attribute 'allOf[2].reactiveEnergyExport.L3' is missing a description.",
            "The attribute 'allOf[2].apparentEnergyExport' is properly documented.",
            "*** The attribute 'allOf[2].apparentEnergyExport.L1' is missing a description.",
            "*** The attribute 'allOf[2].apparentEnergyExport.L2' is missing a description.",
            "*** The attribute 'allOf[2].apparentEnergyExport.L3' is missing a description.",
            "*** The attribute 'allOf[2].activePower' has an invalid description: *** Invalid format for 'Units:'. Expected format: Units:'value'.",
            "*** The attribute 'allOf[2].activePower.L1' is missing a description.",
            "*** The attribute 'allOf[2].activePower.L2' is missing a description.",
            "*** The attribute 'allOf[2].activePower.L3' is missing a description.",
            "The attribute 'allOf[2].reactivePower' is properly documented.",
            "*** The attribute 'allOf[2].reactivePower.L1' is missing a description.",
            "*** The attribute 'allOf[2].reactivePower.L2' is missing a description.",
            "*** The attribute 'allOf[2].reactivePower.L3' is missing a description.",
            "The attribute 'allOf[2].apparentPower' is properly documented.",
            "*** The attribute 'allOf[2].apparentPower.L1' is missing a description.",
            "*** The attribute 'allOf[2].apparentPower.L2' is missing a description.",
            "*** The attribute 'allOf[2].apparentPower.L3' is missing a description.",
            "The attribute 'allOf[2].totalPowerFactor' is properly documented.",
            "The attribute 'allOf[2].powerFactor' is properly documented.",
            "*** The attribute 'allOf[2].powerFactor.L1' is missing a description.",
            "*** The attribute 'allOf[2].powerFactor.L2' is missing a description.",
            "*** The attribute 'allOf[2].powerFactor.L3' is missing a description.",
            "The attribute 'allOf[2].totalDisplacementPowerFactor' is properly documented.",
            "The attribute 'allOf[2].displacementPowerFactor' is properly documented.",
            "*** The attribute 'allOf[2].displacementPowerFactor.L1' is missing a description.",
            "*** The attribute 'allOf[2].displacementPowerFactor.L2' is missing a description.",
            "*** The attribute 'allOf[2].displacementPowerFactor.L3' is missing a description.",
            "The attribute 'allOf[2].current' is properly documented.",
            "*** The attribute 'allOf[2].current.L1' is missing a description.",
            "*** The attribute 'allOf[2].current.L2' is missing a description.",
            "*** The attribute 'allOf[2].current.L3' is missing a description.",
            "*** The attribute 'allOf[2].current.N' is missing a description.",
            "The attribute 'allOf[2].phaseVoltage' is properly documented.",
            "*** The attribute 'allOf[2].phaseVoltage.L1' is missing a description.",
            "*** The attribute 'allOf[2].phaseVoltage.L2' is missing a description.",
            "*** The attribute 'allOf[2].phaseVoltage.L3' is missing a description.",
            "The attribute 'allOf[2].phaseToPhaseVoltage' is properly documented.",
            "*** The attribute 'allOf[2].phaseToPhaseVoltage.L12' is missing a description.",
            "*** The attribute 'allOf[2].phaseToPhaseVoltage.L23' is missing a description.",
            "*** The attribute 'allOf[2].phaseToPhaseVoltage.L31' is missing a description.",
            "The attribute 'allOf[2].thdVoltage' is properly documented.",
            "*** The attribute 'allOf[2].thdVoltage.L1' is missing a description.",
            "*** The attribute 'allOf[2].thdVoltage.L2' is missing a description.",
            "*** The attribute 'allOf[2].thdVoltage.L3' is missing a description.",
            "The attribute 'allOf[2].thdCurrent' is properly documented.",
            "*** The attribute 'allOf[2].thdCurrent.L1' is missing a description.",
            "*** The attribute 'allOf[2].thdCurrent.L2' is missing a description.",
            "*** The attribute 'allOf[2].thdCurrent.L3' is missing a description."
        ]
    },
    "test_schema_metadata": {
        "test_name": "Validating schema.json metadata",
        "success": false,
        "message": [
            "*** $schema is not pointing to https://json-schema.org/draft/2020-12/schema (found: http://json-schema.org/schema#)",
            "Warning: modelTags is empty",
            "$schemaVersion is valid",
            "title is valid",
            "description is valid",
            "$id is valid and points to a real site",
            "Warning: derivedFrom is empty",
            "required section is valid and contains 'id' and 'type'",
            "license is present and not empty"
        ]
    },
    "test_string_incorrect": {
        "test_name": "Checking invalid string attributes",
        "success": true,
        "message": []
    },
    "test_valid_keyvalues_examples": {
        "test_name": "Checking that example files are valid against the schema",
        "success": false,
        "message": [
            "example.json: JSON data is valid against the schema.",
            "example.jsonld: *** JSON data is not valid against the schema: {'@type': 'DateTime', '@value': '2018-07-07T15:05:59.408Z'} is not of type 'string'\n\nFailed validating 'type' in schema['allOf'][2]['properties']['dateEnergyMeteringStarted']:\n    {'description': \"Property. Model:'http://schema.org/DateTime'. The \"\n                    'starting date for metering energy.',\n     'format': 'date-time',\n     'type': 'string'}\n\nOn instance['dateEnergyMeteringStarted']:\n    {'@type': 'DateTime', '@value': '2018-07-07T15:05:59.408Z'}",
            "All @context URLs are valid."
        ]
    },
    "test_valid_ngsiv2": {
        "test_name": "Validating example-normalized.json as NGSI v2 normalized format",
        "success": false,
        "message": [
            "*** name has not type",
            "*** description has not type"
        ]
    },
    "test_valid_ngsild": {
        "test_name": "Validating example-normalized.jsonld as NGSI-LD format",
        "success": true,
        "message": [
            "All @context URLs are valid."
        ]
    },
    "test_duplicated_attributes": {
        "test_name": "Checking that all payload attributes are defined in the schema",
        "success": true,
        "message": []
    },
    "test_array_object_structure": {
        "test_name": "Checking array and object attributes structure",
        "success": true,
        "message": []
    },
    "email": "alberto.abella@fiware.org"
}