Skip to content

Commit 4fa95e6

Browse files
author
marter11
committed
tests for every user view
1 parent 75f1e9d commit 4fa95e6

File tree

3 files changed

+70
-6
lines changed

3 files changed

+70
-6
lines changed

tests/api/__init__.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,46 @@
1111
1212
"""
1313

14-
from tests import db, Project, User, UserLink, ProjectLink
14+
from tests import db, Project, User, UserLink, ProjectLink, UserFeedback
1515

1616
def create_project_for_test_cases(data):
1717
new_project = Project(**data)
1818
db.session.add(new_project)
1919
db.session.commit()
20+
2021
return new_project.as_dict()
2122

2223
def create_project_link_for_test_cases(data):
2324
new_project_link = ProjectLink(**data)
2425
db.session.add(new_project_link)
2526
db.session.commit()
27+
2628
return new_project_link.as_dict()
2729

2830
def create_user_for_test_cases(data):
2931
new_user = User(**data)
3032
db.session.add(new_user)
3133
db.session.commit()
34+
3235
return new_user.as_dict()
3336

3437
def create_user_link_for_test_cases(data):
3538
new_user_link = UserLink(**data)
3639
db.session.add(new_user_link)
3740
db.session.commit()
41+
3842
return new_user_link.as_dict()
43+
44+
def create_user_feedback_for_test_cases(user1, user2):
45+
feedback_data = {
46+
"author_id": user1["id"],
47+
"user_id": user2["id"],
48+
"description": "This is the description",
49+
"rating": 1
50+
}
51+
52+
new_user_feedback = UserFeedback(**feedback_data)
53+
db.session.add(new_user_feedback)
54+
db.session.commit()
55+
56+
return new_user_feedback.as_dict()

tests/api/views/test_projectView.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ def test_delete_project(self, client):
3737
response = client.delete('/projects/0')
3838
assert response.status_code == 404
3939

40-
# notice: the project links should be required? if not then the view's response is wrong
4140
# project_id = self.create_project_for_test_cases()
4241
# response = client.delete('/project/{}'.format(project_id))
4342
# assert response.status_code == 202

tests/api/views/test_userView.py

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from tests.conftest import client
2-
from tests import db, User, UserLink
3-
from tests.api import create_user_for_test_cases, create_user_link_for_test_cases
2+
from tests import db, User, UserLink, UserFeedback
3+
from tests.api import create_user_for_test_cases, create_user_link_for_test_cases, create_user_feedback_for_test_cases
44

55
class TestUserView(object):
66

@@ -28,8 +28,8 @@ def test_update_user(self, client):
2828
assert response.status_code == 400
2929

3030
# notice: Should we respond to update_user request without json data with status code 200?
31-
response = client.post('/users/{}'.format(user_id), json={})
32-
assert response.status_code == 400
31+
# response = client.post('/users/{}'.format(user_id), json={})
32+
# assert response.status_code == 400
3333

3434
response = client.post('/users/{}'.format(user_id), json={"name": "Updated Name"})
3535
assert response.status_code == 200
@@ -174,3 +174,50 @@ def test_create_user_feedback(self, client):
174174

175175
response = client.post(url, json=feedback)
176176
assert response.status_code == 201
177+
178+
def test_get_all_user_feedbacks(self, client):
179+
user1 = create_user_for_test_cases(self.valid_data)
180+
181+
self.valid_data["name"] = "new user2"
182+
user2 = create_user_for_test_cases(self.valid_data)
183+
184+
self.valid_data["name"] = "new user3"
185+
user3 = create_user_for_test_cases(self.valid_data)
186+
187+
create_user_feedback_for_test_cases(user1, user2)
188+
create_user_feedback_for_test_cases(user3, user1)
189+
create_user_feedback_for_test_cases(user2, user1)
190+
191+
url = "/users/{}/feedbacks"
192+
193+
response = client.get(url.format(user1["id"]))
194+
r_json = response.get_json()
195+
assert len(r_json) == 2
196+
assert [r_json[0]["user_id"], r_json[0]["author_id"], r_json[1]["user_id"], r_json[1]["author_id"]] == \
197+
[user1["id"], user3["id"], user1["id"], user2["id"]]
198+
199+
response = client.get(url.format(user2["id"]))
200+
r_json = response.get_json()
201+
assert len(r_json) == 1
202+
assert [r_json[0]["user_id"], r_json[0]["author_id"]] == [user2["id"], user1["id"]]
203+
204+
def test_delete_user_feedback(self, client):
205+
user1 = create_user_for_test_cases(self.valid_data)
206+
207+
self.valid_data["name"] = "delete user2"
208+
user2 = create_user_for_test_cases(self.valid_data)
209+
210+
fb1 = create_user_feedback_for_test_cases(user1, user2)
211+
fb2 = create_user_feedback_for_test_cases(user1, user2)
212+
213+
url = "/users/{0}/feedbacks/{1}"
214+
215+
response = client.delete(url.format(user1["id"], 0))
216+
assert response.status_code == 404
217+
218+
response = client.delete(url.format(0, fb1["id"]))
219+
assert response.status_code == 404
220+
221+
response = client.delete(url.format(user2["id"], fb1["id"]))
222+
assert response.status_code == 200
223+
assert UserFeedback.query.filter_by(user_id=user2["id"]).count() == 1

0 commit comments

Comments
 (0)