def test_vehicle_status_prompt(mocked_responses: aioresponses, cli_runner: CliRunner) -> None: """It exits with a status code of zero.""" fixtures.inject_gigya_all(mocked_responses) fixtures.inject_get_person(mocked_responses) # Injected for account selection fixtures.inject_get_vehicles(mocked_responses, "zoe_40.1.json") vehicle2_urlpath = f"accounts/account-id-2/vehicles?{fixtures.DEFAULT_QUERY_STRING}" fixtures.inject_data( mocked_responses, vehicle2_urlpath, "vehicles/zoe_40.1.json", ) # Injected again for vehicle selection fixtures.inject_get_vehicles(mocked_responses, "zoe_40.1.json") fixtures.inject_get_vehicle_details(mocked_responses, "zoe_40.1.json") fixtures.inject_get_vehicle_contracts(mocked_responses, "fr_FR.2.json") fixtures.inject_vehicle_status(mocked_responses) result = cli_runner.invoke( __main__.main, "status", input= f"{TEST_LOCALE}\nN\n{TEST_USERNAME}\n{TEST_PASSWORD}\n1\ny\n1\ny\n", ) assert result.exit_code == 0, result.exception expected_output = ( f"Please select a locale [{getdefaultlocale()[0]}]: {TEST_LOCALE}\n" "Do you want to save the locale to the credential store? [y/N]: N\n" "\n" f"User: {TEST_USERNAME}\n" "Password: \n" "\n" " ID Type Vehicles\n" "-- ------------ --------- ----------\n" " 1 account-id-1 MYRENAULT 1\n" " 2 account-id-2 SFDC 1\n" "\n" "Please select account [1]: 1\n" "Do you want to save the account ID to the credential store? [y/N]: y\n" "\n" " Vin Registration Brand Model\n" "-- ----------------- -------------- ------- -------\n" " 1 VF1AAAAA555777999 REG-NUMBER RENAULT ZOE\n" "\n" "Please select vehicle [1]: 1\n" "Do you want to save the VIN to the credential store? [y/N]: y\n" "\n" f"{EXPECTED_STATUS['zoe_40.1.json']}") assert expected_output == result.output
def test_vehicle_status_no_prompt(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[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_vehicle_status(mocked_responses) result = cli_runner.invoke( __main__.main, f"--account {TEST_ACCOUNT_ID} --vin {TEST_VIN} status") assert result.exit_code == 0, result.exception assert EXPECTED_BATTERY_STATUS == result.output
def test_vehicle_status(mocked_responses: aioresponses, cli_runner: CliRunner, filename: str) -> None: """It exits with a status code of zero.""" filename = os.path.basename(filename) 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_vehicle_details(mocked_responses, filename) fixtures.inject_get_vehicle_contracts(mocked_responses, "fr_FR.2.json") fixtures.inject_vehicle_status(mocked_responses) result = cli_runner.invoke(__main__.main, "status") assert result.exit_code == 0, result.exception assert EXPECTED_STATUS[filename] == result.output