From c79d4a69a16751758d627a57bea93db9ac712888 Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Fri, 26 Jun 2020 07:26:05 -0700 Subject: [PATCH] Expand test suite to include testing of auto-phase advancement 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 | 154 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 116 insertions(+), 38 deletions(-) diff --git a/test b/test index 8454ba8..9167ed4 100755 --- 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 -- 2.43.0