Add ReportManager and Report unit tests

Introduced ReportFactory to seperate Report and ReportManager
unit tests. Implemented mocks for Report, ReportManager and
ReportFactory classes. Added tests for DBus Properties and Methods
provided by telemetry service.

Tested:
 - Ran unit-tests with success

Change-Id: I1860e280d26ee4becc52de98dd65e5697d26b376
Signed-off-by: Wludzik, Jozef <jozef.wludzik@intel.com>
diff --git a/src/report_manager.hpp b/src/report_manager.hpp
index 177a03c..2427b76 100644
--- a/src/report_manager.hpp
+++ b/src/report_manager.hpp
@@ -1,6 +1,8 @@
 #pragma once
 
-#include "report.hpp"
+#include "interfaces/report.hpp"
+#include "interfaces/report_factory.hpp"
+#include "interfaces/report_manager.hpp"
 
 #include <sdbusplus/asio/object_server.hpp>
 
@@ -8,11 +10,11 @@
 #include <memory>
 #include <vector>
 
-class ReportManager
+class ReportManager : public interfaces::ReportManager
 {
   public:
     ReportManager(
-        const std::shared_ptr<sdbusplus::asio::connection>& bus,
+        std::unique_ptr<interfaces::ReportFactory> reportFactory,
         const std::shared_ptr<sdbusplus::asio::object_server>& objServer);
     ~ReportManager() = default;
 
@@ -21,15 +23,20 @@
     ReportManager& operator=(ReportManager&) = delete;
     ReportManager& operator=(ReportManager&&) = delete;
 
+    void removeReport(const interfaces::Report* report) override;
     static bool verifyScanPeriod(const uint64_t scanPeriod);
-    void removeReport(const Report* report);
 
   private:
+    std::unique_ptr<interfaces::ReportFactory> reportFactory;
     std::shared_ptr<sdbusplus::asio::object_server> objServer;
     std::unique_ptr<sdbusplus::asio::dbus_interface> reportManagerIface;
-    std::vector<std::unique_ptr<Report>> reports;
+    std::vector<std::unique_ptr<interfaces::Report>> reports;
 
   public:
     static constexpr uint32_t maxReports{20};
     static constexpr std::chrono::milliseconds minInterval{1000};
+    static constexpr const char* reportManagerIfaceName =
+        "xyz.openbmc_project.Telemetry.ReportManager";
+    static constexpr const char* reportManagerPath =
+        "/xyz/openbmc_project/Telemetry/Reports";
 };