104 lines
2.6 KiB
C++
104 lines
2.6 KiB
C++
#include "sqlite_database.h"
|
|
#include "sqlite_file_executor.h"
|
|
#include "gtest/gtest.h"
|
|
|
|
// WARNING: Triggers are off
|
|
|
|
const std::string TEST_DB = "test.db";
|
|
|
|
// Test fixture for SQLiteDatabase
|
|
class SQLiteDatabaseForeignKeyTest : public ::testing::Test {
|
|
|
|
protected:
|
|
SQLiteDatabase *db_;
|
|
|
|
public:
|
|
// void pragmaForeignKeysOn() {
|
|
// const std::string query = "PRAGMA foreign_keys = ON;";
|
|
// db_->executeNonQuery(query);
|
|
// }
|
|
|
|
std::vector<std::vector<std::string>> pragmaForeignKeys() {
|
|
const std::string query = "PRAGMA foreign_keys;";
|
|
auto results = db_->executeSelectQuery(query);
|
|
return results;
|
|
}
|
|
|
|
protected:
|
|
void SetUp() override {
|
|
db_ = new SQLiteDatabase(TEST_DB);
|
|
SQLiteFileExecutor executor(TEST_DB);
|
|
executor.executeSQLFile("sql/cinema_db_drop_table.sql");
|
|
executor.executeSQLFile("sql/cinema_db_create_table.sql");
|
|
|
|
// pragmaForeignKeysOn();
|
|
|
|
std::string sql;
|
|
FileReaderInterface *reader = &executor;
|
|
reader->read("sql/cinema_db_foreign_key_on.sql", sql);
|
|
db_->executeNonQuery(sql);
|
|
}
|
|
|
|
void TearDown() override {
|
|
delete db_;
|
|
remove(TEST_DB.c_str());
|
|
}
|
|
};
|
|
|
|
// INFO: ----- GENERAL -----
|
|
|
|
// Check pragma foreign_keys is true
|
|
TEST_F(SQLiteDatabaseForeignKeyTest, PragmaForeignKeys) {
|
|
auto results = pragmaForeignKeys();
|
|
ASSERT_FALSE(results.empty());
|
|
ASSERT_EQ(results[0][0], "1");
|
|
}
|
|
|
|
// Test adding a movie
|
|
TEST_F(SQLiteDatabaseForeignKeyTest, AddMovie) {
|
|
NewMovie movie{"The Shawshank Redemption", 1, 142};
|
|
EXPECT_FALSE(db_->addMovie(movie));
|
|
|
|
auto movies = db_->getAllMovies();
|
|
ASSERT_TRUE(movies.empty());
|
|
|
|
NewGenre genre{"Drama"};
|
|
EXPECT_TRUE(db_->addGenre(genre));
|
|
EXPECT_TRUE(db_->addMovie(movie));
|
|
movies = db_->getAllMovies();
|
|
ASSERT_FALSE(movies.empty());
|
|
}
|
|
|
|
// Test adding session
|
|
TEST_F(SQLiteDatabaseForeignKeyTest, AddSession) {
|
|
NewSession session{1, 1, "2025-01-01 12:00:00", 10};
|
|
EXPECT_FALSE(db_->addSession(session));
|
|
|
|
NewHall hall{"Hall 1", 100};
|
|
db_->addHall(hall);
|
|
EXPECT_FALSE(db_->addSession(session));
|
|
|
|
NewGenre genre{"Drama"};
|
|
db_->addGenre(genre);
|
|
NewMovie movie{"The Shawshank Redemption", 1, 142};
|
|
db_->addMovie(movie);
|
|
EXPECT_TRUE(db_->addSession(session));
|
|
}
|
|
|
|
// Test adding ticket
|
|
TEST_F(SQLiteDatabaseForeignKeyTest, AddTicket) {
|
|
NewTicket ticket{1, 1, "2025-01-01 12:00:00"};
|
|
EXPECT_FALSE(db_->addTicket(ticket));
|
|
|
|
NewHall hall{"Hall 1", 100};
|
|
db_->addHall(hall);
|
|
NewGenre genre{"Drama"};
|
|
db_->addGenre(genre);
|
|
NewMovie movie{"The Shawshank Redemption", 1, 142};
|
|
db_->addMovie(movie);
|
|
NewSession session{1, 1, "2025-01-01 12:00:00", 10};
|
|
db_->addSession(session);
|
|
|
|
EXPECT_TRUE(db_->addTicket(ticket));
|
|
}
|