-
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 = 'richa@richa.com'), 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 = 'richa@richa.com')
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 = 'richa@richa.com')
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 = 'richa@richa.com')
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 = 'richa@richa.com')
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 = 'richa@richa.com')
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 = 'richa@richa.com')
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 = 'richa@richa.com')
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 = 'richa@richa.com')
reroute_reason = self.random_content('reroute reason')
page = self.submit_generic(fields = dict(request_id = request_id, owner_reason = reroute_reason, owner_email = "cris@codeforamerica.org"), 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 = 'richa@richa.com')
add_reason = self.random_content('reroute reason')
page = self.submit_generic(fields = dict(request_id = request_id, owner_reason = add_reason, owner_email = "richa@codeforamerica.org"), endpoint = "add_a_owner")
assert add_reason in page.data
def add_helper(self, email = "anon@codeforamerica.org", 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 = 'richa@richa.com')
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 = 'richa@codeforamerica.org')
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 = 'richa@codeforamerica.org')
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()