Completed
Push — master ( 7cecba...b5cbdb )
by Chris
57s
created

adapter()   A

Complexity

Conditions 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
c 0
b 0
f 0
dl 0
loc 3
rs 10
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, db
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
28
def _username():
29
    return 'Username'
30
31
32
def auth_valid(**kwargs):
33
    return True
34
35
36
def auth_invalid(**kwargs):
37
    return False
38
39
40
def read(*args, **kwargs):
41
    if 'override' in kwargs:
42
        newkwargs = kwargs.pop('override')
43
44
        def _read(*args, **kwargs):
45
            return dict(**newkwargs)
46
        return _read
47
    if 'c_id' not in kwargs:
48
        return fake_db
49
    for i, dash in enumerate(fake_db):
50
        if dash['id'] == kwargs.get('c_id'):
51
            return dash
52
53
54
def delete(c_id, **kwargs):
55
    global fake_db
56
    for i, dash in enumerate(fake_db):
57
        if dash['id'] == c_id:
58
            del fake_db[i]
59
            break
60
61
62
def create(*args, **kwargs):
63
    global fake_db
64
    fake_db.append(dict(**kwargs.get('data')))
65
66
67
def update(c_id, **kwargs):
68
    global fake_db
69
    for i, dash in enumerate(fake_db):
70
        if dash['id'] == c_id:
71
            fake_db[i].update(**kwargs)
72
            break
73
74
75
@pytest.yield_fixture
76
def ctx(monkeypatch, request):
77
    with app.test_request_context() as req_ctx:
78
        global fake_db
79
        fake_db = []
80
        monkeypatch.setattr(charts_builder.adapter, 'read', read)
81
        monkeypatch.setattr(charts_builder.adapter, 'create', create)
82
        monkeypatch.setattr(charts_builder.adapter, 'delete', delete)
83
        monkeypatch.setattr(charts_builder.adapter, 'update', update)
84
        yield req_ctx
85
86
87
@pytest.fixture()
88
def adapter():
89
    return db.get_db_handler()
90
91
92
@pytest.fixture()
93
def client():
94
    app.config.update(
95
        JSONDASH_GLOBALDASH=False,
96
        JSONDASH_FILTERUSERS=False,
97
        JSONDASH_GLOBAL_USER='global-test',
98
    )
99
    app.config['JSONDASH'] = dict(
100
        metadata=dict(
101
            created_by=_username,
102
            username=_username,
103
        ),
104
        static=dict(
105
            js_path='js/vendor/',
106
            css_path='css/vendor/',
107
        ),
108
        auth=dict(
109
            edit_others=auth_invalid,
110
            edit_global=auth_invalid,
111
            create=auth_invalid,
112
            view=auth_invalid,
113
            clone=auth_invalid,
114
            delete=auth_invalid,
115
        )
116
    )
117
    return app, app.test_client()
118