tests.TestRecursion2.testNoDuplicate()   A
last analyzed

Complexity

Conditions 2

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 2
Metric Value
cc 2
dl 0
loc 8
ccs 8
cts 8
cp 1
crap 2
rs 9.4285
1 1
import json
2 1
from httmock import urlmatch, HTTMock, with_httmock, all_requests
3
4 1
from ppp_datamodel import Resource, Missing
5 1
from ppp_datamodel.communication import Request, TraceItem, Response
6 1
from ppp_libmodule.tests import PPPTestCase
7 1
from ppp_core import app
8
9 1
config1 = """
10
{
11
    "debug": true,
12
    "modules": [
13
        {
14
            "name": "my_module",
15
            "url": "http://test/my_module/",
16
            "coefficient": 1
17
        },
18
        {
19
            "name": "my_module2",
20
            "url": "http://test/my_module2/",
21
            "coefficient": 1
22
        }
23
    ]
24
}"""
25
26 1
config2 = """
27
{
28
    "debug": true,
29
    "modules": [
30
        {
31
            "name": "my_module3",
32
            "url": "http://test/my_module3/",
33
            "coefficient": 1
34
        },
35
        {
36
            "name": "my_module3b",
37
            "url": "http://test/my_module3b/",
38
            "coefficient": 1
39
        }
40
    ]
41
}"""
42
43 1
@urlmatch(netloc='test', path='/my_module/')
44
def my_module_mock(url, request):
45 1
    r = Request.from_json(request.body)
46 1
    if r.tree == Resource('one'):
47 1
        c = '"measures": {"accuracy": 1, "relevance": 1}, "tree": {"type": "resource", "value": "two"}'
48 1
        return {'status_code': 200,
49
                'content': '[{"language": "en", %s, '
50
                             '"trace": [{"module": "module1", %s}]}]' %
51
                             (c, c)}
52
    else:
53 1
        return {'status_code': 200,
54
                'content': '[]'}
55
56 1
@urlmatch(netloc='test', path='/my_module2/')
57
def my_module2_mock(url, request):
58 1
    r = Request.from_json(request.body)
59 1
    if r.tree == Resource('two'):
60 1
        c = '"measures": {"accuracy": 1, "relevance": 2}, "tree": {"type": "resource", "value": "three"}'
61 1
        return {'status_code': 200,
62
                'content': '[{"language": "en", %s, '
63
                             '"trace": [{"module": "module1", %s}]}]' %
64
                             (c, c)}
65
    else:
66 1
        return {'status_code': 200,
67
                'content': '[]'}
68
69 1
@urlmatch(netloc='test', path='/my_module3/')
70
def my_module3_mock(url, request):
71 1
    c = '"measures": {"accuracy": 1, "relevance": 1}, "tree": {"type": "resource", "value": "two"}'
72 1
    return {'status_code': 200,
73
            'content': '[{"language": "en", %s, '
74
                         '"trace": [{"module": "module3", %s}]}]' %
75
                         (c, c)}
76
77 1
@urlmatch(netloc='test', path='/my_module3b/')
78
def my_module3b_mock(url, request):
79 1
    c = '"measures": {"accuracy": 1, "relevance": 1}, "tree": {"type": "resource", "value": "two"}'
80 1
    return {'status_code': 200,
81
            'content': '[{"language": "en", %s, '
82
                         '"trace": [{"module": "module3", %s}]}]' %
83
                         (c, c)}
84
85
86 1
class TestRecursion1(PPPTestCase(app)):
87 1
    config_var = 'PPP_CORE_CONFIG'
88 1
    config = config1
89 1
    def testRecursion(self):
90 1
        q = Request('1', 'en', Resource('one'), {}, [])
91 1
        with HTTMock(my_module_mock, my_module2_mock, my_module3_mock):
92 1
            answers = self.request(q)
93 1
            self.assertEqual(len(answers), 2, answers)
94 1
            self.assertEqual(answers[0].tree, Resource('three'))
95 1
            self.assertEqual(answers[1].tree, Resource('two'))
96
97 1
class TestRecursion2(PPPTestCase(app)):
98 1
    config_var = 'PPP_CORE_CONFIG'
99 1
    config = config2
100 1
    def testNoDuplicate(self):
101 1
        q = Request('1', 'en', Missing(), {}, [])
102 1
        with HTTMock(my_module3_mock, my_module3b_mock):
103 1
            answers = self.request(q)
104 1
            self.assertNotEqual(len(answers), 20, answers)
105 1
            self.assertNotEqual(len(answers), 10, answers)
106 1
            self.assertNotEqual(len(answers), 2, answers)
107
            self.assertEqual(len(answers), 1, answers)
108