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