]> git.cworth.org Git - lmno-server/commitdiff
Expand test suite to include testing of auto-phase advancement
authorCarl Worth <cworth@cworth.org>
Fri, 26 Jun 2020 14:26:05 +0000 (07:26 -0700)
committerCarl Worth <cworth@cworth.org>
Fri, 26 Jun 2020 14:26:05 +0000 (07:26 -0700)
The previous commit makes it so that when all involved players are
ready to move on, (such as, everyone has submitted their answers), the
game automatically advances to the next phase.

This breaks some existing tests, which had been expecting the game to
wait for everyone to vote to advance (the old, clunky behavior).

In this commit, we fix the test suite to expect the auto advancing in
the first ame (while also adding a check to ensure it doesn't
auto-advance until the last player is ready).

We also add a second game where auto advancing doesn't happen, (one
player is never ready) but a majority of the remaining players vote to
advance without them.

These tests do exhibit a couple of bugs in the current implementation,
(so some failures are expected here). These failures will be fixed in
the immediately following commits.

test

diff --git a/test b/test
index 8454ba87d10d03f0f874699f2070de3627908cfd..9167ed4f1a6cc03e58651159133b125edb06f638 100755 (executable)
--- a/test
+++ b/test
@@ -512,37 +512,25 @@ result=$(empathy_answer $bob $prompt_id '"sand", "sands", "SunLight", "towels"')
 test "$result" = '{"valid":true}'
 TEST_END
 
-TEST "Submit from charlie succeeds"
-result=$(empathy_answer $charlie $prompt_id '"SunShine", "Grains of Sand", "wafer", "people"')
-test "$result" = '{"valid":true}'
-TEST_END
-
-TEST_SUBSECTION "Transition from answering to judging"
-
 empathy_ambiguities()
 {
     curl_get_event $empathy_game_path/events game-state "-b $1" \
         | jq .ambiguities
 }
 
-TEST "Judging has not yet started"
+TEST "Judging hasn't started with player unsubmitted"
 result=$(echo $(empathy_ambiguities $alice))
 test "$result" = "null"
 TEST_END
 
-empathy_end_answers()
-{
-    curl_post $empathy_game_path/end-answers/$2 "" "-b $1"
-}
-
-TEST "Players vote to start judging"
-empathy_end_answers $alice $prompt_id
-empathy_end_answers $bob $prompt_id
-empathy_end_answers $charlie $prompt_id
-test "$?" = "0"
+TEST "Submit from charlie succeeds"
+result=$(empathy_answer $charlie $prompt_id '"SunShine", "Grains of Sand", "wafer", "people"')
+test "$result" = '{"valid":true}'
 TEST_END
 
-TEST "Judging has now started"
+TEST_SUBSECTION "Transition from answering to judging (no voting needed)"
+
+TEST "Judging already started"
 result=$(echo $(empathy_ambiguities $alice))
 test "$result" != "null"
 TEST_END
@@ -576,37 +564,25 @@ result=$(empathy_judged $bob $prompt_id '[["sands","grains of sand"],["water","w
 test "$result" = '{"valid":true}'
 TEST_END
 
-TEST "Submit word groups from charlie"
-result=$(empathy_judged $charlie $prompt_id '[["SunLight","SunShine"],["sand","Grains of Sand"]]')
-test "$result" = '{"valid":true}'
-TEST_END
-
-TEST_SUBSECTION "Transition from judging to scoring"
-
 empathy_scores()
 {
     curl_get_event $empathy_game_path/events game-state "-b $1" \
         | jq .scores
 }
 
-TEST "Scoring has not yet started"
+TEST "Scoring hasn't started with player unsubmitted"
 result=$(echo $(empathy_scores $alice))
 test "$result" = "null"
 TEST_END
 
-empathy_end_judging()
-{
-    curl_post $empathy_game_path/end-judging/$2 "" "-b $1"
-}
-
-TEST "Players vote to start scoring"
-empathy_end_judging $alice $prompt_id
-empathy_end_judging $bob $prompt_id
-empathy_end_judging $charlie $prompt_id
-test "$?" = "0"
+TEST "Submit word groups from charlie"
+result=$(empathy_judged $charlie $prompt_id '[["SunLight","SunShine"],["sand","Grains of Sand"]]')
+test "$result" = '{"valid":true}'
 TEST_END
 
-TEST "Scoring has now started"
+TEST_SUBSECTION "Transition from judging to scoring (no voting needed)"
+
+TEST "Scoring already started"
 result=$(echo $(empathy_scores $alice))
 test "$result" != "null"
 TEST_END
@@ -637,4 +613,106 @@ result=$(echo $(empathy_words_submitted $alice))
 test "$result" = '"Grains of Sand/sand/sands" "SunLight/SunShine" "wafer/water" "people" "sun" "towels"'
 TEST_END
 
+TEST_SUBSECTION "New game (using voting to advance phases)"
+
+empathy_reset()
+{
+    curl_post $empathy_game_path/reset
+}
+
+TEST "Any post to /reset resets the game"
+empathy_reset
+test "$?" = "0"
+TEST_END
+
+TEST "Verify scoring is over"
+result=$(echo $(empathy_scores $alice))
+test "$result" = "null"
+TEST_END
+
+empathy_answering()
+{
+    curl_post $empathy_game_path/answering/$2 "" "-b $1"
+}
+
+TEST "Start 4-player game, 3 submissions"
+dale=$(empathy_profile dale)
+result=$(empathy_player_name $dale)
+test "$result" = "dale"
+prompt_id=$(empathy_submit_prompt $alice 4 "3 little words" | jq .id)
+empathy_start $alice $prompt_id
+empathy_answer $alice   $prompt_id '"I",    "love", "you"' >/dev/null
+empathy_answer $bob     $prompt_id '"I",    "love", "food"' >/dev/null
+empathy_answer $charlie $prompt_id '"food", "is",   "good"' >/dev/null
+result=$(empathy_answering $dale $prompt_id)
+test "$result" = '{"valid":true}'
+TEST_END
+
+TEST "Judging hasn't started with player unsubmitted"
+result=$(echo $(empathy_ambiguities $alice))
+test "$result" = "null"
+TEST_END
+
+empathy_end_answers()
+{
+    curl_post $empathy_game_path/end-answers/$2 "" "-b $1"
+}
+
+TEST "Minority of players vote to end answering"
+empathy_end_answers $alice $prompt_id
+empathy_end_answers $bob $prompt_id
+test "$?" = "0"
+TEST_END
+
+TEST "Judging still hasn't started"
+result=$(echo $(empathy_ambiguities $alice))
+test "$result" = "null"
+TEST_END
+
+TEST "Majority of players vote to end answering"
+empathy_end_answers $charlie $prompt_id
+test "$?" = "0"
+TEST_END
+
+TEST "Judging has now started"
+result=$(echo $(empathy_ambiguities $alice))
+test "$result" != "null"
+TEST_END
+
+TEST "Submit word groups from majority"
+empathy_judged $alice $prompt_id '[]' >/dev/null
+result=$(empathy_judged $bob $prompt_id '[]')
+test "$result" = '{"valid":true}'
+TEST_END
+
+TEST "Scoring hasn't started with player unsubmitted"
+result=$(echo $(empathy_scores $alice))
+test "$result" = "null"
+TEST_END
+
+empathy_end_judging()
+{
+    curl_post $empathy_game_path/end-judging/$2 "" "-b $1"
+}
+
+TEST "Minority of players vote to end judging"
+empathy_end_judging $alice $prompt_id
+test "$?" = "0"
+TEST_END
+
+TEST "Scoring still hasn't started"
+result=$(echo $(empathy_scores $alice))
+test "$result" = "null"
+TEST_END
+
+TEST "Majority of players vote to end judging"
+empathy_end_judging $bob $prompt_id
+test "$?" = "0"
+TEST_END
+
+TEST "Scoring has now started"
+result=$(echo $(empathy_scores $alice))
+test "$result" != "null"
+TEST_END
+
 TEST_REPORT