Completed
Push — master ( aea106...43650d )
by Chris
01:11
created

read()   B

Complexity

Conditions 6

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
c 0
b 0
f 0
dl 0
loc 11
rs 8
1
import json
2
from datetime import datetime as dt
3
4
from flask import (
5
    Flask,
6
    current_app,
7
    url_for,
8
)
9
import pytest
10
11
from flask_jsondash import charts_builder
12
13
URL_BASE = 'http://127.0.0.1:80'
14
app = Flask('test_flask_jsondash',
15
            template_folder='../flask_jsondash/example_app/templates')
16
app.config.update(
17
    # Required to fix context errors.
18
    # See https://github.com/jarus/flask-testing/issues/21
19
    PRESERVE_CONTEXT_ON_EXCEPTION=False,
20
    SECRET_KEY='123',
21
)
22
app.debug = True
23
app.register_blueprint(charts_builder.charts)
24
25
fake_db = []
26
27
def _username():
28
    return 'Username'
29
30
31
def auth_ok(**kwargs):
32
    return True
33
34
35
def _authtest(**kwargs):
36
    return False
37
38
39
def read(*args, **kwargs):
40
    if 'override' in kwargs:
41
        newkwargs = kwargs.pop('override')
42
        def _read(*args, **kwargs):
43
            return dict(**newkwargs)
44
        return _read
45
    if 'c_id' not in kwargs:
46
        return fake_db
47
    for i, dash in enumerate(fake_db):
48
        if dash['id'] == kwargs.get('c_id'):
49
            return dash
50
51
52
def delete(c_id, **kwargs):
53
    global fake_db
54
    for i, dash in enumerate(fake_db):
55
        if dash['id'] == c_id:
56
            del fake_db[i]
57
            break
58
59
60
def create(*args, **kwargs):
61
    global fake_db
62
    fake_db.append(dict(**kwargs.get('data')))
63
64
65
def update(c_id, **kwargs):
66
    global fake_db
67
    for i, dash in enumerate(fake_db):
68
        if dash['id'] == c_id:
69
            fake_db[i].update(**kwargs)
70
            break
71
72
73
@pytest.fixture()
74
def ctx(monkeypatch, request):
75
    with app.test_request_context() as req_ctx:
76
        global fake_db
77
        fake_db = []
78
        monkeypatch.setattr(charts_builder.adapter, 'read', read)
79
        monkeypatch.setattr(charts_builder.adapter, 'create', create)
80
        monkeypatch.setattr(charts_builder.adapter, 'delete', delete)
81
        monkeypatch.setattr(charts_builder.adapter, 'update', update)
82
        yield req_ctx
83
84
85
@pytest.fixture()
86
def client():
87
    app.config.update(
88
        JSONDASH_GLOBALDASH=False,
89
        JSONDASH_FILTERUSERS=False,
90
        JSONDASH_GLOBAL_USER='global-test',
91
    )
92
    app.config['JSONDASH'] = dict(
93
        metadata=dict(
94
            created_by=_username,
95
            username=_username,
96
        ),
97
        static=dict(
98
            js_path='js/vendor/',
99
            css_path='css/vendor/',
100
        ),
101
        auth=dict(
102
            edit_others=_authtest,
103
            edit_global=_authtest,
104
            create=_authtest,
105
            view=_authtest,
106
            clone=_authtest,
107
            delete=_authtest,
108
        )
109
    )
110
    return app, app.test_client()
111