Completed
Push — master ( 8ade96...d44423 )
by Chris
01:02
created

test_paginator_default()   C

Complexity

Conditions 9

Size

Total Lines 13

Duplication

Lines 13
Ratio 100 %

Importance

Changes 2
Bugs 0 Features 1
Metric Value
cc 9
c 2
b 0
f 1
dl 13
loc 13
rs 6.4615
1
from flask import (
2
    Flask,
3
    current_app,
4
    url_for,
5
)
6
7
from flask_jsondash import charts_builder
8
9
10
def make_count(num=1000):
11
    def count(*args, **kwargs):
12
        return num
13
    return count
14
15
16
def make_setting(num=30):
17
    def setting(*args, **kwargs):
18
        return 30
19
    return setting
20
21
22
def check_values(paginator, limit, perpage, currpage, skip, numpages, count):
23
    assert isinstance(paginator, charts_builder.Paginator)
24
    assert paginator.limit == limit
25
    assert paginator.per_page == perpage
26
    assert paginator.curr_page == currpage
27
    assert paginator.skip == skip
28
    assert paginator.num_pages == numpages
29
    assert paginator.count == count
30
31
32
def test_paginator_default_usage(monkeypatch, client):
33
    app, test = client
34
    with app.app_context():
35
        monkeypatch.setattr(charts_builder, 'setting', make_setting(30))
36
        monkeypatch.setattr(charts_builder.adapter, 'count', make_count(1000))
37
        paginator = charts_builder.paginator(page=0)
38
        check_values(paginator, 30, 30, 0, 0, range(1, 35), 1000)
39
40
41
def test_paginator_norecords(monkeypatch, client):
42
    app, test = client
43
    with app.app_context():
44
        monkeypatch.setattr(charts_builder, 'setting', make_setting(30))
45
        monkeypatch.setattr(charts_builder.adapter, 'count', make_count(0))
46
        paginator = charts_builder.paginator(page=0)
47
        check_values(paginator, 30, 30, 0, 0, [], 0)
48
49
50
def test_paginator_default_fallback_data(monkeypatch, client):
51
    app, test = client
52
    with app.app_context():
53
        monkeypatch.setattr(charts_builder, 'setting', make_setting(0))
54
        monkeypatch.setattr(charts_builder.adapter, 'count', make_count(0))
55
        paginator = charts_builder.paginator(page=None, per_page=1, count=None)
56
        check_values(paginator, 2, 2, 0, 0, [], 0)
57
58
59
def test_paginator_bad_kwargs(monkeypatch, client):
60
    app, test = client
61
    with app.app_context():
62
        monkeypatch.setattr(charts_builder, 'setting', make_setting(0))
63
        monkeypatch.setattr(charts_builder.adapter, 'count', make_count(0))
64
        paginator = charts_builder.paginator(
65
            page=None, per_page=None, count=None)
66
        check_values(paginator, 30, 30, 0, 0, [], 0)
67