1 #pragma once 2 3 #include "interfaces/trigger_factory.hpp" 4 #include "mocks/trigger_mock.hpp" 5 #include "params/trigger_params.hpp" 6 7 #include <gmock/gmock.h> 8 9 class TriggerFactoryMock : public interfaces::TriggerFactory 10 { 11 public: 12 TriggerFactoryMock() 13 { 14 using namespace testing; 15 16 ON_CALL(*this, make(_, _, _, _, _, _, _, _, _, _, _)) 17 .WillByDefault(WithArgs<1>(Invoke([](const std::string& name) { 18 return std::make_unique<NiceMock<TriggerMock>>(name); 19 }))); 20 } 21 22 MOCK_METHOD( 23 std::unique_ptr<interfaces::Trigger>, make, 24 (boost::asio::yield_context&, const std::string& name, bool isDiscrete, 25 bool logToJournal, bool logToRedfish, bool updateReport, 26 (const std::vector< 27 std::pair<sdbusplus::message::object_path, std::string>>& sensors), 28 const std::vector<std::string>& reportNames, 29 const TriggerThresholdParams& thresholdParams, 30 interfaces::TriggerManager& triggerManager, 31 interfaces::JsonStorage& triggerStorage), 32 (const, override)); 33 34 auto& expectMake( 35 std::optional<std::reference_wrapper<const TriggerParams>> paramsOpt, 36 const testing::Matcher<interfaces::TriggerManager&>& tm, 37 const testing::Matcher<interfaces::JsonStorage&>& triggerStorage) 38 { 39 using namespace testing; 40 41 if (paramsOpt) 42 { 43 const TriggerParams& params = *paramsOpt; 44 return EXPECT_CALL( 45 *this, make(_, params.name(), params.isDiscrete(), 46 params.logToJournal(), params.logToRedfish(), 47 params.updateReport(), params.sensors(), 48 params.reportNames(), params.thresholdParams(), tm, 49 triggerStorage)); 50 } 51 else 52 { 53 return EXPECT_CALL( 54 *this, make(_, _, _, _, _, _, _, _, _, tm, triggerStorage)); 55 } 56 } 57 }; 58