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, ());
 };
