]> git.cworth.org Git - empires-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 "$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
 }
 
 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
 
 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_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
 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 "$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
 }
 
 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
 
 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_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
 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 "$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
 TEST_REPORT