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
This commit is contained in:
2025-11-03 11:43:44 +01:00
parent 645a5d0107
commit cdd3a8e463
3 changed files with 9 additions and 4 deletions

View File

@@ -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
);

View File

@@ -2,10 +2,15 @@
namespace assignments::two::imu_database_writer {
IMUDatabaseWriter::IMUDatabaseWriter()
IMUDatabaseWriter::IMUDatabaseWriter(std::unique_ptr<DatabaseManager> db_manager)
: Node("imu_database_writer")
{
db_manager_ = std::make_unique<DatabaseManager>(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<DatabaseManager>(this->get_logger());
}
// Create subscriber for IMU data
imu_subscriber_ = this->create_subscription<sensor_msgs::msg::Imu>(

View File

@@ -25,7 +25,7 @@ namespace assignments::two::imu_database_writer {
class IMUDatabaseWriter : public rclcpp::Node {
public:
IMUDatabaseWriter();
IMUDatabaseWriter(std::unique_ptr<DatabaseManager> db_manager = nullptr);
void imu_data_callback(const sensor_msgs::msg::Imu::SharedPtr msg);