blob: eaf853bd5964cc0552d6e1986f0831eb05e980be [file] [log] [blame]
William A. Kennington IIIde70ccf2022-11-20 17:18:01 -08001#pragma once
2#include "network_manager.hpp"
3
4#include <gmock/gmock.h>
5
6namespace phosphor
7{
8namespace network
9{
10
11struct MockExecutor : DelayedExecutor
12{
13 MOCK_METHOD((void), schedule, (), (override));
14 MOCK_METHOD((void), setCallback, (fu2::unique_function<void()> &&),
15 (override));
16};
17
18struct TestManagerData
19{
20 MockExecutor mockReload;
21 fu2::unique_function<void()> reloadCb;
22
23 inline MockExecutor& reloadForManager()
24 {
25 EXPECT_CALL(mockReload, setCallback(testing::_))
26 .WillOnce([&](fu2::unique_function<void()>&& cb) {
27 reloadCb = std::move(cb);
28 });
29 return mockReload;
30 }
31};
32
33struct TestManager : TestManagerData, Manager
34{
35 inline TestManager(sdbusplus::bus_t& bus, stdplus::zstring_view path,
36 const std::filesystem::path& dir) :
37 Manager(bus, reloadForManager(), path, dir)
38 {
39 }
40
41 using Manager::handleAdminState;
42};
43
44} // namespace network
45} // namespace phosphor