Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
88 lines (71 loc) · 2.95 KB

File metadata and controls

88 lines (71 loc) · 2.95 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# Copyright 2015 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import re
from conftest import flaky_filter
from flaky import flaky
import pytest
# Mark all test cases in this class as flaky, so that if errors occur they
# can be retried. This is useful when databases are temporarily unavailable.
@flaky(rerun_filter=flaky_filter)
# Tell pytest to use both the app and model fixtures for all test cases.
# This ensures that configuration is properly applied and that all database
# resources created during tests are cleaned up. These fixtures are defined
# in conftest.py
@pytest.mark.usefixtures('app', 'model')
class TestCrudActions(object):
def test_list(self, app, model):
for i in range(1, 12):
model.create({'title': u'Book {0}'.format(i)})
with app.test_client() as c:
rv = c.get('/books/')
assert rv.status == '200 OK'
body = rv.data.decode('utf-8')
assert 'Book 1' in body, "Should show books"
assert len(re.findall('<h4>Book', body)) <= 10, (
"Should not show more than 10 books")
assert 'More' in body, "Should have more than one page"
def test_add(self, app):
data = {
'title': 'Test Book',
'author': 'Test Author',
'publishedDate': 'Test Date Published',
'description': 'Test Description'
}
with app.test_client() as c:
rv = c.post('/books/add', data=data, follow_redirects=True)
assert rv.status == '200 OK'
body = rv.data.decode('utf-8')
assert 'Test Book' in body
assert 'Test Author' in body
assert 'Test Date Published' in body
assert 'Test Description' in body
def test_edit(self, app, model):
existing = model.create({'title': "Temp Title"})
with app.test_client() as c:
rv = c.post(
'/books/%s/edit' % existing['id'],
data={'title': 'Updated Title'},
follow_redirects=True)
assert rv.status == '200 OK'
body = rv.data.decode('utf-8')
assert 'Updated Title' in body
assert 'Temp Title' not in body
def test_delete(self, app, model):
existing = model.create({'title': "Temp Title"})
with app.test_client() as c:
rv = c.get(
'/books/%s/delete' % existing['id'],
follow_redirects=True)
assert rv.status == '200 OK'
assert not model.read(existing['id'])
Morty Proxy This is a proxified and sanitized view of the page, visit original site.