xref: /openbmc/telemetry/tests/src/mocks/trigger_factory_mock.hpp (revision a4e6761643f2ff306d6928ea5537eb151fae79a0)
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