Passed
Push — dev ( 1b3874...6a1e3c )
by Konstantinos
03:33
created

test_data_manager.test_engine_registration()   A

Complexity

Conditions 2

Size

Total Lines 28
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 22
dl 0
loc 28
rs 9.352
c 0
b 0
f 0
cc 2
nop 0
1
from green_magic.data.commands_manager import CommandsManager
2
from green_magic.data.backend import Backend, DataEngine
3
from green_magic.data.data_manager import DataManager
4
from green_magic.data.backend import panda_handling
5
6
7
def test_engine_registration():
8
    from green_magic.data.backend import DataEngine
9
    from green_magic.data.backend.engine import EngineType
10
    assert type(DataEngine) == EngineType
11
    from green_magic.data.commands_manager import CommandRegistrator
12
13
    # type(type(DataEngine))
14
    ATTRS = ('registry', '_commands', 'command')
15
    DataEngine.new('test_pd')
16
    assert 'test_pd' in DataEngine.subclasses
17
    assert type(DataEngine.test_pd) == type(DataEngine)
18
    assert all(hasattr(DataEngine.test_pd, x) for x in ATTRS)
19
20
    DataEngine.new('data_lib')
21
    assert 'data_lib' in DataEngine.subclasses
22
    assert type(DataEngine.data_lib) == type(DataEngine)
23
    assert all(hasattr(DataEngine.data_lib, x) for x in ATTRS)
24
25
    for x in ATTRS:
26
        print(getattr(DataEngine.test_pd, x), getattr(DataEngine.data_lib, x))
27
        assert id(getattr(DataEngine.test_pd, x)) != id(getattr(DataEngine.data_lib, x))
28
29
    assert id(DataEngine.test_pd.datapoints_factory) == id(DataEngine.data_lib.datapoints_factory)
30
31
    import pandas as pd
32
    @DataEngine.test_pd.command
33
    def observations(file_path):
34
        return pd.read_json(file_path, lines=True)
35
36
    # TODO uncomment below
37
    # assert len(DataEngine.test_pd.registry) == 1
38
    # assert len(DataEngine.data_lib.registry) == 0
39
40
    # assert all(id(getattr(DataEngine.test_pd, x) != id(getattr(DataEngine.data_lib, x)) for x in ATTRS))
41
42
43
def test_data_manager():
44
45
    DataEngine.new('test_pd')
46
    assert 'test_pd' in DataEngine.subclasses
47
    assert hasattr(DataEngine, 'state')
48
    assert hasattr(DataEngine, 'registry')
49
    import pandas as pd
50
    @DataEngine.test_pd.command
51
    def observations(file_path):
52
        return pd.read_json(file_path, lines=True)
53
54
    assert type(DataEngine.test_pd) == type(DataEngine)
55
    # assert type(DataEngine.test_pd.registry) == dict
56
    assert type(DataEngine.test_pd._commands) == dict
57
    # assert 'observations' in DataEngine.test_pd._commands
58
    # assert 'observations' in DataEngine.test_pd.registry
59
60
    data_api = DataManager(CommandsManager(), Backend(DataEngine.create('test_pd')))
61
    # make the datapoint_manager listen to newly created Datapoints objects events
62
    data_api.backend.engine.datapoints_factory.subject.attach(data_api.backend.datapoints_manager)