def test_asr(self): config = models.Config.load() config.location = "75005" config.unit = NabWeatherd.UNIT_CELSIUS config.weather_animation_type = "weather" config.save() service = NabWeatherd() writer = MockWriter() service.writer = writer packet = { "type": "asr_event", "nlu": { "intent": "nabweatherd/forecast" } } async_to_sync(service.process_nabd_packet)(packet) self.assertEqual(len(writer.written), 3) packet = writer.written[0] packet_json = json.loads(packet.decode("utf8")) self.assertEqual(packet_json["type"], "info") self.assertEqual(packet_json["info_id"], "nabweatherd_rain") packet = writer.written[1] packet_json = json.loads(packet.decode("utf8")) self.assertEqual(packet_json["type"], "info") self.assertEqual(packet_json["info_id"], "nabweatherd") self.assertTrue("animation" in packet_json) packet = writer.written[2] packet_json = json.loads(packet.decode("utf8")) self.assertEqual(packet_json["type"], "message") self.assertTrue("signature" in packet_json) self.assertTrue("body" in packet_json)
def test_perform_rain(self): service = NabWeatherd() writer = MockWriter() service.writer = writer config_t = ( TestNabWeatherdDB.RENNES_LOCATION_JSON, NabWeatherd.UNIT_CELSIUS, "rain_only", 3, None, False, ) expiration = datetime.datetime(2019, 4, 22, 0, 0, 0) async_to_sync(service.perform)(expiration, "today", config_t) self.assertEqual(len(writer.written), 3) packet = writer.written[0] packet_json = json.loads(packet.decode("utf8")) self.assertEqual(packet_json["type"], "info") self.assertEqual(packet_json["info_id"], "nabweatherd_rain") packet = writer.written[1] packet_json = json.loads(packet.decode("utf8")) self.assertEqual(packet_json["type"], "info") self.assertEqual(packet_json["info_id"], "nabweatherd") self.assertFalse("animation" in packet_json) packet = writer.written[2] packet_json = json.loads(packet.decode("utf8")) self.assertEqual(packet_json["type"], "message") self.assertTrue("signature" in packet_json) self.assertTrue("body" in packet_json)
def test_aliases(self): service = NabWeatherd() weather_class = service.normalize_weather_class("J_W1_0-N_4") self.assertEqual(weather_class, "J_W1_0-N_1") weather_class = service.normalize_weather_class("J_W1_0-N_1") self.assertEqual(weather_class, "J_W1_0-N_1") weather_class = service.normalize_weather_class("J_W2_4-N_1") self.assertEqual(weather_class, "J_W1_3-N_0")
def test_perform(self): service = NabWeatherd() writer = MockWriter() service.writer = writer config_t = ("75005", NabWeatherd.UNIT_CELSIUS, "rain") expiration = datetime.datetime(2019, 4, 22, 0, 0, 0) async_to_sync(service.perform)(expiration, "today", config_t) self.assertEqual(len(writer.written), 2) packet = writer.written[0] packet_json = json.loads(packet.decode("utf8")) self.assertEqual(packet_json["type"], "info") self.assertEqual(packet_json["info_id"], "nabweatherd") self.assertTrue("animation" in packet_json) packet = writer.written[1] packet_json = json.loads(packet.decode("utf8")) self.assertEqual(packet_json["type"], "message") self.assertTrue("signature" in packet_json) self.assertTrue("body" in packet_json)
def test_fetch_info_data(self): service = NabWeatherd() data = async_to_sync(service.fetch_info_data)( ("75005", NabWeatherd.UNIT_CELSIUS, "both")) self.assertTrue("current_weather_class" in data) self.assertTrue("today_forecast_weather_class" in data) self.assertTrue("today_forecast_max_temp" in data) self.assertTrue("tomorrow_forecast_weather_class" in data) self.assertTrue("tomorrow_forecast_max_temp" in data) self.assertTrue("next_rain" in data) self.assertTrue("weather_animation_type" in data)
def test_fetch_info_data(self): service = NabWeatherd() data = async_to_sync(service.fetch_info_data)(( TestNabWeatherdDB.RENNES_LOCATION_JSON, NabWeatherd.UNIT_CELSIUS, "weather_and_rain", 3, None, False, )) self.assertTrue("current_weather_class" in data) self.assertTrue("today_forecast_weather_class" in data) self.assertTrue("today_forecast_max_temp" in data) self.assertTrue("tomorrow_forecast_weather_class" in data) self.assertTrue("tomorrow_forecast_max_temp" in data) self.assertTrue("next_rain" in data) self.assertTrue("weather_animation_type" in data)
def test_aliases(self): service = NabWeatherd() weather_class = service.normalize_weather_class("Pluie forte") self.assertEqual(weather_class, "Pluie forte") weather_class = service.normalize_weather_class("None") self.assertEqual(weather_class, None)