def test_available_attributes(self): """Check that available_attributes returns exactly the arguments we have in our test data.""" backend_mock = BackendMock() with mock.patch('bimmer_connected.account.requests', new=backend_mock): account = ConnectedDriveAccount(TEST_USERNAME, TEST_PASSWORD, TEST_REGION) for vin, dirname in TEST_VEHICLE_DATA.items(): vehicle = account.get_vehicle(vin) print(vehicle.name) status_data = load_response_json('{}/status.json'.format(dirname)) existing_attributes = status_data['vehicleStatus'].keys() existing_attributes = sorted([ATTRIBUTE_MAPPING.get(a, a) for a in existing_attributes if a not in MISSING_ATTRIBUTES]) expected_attributes = sorted([a for a in vehicle.available_attributes if a not in ADDITIONAL_ATTRIBUTES]) self.assertListEqual(existing_attributes, expected_attributes)
def test_parsing_attributes(self): """Test parsing different attributes of the vehicle. Just make sure parsing that no exception is raised and we get not-None values. """ backend_mock = BackendMock() # list of attributes that are ignored at the moment ignored_attributes = [ATTRIBUTE_MAPPING.get(a, a) for a in MISSING_ATTRIBUTES] with mock.patch('bimmer_connected.account.requests', new=backend_mock): backend_mock.setup_default_vehicles() account = ConnectedDriveAccount(TEST_USERNAME, TEST_PASSWORD, TEST_REGION) account.update_vehicle_states() for vehicle in account.vehicles: print(vehicle.name) for attribute in (a for a in vehicle.available_attributes if a not in ignored_attributes): self.assertIsNotNone(getattr(vehicle.state, attribute), attribute)