-
Notifications
You must be signed in to change notification settings - Fork 42
/
Copy pathtests.py
144 lines (118 loc) · 6.48 KB
/
tests.py
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import os
from public_records_portal import app, prflask, models, prr, db_helpers
import unittest
import random, string
import tempfile
import flask
class PublicRecordsTestCase(unittest.TestCase):
def random_content(self, content_type):
return "This is a new %s and some random string %s" %(content_type, ''.join(random.choice(string.lowercase) for i in range(10)))
def test_filters(self):
with app.test_request_context('/requests?closed=false'):
assert flask.request.path == '/requests'
assert flask.request.args['closed'] == 'false'
def setUp(self):
models.db.drop_all() # Start with a fresh database
self.app = app.test_client()
models.db.create_all()
def tearDown(self):
models.db.session.remove()
models.db.drop_all() # Clear out this session
def test_submit_request(self):
request = self.random_content('request')
page = self.app.post('/new', data=dict(
request_text= request,
request_email = '[email protected]'), follow_redirects=True)
assert request in page.data
def test_new(self):
page = self.app.get('/new')
assert 'Request a new record' in page.data
def test_ask_question(self):
question = self.random_content('question')
page = self.ask_question(question)
assert question in page.data
def ask_question(self, question):
request_id = self.submit_request(text=self.random_content('request'), email = '[email protected]')
fields = dict(request_id = request_id, question_text = question)
page = self.submit_generic(fields = fields, endpoint = "add_a_qa")
return page
def test_answer_question(self):
request_id = self.submit_request(text=self.random_content('request'), email = '[email protected]')
qa_id = prr.ask_a_question(request_id = request_id, user_id = 1, question = self.random_content('question'))
answer = self.random_content('answer')
fields = dict(request_id = request_id, qa_id = qa_id, user_id = 1, answer_text = answer)
page = self.submit_generic(fields = fields, endpoint = "update_a_qa")
assert answer in page.data
def test_public_add_note(self):
request_id = self.submit_request(text=self.random_content('request'), email = '[email protected]')
note_text = self.random_content('note')
fields = dict(request_id = request_id, note_text = note_text)
page = self.submit_generic(fields = fields, endpoint = "public_add_a_note")
assert note_text in page.data
# Tests for adding a record:
def test_add_note(self):
request_id = self.submit_request(text=self.random_content('request'), email = '[email protected]')
note_text = self.random_content('note')
fields = dict(request_id = request_id, note_text = note_text)
page = self.submit_generic(fields = fields, endpoint = "add_a_note")
assert note_text in page.data
def test_add_offline_doc(self):
request_id = self.submit_request(text=self.random_content('request'), email = '[email protected]')
record_description = self.random_content('record description')
record_access = self.random_content('record access')
fields = dict(request_id = request_id, record_description = record_description, record_access = record_access)
page = self.submit_generic(fields = fields, endpoint = "add_a_record")
assert record_access in page.data
def test_add_link(self):
request_id = self.submit_request(text=self.random_content('request'), email = '[email protected]')
link_description = self.random_content('link description')
link_url = 'http://www.codeforamerica.org'
fields = dict(request_id = request_id, record_description = link_description, link_url = link_url)
page = self.submit_generic(fields = fields, endpoint = "add_a_record")
assert link_description in page.data
# ---
# Tests for managing a request:
def test_close_request(self):
request_id = self.submit_request(text = self.random_content('request'), email = '[email protected]')
close_reason = self.random_content('close reason')
page = self.submit_generic(fields = dict(request_id = request_id, close_reason = close_reason), endpoint = "close")
assert close_reason in page.data
def test_reroute_owner(self):
request_id = self.submit_request(text= self.random_content('request'), email = '[email protected]')
reroute_reason = self.random_content('reroute reason')
page = self.submit_generic(fields = dict(request_id = request_id, owner_reason = reroute_reason, owner_email = "[email protected]"), endpoint = "update_a_owner")
assert reroute_reason in page.data
def test_add_helper(self):
request_id = self.submit_request(text= self.random_content('request'), email = '[email protected]')
add_reason = self.random_content('reroute reason')
page = self.submit_generic(fields = dict(request_id = request_id, owner_reason = add_reason, owner_email = "[email protected]"), endpoint = "add_a_owner")
assert add_reason in page.data
def add_helper(self, email = "[email protected]", add_reason = None):
if not add_reason:
add_reason = self.random_content('add reason')
request_id = self.submit_request(text= self.random_content('request'), email = '[email protected]')
owner_id, is_new = db_helpers.add_staff_participant(request_id = request_id, email = email, reason = add_reason)
return owner_id, request_id
def test_remove_helper(self):
owner_id, request_id = self.add_helper()
remove_reason = self.random_content('remove reason')
app.logger.info("\n\n Removing Owner id: %s for reason: %s" % (owner_id, remove_reason))
page = self.submit_generic(fields = dict(reason_unassigned = remove_reason, owner_id = owner_id, request_id = request_id), endpoint = "update_a_owner")
print page.data
assert remove_reason in page.data
def test_extend_request(self):
request_id = self.submit_request(text = self.random_content('request'), email = '[email protected]')
extend_reason = self.random_content('extend reason')
page = self.submit_generic(fields = dict(request_id = request_id, extend_reason = [extend_reason]), endpoint = "add_a_extension")
assert extend_reason in page.data
def test_extend_request_must_have_reason(self):
request_id = self.submit_request(text = self.random_content('request'), email = '[email protected]')
page = self.submit_generic(fields = dict(request_id = request_id), endpoint = "add_a_extension")
assert 'You must select a reason' in page.data
def submit_request(self, email, text):
request_id, success = prr.make_request(text = text, email = email, passed_spam_filter = True)
return request_id
def submit_generic(self, fields, endpoint = ""):
return self.app.post('/%s' % (endpoint), data = fields, follow_redirects= True)
if __name__ == '__main__':
unittest.main()