Completed
Push — master ( 58e7a9...dddd97 )
by Chris
45s
created

test_paginator_default_fallback_data_lt_2()   A

Complexity

Conditions 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
dl 0
loc 6
rs 9.4285
c 0
b 0
f 0
1
from flask import (
2
    Flask,
3
    current_app,
4
    url_for,
5
)
6
7
from pyquery import PyQuery as pq
8
9
from flask_jsondash import charts_builder
10
11
from conftest import (
12
    URL_BASE,
13
    auth_valid,
14
    read,
15
)
16
17
18
def make_count(num=1000):
19
    def count(*args, **kwargs):
20
        return num
21
    return count
22
23
24
def make_setting(num=30):
25
    def setting(*args, **kwargs):
26
        return num
27
    return setting
28
29
30
def check_values(paginator, limit, perpage, currpage, skip, numpages, count):
31
    assert isinstance(paginator, charts_builder.Paginator)
32
    assert paginator.limit == limit
33
    assert paginator.per_page == perpage
34
    assert paginator.curr_page == currpage
35
    assert paginator.skip == skip
36
    assert paginator.num_pages == list(numpages)
37
    assert paginator.count == count
38
39
40
def test_paginator_default_usage(monkeypatch, client):
41
    app, test = client
42
    monkeypatch.setattr(charts_builder, 'setting', make_setting(30))
43
    monkeypatch.setattr(charts_builder.adapter, 'count', make_count(1000))
44
    paginator = charts_builder.paginator(page=0)
45
    check_values(paginator, 30, 30, 0, 0, range(1, 35), 1000)
46
47
48
def test_paginator_norecords(monkeypatch, client):
49
    app, test = client
50
    monkeypatch.setattr(charts_builder, 'setting', make_setting(30))
51
    monkeypatch.setattr(charts_builder.adapter, 'count', make_count(0))
52
    paginator = charts_builder.paginator(page=0)
53
    check_values(paginator, 30, 30, 0, 0, [], 0)
54
55
56
def test_paginator_default_fallback_data_lt_2(monkeypatch, client):
57
    app, test = client
58
    monkeypatch.setattr(charts_builder, 'setting', make_setting(0))
59
    monkeypatch.setattr(charts_builder.adapter, 'count', make_count(0))
60
    paginator = charts_builder.paginator(page=None, per_page=1, count=None)
61
    check_values(paginator, 2, 2, 0, 0, [], 0)
62
63
64
def test_paginator_bad_kwargs_fallback_data(monkeypatch, client):
65
    app, test = client
66
    monkeypatch.setattr(charts_builder, 'setting', make_setting(0))
67
    monkeypatch.setattr(charts_builder.adapter, 'count', make_count(0))
68
    # Ensure the paginator uses a minimum of 2 per page to prevent
69
    # division errors, even when there are no good values sent,
70
    # AND the app default setting is forcibly invalid (set to 0)
71
    paginator = charts_builder.paginator(
72
        page=None, per_page=None, count=None)
73
    check_values(paginator, 2, 2, 0, 0, [], 0)
74
75
76
def test_create_dashboards_check_paginator_html(monkeypatch, ctx, client):
77
    app, test = client
78
    monkeypatch.setattr(charts_builder, 'auth', auth_valid)
79
    for i in range(100):
80
        data = dict(name=i, modules=[])
81
        res = test.post(url_for('jsondash.create'), data=data)
82
    res = test.get(url_for('jsondash.dashboard'))
83
    dom = pq(res.data)
84
    assert len(read()) == 100
85
    assert dom.find('.paginator-status').text() == 'Showing 0-25 of 100 results'
86
    res = test.get(url_for('jsondash.dashboard') + '?page=2')
87
    dom = pq(res.data)
88
    assert dom.find('.paginator-status').text() == 'Showing 25-50 of 100 results'
89
    res = test.get(url_for('jsondash.dashboard') + '?page=3')
90
    dom = pq(res.data)
91
    assert dom.find('.paginator-status').text() == 'Showing 50-75 of 100 results'
92
    res = test.get(url_for('jsondash.dashboard') + '?page=4')
93
    dom = pq(res.data)
94
    assert dom.find('.paginator-status').text() == 'Showing 75-100 of 100 results'
95