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
	 Grail Finder
					Grail Finder