RequestTest   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 17
Duplicated Lines 41.18 %

Test Coverage

Coverage 100%

Importance

Changes 7
Bugs 0 Features 0
Metric Value
c 7
b 0
f 0
dl 7
loc 17
ccs 10
cts 10
cp 1
rs 10
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A testEquality() 7 7 1
A testFromJson() 0 8 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
2 1
import json
3 1
from unittest import TestCase
4 1
from ppp_datamodel import Resource, Missing
5 1
from ppp_datamodel.communication import Request, TraceItem, Response
6
7 1
class RequestTest(TestCase):
8 1 View Code Duplication
    def testEquality(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
9 1
        self.assertEqual(Request('1', 'en', Resource(value='foo'), {}, []),
10
                         Request('1', 'en', Resource(value='foo'), {}, [], 'en'))
11 1
        self.assertNotEqual(Request('1', 'en', Resource(value='foo'), {}, []),
12
                            Request('1', 'en', Resource(value='bar'), {}, []))
13 1
        self.assertNotEqual(Request('1', 'en', Resource(value='foo'), {}, []),
14
                            Request('1', 'en', Resource(value='foo'), {}, [], 'fr'))
15
16 1
    def testFromJson(self):
17 1
        j = {'id': '1', 'language': 'en', 'response-language': 'en', 'measures': {}, 'trace': [],
18
             'tree': {'type': 'resource', 'value': 'foo'}}
19 1
        self.assertEqual(Request('1', 'en', Resource(value='foo'), {}, []),
20
                         Request.from_dict(j))
21 1
        self.assertEqual(Request('1', 'en', Resource(value='foo'), {}, []),
22
                         Request.from_json(json.dumps(j)))
23 1
        self.assertEqual(json.loads(Request.from_dict(j).as_json()), j)
24
25 1
class ResponseTest(TestCase):
26 1 View Code Duplication
    def testEquality(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
27 1
        self.assertEqual(Response('en', Resource(value='foo'), {}, []),
28
                         Response('en', Resource(value='foo'), {}, []))
29 1
        self.assertNotEqual(Response('en', Resource(value='foo'), {}, []),
30
                            Response('en', Resource(value='bar'), {}, []))
31 1
        self.assertNotEqual(Response('en', Resource(value='foo'), {'accuracy': 0.5}, []),
32
                            Response('en', Resource(value='foo'), {'accuracy': 0.6}, []))
33
34 1
    def testFromJson(self):
35 1
        r = {'language': 'en', 'measures': {},
36
             'trace': [{'module': 'foo', 'tree': {'type': 'missing'}, 'measures': {},
37
                 'times': {}}],
38
             'tree': {'type': 'resource', 'value': 'foo'}}
39 1
        t = [TraceItem('foo', Missing(), {}, {})]
40 1
        self.assertEqual(Response('en', Resource(value='foo'), {}, t),
41
                         Response.from_json(json.dumps(r)))
42 1
        self.assertEqual(Response('en', Resource(value='foo'), {}, t),
43
                         Response.from_dict(r))
44 1
        self.assertEqual(Response('en', Resource(value='foo'), {}, t),
45
                         Response.from_json(json.dumps(r)))
46 1
        self.assertEqual(json.loads(Response.from_dict(r).as_json()), r)
47
48 1
    def testFromLegacyJson(self):
49 1
        r1 = {'language': 'en', 'measures': {},
50
             'trace': [{'module': 'foo', 'tree': {'type': 'missing'}, 'measures': {}}],
51
             'tree': {'type': 'resource', 'value': 'foo'}}
52 1
        r2 = {'language': 'en', 'measures': {},
53
             'trace': [{'module': 'foo', 'tree': {'type': 'missing'}, 'measures': {},
54
                 'times': {}}],
55
             'tree': {'type': 'resource', 'value': 'foo'}}
56 1
        t = [TraceItem('foo', Missing(), {}, {})]
57 1
        self.assertEqual(Response('en', Resource(value='foo'), {}, t),
58
                         Response.from_json(json.dumps(r1)))
59 1
        self.assertEqual(Response('en', Resource(value='foo'), {}, t),
60
                         Response.from_dict(r1))
61 1
        self.assertEqual(Response('en', Resource(value='foo'), {}, t),
62
                         Response.from_json(json.dumps(r1)))
63 1
        self.assertEqual(json.loads(Response.from_dict(r1).as_json()), r2)
64
65 1
class TraceItemTest(TestCase):
66 1
    def testFromDict(self):
67 1
        d = {'tree': {'type': 'missing'}, 'module': 'foo', 'measures': {}, 'times': {}}
68 1
        self.assertEqual(TraceItem.from_dict(d),
69
                TraceItem('foo', Missing(), {}, {}))
70
71 1
    def testLegacyTraceItem(self):
72 1
        self.assertEqual(TraceItem('foo', Resource(value='bar'), {}),
73
                TraceItem('foo', Resource(value='bar'), {}, {}))
74
75