12f9f9b87SWludzik, Jozef #pragma once 22f9f9b87SWludzik, Jozef 32f9f9b87SWludzik, Jozef #include "interfaces/report_factory.hpp" 42f9f9b87SWludzik, Jozef #include "mocks/report_mock.hpp" 5d2238194SKrzysztof Grobelny #include "params/report_params.hpp" 6dcc4e193SKrzysztof Grobelny #include "utils/transform.hpp" 72f9f9b87SWludzik, Jozef 82f9f9b87SWludzik, Jozef #include <gmock/gmock.h> 92f9f9b87SWludzik, Jozef 102f9f9b87SWludzik, Jozef class ReportFactoryMock : public interfaces::ReportFactory 112f9f9b87SWludzik, Jozef { 12dcc4e193SKrzysztof Grobelny static std::vector<LabeledMetricParameters> convertToLabeled(const ReadingParameters & readingParams)13dcc4e193SKrzysztof Grobelny convertToLabeled(const ReadingParameters& readingParams) 14dcc4e193SKrzysztof Grobelny { 15dcc4e193SKrzysztof Grobelny return utils::transform(readingParams, [](const auto& params) { 16dcc4e193SKrzysztof Grobelny return LabeledMetricParameters( 17*c7935fa1SPatrick Williams utils::transform(std::get<0>(params), 18b8cc78ddSKrzysztof Grobelny [](const auto& sensorData) { 193a1c297aSPatrick Williams return LabeledSensorInfo("Service", std::get<0>(sensorData), 20b8cc78ddSKrzysztof Grobelny std::get<1>(sensorData)); 21dcc4e193SKrzysztof Grobelny }), 2251497a0cSKrzysztof Grobelny utils::toOperationType(std::get<1>(params)), 23cff70c14SKrzysztof Grobelny utils::toCollectionTimeScope(std::get<2>(params)), 24cff70c14SKrzysztof Grobelny CollectionDuration(Milliseconds(std::get<3>(params)))); 25dcc4e193SKrzysztof Grobelny }); 26dcc4e193SKrzysztof Grobelny } 27dcc4e193SKrzysztof Grobelny 282f9f9b87SWludzik, Jozef public: ReportFactoryMock()292f9f9b87SWludzik, Jozef ReportFactoryMock() 302f9f9b87SWludzik, Jozef { 312f9f9b87SWludzik, Jozef using namespace testing; 322f9f9b87SWludzik, Jozef 33fdb06a14SSzymon Dompke ON_CALL(*this, convertMetricParams(_)) 34fdb06a14SSzymon Dompke .WillByDefault( 35fdb06a14SSzymon Dompke WithArgs<0>(Invoke(&ReportFactoryMock::convertToLabeled))); 36fdb06a14SSzymon Dompke 37dcc4e193SKrzysztof Grobelny ON_CALL(*this, convertMetricParams(_, _)) 38dcc4e193SKrzysztof Grobelny .WillByDefault( 39dcc4e193SKrzysztof Grobelny WithArgs<1>(Invoke(&ReportFactoryMock::convertToLabeled))); 40dcc4e193SKrzysztof Grobelny 41b8cc78ddSKrzysztof Grobelny ON_CALL(*this, 42493e62ebSKrzysztof Grobelny make(A<const std::string&>(), _, _, _, _, _, _, _, _, _, _, _)) 43b8cc78ddSKrzysztof Grobelny .WillByDefault(WithArgs<0>(Invoke([](const std::string& id) { 44b8cc78ddSKrzysztof Grobelny return std::make_unique<NiceMock<ReportMock>>(id); 45d2238194SKrzysztof Grobelny }))); 462f9f9b87SWludzik, Jozef } 472f9f9b87SWludzik, Jozef 48dcc4e193SKrzysztof Grobelny MOCK_METHOD(std::vector<LabeledMetricParameters>, convertMetricParams, 49dcc4e193SKrzysztof Grobelny (boost::asio::yield_context&, const ReadingParameters&), 502f9f9b87SWludzik, Jozef (const, override)); 51dcc4e193SKrzysztof Grobelny 52fdb06a14SSzymon Dompke MOCK_METHOD(std::vector<LabeledMetricParameters>, convertMetricParams, 53fdb06a14SSzymon Dompke (const ReadingParameters&), (const, override)); 54fdb06a14SSzymon Dompke 55fdb06a14SSzymon Dompke MOCK_METHOD(void, updateMetrics, 56fdb06a14SSzymon Dompke (std::vector<std::shared_ptr<interfaces::Metric>> & metrics, 5732305f14SSzymon Dompke bool enabled, const std::vector<LabeledMetricParameters>&), 58fdb06a14SSzymon Dompke (const, override)); 59fdb06a14SSzymon Dompke 60d2238194SKrzysztof Grobelny MOCK_METHOD(std::unique_ptr<interfaces::Report>, make, 61b8cc78ddSKrzysztof Grobelny (const std::string&, const std::string&, const ReportingType, 6251497a0cSKrzysztof Grobelny const std::vector<ReportAction>&, Milliseconds, uint64_t, 6351497a0cSKrzysztof Grobelny const ReportUpdates, interfaces::ReportManager&, 6451497a0cSKrzysztof Grobelny interfaces::JsonStorage&, std::vector<LabeledMetricParameters>, 65493e62ebSKrzysztof Grobelny bool, Readings), 66d2238194SKrzysztof Grobelny (const, override)); 67d2238194SKrzysztof Grobelny expectMake(std::optional<std::reference_wrapper<const ReportParams>> paramsRef,const testing::Matcher<interfaces::ReportManager &> & rm,const testing::Matcher<interfaces::JsonStorage &> & js)68d2238194SKrzysztof Grobelny auto& expectMake( 69d2238194SKrzysztof Grobelny std::optional<std::reference_wrapper<const ReportParams>> paramsRef, 70d2238194SKrzysztof Grobelny const testing::Matcher<interfaces::ReportManager&>& rm, 71d2238194SKrzysztof Grobelny const testing::Matcher<interfaces::JsonStorage&>& js) 72d2238194SKrzysztof Grobelny { 73b4ef22e4SSzymon Dompke using testing::_; 74d2238194SKrzysztof Grobelny if (paramsRef) 75d2238194SKrzysztof Grobelny { 76d2238194SKrzysztof Grobelny const ReportParams& params = *paramsRef; 777e098e93SLukasz Kazmierczak return EXPECT_CALL( 78493e62ebSKrzysztof Grobelny *this, 79493e62ebSKrzysztof Grobelny make(params.reportId(), params.reportName(), 80b8cc78ddSKrzysztof Grobelny params.reportingType(), params.reportActions(), 81b8cc78ddSKrzysztof Grobelny params.interval(), params.appendLimit(), 82493e62ebSKrzysztof Grobelny params.reportUpdates(), rm, js, params.metricParameters(), 83493e62ebSKrzysztof Grobelny params.enabled(), params.readings())); 84d2238194SKrzysztof Grobelny } 85d2238194SKrzysztof Grobelny else 86d2238194SKrzysztof Grobelny { 87493e62ebSKrzysztof Grobelny return EXPECT_CALL(*this, 88493e62ebSKrzysztof Grobelny make(_, _, _, _, _, _, _, rm, js, _, _, _)); 89d2238194SKrzysztof Grobelny } 90d2238194SKrzysztof Grobelny } 912f9f9b87SWludzik, Jozef }; 92