CadasterParcelSchemaTests.tearDown()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
dl 0
loc 2
rs 10
1
# -*- coding: utf-8 -*-
2
try:
3
    from unittest.mock import Mock
4
except ImportError:
5
    from mock import Mock  # pragma: no cover
6
from crabpy.gateway.exception import GatewayRuntimeException
7
import colander
8
from pyramid import testing
9
import unittest
10
from oe_geoutils.validation.validators_cadaster_parcels import CadasterSchemaNode
11
12
13
class Afdeling(object):
14
    def __init__(self):
15
        self.naam = "LEUVEN  5 AFD"
16
17
18
class Sectie(object):
19
    def __init__(self):
20
        self.id = "F"
21
        self.afdeling = Afdeling()
22
23
24
class Perceel(object):
25
    def __init__(self):
26
        self.sectie = Sectie()
27
        self.id = "0415/00F000"
28
29
30
def get_perceel_by_capakey(capakey):
31
    if capakey == 'invalid':
32
        raise AttributeError
33
    return Perceel()
34
35
36
capakey_gateway_mock = Mock()
37
capakey_gateway_mock.get_perceel_by_capakey = get_perceel_by_capakey
38
39
40
class CadasterParcelSchemaTests(unittest.TestCase):
41
    def setUp(self):
42
        request = testing.DummyRequest()
43
        request.capakey_gateway = Mock(return_value=capakey_gateway_mock)
44
45
        cadaster_schema = CadasterSchemaNode()
46
47
        self.schema = cadaster_schema.bind(
48
            request=request
49
        )
50
51
    def tearDown(self):
52
        del self.schema
53
54
    def test_capakey(self):
55
        res = self.schema.deserialize(
56
            {
57
                "afdeling": u"LEUVEN  5 AFD",
58
                "capakey": u"24505F0415/00F000"
59
            }
60
        )
61
        self.assertEqual({"afdeling": "LEUVEN  5 AFD", "perceel": None, "sectie": None,
62
                          "capakey": "24505F0415/00F000"}, res)
63
64
    def test_exception(self):
65
        self.assertRaises(colander.Invalid, self.schema.deserialize, {"capakey": u"invalid"})
66
67
    def test_CadasterSchemaNode_handles_missing(self):
68
        class ParentSchema(colander.MappingSchema):
69
            child_schema = CadasterSchemaNode(missing=colander.required)
70
            some_node = colander.SchemaNode(colander.String(), missing='some value')
71
72
        json_data = {'some_node': 'some other value'}
73
        schema = ParentSchema()
74
        with self.assertRaises(colander.Invalid) as ex:
75
            schema.deserialize(json_data)
76