new _room_gear.html to manage room actions for various gamers (e.g., founders & guests); new _room.scss for gatekeeper styling (still flimsy); added new .btn-abandon Bl-btn palette to _button-pad.scss; new FTs & epic view ITs assert functionality (100 percent coverage, fully passing test suite)

This commit is contained in:
Disco DeDisco
2026-03-14 00:10:40 -04:00
parent dddffd22d5
commit af3523c9bb
10 changed files with 297 additions and 1 deletions

View File

@@ -176,3 +176,45 @@ class GatekeeperTest(FunctionalTest):
# Restore the following once room built
# body = self.browser.find_element(By.TAG_NAME, "body")
# self.assertIn("OPEN", body.text)
def test_owner_can_delete_room_via_gear_menu(self):
self.create_pre_authenticated_session("founder@test.io")
self.browser.get(self.live_server_url + "/gameboard/")
self.wait_for(lambda: self.browser.find_element(By.ID, "id_new_game_name"))
self.browser.find_element(By.ID, "id_new_game_name").send_keys("Doomed Room")
self.browser.find_element(By.ID, "id_create_game_btn").click()
self.wait_for(lambda: self.assertIn("/gate/", self.browser.current_url))
self.browser.find_element(By.CSS_SELECTOR, ".gear-btn").click()
self.wait_for(
lambda: self.browser.find_element(By.CSS_SELECTOR, ".btn-danger")
).click()
self.wait_for(lambda: self.assertEqual(
self.browser.current_url, self.live_server_url + "/gameboard/"
))
self.assertFalse(Room.objects.filter(name="Doomed Room").exists())
def test_gamer_can_abandon_room_via_gear_menu(self):
founder = User.objects.create(email="founder@test.io")
room = Room.objects.create(name="Dragon's Den", owner=founder)
slot = room.gate_slots.get(slot_number=2)
self.create_pre_authenticated_session("gamer@test.io")
gamer, _ = User.objects.get_or_create(email="gamer@test.io")
slot.gamer = gamer
slot.status = "FILLED"
slot.save()
self.browser.get(self.live_server_url + f"/gameboard/room/{room.id}/gate/")
self.browser.find_element(By.CSS_SELECTOR, ".gear-btn").click()
self.wait_for(
lambda: self.browser.find_element(By.CSS_SELECTOR, ".btn-abandon")
).click()
self.wait_for(lambda: self.assertEqual(
self.browser.current_url, self.live_server_url + "/gameboard/"
))
slot.refresh_from_db()
self.assertEqual(slot.status, "EMPTY")
self.assertIsNone(slot.gamer)