blob: 824979944786aa1c909ffb475ce03b88a63270bc [file] [log] [blame]
Wludzik, Jozef76833cb2020-12-21 14:42:41 +01001#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
9class TriggerFactoryMock : public interfaces::TriggerFactory
10{
11 public:
12 TriggerFactoryMock()
13 {
14 using namespace testing;
15
Cezary Zwolaka4e67612021-02-18 13:16:16 +010016 ON_CALL(*this, make(_, _, _, _, _, _, _, _, _, _, _))
Wludzik, Jozef1477fe62021-01-02 11:56:10 +010017 .WillByDefault(WithArgs<1>(Invoke([](const std::string& name) {
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010018 return std::make_unique<NiceMock<TriggerMock>>(name);
19 })));
20 }
21
Wludzik, Jozef1477fe62021-01-02 11:56:10 +010022 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,
Cezary Zwolaka4e67612021-02-18 13:16:16 +010030 interfaces::TriggerManager& triggerManager,
31 interfaces::JsonStorage& triggerStorage),
Wludzik, Jozef1477fe62021-01-02 11:56:10 +010032 (const, override));
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010033
34 auto& expectMake(
35 std::optional<std::reference_wrapper<const TriggerParams>> paramsOpt,
Cezary Zwolaka4e67612021-02-18 13:16:16 +010036 const testing::Matcher<interfaces::TriggerManager&>& tm,
37 const testing::Matcher<interfaces::JsonStorage&>& triggerStorage)
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010038 {
Wludzik, Jozef1477fe62021-01-02 11:56:10 +010039 using namespace testing;
40
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010041 if (paramsOpt)
42 {
43 const TriggerParams& params = *paramsOpt;
44 return EXPECT_CALL(
Cezary Zwolaka4e67612021-02-18 13:16:16 +010045 *this, make(_, params.name(), params.isDiscrete(),
46 params.logToJournal(), params.logToRedfish(),
47 params.updateReport(), params.sensors(),
48 params.reportNames(), params.thresholdParams(), tm,
49 triggerStorage));
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010050 }
51 else
52 {
Cezary Zwolaka4e67612021-02-18 13:16:16 +010053 return EXPECT_CALL(
54 *this, make(_, _, _, _, _, _, _, _, _, tm, triggerStorage));
Wludzik, Jozef76833cb2020-12-21 14:42:41 +010055 }
56 }
57};