Passed
Push — main ( 25608f...0832e6 )
by Eran
01:19
created

test_materializers   A

Complexity

Total Complexity 15

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 54
dl 0
loc 74
rs 10
c 0
b 0
f 0
wmc 15

5 Functions

Rating   Name   Duplication   Size   Complexity  
A test_materialize_d3graph() 0 13 3
A test_materialize() 0 8 1
A test_materialize_graphql() 0 9 3
A test_materialize_none() 0 9 4
A test_materialize_networkx() 0 9 4
1
import functools
2
from unittest.mock import patch
3
4
import graphinate
5
import pytest
6
from matplotlib import pyplot as plt
7
8
9
def test_materialize(map_graph_model, capsys):
10
    expected_snippet = '"graph": {\n    "name": "Map",'
11
    *_, graph_model = map_graph_model
12
    builder, actualizer = graphinate.materializers.Materializers.D3Graph.value
13
    graphinate.materialize(graph_model, builder=builder, actualizer=actualizer)
14
    captured = capsys.readouterr()
15
    assert expected_snippet in captured.out
16
    assert captured.err == ""
17
18
19
def test_materialize_d3graph(map_graph_model, monkeypatch, capsys):
20
    monkeypatch.setattr(plt, 'show', lambda: None)
21
22
    expected_snippet = '"graph": {\n    "name": "Map",'
23
24
    with patch('graphinate.materializers.modal_radiobutton_chooser') as modal_radiobutton_chooser:
25
        modal_radiobutton_chooser.return_value = ('Test', graphinate.materializers.Materializers.D3Graph.value)
26
27
        *_, graph_model = map_graph_model
28
        graphinate.materialize(graph_model)
29
        captured = capsys.readouterr()
30
        assert expected_snippet in captured.out
31
        assert captured.err == ""
32
33
34
def test_materialize_graphql(map_graph_model, monkeypatch):
35
    with patch('graphinate.materializers.modal_radiobutton_chooser') as modal_radiobutton_chooser:
36
        import uvicorn
37
        monkeypatch.setattr(uvicorn, "run", lambda *args, **kwargs: None)
38
        modal_radiobutton_chooser.return_value = ('Test', graphinate.materializers.Materializers.GraphQL.value)
39
40
        *_, graph_model = map_graph_model
41
        graphinate.materialize(graph_model)
42
        assert True
43
44
45
networkx_materializers = [
46
    graphinate.materializers.Materializers.NetworkX.value,
47
    graphinate.materializers.Materializers.NetworkX_with_edge_labels.value,
48
    (graphinate.builders.NetworkxBuilder,
49
     functools.partial(graphinate.materializers.matplotlib.plot, with_node_labels=False))
50
51
]
52
53
54
@pytest.mark.parametrize('materializer', networkx_materializers)
55
def test_materialize_networkx(map_graph_model, materializer, monkeypatch):
56
    with monkeypatch.context():
57
        monkeypatch.setattr(plt, 'show', lambda: None)
58
        with patch('graphinate.materializers.modal_radiobutton_chooser') as modal_radiobutton_chooser:
59
            modal_radiobutton_chooser.return_value = ('Test', materializer)
60
            *_, graph_model = map_graph_model
61
            graphinate.materialize(graph_model)
62
            assert True
63
64
65
def test_materialize_none(map_graph_model, monkeypatch):
66
    with patch('graphinate.materializers.modal_radiobutton_chooser') as modal_radiobutton_chooser:
67
        import uvicorn
68
        monkeypatch.setattr(uvicorn, "run", lambda *args, **kwargs: None)
69
        modal_radiobutton_chooser.return_value = ('Test', (None, None))
70
71
        *_, graph_model = map_graph_model
72
        with pytest.raises(ValueError, match="Missing Arguments: builder, actualizer"):
73
            graphinate.materialize(graph_model)
74