GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Pull Request — develop (#307)
by
unknown
49s
created

test_match_in_same_division()   C

Complexity

Conditions 13

Size

Total Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 13
c 1
b 0
f 1
dl 0
loc 20
rs 5.2936

How to fix   Complexity   

Complexity

Complex classes like test_match_in_same_division() often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

1
# coding=utf-8
2
from unittest.mock import MagicMock
3
4
import pytest
5
from server.stats.division_service import *
0 ignored issues
show
Coding Style introduced by
The usage of wildcard imports like server.stats.division_service should generally be avoided.
Loading history...
Unused Code introduced by
logger was imported with wildcard, but is not used.
Loading history...
Unused Code introduced by
logging was imported with wildcard, but is not used.
Loading history...
Unused Code introduced by
Dict was imported with wildcard, but is not used.
Loading history...
Unused Code introduced by
DivisionPersistor was imported with wildcard, but is not used.
Loading history...
Unused Code introduced by
abstractmethod was imported with wildcard, but is not used.
Loading history...
Unused Code introduced by
ABCMeta was imported with wildcard, but is not used.
Loading history...
6
7
8
@pytest.fixture()
9
def sample_divisions() -> List[Division]:
10
    return [Division(1, "League 1 - Division A", 1, 10.0),
11
            Division(2, "League 1 - Division B", 1, 30.0),
12
            Division(3, "League 1 - Division C", 1, 50.0),
13
            Division(4, "League 2 - Division D", 2, 20.0),
14
            Division(5, "League 2 - Division E", 2, 60.0),
15
            Division(6, "League 2 - Division F", 2, 100.0),
16
            Division(7, "League 3 - Division D", 3, 100.0),
17
            Division(8, "League 3 - Division E", 3, 200.0),
18
            Division(9, "League 3 - Division F", 3, 9999.0)]
19
20
21
@pytest.fixture()
22
def sample_players() -> List[PlayerDivisionInfo]:
23
    return [PlayerDivisionInfo(1, 1, 9.5),
24
            PlayerDivisionInfo(2, 1, 49.5),
25
            PlayerDivisionInfo(3, 2, 0.0),
26
            PlayerDivisionInfo(4, 3, 10.0)]
27
28
29
@pytest.fixture()
30
def division_service(sample_divisions, sample_players) -> DivisionService:
0 ignored issues
show
Comprehensibility Bug introduced by
sample_divisions is re-defining a name which is already available in the outer-scope (previously defined on line 9).

It is generally a bad practice to shadow variables from the outer-scope. In most cases, this is done unintentionally and might lead to unexpected behavior:

param = 5

class Foo:
    def __init__(self, param):   # "param" would be flagged here
        self.param = param
Loading history...
Comprehensibility Bug introduced by
sample_players is re-defining a name which is already available in the outer-scope (previously defined on line 22).

It is generally a bad practice to shadow variables from the outer-scope. In most cases, this is done unintentionally and might lead to unexpected behavior:

param = 5

class Foo:
    def __init__(self, param):   # "param" would be flagged here
        self.param = param
Loading history...
31
    return DivisionService(sample_divisions, sample_players, MagicMock())
32
33
34
def test_match_in_same_division(division_service):
0 ignored issues
show
Comprehensibility Bug introduced by
division_service is re-defining a name which is already available in the outer-scope (previously defined on line 30).

It is generally a bad practice to shadow variables from the outer-scope. In most cases, this is done unintentionally and might lead to unexpected behavior:

param = 5

class Foo:
    def __init__(self, param):   # "param" would be flagged here
        self.param = param
Loading history...
35
    assert division_service.players[1].league == 1
36
    assert division_service.players[1].score == 9.5
37
    assert division_service.get_player_division(1).id == 1
38
    assert division_service.players[2].league == 1
39
    assert division_service.players[2].score == 49.5
40
    assert division_service.get_player_division(2).id == 3
41
42
    division_service.post_result(1,2, True)
43
44
    division_service.persistor.add_player.assert_not_called()
45
    division_service.persistor.update_player.assert_any_call(division_service.players[1])
46
    division_service.persistor.update_player.assert_any_call(division_service.players[2])
47
48
    assert division_service.players[1].league == 1
49
    assert division_service.players[1].score == 10.5
50
    assert division_service.get_player_division(1).id == 2
51
    assert division_service.players[2].league == 1
52
    assert division_service.players[2].score == 49.0
53
    assert division_service.get_player_division(2).id == 3
54
55
56
def test_match_in_same_division_inverted(division_service):
0 ignored issues
show
Comprehensibility Bug introduced by
division_service is re-defining a name which is already available in the outer-scope (previously defined on line 30).

It is generally a bad practice to shadow variables from the outer-scope. In most cases, this is done unintentionally and might lead to unexpected behavior:

param = 5

class Foo:
    def __init__(self, param):   # "param" would be flagged here
        self.param = param
Loading history...
57
    assert division_service.players[1].league == 1
58
    assert division_service.players[1].score == 9.5
59
    assert division_service.get_player_division(1).id == 1
60
    assert division_service.players[2].league == 1
61
    assert division_service.players[2].score == 49.5
62
    assert division_service.get_player_division(2).id == 3
63
64
    division_service.post_result(2,1, False)
65
66
    division_service.persistor.add_player.assert_not_called()
67
    division_service.persistor.update_player.assert_any_call(division_service.players[1])
68
    division_service.persistor.update_player.assert_any_call(division_service.players[2])
69
70
    assert division_service.players[1].league == 1
71
    assert division_service.players[1].score == 10.5
72
    assert division_service.get_player_division(1).id == 2
73
    assert division_service.players[2].league == 1
74
    assert division_service.players[2].score == 49.0
75
    assert division_service.get_player_division(2).id == 3
76
77
78
def test_match_winner_ascends_league(division_service):
0 ignored issues
show
Comprehensibility Bug introduced by
division_service is re-defining a name which is already available in the outer-scope (previously defined on line 30).

It is generally a bad practice to shadow variables from the outer-scope. In most cases, this is done unintentionally and might lead to unexpected behavior:

param = 5

class Foo:
    def __init__(self, param):   # "param" would be flagged here
        self.param = param
Loading history...
79
    assert division_service.players[1].league == 1
80
    assert division_service.players[1].score == 9.5
81
    assert division_service.get_player_division(1).id == 1
82
    assert division_service.players[2].league == 1
83
    assert division_service.players[2].score == 49.5
84
    assert division_service.get_player_division(2).id == 3
85
86
    division_service.post_result(2,1, True)
87
88
    division_service.persistor.add_player.assert_not_called()
89
    division_service.persistor.update_player.assert_any_call(division_service.players[1])
90
    division_service.persistor.update_player.assert_any_call(division_service.players[2])
91
92
    assert division_service.players[1].league == 1
93
    assert division_service.players[1].score == 9.0
94
    assert division_service.get_player_division(1).id == 1
95
    assert division_service.players[2].league == 2
96
    assert division_service.players[2].score == 0.0
97
    assert division_service.get_player_division(2).id == 4
98
99
100 View Code Duplication
def test_do_not_fall_below_0(division_service):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
Comprehensibility Bug introduced by
division_service is re-defining a name which is already available in the outer-scope (previously defined on line 30).

It is generally a bad practice to shadow variables from the outer-scope. In most cases, this is done unintentionally and might lead to unexpected behavior:

param = 5

class Foo:
    def __init__(self, param):   # "param" would be flagged here
        self.param = param
Loading history...
101
    assert division_service.players[1].league == 1
102
    assert division_service.players[1].score == 9.5
103
    assert division_service.players[3].league == 2
104
    assert division_service.players[3].score == 0.0
105
106
    division_service.post_result(1,3, True)
107
108
    division_service.persistor.add_player.assert_not_called()
109
    division_service.persistor.update_player.assert_any_call(division_service.players[1])
110
    division_service.persistor.update_player.assert_any_call(division_service.players[3])
111
112
    assert division_service.players[1].league == 1
113
    assert division_service.players[1].score == 11.0
114
    assert division_service.players[3].league == 2
115
    assert division_service.players[3].score == 0.0
116
117
118 View Code Duplication
def test_gain_loss_winner_inferior(division_service):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
Comprehensibility Bug introduced by
division_service is re-defining a name which is already available in the outer-scope (previously defined on line 30).

It is generally a bad practice to shadow variables from the outer-scope. In most cases, this is done unintentionally and might lead to unexpected behavior:

param = 5

class Foo:
    def __init__(self, param):   # "param" would be flagged here
        self.param = param
Loading history...
119
    division_service.players[3].score = 11.0
120
121
    assert division_service.players[1].league == 1
122
    assert division_service.players[1].score == 9.5
123
    assert division_service.players[3].league == 2
124
    assert division_service.players[3].score == 11.0
125
126
    division_service.post_result(1,3, True)
127
128
    division_service.persistor.add_player.assert_not_called()
129
    division_service.persistor.update_player.assert_any_call(division_service.players[1])
130
    division_service.persistor.update_player.assert_any_call(division_service.players[3])
131
132
    assert division_service.players[1].league == 1
133
    assert division_service.players[1].score == 11.0
134
    assert division_service.players[3].league == 2
135
    assert division_service.players[3].score == 10.0
136
137
138
def test_gain_loss_winner_superior(division_service):
0 ignored issues
show
Comprehensibility Bug introduced by
division_service is re-defining a name which is already available in the outer-scope (previously defined on line 30).

It is generally a bad practice to shadow variables from the outer-scope. In most cases, this is done unintentionally and might lead to unexpected behavior:

param = 5

class Foo:
    def __init__(self, param):   # "param" would be flagged here
        self.param = param
Loading history...
139
    division_service.players[3].score = 11.0
140
141
    assert division_service.players[1].league == 1
142
    assert division_service.players[1].score == 9.5
143
    assert division_service.players[3].league == 2
144
    assert division_service.players[3].score == 11.0
145
146
    division_service.post_result(1,3, False)
147
148
    division_service.persistor.add_player.assert_not_called()
149
    division_service.persistor.update_player.assert_any_call(division_service.players[1])
150
    division_service.persistor.update_player.assert_any_call(division_service.players[3])
151
152
    assert division_service.players[1].league == 1
153
    assert division_service.players[1].score == 9.0
154
    assert division_service.players[3].league == 2
155
    assert division_service.players[3].score == 11.5
156
157
158
def test_new_player(division_service):
0 ignored issues
show
Comprehensibility Bug introduced by
division_service is re-defining a name which is already available in the outer-scope (previously defined on line 30).

It is generally a bad practice to shadow variables from the outer-scope. In most cases, this is done unintentionally and might lead to unexpected behavior:

param = 5

class Foo:
    def __init__(self, param):   # "param" would be flagged here
        self.param = param
Loading history...
159
    assert 98 not in division_service.players
160
    assert 99 not in division_service.players
161
162
    division_service.post_result(98,99, False)
163
164
    assert division_service.persistor.add_player.call_count == 2
165
    assert division_service.persistor.update_player.call_count == 2
166
167
    assert division_service.players[98].league == 1
168
    assert division_service.players[98].score == 0.0
169
    assert division_service.players[99].league == 1
170
    assert division_service.players[99].score == 1.0
0 ignored issues
show
Coding Style introduced by
Final newline missing
Loading history...