async def test_sensor_creation_gen1() -> Any: """Test that an Awair gen 1 creates expected sensors.""" target = datetime(2020, 4, 10, 10, 38, 30) async with aiohttp.ClientSession() as session: with VCR.use_cassette("latest.yaml"), time_travel(target): awair = Awair(session=session, access_token=ACCESS_TOKEN) device = mock_awair_device(client=awair.client) resp = await device.air_data_latest() assert hasattr(resp, "timestamp") assert hasattr(resp, "score") assert hasattr(resp, "sensors") assert hasattr(resp, "indices") expected_sensors = [ "humidity", "temperature", "carbon_dioxide", "volatile_organic_compounds", "dust", ] assert resp is not None assert len(resp.sensors) == len(expected_sensors) assert len(resp.indices) == len(expected_sensors) for sensor in expected_sensors: assert hasattr(resp.sensors, sensor) assert hasattr(resp.indices, sensor) assert device.model == "Awair"
async def test_get_raw() -> Any: """Test that we can get the raw air data.""" target = datetime(2020, 4, 10, 10, 38, 31, 720296) async with aiohttp.ClientSession() as session: with VCR.use_cassette("raw.yaml"), time_travel(target): awair = Awair(session=session, access_token=ACCESS_TOKEN) device = mock_awair_device(client=awair.client) resp = await device.air_data_raw(from_date=(target - timedelta(minutes=30))) assert resp[0].timestamp == datetime(2020, 4, 10, 15, 38, 24, 111000) assert resp[0].score == 88.0 assert resp[0].sensors["temperature"] == 21.770000457763672 assert resp[0].indices["temperature"] == -1.0
async def test_get_fifteen_minute() -> Any: """Test that we can get the fifteen-minute avg air data.""" target = datetime(2020, 4, 10, 10, 38, 31, 252873) async with aiohttp.ClientSession() as session: with VCR.use_cassette("fifteen_minute.yaml"), time_travel(target): awair = Awair(session=session, access_token=ACCESS_TOKEN) device = mock_awair_device(client=awair.client) resp = await device.air_data_fifteen_minute( from_date=(target - timedelta(minutes=30))) assert resp[0].timestamp == datetime(2020, 4, 10, 15, 30) assert resp[0].score == 88.0 assert resp[0].sensors["temperature"] == 21.791961108936984 assert resp[0].indices["temperature"] == -1.0
async def test_get_latest() -> Any: """Test that we can get the latest air data.""" target = datetime(2020, 4, 10, 10, 38, 30) async with aiohttp.ClientSession() as session: with VCR.use_cassette("latest.yaml"), time_travel(target): awair = Awair(session=session, access_token=ACCESS_TOKEN) device = mock_awair_device(client=awair.client) resp = await device.air_data_latest() assert resp is not None assert resp.timestamp == datetime(2020, 4, 10, 15, 38, 24, 111000) assert resp.score == 88.0 assert resp.sensors["temperature"] == 21.770000457763672 assert resp.indices["temperature"] == -1.0 assert "<AirData@2020-04-10" in str(resp)
async def test_get_latest_local() -> Any: """Test that we can get the latest air data.""" target = datetime(2020, 8, 31, 22, 7, 3) async with aiohttp.ClientSession() as session: with VCR.use_cassette("latest_local.yaml"), time_travel(target): awair = AwairLocal(session=session, device_addrs=["AWAIR-ELEM-1419E1.local"]) devices = await awair.devices() assert len(devices) == 1 device = devices[0] resp = await device.air_data_latest() assert resp is not None assert resp.timestamp == datetime(2020, 8, 31, 22, 7, 3, 831000) assert resp.score == 93 assert resp.sensors["temperature"] == 19.59 assert len(resp.indices) == 0 assert "<AirData@2020-08-31" in str(resp)
async def test_sensor_creation_omni() -> Any: """Test that an Awair omni creates expected sensors.""" target = datetime(2020, 4, 10, 10, 38, 30) async with aiohttp.ClientSession() as session: with VCR.use_cassette("omni.yaml"), time_travel(target): awair = Awair(session=session, access_token=ACCESS_TOKEN) device = mock_awair_device(client=awair.client, device=MOCK_OMNI_DEVICE_ATTRS) resp = await device.air_data_latest() assert hasattr(resp, "timestamp") assert hasattr(resp, "score") assert hasattr(resp, "sensors") assert hasattr(resp, "indices") expected_sensors = [ "humidity", "temperature", "carbon_dioxide", "volatile_organic_compounds", "particulate_matter_2_5", "illuminance", "sound_pressure_level", ] assert resp is not None assert len(resp.sensors) == len(expected_sensors) for sensor in expected_sensors: assert hasattr(resp.sensors, sensor) expected_indices = [ "humidity", "temperature", "carbon_dioxide", "volatile_organic_compounds", "particulate_matter_2_5", ] assert len(resp.indices) == len(expected_indices) for sensor in expected_indices: assert hasattr(resp.indices, sensor)