Removed dependency to TriggerManager

introduces Messanger class which allows to send messages directly to
subscribed targets, which allows to break dependencies between classes.

Testes:
- All unit tests are passing
- Links are correctly updated
- Report is correctly updated by Trigger Action

Signed-off-by: Krzysztof Grobelny <krzysztof.grobelny@intel.com>
Change-Id: I32d3aaba22f9ec07e611f53fe553bd27e1c04c6d
diff --git a/tests/src/test_trigger.cpp b/tests/src/test_trigger.cpp
index 5ad2a81..cfb08e9 100644
--- a/tests/src/test_trigger.cpp
+++ b/tests/src/test_trigger.cpp
@@ -1,5 +1,7 @@
 #include "dbus_environment.hpp"
 #include "helpers.hpp"
+#include "messages/collect_trigger_id.hpp"
+#include "messages/trigger_presence_changed_ind.hpp"
 #include "mocks/json_storage_mock.hpp"
 #include "mocks/report_manager_mock.hpp"
 #include "mocks/sensor_mock.hpp"
@@ -10,6 +12,7 @@
 #include "trigger.hpp"
 #include "trigger_manager.hpp"
 #include "utils/conversion_trigger.hpp"
+#include "utils/messanger.hpp"
 #include "utils/transform.hpp"
 #include "utils/tstring.hpp"
 
@@ -44,9 +47,18 @@
     std::unique_ptr<TriggerFactoryMock> triggerFactoryMockPtr =
         std::make_unique<NiceMock<TriggerFactoryMock>>();
     testing::NiceMock<StorageMock> storageMock;
+    NiceMock<MockFunction<void(const messages::TriggerPresenceChangedInd)>>
+        triggerPresenceChanged;
     std::vector<std::shared_ptr<interfaces::Threshold>> thresholdMocks;
+    utils::Messanger messanger;
     std::unique_ptr<Trigger> sut;
 
+    TestTrigger() : messanger(DbusEnvironment::getIoc())
+    {
+        messanger.on_receive<messages::TriggerPresenceChangedInd>(
+            [this](const auto& msg) { triggerPresenceChanged.Call(msg); });
+    }
+
     void SetUp() override
     {
         sut = makeTrigger(triggerParams);
@@ -73,8 +85,7 @@
                 params.reportIds().begin(), params.reportIds().end()),
             std::vector<std::shared_ptr<interfaces::Threshold>>(thresholdMocks),
             *triggerManagerMockPtr, storageMock, *triggerFactoryMockPtr,
-            SensorMock::makeSensorMocks(params.sensors()),
-            *reportManagerMockPtr);
+            SensorMock::makeSensorMocks(params.sensors()));
     }
 
     static interfaces::JsonStorage::FilePath to_file_path(std::string name)
@@ -140,7 +151,6 @@
 {
     EXPECT_THAT(sut->getId(), Eq(triggerParams.id()));
     EXPECT_THAT(sut->getPath(), Eq(Trigger::triggerDir + triggerParams.id()));
-    EXPECT_THAT(sut->getReportIds(), Eq(triggerParams.reportIds()));
 }
 
 TEST_F(TestTrigger, setPropertyNameToCorrectValue)
@@ -159,56 +169,28 @@
     EXPECT_THAT(
         getProperty<std::vector<std::string>>(sut->getPath(), "ReportNames"),
         Eq(newNames));
-    EXPECT_THAT(
-        getProperty<std::vector<std::string>>(sut->getPath(), "ReportNames"),
-        Eq(sut->getReportIds()));
 }
 
-TEST_F(TestTrigger, settingPropertyReportNamesUptadesTriggerIdsInReports)
+TEST_F(TestTrigger, sendsUpdateWhenReportNamesChanges)
 {
-    std::vector<std::string> newPropertyVal = {"abc", "one", "two"};
+    const std::vector<std::string> newPropertyVal = {"abc", "one", "two"};
 
-    for (const auto& reportId : newPropertyVal)
-    {
-        EXPECT_CALL(
-            *reportManagerMockPtr,
-            updateTriggerIds(reportId, sut->getId(), TriggerIdUpdate::Add));
-    }
-    for (const auto& reportId : triggerParams.reportIds())
-    {
-        EXPECT_CALL(
-            *reportManagerMockPtr,
-            updateTriggerIds(reportId, sut->getId(), TriggerIdUpdate::Remove));
-    }
+    EXPECT_CALL(triggerPresenceChanged,
+                Call(FieldsAre(messages::Presence::Exist, triggerParams.id(),
+                               UnorderedElementsAreArray(newPropertyVal))));
 
     EXPECT_THAT(setProperty(sut->getPath(), "ReportNames", newPropertyVal),
                 Eq(boost::system::errc::success));
 }
 
-TEST_F(TestTrigger, settingPropertyReportNamesWillNotRemoveTriggerIdsInReports)
+TEST_F(TestTrigger, sendsUpdateWhenReportNamesChangesToSameValue)
 {
-    std::vector<std::string> newPropertyVal = triggerParams.reportIds();
-    std::vector<std::string> newNames{"abc", "one", "two"};
-    newPropertyVal.insert(newPropertyVal.end(), newNames.begin(),
-                          newNames.end());
+    const std::vector<std::string> newPropertyVal = triggerParams.reportIds();
 
-    for (const auto& reportId : newNames)
-    {
-        EXPECT_CALL(
-            *reportManagerMockPtr,
-            updateTriggerIds(reportId, sut->getId(), TriggerIdUpdate::Add));
-    }
-
-    EXPECT_THAT(setProperty(sut->getPath(), "ReportNames", newPropertyVal),
-                Eq(boost::system::errc::success));
-}
-
-TEST_F(TestTrigger,
-       settingPropertyReportNamesToSameValueWillNotUpdateTriggerIdsInReports)
-{
-    std::vector<std::string> newPropertyVal = triggerParams.reportIds();
-
-    EXPECT_CALL(*reportManagerMockPtr, updateTriggerIds(_, _, _)).Times(0);
+    EXPECT_CALL(
+        triggerPresenceChanged,
+        Call(FieldsAre(messages::Presence::Exist, triggerParams.id(),
+                       UnorderedElementsAreArray(triggerParams.reportIds()))));
 
     EXPECT_THAT(setProperty(sut->getPath(), "ReportNames", newPropertyVal),
                 Eq(boost::system::errc::success));
@@ -217,9 +199,9 @@
 TEST_F(TestTrigger,
        DISABLED_settingPropertyReportNamesThrowsExceptionWhenDuplicateReportIds)
 {
-    std::vector<std::string> newPropertyVal{"trigger1", "trigger2", "trigger1"};
+    std::vector<std::string> newPropertyVal{"report1", "report2", "report1"};
 
-    EXPECT_CALL(*reportManagerMockPtr, updateTriggerIds(_, _, _)).Times(0);
+    EXPECT_CALL(triggerPresenceChanged, Call(_)).Times(0);
 
     EXPECT_THAT(setProperty(sut->getPath(), "ReportNames", newPropertyVal),
                 Eq(boost::system::errc::invalid_argument));
@@ -306,12 +288,17 @@
 {
     EXPECT_CALL(storageMock, remove(to_file_path(sut->getId())));
     EXPECT_CALL(*triggerManagerMockPtr, removeTrigger(sut.get()));
-    for (const auto& reportId : triggerParams.reportIds())
-    {
-        EXPECT_CALL(
-            *reportManagerMockPtr,
-            updateTriggerIds(reportId, sut->getId(), TriggerIdUpdate::Remove));
-    }
+
+    auto ec = deleteTrigger(sut->getPath());
+    EXPECT_THAT(ec, Eq(boost::system::errc::success));
+}
+
+TEST_F(TestTrigger, sendUpdateWhenTriggerIsDeleted)
+{
+    EXPECT_CALL(triggerPresenceChanged,
+                Call(FieldsAre(messages::Presence::Removed, triggerParams.id(),
+                               UnorderedElementsAre())));
+
     auto ec = deleteTrigger(sut->getPath());
     EXPECT_THAT(ec, Eq(boost::system::errc::success));
 }
@@ -363,12 +350,10 @@
 
 TEST_F(TestTriggerInitialization, creatingTriggerUpdatesTriggersIdsInReports)
 {
-    for (const auto& reportId : triggerParams.reportIds())
-    {
-        EXPECT_CALL(*reportManagerMockPtr,
-                    updateTriggerIds(reportId, triggerParams.id(),
-                                     TriggerIdUpdate::Add));
-    }
+    EXPECT_CALL(
+        triggerPresenceChanged,
+        Call(FieldsAre(messages::Presence::Exist, triggerParams.id(),
+                       UnorderedElementsAreArray(triggerParams.reportIds()))));
 
     sut = makeTrigger(triggerParams);
 }