1 #pragma once 2 3 #include "interfaces/trigger_factory.hpp" 4 #include "mocks/trigger_mock.hpp" 5 #include "params/trigger_params.hpp" 6 #include "trigger.hpp" 7 #include "utils/conversion_trigger.hpp" 8 9 #include <gmock/gmock.h> 10 11 class TriggerFactoryMock : public interfaces::TriggerFactory 12 { 13 public: 14 TriggerFactoryMock() 15 { 16 using namespace testing; 17 18 ON_CALL(*this, make(A<const std::string&>(), _, _, _, _, _, _, _, _, _)) 19 .WillByDefault(WithArgs<0>(Invoke([](const std::string& name) { 20 return std::make_unique<NiceMock<TriggerMock>>(name); 21 }))); 22 } 23 24 MOCK_METHOD(std::unique_ptr<interfaces::Trigger>, make, 25 (const std::string& name, bool isDiscrete, bool logToJournal, 26 bool logToRedfish, bool updateReport, 27 const std::vector<std::string>& reportNames, 28 interfaces::TriggerManager& triggerManager, 29 interfaces::JsonStorage& triggerStorage, 30 const LabeledTriggerThresholdParams& labeledThresholdParams, 31 const std::vector<LabeledSensorInfo>& labeledSensorsInfo), 32 (const, override)); 33 34 MOCK_METHOD(std::vector<LabeledSensorInfo>, getLabeledSensorsInfo, 35 (boost::asio::yield_context&, const SensorsInfo&), 36 (const, override)); 37 38 auto& expectMake( 39 std::optional<TriggerParams> paramsOpt, 40 const testing::Matcher<interfaces::TriggerManager&>& tm, 41 const testing::Matcher<interfaces::JsonStorage&>& triggerStorage) 42 { 43 using namespace testing; 44 45 if (paramsOpt) 46 { 47 const TriggerParams& params = *paramsOpt; 48 49 const auto sensorInfos = 50 utils::fromLabeledSensorsInfo(params.sensors()); 51 52 ON_CALL(*this, getLabeledSensorsInfo(_, sensorInfos)) 53 .WillByDefault(Return(params.sensors())); 54 55 return EXPECT_CALL( 56 *this, 57 make(params.name(), params.isDiscrete(), params.logToJournal(), 58 params.logToRedfish(), params.updateReport(), 59 params.reportNames(), tm, triggerStorage, 60 params.thresholdParams(), params.sensors())); 61 } 62 else 63 { 64 const std::vector<LabeledSensorInfo> dummy = { 65 {"service99", 66 "/xyz/openbmc_project/sensors/temperature/BMC_Temp99", 67 "metadata99"}}; 68 69 ON_CALL(*this, getLabeledSensorsInfo(_, _)) 70 .WillByDefault(Return(dummy)); 71 72 return EXPECT_CALL( 73 *this, make(_, _, _, _, _, _, tm, triggerStorage, _, dummy)); 74 } 75 } 76 }; 77