def test_http_get(mocked_responses: aioresponses, cli_runner: CliRunner) -> None: """It exits with a status code of zero.""" credential_store = FileCredentialStore(os.path.expanduser(CREDENTIAL_PATH)) credential_store[CONF_LOCALE] = Credential(TEST_LOCALE) credential_store[CONF_ACCOUNT_ID] = Credential(TEST_ACCOUNT_ID) credential_store[CONF_VIN] = Credential(TEST_VIN) credential_store[GIGYA_LOGIN_TOKEN] = Credential(TEST_LOGIN_TOKEN) credential_store[GIGYA_PERSON_ID] = Credential(TEST_PERSON_ID) credential_store[GIGYA_JWT] = JWTCredential(fixtures.get_jwt()) fixtures.inject_get_charging_settings(mocked_responses, "single") endpoint = ("/commerce/v1/accounts/{account_id}" "/kamereon/kca/car-adapter" "/v1/cars/{vin}/charging-settings") result = cli_runner.invoke( __main__.main, f"http get {endpoint}", ) assert result.exit_code == 0, result.exception expected_output = ( "{'data': {'type': 'Car', 'id': 'VF1AAAAA555777999', 'attributes': {" "'mode': 'scheduled', 'schedules': [" "{'id': 1, 'activated': True, " "'monday': {'startTime': 'T12:00Z', 'duration': 15}, " "'tuesday': {'startTime': 'T04:30Z', 'duration': 420}, " "'wednesday': {'startTime': 'T22:30Z', 'duration': 420}, " "'thursday': {'startTime': 'T22:00Z', 'duration': 420}, " "'friday': {'startTime': 'T12:15Z', 'duration': 15}, " "'saturday': {'startTime': 'T12:30Z', 'duration': 30}, " "'sunday': {'startTime': 'T12:45Z', 'duration': 45}}" "]}}}\n") assert expected_output == result.output
def test_charge_schedule_show(mocked_responses: aioresponses, cli_runner: CliRunner) -> None: """It exits with a status code of zero.""" initialise_credential_store(include_account_id=True, include_vin=True) fixtures.inject_get_charging_settings(mocked_responses) result = cli_runner.invoke(__main__.main, "charge schedule show") assert result.exit_code == 0, result.exception expected_output = ("Mode: scheduled\n" "\n" "Schedule ID: 1 [Active]\n" "Day Start time End time Duration\n" "--------- ------------ ---------- ----------\n" "Monday 13:00 13:15 0:15:00\n" "Tuesday 05:30 12:30 7:00:00\n" "Wednesday 23:30 06:30 7:00:00\n" "Thursday 23:00 06:00 7:00:00\n" "Friday 13:15 13:30 0:15:00\n" "Saturday 13:30 14:00 0:30:00\n" "Sunday 13:45 14:30 0:45:00\n" "\n" "Schedule ID: 2\n" "Day Start time End time Duration\n" "--------- ------------ ---------- ----------\n" "Monday 02:00 02:15 0:15:00\n" "Tuesday 03:00 03:30 0:30:00\n" "Wednesday 04:00 04:45 0:45:00\n" "Thursday 05:00 06:00 1:00:00\n" "Friday 06:00 07:15 1:15:00\n" "Saturday 07:00 08:30 1:30:00\n" "Sunday 08:00 09:45 1:45:00\n") assert expected_output == result.output
async def test_get_charging_settings(vehicle: RenaultVehicle, mocked_responses: aioresponses) -> None: """Test get_charging_settings.""" fixtures.inject_get_charging_settings(mocked_responses) assert await vehicle.get_charging_settings()
def test_charging_settings_deactivate(mocked_responses: aioresponses, cli_runner: CliRunner) -> None: """It exits with a status code of zero.""" initialise_credential_store(include_account_id=True, include_vin=True) fixtures.inject_get_charging_settings(mocked_responses) url = fixtures.inject_set_charge_schedule(mocked_responses, "schedules") result = cli_runner.invoke(__main__.main, "charge schedule deactivate 1") assert result.exit_code == 0, result.exception expected_json = { "data": { "attributes": { "schedules": [ { "id": 1, "activated": False, "monday": { "duration": 15, "startTime": "T12:00Z" }, "tuesday": { "duration": 420, "startTime": "T04:30Z" }, "wednesday": { "duration": 420, "startTime": "T22:30Z" }, "thursday": { "duration": 420, "startTime": "T22:00Z" }, "friday": { "duration": 15, "startTime": "T12:15Z" }, "saturday": { "duration": 30, "startTime": "T12:30Z" }, "sunday": { "duration": 45, "startTime": "T12:45Z" }, }, { "id": 2, "activated": False, "monday": { "startTime": "T01:00Z", "duration": 15 }, "tuesday": { "startTime": "T02:00Z", "duration": 30 }, "wednesday": { "startTime": "T03:00Z", "duration": 45 }, "thursday": { "startTime": "T04:00Z", "duration": 60 }, "friday": { "startTime": "T05:00Z", "duration": 75 }, "saturday": { "startTime": "T06:00Z", "duration": 90 }, "sunday": { "startTime": "T07:00Z", "duration": 105 }, }, ] }, "type": "ChargeSchedule", } } expected_output = "{'schedules': [{'id': 1, 'activated': True, " request: RequestCall = mocked_responses.requests[("POST", URL(url))][0] assert expected_json == request.kwargs["json"] assert result.output.startswith(expected_output)
def test_charging_settings_set(mocked_responses: aioresponses, cli_runner: CliRunner) -> None: """It exits with a status code of zero.""" initialise_credential_store(include_account_id=True, include_vin=True) fixtures.inject_get_charging_settings(mocked_responses, "multi") url = fixtures.inject_set_charge_schedule(mocked_responses, "schedules") monday = "--monday clear" friday = "--friday T23:30Z,480" saturday = "--saturday 19:30,120" result = cli_runner.invoke( __main__.main, f"charge schedule set 1 {monday} {friday} {saturday}") assert result.exit_code == 0, result.exception expected_json = { "data": { "attributes": { "schedules": [ { "id": 1, "activated": True, "monday": None, "tuesday": { "startTime": "T00:00Z", "duration": 450 }, "wednesday": { "startTime": "T00:00Z", "duration": 450 }, "thursday": { "startTime": "T00:00Z", "duration": 450 }, "friday": { "startTime": "T23:30Z", "duration": 480 }, "saturday": { "startTime": "T18:30Z", "duration": 120 }, "sunday": { "startTime": "T00:00Z", "duration": 450 }, }, { "id": 2, "activated": True, "monday": { "startTime": "T23:30Z", "duration": 15 }, "tuesday": { "startTime": "T23:30Z", "duration": 15 }, "wednesday": { "startTime": "T23:30Z", "duration": 15 }, "thursday": { "startTime": "T23:30Z", "duration": 15 }, "friday": { "startTime": "T23:30Z", "duration": 15 }, "saturday": { "startTime": "T23:30Z", "duration": 15 }, "sunday": { "startTime": "T23:30Z", "duration": 15 }, }, { "id": 3, "activated": False, "monday": None, "tuesday": None, "wednesday": None, "thursday": None, "friday": None, "saturday": None, "sunday": None, }, { "id": 4, "activated": False, "monday": None, "tuesday": None, "wednesday": None, "thursday": None, "friday": None, "saturday": None, "sunday": None, }, { "id": 5, "activated": False, "monday": None, "tuesday": None, "wednesday": None, "thursday": None, "friday": None, "saturday": None, "sunday": None, }, ], }, "type": "ChargeSchedule", } } expected_output = "{'schedules': [{'id': 1, 'activated': True, " request: RequestCall = mocked_responses.requests[("POST", URL(url))][0] assert expected_json == request.kwargs["json"] assert result.output.startswith(expected_output)