xref: /openbmc/phosphor-networkd/test/test_network_manager.hpp (revision ad205028c6e4e9deaf4f9ea886d38081b6f26f37)
1  #pragma once
2  #include "network_manager.hpp"
3  
4  #include <gmock/gmock.h>
5  
6  namespace phosphor
7  {
8  namespace network
9  {
10  
11  struct MockExecutor : DelayedExecutor
12  {
13      MOCK_METHOD((void), schedule, (), (override));
14      MOCK_METHOD((void), setCallback, (fu2::unique_function<void()>&&),
15                  (override));
16  };
17  
18  struct TestManagerData
19  {
20      MockExecutor mockReload;
21      fu2::unique_function<void()> reloadCb;
22  
reloadForManagerphosphor::network::TestManagerData23      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  
33  struct TestManager : TestManagerData, Manager
34  {
TestManagerphosphor::network::TestManager35      inline TestManager(stdplus::PinnedRef<sdbusplus::bus_t> bus,
36                         stdplus::zstring_view path,
37                         const std::filesystem::path& dir) :
38          Manager(bus, reloadForManager(), path, dir)
39      {}
40  
41      using Manager::handleAdminState;
42  };
43  
44  } // namespace network
45  } // namespace phosphor
46