Commit Graph

238 Commits

Author SHA1 Message Date
Daniel Schädler bd2af09339 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-05 16:46:06 +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 752beefca6 Correctly handle matches that are not started yet 2019-06-05 09:49:21 +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 990361a25b Fix comparison that got lost in refactoring 2019-05-27 13:25:14 +02:00
Daniel Schädler a710addde7 Create :stage_tournaments with realistic match positions 2019-05-26 22:03:22 +02:00
Daniel Schädler 537cccfa9e Force save match_scores 2019-05-26 20:15:59 +02:00
Daniel Schädler 6f44823bc6 Change match state of match below 2019-05-26 20:15:59 +02:00
Daniel Schädler 8dd1f0b07c Rearrange Test Code 2019-05-26 20:15:59 +02:00
Daniel Schädler 9f92ca7e5b Move stopping of matches test 2019-05-26 20:15:59 +02:00
Daniel Schädler d61b3b2b63 Fix factory name for stageless tournament 2019-05-26 20:15:59 +02:00
Daniel Schädler 21c79665e1 Check if .winner returns a Team
This is done to prevent Test from succeeding if both
.winner and .teams return nil
2019-05-26 20:15:59 +02:00
Daniel Schädler 74b345dce4 Fix factory name for stage tournament 2019-05-26 20:15:59 +02:00
Daniel Schädler 5457d50277 Simplify code finding the tournament
Co-Authored-By: Thor77 <thor77@thor77.org>
2019-05-26 20:15:59 +02:00
Daniel Schädler 0337b6fad8 Save match_scores after editing them in tests 2019-05-26 20:15:59 +02:00
Daniel Schädler d0d38a7972 Test populate_match_below Interactor 2019-05-26 20:15:58 +02:00
Daniel Schädler e0ef39cc4b Test populate_match_below method 2019-05-26 20:15:58 +02:00
Daniel Schädler d2f5d3594e Test performance optimization
In general this generates less unnecessary faker data
2019-05-26 20:15:16 +02:00
Daniel Schädler bc055843d9 Test stopping of Matches 2019-05-26 20:14:13 +02:00
Daniel Schädler 2f77d2d25b Add winner method to match 2019-05-26 20:14:13 +02:00
Daniel Schädler 280b0c1dec Change status of Match to only represent being finished
The winner will be a attribute of the Match instead of something
that is written in its status.
2019-05-26 20:14:13 +02:00
Daniel Schädler 8388af20f0 Generalize tournament save interactor
It now is responsible for saving all ApplicationRecord objects to the
database. This will reduce code duplication one we have other objects
that need to be saved. (As we will soon need to save individual matches)
2019-05-26 20:14:13 +02:00
Daniel Schädler 51056d340c Save the whole stage instead of the single matches 2019-05-22 09:25:07 +02:00
Daniel Schädler b36e3c4251 Delegate owner of team to tournament again 2019-05-22 09:25:07 +02:00
Daniel Schädler 27709f0136 This change will basically solve climate change as it saves all
the computing power in the whole world.
2019-05-22 09:25:07 +02:00
Thor77 b5377db1f3 Reformat indention 2019-05-22 09:25:07 +02:00
Daniel Schädler d548eee245 Change .map to .each 2019-05-22 09:25:07 +02:00
Daniel Schädler dcb19461be Add group_stage_only_tournament factory 2019-05-22 09:25:07 +02:00
Daniel Schädler 03d7369a1c Remove link between team.owner and tournament 2019-05-22 09:25:07 +02:00
Daniel Schädler f73820f2f2 Reduce standart amount of teams within a tournament to 8 2019-05-22 09:25:07 +02:00
Daniel Schädler 3f4c6336c2 Add dummy_stage_tournament 2019-05-22 09:25:07 +02:00
Daniel Schädler c55b45bdc1 Add position to all matches 2019-05-22 09:25:07 +02:00
Daniel Schädler 80b14900d0 Makes match_type configurable instead of only setting its state 2019-05-22 09:25:07 +02:00
Daniel Schädler b9afa956ce Add empty_prepared_playoff_match 2019-05-22 09:25:07 +02:00
Thor77 42d9b0957f Save match position 2019-05-22 09:25:07 +02:00
Daniel Schädler 8a70d5f333 For stage tournament, first stage has running matches 2019-05-22 09:25:07 +02:00
Daniel Schädler cb82ca44d8 Put running playoff matches in a playoff stage (only on first level) 2019-05-22 09:25:07 +02:00
Daniel Schädler 7afb5ae552 Create realistic number of Matches
When match_count is -1 the number of matches generated is automatically
2 ^ stage.level -> This is the amount of stages present in a "real"
tournament stage. When supplying a positive number, it generates that
many matches like before.

This also now adds the position to the match list after creating them
2019-05-22 09:25:07 +02:00
Daniel Schädler 55f1656328 Manually create the list of stages to assign stage levels correctly 2019-05-22 09:25:07 +02:00
Daniel Schädler 6d66328dc8 Move group_stage tournament into stage tournament 2019-05-22 09:25:07 +02:00
Daniel Schädler 8026e66d9b Add :undecided_group_match and :decided_playoff_match 2019-05-22 09:25:07 +02:00
Thor77 39fc9f1630
Use factories instead of creating models manually 2019-05-16 20:53:05 +02:00
Thor77 b307abfc43
Add routing to StatisticsController 2019-05-16 20:53:05 +02:00
Thor77 99bfe6ed70
Add StatisticsController 2019-05-16 20:53:04 +02:00
Thor77 bdcfbe934b
Add StatisticsService 2019-05-16 20:53:04 +02:00
Daniel Schädler cda1cfcb50 Remove deprecated Factory Tests 2019-05-15 09:12:01 +02:00
Daniel Schädler 9de127e75a Change from rake Task to a single spec
This has the advantage that if you run the whole suite it gets run
automatically but if you run a single test it doesn't. This seems
like the best of both worlds..
2019-05-15 09:12:01 +02:00
Thor77 3876f57d32
Add methods and specs to update a match 2019-05-07 18:41:53 +02:00
Thor77 f93c714e1a Add test for empty team hashes 2019-05-04 20:34:57 +02:00
Daniel Schädler ae29427e5d Don't run "before" before each test 2019-05-04 20:34:57 +02:00
Daniel Schädler f149055965 Test teams methods of Matches, Groups and Stages 2019-05-04 20:34:57 +02:00
Daniel Schädler babc233412 Adds :playoff_stage as factory 2019-05-04 20:34:57 +02:00
Daniel Schädler db1518bdbd Raise exceptions upon error in group_stage_service 2019-05-04 20:34:57 +02:00
Daniel Schädler 0f7279de97 Add running_group_match factory 2019-05-04 20:34:57 +02:00
Daniel Schädler 88d8367c47 Check the length of the match positions instead of their exact content 2019-05-04 20:34:57 +02:00
Daniel Schädler bbeda07028 Change test / context / describe names 2019-05-04 20:34:57 +02:00
Daniel Schädler 22f0204f29 Add missing factory specs 2019-05-04 20:34:57 +02:00
Daniel Schädler 3fc344249d Add multiple factories 2019-05-04 20:34:57 +02:00
Daniel Schädler 6811c9e7eb Corrects Test name 2019-05-04 20:34:57 +02:00
Daniel Schädler acfc388da4 Implements group stage tournament creation 2019-05-04 20:34:57 +02:00
Daniel Schädler 300f16b4c2 Rename create_data to create_playoff_tournament_data
This is done in preparation for the addition of group stage data
within the next few commits
2019-05-04 20:34:57 +02:00
Daniel Schädler 6dba0ec738 Test GroupStageService 2019-05-04 20:34:57 +02:00
Daniel Schädler f47ffebcd4 Makes Groups have different incrementing numbers 2019-05-04 20:34:57 +02:00
Daniel Schädler 04b0476603 Test Add Group Stage Interactor 2019-05-04 20:34:57 +02:00
Thor77 6d40d091a4 Modify tournament index spec for "type" parameter 2019-04-24 22:49:48 +02:00
Thor77 c4d03b52c3 Fix tournament index spec apply wrong auth header
because the user @owner doesn't have any private tournaments, therefore
the spec was pointless
2019-04-24 22:49:48 +02:00
Thor77 09ca262ab1 Move index specs into without parameters context 2019-04-24 22:49:48 +02:00
Daniel Schädler d3d572ea1b Change return for 0 teams to exception 2019-04-23 14:21:29 +02:00
Daniel Schädler a449e0193a Use match_array instead of eq
This is the proper way to compare arrays
2019-04-23 14:19:36 +02:00
Daniel Schädler a30ff860e9 Return a valid list of matches for 1 team 2019-04-23 14:19:36 +02:00
Daniel Schädler d221928a12 Test generation of playoff stages for 1 2 and 3 teams 2019-04-23 14:19:36 +02:00
Daniel Schädler 8b11f73a58 Add another Test Case 2019-04-23 14:19:36 +02:00
Daniel Schädler 9918b4a71c Improve test readability in logs 2019-04-23 14:19:36 +02:00
Daniel Schädler 6baaebddd9 Add Test for team numbers that are not powers of 2 2019-04-23 14:19:36 +02:00
Daniel Schädler 00bc8c82e3 Correct Expected Test results
(I am bad at quick math)
2019-04-23 14:19:36 +02:00
Thor77 847f4a1c69 Add password to User factory 2019-04-23 10:48:25 +02:00
Thor77 3ef3b6985f Add spec for custom username validation 2019-04-23 10:46:36 +02:00
Thor77 a14a5224e5 Add spec for tournament-creation with invalid team 2019-04-16 13:24:58 +02:00
Thor77 2b2fccf076 Add tests checking generated stage 2019-04-09 10:47:17 +02:00
Thor77 cdd6b6737f Add test for non-existing team and names 2019-04-08 11:15:24 +02:00
Thor77 2385650be0
Adapt tests to updated tournament controller 2019-04-07 19:27:28 +02:00
Thor77 12c14303f2
Validate exact tournament lists instead of sizes 2019-04-07 18:46:48 +02:00
Thor77 667d6a028c
Test controller params as they're documented 2019-04-07 13:40:34 +02:00
Thor77 a99ae0e248 Assert tournament/stage/group relations optional 2019-04-03 10:03:45 +02:00
Thor77 d7a8504b45 Replace deprecated Faker::Dog 2019-04-03 09:45:56 +02:00
Thor77 c38066408f Adapt deserialization methods to new schema 2018-12-11 17:14:43 +01:00
Thor77 945c499de7 Skip spec for tournament creation for now
because we need to find a proper way to implement it in a RESTful way
2018-12-11 17:14:43 +01:00
Thor77 dcb8e6b216 Adapt controller specs to new api schema 2018-12-11 17:14:43 +01:00
Thor77 8261a919fa
Add workaround for shoulda-matchers#1067
https://github.com/thoughtbot/shoulda-matchers/issues/1067
This issue led to the failure of the solution I implemented before in 8f88362264.
Because of it shoulda-matchers will just ignore the given record for the
validation check and just take the first existing one which in this case
can still contain a only-digits code, because it was generated in the
before-block.
2018-12-02 21:16:24 +01:00
Thor77 8f88362264 Use code with only alphas for unqiue-validation
Because in some ocassions a tournament code with only digits is
generated which would fail this test because shoulda is not able to
convert it to an uppercase version to test for case-sensitivity of the
validation.
2018-12-02 13:54:27 +01:00
Daniel Schädler dd2f66f49d Score is now MatchScore & Score Attribute is Points Attribute 2018-11-30 15:10:33 +01:00
Thor77 e763f14719 Add ScoresController and their specs 2018-11-30 14:42:12 +01:00
Daniel Schädler 68f9b3b2b3 Change Score to MatchScore & MatchScore score attribute to points
This is done to improve the naming and therefore make things easier to understand.
2018-11-30 14:15:48 +01:00
Daniel Schädler 7ba1f98fb4 Implements Adding Tournaments to Database 2018-11-29 11:58:27 +01:00
Daniel Schädler 26bcc3dc88 Implement Adding Playoffs to a tournament 2018-11-29 11:10:15 +01:00
Daniel Schädler 7f243b06a2 Implement Utils Class 2018-11-29 11:03:44 +01:00
Daniel Schädler a75087aa6c Prepare spec_helper for focused tests 2018-11-29 11:02:25 +01:00
Daniel Schädler 8e7869b879 Improve Factories 2018-11-29 11:01:52 +01:00
Daniel Schädler 34159f7e01 Add a running playoff Match to Match Factory 2018-11-29 11:01:17 +01:00
Daniel Schädler fbb87f5f7c Add a tournament with stages to factory 2018-11-29 10:48:26 +01:00
Thor77 70cc88920b
Remove unused global variables 2018-11-25 22:55:49 +01:00
Thor77 29b570bafa
Add deserialize_list helper 2018-11-25 22:55:49 +01:00
Thor77 3bb1e74172
Modify local instead of global request
in apply_authentication_headers_for helper
to allow usage of different authenticated user in one testcase
2018-11-25 22:55:49 +01:00
Thor77 9a41b19e97
Add team factory without parent tournament 2018-11-25 22:55:49 +01:00
Thor77 83c76c456c
Add TournamentsControllers specs 2018-11-25 22:55:48 +01:00
Thor77 20288ff7e4
Use DeserializeHelpers.deserialize_response 2018-11-24 20:34:13 +01:00
Thor77 a8e6ac3dfd
Add and include DeserializeHelpers 2018-11-24 20:33:31 +01:00
Thor77 0308dc121f
Add TeamsController and corresponding specs 2018-11-24 19:18:03 +01:00
Thor77 3744bf6858
Add authentification helper to RSpec config 2018-11-24 19:16:55 +01:00
Thor77 6c24180715 Add MatchesController and specs for it 2018-11-21 18:57:16 +01:00
Thor77 673e12c052 Validate Stage xor Group present in match 2018-11-20 16:03:58 +01:00
Thor77 1cd4835651 Add valid factories for all models 2018-11-19 14:50:41 +01:00
Thor77 6e1af687ad Add default for scores.score 2018-11-19 14:41:30 +01:00
Thor77 c573fd9edd
Fix team spec expecting group_score relation 2018-11-19 11:47:14 +01:00
Thor77 def5de2a7e
Add factories for groups, matches, scores & stages 2018-11-19 11:47:13 +01:00
Thor77 1ec2fa6cf5
Add model test for group,match,score,stage,user 2018-11-19 11:47:13 +01:00
Thor77 b09f4eceb2
Add tests for valid factory to all model tests 2018-11-19 11:47:13 +01:00
Thor77 1a24dd3057
Add association tests for new schema 2018-11-19 11:47:13 +01:00
Thor77 b72bc69b81
Add spec for GroupScore model 2018-11-19 11:47:13 +01:00
Thor77 579412ab89
Add teams and group scores factory 2018-11-19 11:47:12 +01:00
Thor77 ca0013b9b2
Use expect instead of assert syntax 2018-11-19 11:47:12 +01:00
Thor77 3043c9f0d7
Add User factory 2018-11-19 11:47:12 +01:00
Thor77 ff63380c9c
Add Tournament model spec and factory 2018-11-19 11:47:12 +01:00
Thor77 94d2c4291a
Add coveralls coverage reporting 2018-11-19 11:38:56 +01:00
Thor77 bcb4bb7ccb Initialize RSpec setup
including shoulda, Faker and FactoryBot
2018-11-13 16:56:16 +01:00