diff options
author | Igor Gapchuk (GitHub) <41586842+IGapchuk@users.noreply.github.com> | 2020-10-02 21:09:04 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-02 14:09:04 -0400 |
commit | fd291d7654bdee02f329a62080e1831206f24edc (patch) | |
tree | a1c992b710106d028addea5c9c0fc3622a38cb89 | |
parent | 2f823394d9a7faa93a5bd5f4a1f266bd8f546b43 (diff) | |
download | sdl_core-fd291d7654bdee02f329a62080e1831206f24edc.tar.gz |
Fix GetInteriorVehicle request wrong processes result codes from HMI (#3519)
GetInteriorVehicle request RPC should process the next result codes as success:
WRONG_LANGUAGE, RETRY, SAVED.
2 files changed, 68 insertions, 6 deletions
diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/get_interior_vehicle_data_request.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/get_interior_vehicle_data_request.cc index 2b801f7406..8d3a3d796e 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/get_interior_vehicle_data_request.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/get_interior_vehicle_data_request.cc @@ -245,7 +245,10 @@ void GetInteriorVehicleDataRequest::on_event( helpers::Compare<mobile_apis::Result::eType, helpers::EQ, helpers::ONE>( result_code, mobile_apis::Result::SUCCESS, - mobile_apis::Result::WARNINGS); + mobile_apis::Result::WARNINGS, + mobile_apis::Result::WRONG_LANGUAGE, + mobile_apis::Result::RETRY, + mobile_apis::Result::SAVED); if (mobile_apis::Result::READ_ONLY == result_code) { result = false; diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/commands/get_interior_vehicle_data_request_test.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/commands/get_interior_vehicle_data_request_test.cc index 956a53994d..20f9c27912 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/commands/get_interior_vehicle_data_request_test.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/commands/get_interior_vehicle_data_request_test.cc @@ -31,11 +31,17 @@ */ #include "rc_rpc_plugin/commands/mobile/get_interior_vehicle_data_request.h" + +#include "gtest/gtest.h" + +#include <stdint.h> +#include <chrono> +#include <thread> + #include "application_manager/commands/command_request_test.h" #include "application_manager/event_engine/event_dispatcher.h" #include "application_manager/message_helper.h" #include "application_manager/mock_application.h" -#include "gtest/gtest.h" #include "rc_rpc_plugin/mock/mock_interior_data_cache.h" #include "rc_rpc_plugin/mock/mock_interior_data_manager.h" #include "rc_rpc_plugin/mock/mock_rc_capabilities_manager.h" @@ -46,10 +52,6 @@ #include "rc_rpc_plugin/rc_module_constants.h" #include "rc_rpc_plugin/rc_rpc_plugin.h" -#include <stdint.h> -#include <chrono> -#include <thread> - using application_manager::ApplicationSet; using ::application_manager::ApplicationSharedPtr; using ::application_manager::Message; @@ -824,4 +826,61 @@ TEST_F(GetInteriorVehicleDataRequestTest, EXPECT_TRUE(climate_enable_available); } +TEST_F(GetInteriorVehicleDataRequestTest, ProcessingSuccessResultCodes) { + using rc_rpc_plugin::commands::GetInteriorVehicleDataRequest; + namespace hmi_response = application_manager::hmi_response; + namespace strings = application_manager::strings; + + std::set<hmi_apis::Common_Result::eType> success_result_codes{ + hmi_apis::Common_Result::SUCCESS, + hmi_apis::Common_Result::WARNINGS, + hmi_apis::Common_Result::WRONG_LANGUAGE, + hmi_apis::Common_Result::RETRY, + hmi_apis::Common_Result::SAVED}; + + ON_CALL(mock_interior_data_cache_, Contains(_)).WillByDefault(Return(false)); + ON_CALL(mock_interior_data_manager_, CheckRequestsToHMIFrequency(_)) + .WillByDefault(Return(true)); + + MessageSharedPtr hmi_response_message = CreateBasicMessage(); + auto& hmi_response_params = + (*hmi_response_message)[application_manager::strings::msg_params]; + hmi_response_params[strings::connection_key] = kAppId; + auto climate_control_data = + smart_objects::SmartObject(smart_objects::SmartType_Boolean); + climate_control_data = true; + + auto& msg_params = (*hmi_response_message)[strings::msg_params]; + msg_params[message_params::kModuleData][message_params::kClimateControlData] + [message_params::kClimateEnableAvailable] = climate_control_data; + msg_params[message_params::kModuleData][message_params::kModuleId] = + "00bd6d93-e093-4bf0-9784-281febe41bed"; + + MessageSharedPtr mobile_message = CreateBasicMessage(); + auto message_to_mob = CreateBasicMessage(); + + for (const auto& result_code : success_result_codes) { + hmi_response_params[hmi_response::code] = result_code; + + EXPECT_CALL(mock_rpc_service_, ManageHMICommand(_, _)) + .WillOnce(Return(true)); + EXPECT_CALL(mock_rpc_service_, ManageMobileCommand(_, _)) + .WillOnce(DoAll(SaveArg<0>(&message_to_mob), Return(true))); + + auto command = + CreateRCCommand<GetInteriorVehicleDataRequest>(mobile_message); + ASSERT_TRUE(command->Init()); + command->Run(); + + application_manager::event_engine::Event event( + hmi_apis::FunctionID::RC_GetInteriorVehicleData); + event.set_smart_object(*hmi_response_message); + command->on_event(event); + + const bool success = + (*message_to_mob)[strings::msg_params][strings::success].asBool(); + EXPECT_TRUE(success); + } +} + } // namespace rc_rpc_plugin_test |