Feat: word card repo
This commit is contained in:
@ -15,6 +15,10 @@ func setupTestDB(t *testing.T) (*sqlx.DB, func()) {
|
||||
db, err := sqlx.Connect("sqlite3", ":memory:")
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Enable foreign key constraints for SQLite
|
||||
_, err = db.Exec("PRAGMA foreign_keys = ON;")
|
||||
assert.NoError(t, err)
|
||||
|
||||
schema := `
|
||||
CREATE TABLE IF NOT EXISTS rooms (
|
||||
id TEXT PRIMARY KEY,
|
||||
@ -33,6 +37,47 @@ func setupTestDB(t *testing.T) (*sqlx.DB, func()) {
|
||||
room_link TEXT NOT NULL DEFAULT ''
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS players (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
room_id TEXT,
|
||||
username TEXT NOT NULL UNIQUE,
|
||||
team TEXT NOT NULL DEFAULT '',
|
||||
role TEXT NOT NULL DEFAULT '',
|
||||
is_bot BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
FOREIGN KEY (room_id) REFERENCES rooms(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS word_cards (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
room_id TEXT NOT NULL,
|
||||
word TEXT NOT NULL,
|
||||
color TEXT NOT NULL DEFAULT '',
|
||||
revealed BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
mime_view BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
FOREIGN KEY (room_id) REFERENCES rooms(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS card_marks (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
card_id INTEGER NOT NULL,
|
||||
username TEXT NOT NULL,
|
||||
active BOOLEAN NOT NULL DEFAULT TRUE,
|
||||
FOREIGN KEY (card_id) REFERENCES word_cards(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS actions (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
room_id TEXT NOT NULL,
|
||||
actor TEXT NOT NULL,
|
||||
actor_color TEXT NOT NULL DEFAULT '',
|
||||
action_type TEXT NOT NULL,
|
||||
word TEXT NOT NULL DEFAULT '',
|
||||
word_color TEXT NOT NULL DEFAULT '',
|
||||
number_associated TEXT NOT NULL DEFAULT '',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (room_id) REFERENCES rooms(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS settings (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
room_id TEXT NOT NULL,
|
||||
@ -40,7 +85,16 @@ func setupTestDB(t *testing.T) (*sqlx.DB, func()) {
|
||||
room_pass TEXT NOT NULL DEFAULT '',
|
||||
turn_time INTEGER NOT NULL DEFAULT 60,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (room_id) REFERENCES rooms(id)
|
||||
FOREIGN KEY (room_id) REFERENCES rooms(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS sessions(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
lifetime INTEGER NOT NULL DEFAULT 3600,
|
||||
token_key TEXT NOT NULL DEFAULT '' UNIQUE,
|
||||
username TEXT NOT NULL,
|
||||
FOREIGN KEY (username) REFERENCES players(username) ON DELETE CASCADE
|
||||
);
|
||||
`
|
||||
_, err = db.Exec(schema)
|
||||
@ -236,6 +290,17 @@ func TestRoomsRepo_DeleteRoomByID(t *testing.T) {
|
||||
_, err = db.Exec(`INSERT INTO settings (room_id, language, room_pass, turn_time) VALUES (?, ?, ?, ?)`, room.ID, room.Settings.Language, room.Settings.RoomPass, room.Settings.RoundTime)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Insert a word card for the room
|
||||
wordCard := &models.WordCard{
|
||||
RoomID: room.ID,
|
||||
Word: "test_word",
|
||||
Color: models.WordColorBlue,
|
||||
Revealed: false,
|
||||
Mime: false,
|
||||
}
|
||||
_, err = db.Exec(`INSERT INTO word_cards (room_id, word, color, revealed, mime_view) VALUES (?, ?, ?, ?, ?)`, wordCard.RoomID, wordCard.Word, wordCard.Color, wordCard.Revealed, wordCard.Mime)
|
||||
assert.NoError(t, err)
|
||||
|
||||
err = repo.RoomDeleteByID(context.Background(), room.ID)
|
||||
assert.NoError(t, err)
|
||||
|
||||
@ -247,6 +312,10 @@ func TestRoomsRepo_DeleteRoomByID(t *testing.T) {
|
||||
err = db.Get(&count, "SELECT COUNT(*) FROM settings WHERE room_id = ?", room.ID)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, 0, count)
|
||||
|
||||
err = db.Get(&count, "SELECT COUNT(*) FROM word_cards WHERE room_id = ?", room.ID)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, 0, count)
|
||||
}
|
||||
|
||||
func TestRoomsRepo_UpdateRoom(t *testing.T) {
|
||||
|
Reference in New Issue
Block a user