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/meson.build b/tests/meson.build
index 27cdb42..89c6a00 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -1,5 +1,5 @@
-gtest_dep = dependency('gtest', main: false, required: false, version: '>=1.10.0')
-gmock_dep = dependency('gmock', required: false, version: '>=1.10.0')
+gtest_dep = dependency('gtest', main: false, required: false, version: '>=1.11.0')
+gmock_dep = dependency('gmock', required: false, version: '>=1.11.0')
if not gtest_dep.found() or not gmock_dep.found()
gtest_proj = import('cmake').subproject('googletest')
gtest_dep = gtest_proj.dependency('gtest')
@@ -29,6 +29,7 @@
'../src/types/report_types.cpp',
'../src/utils/conversion_trigger.cpp',
'../src/utils/generate_id.cpp',
+ '../src/utils/messanger_service.cpp',
'src/dbus_environment.cpp',
'src/main.cpp',
'src/stubs/dbus_sensor_object.cpp',
diff --git a/tests/src/mocks/report_factory_mock.hpp b/tests/src/mocks/report_factory_mock.hpp
index cf9047f..6a7d8bd 100644
--- a/tests/src/mocks/report_factory_mock.hpp
+++ b/tests/src/mocks/report_factory_mock.hpp
@@ -37,7 +37,7 @@
WithArgs<1>(Invoke(&ReportFactoryMock::convertToLabeled)));
ON_CALL(*this,
- make(A<const std::string&>(), _, _, _, _, _, _, _, _, _, _, _))
+ make(A<const std::string&>(), _, _, _, _, _, _, _, _, _, _))
.WillByDefault(WithArgs<0>(Invoke([](const std::string& id) {
return std::make_unique<NiceMock<ReportMock>>(id);
})));
@@ -52,7 +52,7 @@
const std::vector<ReportAction>&, Milliseconds, uint64_t,
const ReportUpdates, interfaces::ReportManager&,
interfaces::JsonStorage&, std::vector<LabeledMetricParameters>,
- bool, const std::vector<std::string>&),
+ bool),
(const, override));
auto& expectMake(
@@ -69,12 +69,11 @@
params.reportingType(), params.reportActions(),
params.interval(), params.appendLimit(),
params.reportUpdates(), rm, js,
- params.metricParameters(), params.enabled(), _));
+ params.metricParameters(), params.enabled()));
}
else
{
- return EXPECT_CALL(*this,
- make(_, _, _, _, _, _, _, rm, js, _, _, _));
+ return EXPECT_CALL(*this, make(_, _, _, _, _, _, _, rm, js, _, _));
}
}
};
diff --git a/tests/src/mocks/report_manager_mock.hpp b/tests/src/mocks/report_manager_mock.hpp
index 25f40a0..872a6e6 100644
--- a/tests/src/mocks/report_manager_mock.hpp
+++ b/tests/src/mocks/report_manager_mock.hpp
@@ -8,9 +8,4 @@
{
public:
MOCK_METHOD(void, removeReport, (const interfaces::Report*), (override));
- MOCK_METHOD(void, updateReport, (const std::string& name), (override));
- MOCK_METHOD(void, updateTriggerIds,
- (const std::string& reportId, const std::string& triggerId,
- TriggerIdUpdate updateType),
- (override));
};
diff --git a/tests/src/mocks/report_mock.hpp b/tests/src/mocks/report_mock.hpp
index 6ececfc..c7c900f 100644
--- a/tests/src/mocks/report_mock.hpp
+++ b/tests/src/mocks/report_mock.hpp
@@ -23,10 +23,6 @@
MOCK_METHOD(std::string, getId, (), (override, const));
MOCK_METHOD(std::string, getPath, (), (override, const));
- MOCK_METHOD(void, updateReadings, (), (override));
- MOCK_METHOD(void, updateTriggerIds,
- (const std::string& triggerId, TriggerIdUpdate updateType),
- (override));
MOCK_METHOD(void, Die, ());
};
diff --git a/tests/src/mocks/trigger_manager_mock.hpp b/tests/src/mocks/trigger_manager_mock.hpp
index f9f898d..9377d2a 100644
--- a/tests/src/mocks/trigger_manager_mock.hpp
+++ b/tests/src/mocks/trigger_manager_mock.hpp
@@ -9,6 +9,4 @@
public:
MOCK_METHOD(void, removeTrigger, (const interfaces::Trigger* trigger),
(override));
- MOCK_METHOD(std::vector<std::string>, getTriggerIdsForReport,
- (const std::string& reportId), (const, override));
};
diff --git a/tests/src/mocks/trigger_mock.hpp b/tests/src/mocks/trigger_mock.hpp
index bb38257..cd0e5f4 100644
--- a/tests/src/mocks/trigger_mock.hpp
+++ b/tests/src/mocks/trigger_mock.hpp
@@ -23,7 +23,5 @@
MOCK_METHOD(std::string, getId, (), (const, override));
MOCK_METHOD(std::string, getPath, (), (const, override));
- MOCK_METHOD(const std::vector<std::string>&, getReportIds, (),
- (const, override));
MOCK_METHOD(void, Die, ());
};
diff --git a/tests/src/params/report_params.hpp b/tests/src/params/report_params.hpp
index f6e547e..19ea519 100644
--- a/tests/src/params/report_params.hpp
+++ b/tests/src/params/report_params.hpp
@@ -108,17 +108,6 @@
return metricParametersProperty;
}
- ReportParams& triggerIds(std::vector<std::string> val)
- {
- triggerIdsProperty = std::move(val);
- return *this;
- }
-
- std::vector<std::string> triggerIds() const
- {
- return triggerIdsProperty;
- }
-
private:
std::string reportIdProperty = "TestId";
std::string reportNameProperty = "TestReport";
@@ -144,6 +133,5 @@
"MetricId2",
CollectionTimeScope::point,
CollectionDuration(Milliseconds(0u))}}};
- std::vector<std::string> triggerIdsProperty{};
bool enabledProperty = true;
};
diff --git a/tests/src/test_report.cpp b/tests/src/test_report.cpp
index 3e6b049..4e3ce8d 100644
--- a/tests/src/test_report.cpp
+++ b/tests/src/test_report.cpp
@@ -1,6 +1,9 @@
#include "dbus_environment.hpp"
#include "fakes/clock_fake.hpp"
#include "helpers.hpp"
+#include "messages/collect_trigger_id.hpp"
+#include "messages/trigger_presence_changed_ind.hpp"
+#include "messages/update_report_ind.hpp"
#include "mocks/json_storage_mock.hpp"
#include "mocks/metric_mock.hpp"
#include "mocks/report_manager_mock.hpp"
@@ -10,6 +13,7 @@
#include "utils/clock.hpp"
#include "utils/contains.hpp"
#include "utils/conv_container.hpp"
+#include "utils/messanger.hpp"
#include "utils/transform.hpp"
#include "utils/tstring.hpp"
@@ -34,10 +38,11 @@
std::unique_ptr<ClockFake> clockFakePtr = std::make_unique<ClockFake>();
ClockFake& clockFake = *clockFakePtr;
std::unique_ptr<Report> sut;
+ utils::Messanger messanger;
MockFunction<void()> checkPoint;
- TestReport()
+ TestReport() : messanger(DbusEnvironment::getIoc())
{
clockFake.system.set(systemTimestamp);
}
@@ -86,7 +91,7 @@
params.reportUpdates(), *reportManagerMock, storageMock,
utils::convContainer<std::shared_ptr<interfaces::Metric>>(
metricMocks),
- params.enabled(), std::move(clockFakePtr), params.triggerIds());
+ params.enabled(), std::move(clockFakePtr));
}
template <class T>
@@ -256,57 +261,70 @@
EXPECT_THAT(ec, Eq(boost::system::errc::success));
}
-TEST_F(TestReport, triggerIdsAreUpdatedProperly)
+TEST_F(TestReport, updatesTriggerIdWhenTriggerIsAdded)
{
- sut->updateTriggerIds("trigger1", TriggerIdUpdate::Add);
- EXPECT_THAT(
- getProperty<std::vector<std::string>>(sut->getPath(), "TriggerIds"),
- UnorderedElementsAre("trigger1"));
+ utils::Messanger messanger(DbusEnvironment::getIoc());
- sut->updateTriggerIds("trigger2", TriggerIdUpdate::Add);
- EXPECT_THAT(
- getProperty<std::vector<std::string>>(sut->getPath(), "TriggerIds"),
- UnorderedElementsAre("trigger1", "trigger2"));
+ messanger.send(messages::TriggerPresenceChangedInd{
+ messages::Presence::Exist, "trigger1", {defaultParams.reportId()}});
+ messanger.send(messages::TriggerPresenceChangedInd{
+ messages::Presence::Exist, "trigger1", {defaultParams.reportId()}});
+ messanger.send(messages::TriggerPresenceChangedInd{
+ messages::Presence::Exist, "trigger2", {"someOtherReport"}});
+ messanger.send(messages::TriggerPresenceChangedInd{
+ messages::Presence::Exist,
+ "trigger3",
+ {"someOtherReport", defaultParams.reportId()}});
- sut->updateTriggerIds("trigger3", TriggerIdUpdate::Add);
EXPECT_THAT(
getProperty<std::vector<std::string>>(sut->getPath(), "TriggerIds"),
- UnorderedElementsAre("trigger1", "trigger2", "trigger3"));
-
- sut->updateTriggerIds("trigger1", TriggerIdUpdate::Remove);
- EXPECT_THAT(
- getProperty<std::vector<std::string>>(sut->getPath(), "TriggerIds"),
- UnorderedElementsAre("trigger2", "trigger3"));
+ UnorderedElementsAre("trigger1", "trigger3"));
}
-TEST_F(TestReport, successWhenRemovingSameTriggerIdMultipleTimes)
+TEST_F(TestReport, updatesTriggerIdWhenTriggerIsRemoved)
{
- sut->updateTriggerIds("trigger1", TriggerIdUpdate::Add);
- sut->updateTriggerIds("trigger2", TriggerIdUpdate::Add);
- sut->updateTriggerIds("trigger1", TriggerIdUpdate::Remove);
- sut->updateTriggerIds("trigger1", TriggerIdUpdate::Remove);
+ utils::Messanger messanger(DbusEnvironment::getIoc());
+
+ messanger.send(messages::TriggerPresenceChangedInd{
+ messages::Presence::Exist, "trigger1", {defaultParams.reportId()}});
+ messanger.send(messages::TriggerPresenceChangedInd{
+ messages::Presence::Exist, "trigger2", {defaultParams.reportId()}});
+ messanger.send(messages::TriggerPresenceChangedInd{
+ messages::Presence::Exist, "trigger3", {defaultParams.reportId()}});
+
+ messanger.send(messages::TriggerPresenceChangedInd{
+ messages::Presence::Removed, "trigger1", {defaultParams.reportId()}});
+ messanger.send(messages::TriggerPresenceChangedInd{
+ messages::Presence::Removed, "trigger2", {}});
+ messanger.send(messages::TriggerPresenceChangedInd{
+ messages::Presence::Removed, "trigger1", {defaultParams.reportId()}});
+
EXPECT_THAT(
getProperty<std::vector<std::string>>(sut->getPath(), "TriggerIds"),
- UnorderedElementsAre("trigger2"));
+ UnorderedElementsAre("trigger3"));
}
-TEST_F(TestReport, successWhenRemovingNonExistingTriggerId)
+TEST_F(TestReport, updatesTriggerIdWhenTriggerIsModified)
{
- sut->updateTriggerIds("trigger1", TriggerIdUpdate::Add);
- sut->updateTriggerIds("notTrigger", TriggerIdUpdate::Remove);
- EXPECT_THAT(
- getProperty<std::vector<std::string>>(sut->getPath(), "TriggerIds"),
- UnorderedElementsAre("trigger1"));
-}
+ utils::Messanger messanger(DbusEnvironment::getIoc());
-TEST_F(TestReport, noDuplicatesWhenSameTriggerIdIsAdded)
-{
- sut->updateTriggerIds("trigger1", TriggerIdUpdate::Add);
- sut->updateTriggerIds("trigger2", TriggerIdUpdate::Add);
- sut->updateTriggerIds("trigger1", TriggerIdUpdate::Add);
+ messanger.send(messages::TriggerPresenceChangedInd{
+ messages::Presence::Exist, "trigger1", {defaultParams.reportId()}});
+ messanger.send(messages::TriggerPresenceChangedInd{
+ messages::Presence::Exist, "trigger2", {defaultParams.reportId()}});
+ messanger.send(messages::TriggerPresenceChangedInd{
+ messages::Presence::Exist, "trigger3", {defaultParams.reportId()}});
+
+ messanger.send(messages::TriggerPresenceChangedInd{
+ messages::Presence::Exist, "trigger1", {defaultParams.reportId()}});
+ messanger.send(messages::TriggerPresenceChangedInd{
+ messages::Presence::Exist, "trigger2", {}});
+ messanger.send(messages::TriggerPresenceChangedInd{
+ messages::Presence::Exist, "trigger3", {defaultParams.reportId()}});
+
EXPECT_THAT(
getProperty<std::vector<std::string>>(sut->getPath(), "TriggerIds"),
- UnorderedElementsAre("trigger1", "trigger2"));
+ UnorderedElementsAre("trigger1", "trigger3"));
}
class TestReportStore :
@@ -462,29 +480,38 @@
Eq(GetParam().reportingType()));
}
-TEST_P(TestReportAllReportTypes, updateReadingsCallEnabledPropertyOff)
+TEST_P(TestReportAllReportTypes, readingsAreUpdated)
+{
+ clockFake.system.advance(10ms);
+
+ messanger.send(messages::UpdateReportInd{{sut->getId()}});
+ const auto [timestamp, readings] =
+ getProperty<Readings>(sut->getPath(), "Readings");
+
+ EXPECT_THAT(Milliseconds{timestamp}, Eq(systemTimestamp + 10ms));
+}
+
+TEST_P(TestReportAllReportTypes, readingsAreNotUpdatedWhenReportIsDisabled)
{
clockFake.system.advance(10ms);
setProperty(sut->getPath(), "Enabled", false);
- sut->updateReadings();
+ messanger.send(messages::UpdateReportInd{{sut->getId()}});
const auto [timestamp, readings] =
getProperty<Readings>(sut->getPath(), "Readings");
- EXPECT_THAT(getProperty<bool>(sut->getPath(), "Enabled"), Eq(false));
EXPECT_THAT(Milliseconds{timestamp}, Eq(0ms));
}
-TEST_P(TestReportAllReportTypes, updateReadingsCallEnabledPropertyOn)
+TEST_P(TestReportAllReportTypes, readingsAreNotUpdatedWhenReportIdDiffers)
{
clockFake.system.advance(10ms);
- sut->updateReadings();
+ messanger.send(messages::UpdateReportInd{{sut->getId() + "x"s}});
const auto [timestamp, readings] =
getProperty<Readings>(sut->getPath(), "Readings");
- EXPECT_THAT(getProperty<bool>(sut->getPath(), "Enabled"), Eq(true));
- EXPECT_THAT(Milliseconds{timestamp}, Eq(systemTimestamp + 10ms));
+ EXPECT_THAT(Milliseconds{timestamp}, Eq(0ms));
}
class TestReportOnRequestType : public TestReport
@@ -714,7 +741,7 @@
{
for (int i = 0; i < 4; i++)
{
- sut->updateReadings();
+ messanger.send(messages::UpdateReportInd{{sut->getId()}});
}
const auto [timestamp, readings] =
@@ -841,7 +868,15 @@
TEST_F(TestReportInitialization, triggerIdsPropertyIsInitialzed)
{
- sut = makeReport(ReportParams().triggerIds({"trigger1", "trigger2"}));
+ for (const auto& triggerId : {"trigger1", "trigger2"})
+ {
+ messanger.on_receive<messages::CollectTriggerIdReq>(
+ [&](const auto& msg) {
+ messanger.send(messages::CollectTriggerIdResp{triggerId});
+ });
+ }
+
+ sut = makeReport(ReportParams());
EXPECT_THAT(
getProperty<std::vector<std::string>>(sut->getPath(), "TriggerIds"),
diff --git a/tests/src/test_report_manager.cpp b/tests/src/test_report_manager.cpp
index bf76efc..fca6451 100644
--- a/tests/src/test_report_manager.cpp
+++ b/tests/src/test_report_manager.cpp
@@ -31,9 +31,6 @@
std::make_unique<NiceMock<ReportMock>>(reportParams.reportId());
ReportMock& reportMock = *reportMockPtr;
- std::unique_ptr<interfaces::TriggerManager> triggerManagerMockPtr =
- std::make_unique<NiceMock<TriggerManagerMock>>();
-
std::unique_ptr<ReportManager> sut;
MockFunction<void(std::string)> checkPoint;
@@ -43,9 +40,9 @@
EXPECT_CALL(reportFactoryMock, convertMetricParams(_, _))
.Times(AnyNumber());
- sut = std::make_unique<ReportManager>(
- std::move(reportFactoryMockPtr), std::move(storageMockPtr),
- DbusEnvironment::getObjServer(), triggerManagerMockPtr);
+ sut = std::make_unique<ReportManager>(std::move(reportFactoryMockPtr),
+ std::move(storageMockPtr),
+ DbusEnvironment::getObjServer());
}
void TearDown() override
@@ -363,52 +360,6 @@
checkPoint.Call("end");
}
-TEST_F(TestReportManager, updateReportCallsUpdateReadingsForExistReport)
-{
- reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
- .WillOnce(Return(ByMove(std::move(reportMockPtr))));
- EXPECT_CALL(reportMock, updateReadings());
-
- addReport(reportParams);
- sut->updateReport(reportParams.reportId());
-}
-
-TEST_F(TestReportManager, updateReportDoNothingIfReportDoesNotExist)
-{
- reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
- .WillOnce(Return(ByMove(std::move(reportMockPtr))));
- EXPECT_CALL(reportMock, updateReadings()).Times(0);
-
- addReport(reportParams);
- sut->updateReport("NotAReport");
-}
-
-TEST_F(TestReportManager, updateTriggerIdsUpdatesThemForExistReport)
-{
- reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
- .WillOnce(Return(ByMove(std::move(reportMockPtr))));
- EXPECT_CALL(reportMock, updateTriggerIds("Trigger1", TriggerIdUpdate::Add));
- EXPECT_CALL(reportMock,
- updateTriggerIds("Trigger2", TriggerIdUpdate::Remove));
-
- addReport(reportParams);
- sut->updateTriggerIds(reportParams.reportId(), "Trigger1",
- TriggerIdUpdate::Add);
-
- sut->updateTriggerIds(reportParams.reportId(), "Trigger2",
- TriggerIdUpdate::Remove);
-}
-
-TEST_F(TestReportManager, updateTriggerIdsDoNothingIfReportDoesNotExist)
-{
- reportFactoryMock.expectMake(reportParams, Ref(*sut), Ref(storageMock))
- .WillOnce(Return(ByMove(std::move(reportMockPtr))));
- EXPECT_CALL(reportMock, updateTriggerIds(_, _)).Times(0);
-
- addReport(reportParams);
- sut->updateTriggerIds("NotAReport", "Trigger1", TriggerIdUpdate::Add);
-}
-
class TestReportManagerWithAggregationOperationType :
public TestReportManager,
public WithParamInterface<OperationType>
@@ -462,9 +413,9 @@
void makeReportManager()
{
- sut = std::make_unique<ReportManager>(
- std::move(reportFactoryMockPtr), std::move(storageMockPtr),
- DbusEnvironment::getObjServer(), triggerManagerMockPtr);
+ sut = std::make_unique<ReportManager>(std::move(reportFactoryMockPtr),
+ std::move(storageMockPtr),
+ DbusEnvironment::getObjServer());
}
nlohmann::json data = nlohmann::json{
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);
}
diff --git a/tests/src/test_trigger_actions.cpp b/tests/src/test_trigger_actions.cpp
index b902e5a..d3e36b8 100644
--- a/tests/src/test_trigger_actions.cpp
+++ b/tests/src/test_trigger_actions.cpp
@@ -1,8 +1,12 @@
-#include "mocks/report_manager_mock.hpp"
+#include "dbus_environment.hpp"
+#include "messages/update_report_ind.hpp"
#include "trigger_actions.hpp"
+#include "utils/messanger.hpp"
#include <stdexcept>
+#include <gmock/gmock.h>
+
using namespace testing;
namespace action
@@ -218,20 +222,27 @@
class TestUpdateReport : public Test
{
public:
+ TestUpdateReport() : messanger(DbusEnvironment::getIoc())
+ {}
+
void make(std::vector<std::string> names)
{
+ messanger.on_receive<messages::UpdateReportInd>(
+ [this](const auto& msg) { updateReport.Call(msg); });
+
sut = std::make_unique<UpdateReport>(
- reportManager,
+ DbusEnvironment::getIoc(),
std::make_shared<std::vector<std::string>>(std::move(names)));
}
- NiceMock<ReportManagerMock> reportManager;
+ utils::Messanger messanger;
+ NiceMock<MockFunction<void(const messages::UpdateReportInd&)>> updateReport;
std::unique_ptr<UpdateReport> sut;
};
TEST_F(TestUpdateReport, commitWhenReportNameIsEmptyExpectNoReportUpdate)
{
- EXPECT_CALL(reportManager, updateReport(_)).Times(0);
+ EXPECT_CALL(updateReport, Call(_)).Times(0);
make({});
sut->commit("Test", Milliseconds{100'000}, 90.0);
@@ -240,10 +251,8 @@
TEST_F(TestUpdateReport, commitExpectReportUpdate)
{
std::vector<std::string> names = {"Report1", "Report2", "Report3"};
- for (const auto& name : names)
- {
- EXPECT_CALL(reportManager, updateReport(name));
- }
+ EXPECT_CALL(updateReport,
+ Call(FieldsAre(UnorderedElementsAreArray(names))));
make(names);
sut->commit("Test", Milliseconds{100'000}, 90.0);