#pragma once #include "interfaces/trigger_factory.hpp" #include "mocks/trigger_mock.hpp" #include "params/trigger_params.hpp" #include "trigger.hpp" #include "utils/conversion_trigger.hpp" #include "utils/transform.hpp" #include class TriggerFactoryMock : public interfaces::TriggerFactory { public: TriggerFactoryMock() { using namespace testing; ON_CALL(*this, make(A(), _, _, _, _, _, _, _)) .WillByDefault(WithArgs<0>(Invoke([](const std::string& id) { return std::make_unique>(id); }))); } MOCK_METHOD(std::unique_ptr, make, (const std::string& id, const std::string& name, const std::vector& triggerActions, const std::vector& reportIds, interfaces::TriggerManager& triggerManager, interfaces::JsonStorage& triggerStorage, const LabeledTriggerThresholdParams& labeledThresholdParams, const std::vector& labeledSensorsInfo), (const, override)); MOCK_METHOD(std::vector, getLabeledSensorsInfo, (boost::asio::yield_context&, const SensorsInfo&), (const, override)); MOCK_METHOD(std::vector, getLabeledSensorsInfo, (const SensorsInfo&), (const, override)); MOCK_METHOD(void, updateThresholds, (std::vector> & currentThresholds, const std::string& triggerId, const std::vector& triggerActions, const std::shared_ptr>& reportIds, const Sensors& sensors, const LabeledTriggerThresholdParams& newParams), (const, override)); MOCK_METHOD(void, updateSensors, (Sensors & currentSensors, const std::vector& senorParams), (const, override)); auto& expectMake( std::optional paramsOpt, const testing::Matcher& tm, const testing::Matcher& triggerStorage) { using namespace testing; if (paramsOpt) { const TriggerParams& params = *paramsOpt; const auto sensorInfos = utils::fromLabeledSensorsInfo(params.sensors()); ON_CALL(*this, getLabeledSensorsInfo(_, sensorInfos)) .WillByDefault(Return(params.sensors())); return EXPECT_CALL( *this, make(params.id(), params.name(), utils::transform(params.triggerActions(), [](const auto& action) { return actionToString(action); }), params.reportIds(), tm, triggerStorage, params.thresholdParams(), params.sensors())); } else { const std::vector dummy = { {"service99", "/xyz/openbmc_project/sensors/temperature/BMC_Temp99", "metadata99"}}; ON_CALL(*this, getLabeledSensorsInfo(_, _)) .WillByDefault(Return(dummy)); return EXPECT_CALL(*this, make(_, _, _, _, tm, triggerStorage, _, dummy)); } } };