From cdd3a8e4639e4c476da87c164489c876d657e49a Mon Sep 17 00:00:00 2001 From: Wessel Tip Date: Mon, 3 Nov 2025 11:43:44 +0100 Subject: [PATCH] fix(Database): Allow tests to be ran - Made `db_manager` on `IMUDatabaseWriter` a parameter to allow mock class - made `store_imu_data` virtual to support mock implementation --- .../src/database/DatabaseManager.hpp | 2 +- .../src/imu_database_writer/nodes/IMUDatabaseWriter.cpp | 9 +++++++-- .../src/imu_database_writer/nodes/IMUDatabaseWriter.hpp | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/g2_2025_imu_reader_pkg/src/database/DatabaseManager.hpp b/src/g2_2025_imu_reader_pkg/src/database/DatabaseManager.hpp index 1534d41..0a89bf5 100644 --- a/src/g2_2025_imu_reader_pkg/src/database/DatabaseManager.hpp +++ b/src/g2_2025_imu_reader_pkg/src/database/DatabaseManager.hpp @@ -31,7 +31,7 @@ public: void create_tables(); // IMU Data operations - bool store_imu_data( + virtual bool store_imu_data( double linear_accel_x, double linear_accel_y, double linear_accel_z, double angular_vel_x, double angular_vel_y, double angular_vel_z ); diff --git a/src/g2_2025_imu_reader_pkg/src/imu_database_writer/nodes/IMUDatabaseWriter.cpp b/src/g2_2025_imu_reader_pkg/src/imu_database_writer/nodes/IMUDatabaseWriter.cpp index e586fa2..0e93b4e 100644 --- a/src/g2_2025_imu_reader_pkg/src/imu_database_writer/nodes/IMUDatabaseWriter.cpp +++ b/src/g2_2025_imu_reader_pkg/src/imu_database_writer/nodes/IMUDatabaseWriter.cpp @@ -2,10 +2,15 @@ namespace assignments::two::imu_database_writer { -IMUDatabaseWriter::IMUDatabaseWriter() +IMUDatabaseWriter::IMUDatabaseWriter(std::unique_ptr db_manager) : Node("imu_database_writer") { - db_manager_ = std::make_unique(this->get_logger()); + // allow injection of mock database manager for tests + if (db_manager) { + db_manager_ = std::move(db_manager); + } else { + db_manager_ = std::make_unique(this->get_logger()); + } // Create subscriber for IMU data imu_subscriber_ = this->create_subscription( diff --git a/src/g2_2025_imu_reader_pkg/src/imu_database_writer/nodes/IMUDatabaseWriter.hpp b/src/g2_2025_imu_reader_pkg/src/imu_database_writer/nodes/IMUDatabaseWriter.hpp index 909e7ae..a3507f2 100644 --- a/src/g2_2025_imu_reader_pkg/src/imu_database_writer/nodes/IMUDatabaseWriter.hpp +++ b/src/g2_2025_imu_reader_pkg/src/imu_database_writer/nodes/IMUDatabaseWriter.hpp @@ -25,7 +25,7 @@ namespace assignments::two::imu_database_writer { class IMUDatabaseWriter : public rclcpp::Node { public: - IMUDatabaseWriter(); + IMUDatabaseWriter(std::unique_ptr db_manager = nullptr); void imu_data_callback(const sensor_msgs::msg::Imu::SharedPtr msg);