1 #include "mocks/report_manager_mock.hpp" 2 #include "trigger_actions.hpp" 3 4 #include <stdexcept> 5 6 using namespace testing; 7 8 namespace action 9 { 10 11 using LogParam = std::pair<numeric::Type, double>; 12 13 class TestLogToJournal : public Test, public WithParamInterface<LogParam> 14 { 15 public: 16 void SetUp() override 17 { 18 auto [type, threshold] = GetParam(); 19 sut = std::make_unique<LogToJournal>(type, threshold); 20 } 21 22 std::unique_ptr<LogToJournal> sut; 23 }; 24 25 INSTANTIATE_TEST_SUITE_P( 26 LogToJournalParams, TestLogToJournal, 27 Values(std::make_pair(numeric::Type::upperCritical, 91.1), 28 std::make_pair(numeric::Type::lowerCritical, 91.2), 29 std::make_pair(numeric::Type::upperWarning, 88.5), 30 std::make_pair(numeric::Type::lowerWarning, 88.6))); 31 32 TEST_P(TestLogToJournal, commitAnActionDoesNotThrow) 33 { 34 EXPECT_NO_THROW(sut->commit("Test", 100'000, 90.0)); 35 } 36 37 class TestLogToJournalThrow : public TestLogToJournal 38 {}; 39 40 INSTANTIATE_TEST_SUITE_P( 41 _, TestLogToJournalThrow, 42 Values(std::make_pair(numeric::Type::upperCritical, 90.0), 43 std::make_pair(static_cast<numeric::Type>(-1), 88.0), 44 std::make_pair(static_cast<numeric::Type>(123), 123.0))); 45 46 TEST_P(TestLogToJournalThrow, commitAnActionExpectThrow) 47 { 48 EXPECT_THROW(sut->commit("Test", 100'000, 90.0), std::runtime_error); 49 } 50 51 class TestLogToRedfish : public Test, public WithParamInterface<LogParam> 52 { 53 public: 54 void SetUp() override 55 { 56 auto [type, threshold] = GetParam(); 57 sut = std::make_unique<LogToRedfish>(type, threshold); 58 } 59 60 std::unique_ptr<LogToRedfish> sut; 61 }; 62 63 INSTANTIATE_TEST_SUITE_P( 64 LogToRedfishParams, TestLogToRedfish, 65 Values(std::make_pair(numeric::Type::upperCritical, 91.1), 66 std::make_pair(numeric::Type::lowerCritical, 91.4), 67 std::make_pair(numeric::Type::upperWarning, 88.6), 68 std::make_pair(numeric::Type::lowerWarning, 88.5))); 69 70 TEST_P(TestLogToRedfish, commitExpectNoThrow) 71 { 72 EXPECT_NO_THROW(sut->commit("Test", 100'000, 90.0)); 73 } 74 75 class TestLogToRedfishThrow : public TestLogToRedfish 76 {}; 77 78 INSTANTIATE_TEST_SUITE_P( 79 _, TestLogToRedfishThrow, 80 Values(std::make_pair(numeric::Type::upperCritical, 90.0), 81 std::make_pair(static_cast<numeric::Type>(-1), 88.5), 82 std::make_pair(static_cast<numeric::Type>(123), 123.6))); 83 84 TEST_P(TestLogToRedfishThrow, commitExpectToThrow) 85 { 86 EXPECT_THROW(sut->commit("Test", 100'000, 90.0), std::runtime_error); 87 } 88 89 class TestUpdateReport : public Test 90 { 91 public: 92 void make(std::vector<std::string> names) 93 { 94 sut = std::make_unique<UpdateReport>(reportManager, std::move(names)); 95 } 96 97 NiceMock<ReportManagerMock> reportManager; 98 std::unique_ptr<UpdateReport> sut; 99 }; 100 101 TEST_F(TestUpdateReport, commitWhenReportNameIsEmptyExpectNoReportUpdate) 102 { 103 EXPECT_CALL(reportManager, updateReport(_)).Times(0); 104 105 make({}); 106 sut->commit("Test", 100'000, 90.0); 107 } 108 109 TEST_F(TestUpdateReport, commitExpectReportUpdate) 110 { 111 std::vector<std::string> names = {"Report1", "Report2", "Report3"}; 112 for (const auto& name : names) 113 { 114 EXPECT_CALL(reportManager, updateReport(name)); 115 } 116 117 make(names); 118 sut->commit("Test", 100'000, 90.0); 119 } 120 121 } // namespace action 122