test_utils.test_registry.test_sanity_check()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 5
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nop 1
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
import pytest
2
3
4
@pytest.fixture
5
def registry_infra():
6
    from so_magic.utils import ObjectRegistry, ObjectRegistryError
7
    return type('DummyClass', (object,), {'object': ObjectRegistry({'key1': 1}), 'error': ObjectRegistryError,
8
                                          'existing_key': 'key1', 'non_existing_key': 'key2'})
9
10
11
def test_sanity_check(registry_infra):
12
    runtime_repr = repr(registry_infra.object)
13
    assert runtime_repr == repr(registry_infra.object.objects)
14
    assert runtime_repr == '{' + ', '.join(f"'{k}': {v}" for k, v in registry_infra.object.objects.items()) + '}'
15
    assert list(iter(registry_infra.object)) == list(iter(registry_infra.object.objects.items()))
16
17
18
def test_registry_remove_method(registry_infra):
19
    assert registry_infra.existing_key in registry_infra.object
20
21
    registry_infra.object.remove(registry_infra.existing_key)
22
    assert registry_infra.object.objects == {}
23
24
    with pytest.raises(registry_infra.error,
25
                       match=f'Requested to remove item with key {registry_infra.existing_key}, which does not exist.'):
26
        registry_infra.object.remove(registry_infra.existing_key)
27
28
29
def test_registry_pop_method(registry_infra):
30
    assert registry_infra.existing_key in registry_infra.object
31
32
    value = registry_infra.object.pop(registry_infra.existing_key)
33
    assert value == 1
34
    assert registry_infra.object.objects == {}
35
36
    with pytest.raises(registry_infra.error,
37
                       match=f'Requested to pop item with key {registry_infra.existing_key}, which does not exist.'):
38
        registry_infra.object.pop(registry_infra.existing_key)
39
40
41
def test_registry_get_method(registry_infra):
42
    assert registry_infra.existing_key in registry_infra.object
43
44
    value = registry_infra.object.get(registry_infra.existing_key)
45
    assert value == 1
46
    assert registry_infra.object.objects == {registry_infra.existing_key: 1}
47
48
    with pytest.raises(registry_infra.error, match=f'Requested to get item with key {registry_infra.non_existing_key}, '
49
                                                   f'which does not exist.'):
50
        _ = registry_infra.object.get(registry_infra.non_existing_key)
51
52
53
@pytest.mark.parametrize('item_value', [9])
54
def test_add_item_with_existing_key(item_value, registry_infra):
55
    assert registry_infra.existing_key in registry_infra.object
56
57
    with pytest.raises(registry_infra.error, match=f"Requested to insert value '{item_value}' in already existing key "
58
                                                   f"'{registry_infra.existing_key}'. All keys are "
59
                                                   rf"\[{', '.join(_ for _ in registry_infra.object.objects)}\]"
60
                       ):
61
        registry_infra.object.add(registry_infra.existing_key, item_value)
62