Esempio n. 1
0
    def test_parse_fail_schema2(self):
        """kwh not a number - fails during conversion from wh to kwh"""
        data = """
        {
            "meterEnergyDetails": {
                "timeUnit": "QUARTER_OF_AN_HOUR",
                "unit": "Wh",
                "meters": [
                    {
                        "meterSerialNumber": "4154666",
                        "connectedSolaredgeDeviceSN": "670041DC-84",
                        "model": "RWND-3D-480-MB",
                        "meterType": "Production",
                        "values": [
                            {
                                "date": "2019-11-01 11:04:16",
                                "value": "not a number"
                            }
                        ]
                    }
                ]
            }
        }"""

        with self.assertRaises(SchemaValidationFailure):
            parsers.parse_intervals(data)
Esempio n. 2
0
    def test_parse_fail_schema4(self):
        """Missing date field"""
        data = """
        {
            "meterEnergyDetails": {
                "timeUnit": "QUARTER_OF_AN_HOUR",
                "unit": "Wh",
                "meters": [
                    {
                        "meterSerialNumber": "4154666",
                        "connectedSolaredgeDeviceSN": "670041DC-84",
                        "model": "RWND-3D-480-MB",
                        "meterType": "Production",
                        "values": [
                            {
                                "value": 1.2417916E7
                            }
                        ]
                    }
                ]
            }
        }"""

        with self.assertRaises(SchemaValidationFailure):
            parsers.parse_intervals(data)
Esempio n. 3
0
    def test_parse_success(self):
        """Valid data passes"""
        data = """
        {
            "meterEnergyDetails": {
                "timeUnit": "QUARTER_OF_AN_HOUR",
                "unit": "Wh",
                "meters": [
                    {
                        "meterSerialNumber": "4154666",
                        "connectedSolaredgeDeviceSN": "670041DC-84",
                        "model": "RWND-3D-480-MB",
                        "meterType": "Production",
                        "values": [
                            {
                                "date": "2019-11-01 11:04:16",
                                "value": 1.5655772E7
                            },
                            {
                                "date": "2019-11-01 11:19:15",
                                "value": 1.5682206E7
                            }
                        ]
                    },
                    {
                        "meterSerialNumber": "4161538",
                        "connectedSolaredgeDeviceSN": "7E14969E-C6",
                        "model": "RWND-3D-480-MB",
                        "meterType": "Production",
                        "values": [
                            {
                                "date": "2019-11-01 11:01:34",
                                "value": 1.2396539E7
                            },
                            {
                                "date": "2019-11-01 11:16:34",
                                "value": 1.2417916E7
                            }
                        ]
                    }
                ]
            }
        }"""

        intervals = parsers.parse_intervals(data)
        # 2 readings from each meter are loaded
        self.assertEqual(len(intervals), 4)

        self.assertEqual(intervals[0].start, datetime(2019, 11, 1, 11, 4, 16))
        # kwh is a number
        self.assertEqual(intervals[0].kwh / 1000, 15.655772)
Esempio n. 4
0
 def test_parse_fail_json(self):
     """The parser raises an exception when the response is not JSON."""
     data = """{abc123:"""
     with self.assertRaises(JsonParseFailure):
         parsers.parse_intervals(data)