build.tests.unit.shared.test_colors   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 98
Duplicated Lines 70.41 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 60
dl 69
loc 98
ccs 45
cts 45
cp 1
rs 10
c 0
b 0
f 0
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A TestColors.test_get_switch_colors_without_switches() 0 16 1
A TestColors.test_aget_switch_colors() 35 35 1
A TestColors.test_get_switch_colors() 34 34 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
"""Test the /shared/colors.py."""
2
3 1
from unittest.mock import patch, MagicMock
4 1
from napps.amlight.sdntrace.shared.colors import Colors
5
6
7
# pylint: disable=protected-access
8 1
class TestColors:
9
    """Test the Colors class."""
10
11 1
    @patch("httpx.get")
12 1
    def test_get_switch_colors_without_switches(self, mock_request_get):
13
        """Test rest call to /colors without switches."""
14 1
        result = MagicMock()
15 1
        result.json.return_value = '{"colors": {}}'
16 1
        result.status_code = 200
17
18 1
        mock_request_get.return_value = result
19
20
        # Call rest /colors
21 1
        color_manager = Colors()
22 1
        color_manager.get_switch_color("mock_switch")
23 1
        colors = color_manager._colors
24
25 1
        mock_request_get.assert_called_once()
26 1
        assert colors == {}
27
28 1 View Code Duplication
    @patch("httpx.get")
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
29 1
    def test_get_switch_colors(self, mock_request_get):
30
        """Test rest call to /colors to retrieve all switches color."""
31 1
        result = MagicMock()
32 1
        result.json.return_value = {
33
            "colors": {
34
                "aa:00:00:00:00:00:00:11": {
35
                    "color_field": "dl_src",
36
                    "color_value": "ee:ee:ee:ee:01:2c",
37
                },
38
                "aa:00:00:00:00:00:00:12": {
39
                    "color_field": "dl_src",
40
                    "color_value": "ee:ee:ee:ee:01:2d",
41
                },
42
            }
43
        }
44 1
        result.status_code = 200
45
46 1
        mock_request_get.return_value = result
47
48
        # Call rest /colors
49 1
        color_manager = Colors()
50
51 1
        color = color_manager.get_switch_color("aa:00:00:00:00:00:00:11")
52
53 1
        assert mock_request_get.call_count == 1
54 1
        assert color["color_field"] == "dl_src"
55 1
        assert color["color_value"] == "ee:ee:ee:ee:01:2c"
56
57 1
        color = color_manager.get_switch_color("aa:00:00:00:00:00:00:12")
58
59 1
        assert mock_request_get.call_count == 2
60 1
        assert color["color_field"] == "dl_src"
61 1
        assert color["color_value"] == "ee:ee:ee:ee:01:2d"
62
63 1 View Code Duplication
    @patch("httpx.AsyncClient.get")
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
64 1
    async def test_aget_switch_colors(self, mock_request_get):
65
        """Test rest call to /colors to retrieve all switches color."""
66 1
        result = MagicMock()
67 1
        result.json.return_value = {
68
            "colors": {
69
                "aa:00:00:00:00:00:00:11": {
70
                    "color_field": "dl_src",
71
                    "color_value": "ee:ee:ee:ee:01:2c",
72
                },
73
                "aa:00:00:00:00:00:00:12": {
74
                    "color_field": "dl_src",
75
                    "color_value": "ee:ee:ee:ee:01:2d",
76
                },
77
            }
78
        }
79 1
        result.status_code = 200
80 1
        result.is_server_error = False
81
82 1
        mock_request_get.return_value = result
83
84
        # Call rest /colors
85 1
        color_manager = Colors()
86
87 1
        color = await color_manager.aget_switch_color("aa:00:00:00:00:00:00:11")
88
89 1
        assert mock_request_get.call_count == 1
90 1
        assert color["color_field"] == "dl_src"
91 1
        assert color["color_value"] == "ee:ee:ee:ee:01:2c"
92
93 1
        color = await color_manager.aget_switch_color("aa:00:00:00:00:00:00:12")
94
95 1
        assert mock_request_get.call_count == 2
96 1
        assert color["color_field"] == "dl_src"
97
        assert color["color_value"] == "ee:ee:ee:ee:01:2d"
98