Commit Graph

366 Commits

Author SHA1 Message Date
Daniel Schädler 2907fd3618 Add state to stage
This state is required to stop the group stage and trigger playoff
generation, it is (for now) irrelevant for anything other than that.
2019-06-11 22:36:29 +02:00
Daniel Schädler 4783f2067b Assign values to playoff transition relevant variables in factory 2019-06-11 22:36:29 +02:00
Daniel Schädler 701fc0f357 Change playoff transition relevant attributes of tournament on update
They are only updated when playoff_teams_amount changed alone
2019-06-11 22:36:29 +02:00
Daniel Schädler 608e776276 Convert integer parameters to actual integers
Apparently rails thinks this is the way to do it.
2019-06-11 22:36:29 +02:00
Daniel Schädler 24a0e45e0d Test changing group_stage transition relevant parameters 2019-06-11 22:36:29 +02:00
Daniel Schädler 3d25fd032e Ignore validity of matching params if only playoff_teams_amount changed
If only playoff_teams_amount changed, the other two will be overwritten
anyways.
2019-06-11 22:36:29 +02:00
Daniel Schädler f7a3469dfc Validate update parameters
playoff_teams_amount, instant_finalists_amount and
intermediate_round_participants_amount need to make sense together
2019-06-11 22:36:29 +02:00
Daniel Schädler 5482ddc398 Add default for playoff_teams_amount to tournament factory 2019-06-11 22:36:29 +02:00
Daniel Schädler e6e07d4207 Assign default values on Group Stage creation
default values are assigned to instant_finalists_amount and
intermediate_round_participants_amount depending on playoff_teams_amount and group amount
2019-06-11 22:36:29 +02:00
Daniel Schädler fc7409b18c Only allow positive powers of two for playoff_teams_amount 2019-06-11 22:36:29 +02:00
Daniel Schädler e3e96c0c1d Add two new parameters to tournament
instant_finalists_amount is the amount of teams that instantly are in
the finals after the group stage ends.

intermediate_round_participants_amount is the amount of teams that have
a chance to advance after group stage but must play a relegation game to
actually do so.

Both of these values need to match, so that
instant_finalists_amount + (intermediate_round_participants_amount / 2)
is a power of 2. Or to be more precise, the power of two that is saved
in playoff_teams_amount of the tournament.
2019-06-11 22:36:29 +02:00
Daniel Schädler 3dcff3da00 Add test type to all interactor tests 2019-06-11 22:36:29 +02:00
Daniel Schädler 6d99bed1fd Fix two typos 2019-06-11 22:36:29 +02:00
Daniel Schädler a61bd067c4 Test returning unprocessable entity when error occurs in match population 2019-06-11 22:36:29 +02:00
Daniel Schädler 80f576912f Test unprocessable entity response on a match that is not ready
Unprocessable entity is returned when you try to start a match that is
not ready yet.
2019-06-11 22:36:29 +02:00
Daniel Schädler 2894efe9cd Test returning unprocessable entity response
We now test sending a senseless state and also what happens when the
match.update method fails for some reason.
2019-06-11 22:36:29 +02:00
Daniel Schädler 10ade8efb9 Simplify controller code
Matches update now gets rolled back via a Transaction
2019-06-11 22:36:29 +02:00
Daniel Schädler 15ff7bb09c Split test methods for failed stopping of matches 2019-06-11 22:36:29 +02:00
Daniel Schädler df0b2bccb5 Prevent matches from being stopped without a winner in playoffs 2019-06-11 22:36:29 +02:00
Daniel Schädler 3cf2828dae Correct state of empty_prepared_playoff_match factory 2019-06-11 22:36:29 +02:00
Daniel Schädler 278deaf304 Add field to tournament containing playoff_teams_amount
This field represents how many teams advance into playoff stage after
the group stage has ended.
2019-06-11 22:36:29 +02:00
Daniel Schädler 15e344fa2e Test returning unprocessable entity when match_score update fails 2019-06-05 10:13:26 +02:00
Daniel Schädler 24ce5b7a62 Test update_group_scores method 2019-06-05 09:49:22 +02:00
Daniel Schädler 258e1ceb1c Rename groups to prepared_groups
This is done because prepared_groups only represents hashes of groups
that still need to be generated rather then actual group objects.
2019-06-05 09:49:22 +02:00
Daniel Schädler c9cdb835a0 Remove unused Variable stage 2019-06-05 09:49:22 +02:00
Daniel Schädler ceea95c3d3 Move scope of tournament creation in match_score controller test
This fixes the problem we had with the update of the match score
returning :forbidden because the @owner variable was not set properly.

Also names of the tests should now be easier to read.
2019-06-05 09:49:21 +02:00
Daniel Schädler 60f12430af Dry out code with shared_examples 2019-06-05 09:49:21 +02:00
Daniel Schädler b51513661f Overwrite owner of tournament manually 2019-06-05 09:49:21 +02:00
Daniel Schädler d9c901615e Test if match_score point change triggers group score calculation 2019-06-05 09:49:21 +02:00
Daniel Schädler f97c8e501c Remove unnecessary :group_stage_only tournament 2019-06-05 09:49:21 +02:00
Daniel Schädler 5925f23720 Make Match Factory configurable for group_stage and group factory 2019-06-05 09:49:21 +02:00
Daniel Schädler c674e5fcab Add group_scores to groups factory, one for every team 2019-06-05 09:49:21 +02:00
Daniel Schädler 96398706ea Add GroupScore objects for every team to the group stage 2019-06-05 09:49:21 +02:00
Daniel Schädler 957788651c Update group_scores on match_score change if match is a group match 2019-06-05 09:49:21 +02:00
Daniel Schädler 564cec2820 Add method to check if match_score is part of a group match 2019-06-05 09:49:21 +02:00
Daniel Schädler d556e3e833 Implement update_group_score method
This method calculates all the group scores of the group given to it
2019-06-05 09:49:21 +02:00
Daniel Schädler 752beefca6 Correctly handle matches that are not started yet 2019-06-05 09:49:21 +02:00
Daniel Schädler c1dc43948b Fix typo in received_points 2019-06-05 09:49:21 +02:00
Daniel Schädler bd0f8c7fd2 Replace guard clauses with ternary operator
@thor77 apparently thinks this is better then it was before.. i don't
really care so here we go ¯\_(ツ)_/¯
2019-06-05 09:49:20 +02:00
Daniel Schädler e868e936e4 Implement Methods returning points of teams per match
These methods return group_points scored_points and received_points
respectively when given a team that is present in the match
They return 0 when given a team that isn't contesting in that match
2019-06-05 09:26:11 +02:00
Daniel Schädler a4ea0cf979 Move self methods into self block 2019-06-05 09:26:11 +02:00
Thor77 6f4c7d3edd
[ci skip] Merge pull request #51 from turniere/feature/quickstart_link
Add Link to quick install guide
2019-06-04 19:20:30 +02:00
Daniel Schädler 3ace826180 Add Link to quick install guide 2019-06-04 17:35:47 +02:00
Thor77 91e646e518
Merge pull request #49 from turniere/ticket/TURNIERE-210
Permit username key for account update
2019-06-04 10:26:54 +02:00
Thor77 b07447aaae Permit username key for account update 2019-06-04 09:55:45 +02:00
Thor77 08eabcd0f9
Merge pull request #47 from turniere/ticket/TURNIERE-225
Add winner attribute to match serializer
2019-05-28 23:32:11 +02:00
Thor77 91fe9dba16
Add winner attribute to match serializer 2019-05-28 23:18:55 +02:00
Daniel Schädler 4e0da7f8ab
Merge pull request #46 from turniere/ticket/TURNIERE-223
Fix group scores not serialized correctly
2019-05-28 23:08:29 +02:00
Thor77 12005b95fa
Fix group score not serialized correctly
when returned from statistics endpoint
2019-05-28 22:24:03 +02:00
Daniel Schädler e281b1b23f
Merge pull request #38 from turniere/ticket/TURNIERE-190
Implement stopping of matches
2019-05-27 14:38:45 +02:00