diff --git a/src/g2_2025_grade_calculator_pkg/test/FinalGradeDeterminator.test.cpp b/src/g2_2025_grade_calculator_pkg/test/FinalGradeDeterminator.test.cpp index bce83d9..311a332 100644 --- a/src/g2_2025_grade_calculator_pkg/test/FinalGradeDeterminator.test.cpp +++ b/src/g2_2025_grade_calculator_pkg/test/FinalGradeDeterminator.test.cpp @@ -12,6 +12,36 @@ using namespace std::chrono_literals; using namespace assignments::one::final_grade_determinator; +namespace assignments::one { + +class FakeDatabaseManager : public DatabaseManager { +public: + explicit FakeDatabaseManager(rclcpp::Logger logger = rclcpp::get_logger("fake_db")) + : DatabaseManager(logger) {} + + bool is_connected() const override { + return true; // Always pretend we are connected + } + + bool store_final_course_result(const StudentCourse& sc, int exam_count, int final_grade) override { + stored_results_.push_back({sc, exam_count, final_grade}); + return true; // Always succeed + } + + void init_database() override { + // No-op for fake + } + + struct StoredResult { + StudentCourse sc; + int exam_count; + int final_grade; + }; + std::vector stored_results_; +}; + +} // namespace assignments::one + class FinalGradeDeterminatorTest : public ::testing::Test { protected: void SetUp() override { @@ -53,12 +83,14 @@ protected: void TearDown() override { final_grade_determinator_.reset(); + fake_db_.reset(); test_node_.reset(); rclcpp::shutdown(); } void create_final_grade_determinator() { - final_grade_determinator_ = std::make_shared(); + fake_db_ = std::make_unique(); + final_grade_determinator_ = std::make_shared(std::move(fake_db_)); } void spin_some_time(std::chrono::milliseconds duration = 100ms) { @@ -71,13 +103,12 @@ protected: std::this_thread::sleep_for(10ms); } } - + std::unique_ptr fake_db_; std::shared_ptr test_node_; std::shared_ptr final_grade_determinator_; rclcpp::Subscription::SharedPtr student_subscriber_; rclcpp::Publisher::SharedPtr exam_publisher_; rclcpp::Service::SharedPtr grade_calculator_service_; - std::vector received_student_messages_; std::vector service_requests_; };