Passed
Push — main ( 15dcd6...507222 )
by Eran
01:15
created

test_materializers.test_materialize()   A

Complexity

Conditions 1

Size

Total Lines 8
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 8
nop 2
dl 0
loc 8
rs 10
c 0
b 0
f 0
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
        # modal_radiobutton_chooser.return_value = ('Test', (graphinate.builders.GraphQLBuilder, lambda x: None))
37
        import uvicorn
38
        monkeypatch.setattr(uvicorn, "run", lambda *args, **kwargs: None)
39
        modal_radiobutton_chooser.return_value = ('Test', graphinate.materializers.Materializers.GraphQL.value)
40
41
        *_, graph_model = map_graph_model
42
        graphinate.materialize(graph_model)
43
        assert True
44
45
46
networkx_materializers = [
47
    graphinate.materializers.Materializers.NetworkX.value,
48
    graphinate.materializers.Materializers.NetworkX_with_edge_labels.value,
49
    (graphinate.builders.NetworkxBuilder,
50
     functools.partial(graphinate.materializers.matplotlib.plot, with_node_labels=False))
51
52
]
53
54
55
@pytest.mark.parametrize('materializer', networkx_materializers)
56
def test_materialize_networkx(map_graph_model, materializer, monkeypatch):
57
    with monkeypatch.context():
58
        monkeypatch.setattr(plt, 'show', lambda: None)
59
        with patch('graphinate.materializers.modal_radiobutton_chooser') as modal_radiobutton_chooser:
60
            modal_radiobutton_chooser.return_value = ('Test', materializer)
61
            *_, graph_model = map_graph_model
62
            graphinate.materialize(graph_model)
63
            assert True
64