Completed
Push — master ( ce9cc4...380669 )
by Chris
01:06
created

test_update_normal()   B

Complexity

Conditions 6

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 6
dl 0
loc 10
rs 8
c 1
b 0
f 1
1
import json
2
from datetime import datetime
3
4
from pymongo.cursor import Cursor as MongoCursor
5
6
from flask_jsondash import db_adapters
7
from flask_jsondash import settings
8
9
10
def test_reformat_data():
11
    c_id = 3
12
    res = db_adapters.reformat_data(dict(), c_id)
13
    assert isinstance(res, dict)
14
    assert 'date' in res
15
    assert res.get('id') == c_id
16
17
18
def test_format_charts():
19
    data = {'module_': json.dumps(dict()), 'name': 'foo'}
20
    res = db_adapters.format_charts(data)
21
    assert isinstance(res, list)
22
    assert res != []
23
    assert len(res) == 1
24
25
26
def test_format_charts_invalid():
27
    data = {'Foo': json.dumps(dict())}
28
    res = db_adapters.format_charts(data)
29
    assert res == []
30
31
32
def test_create(monkeypatch):
33
    monkeypatch.setattr(
34
        db_adapters.coll, 'insert', lambda *args, **kwargs: kwargs)
35
    assert db_adapters.create(data=dict(foo='bar')) is None
36
37
38
def test_create_none():
39
    assert db_adapters.create() is None
40
41
42
def test_default_dbname():
43
    assert db_adapters.DB_NAME == 'mongo'
44
45
46
def test_default_settings():
47
    assert settings.DB_URI == 'localhost'
48
    assert settings.DB_PORT == 27017
49
    assert settings.DB_NAME == 'charts'
50
    assert settings.DB_TABLE == 'views'
51
    assert settings.ACTIVE_DB == 'mongo'
52
    assert db_adapters.DB_NAME == settings.ACTIVE_DB
53
54
55
def test_update_normal(monkeypatch):
56
    records = []
57
    monkeypatch.setattr(
58
        db_adapters.coll, 'update',
59
        lambda *args, **kwargs: records.append(args))
60
    db_adapters.update('foo-id', data=dict(name='foo'))
61
    assert records[0][0]['id'] == 'foo-id'
62
    assert records[0][1]['$set']['name'] == 'foo'
63
    assert records[0][1]['$set']['modules'] == []
64
    assert isinstance(records[0][1]['$set']['date'], datetime)
65
66
67
def test_update_format_charts(monkeypatch):
68
    records = []
69
    monkeypatch.setattr(
70
        db_adapters.coll, 'update',
71
        lambda *args, **kwargs: records.append(args))
72
    data = {
73
        'module_1': json.dumps(dict(name='chart-1')),
74
        'module_2': json.dumps(dict(name='chart-2')),
75
        'name': 'foo'
76
    }
77
    db_adapters.update('foo-id', data=data)
78
    assert records[0][0]['id'] == 'foo-id'
79
    assert records[0][1]['$set']['name'] == 'foo'
80
    assert len(records[0][1]['$set']['modules']) == 2
81
    assert 'module_1' in records[0][1]['$set'].keys()
82
    assert 'module_2' in records[0][1]['$set'].keys()
83
    assert isinstance(records[0][1]['$set']['date'], datetime)
84
85
86
def test_update_nothing(monkeypatch):
87
    monkeypatch.setattr(
88
        db_adapters.coll, 'update', lambda *args, **kwargs: kwargs)
89
    assert db_adapters.update('foobar') is None
90
91
92
def test_read_one(monkeypatch):
93
    records = [dict()]
94
    monkeypatch.setattr(
95
        db_adapters.coll, 'find_one', lambda *args, **kwargs: records)
96
    assert db_adapters.read(c_id='foo') == records
97
98
99
def test_read_all(monkeypatch):
100
    assert isinstance(db_adapters.read(), MongoCursor)
101
102
103
def test_delete_one(monkeypatch):
104
    monkeypatch.setattr(
105
        db_adapters.coll, 'delete_one', lambda *args, **kwargs: kwargs)
106
    assert db_adapters.delete(c_id='foo') is None
107
108
109
def test_delete_all(monkeypatch):
110
    monkeypatch.setattr(
111
        db_adapters.coll, 'remove', lambda *args, **kwargs: kwargs)
112
    assert db_adapters.delete_all() is None
113