Skip to content

Commit 75f1e9d

Browse files
author
marter11
committed
user link creation tests
1 parent 6c944a0 commit 75f1e9d

File tree

4 files changed

+87
-15
lines changed

4 files changed

+87
-15
lines changed

src/api/controllers/projectController.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ def create_link(self, project_id, **kwargs):
6969

7070
return link
7171
except:
72+
self.session.rollback()
7273
return None
7374

7475
def update_link(self, project_id, link_id, **kwargs):
@@ -113,6 +114,7 @@ def create_feedback(self, project_id, **kwargs):
113114

114115
return feedback
115116
except:
117+
self.session.rollback()
116118
return None
117119

118120
def get_all_feedbacks(self, project_id):

tests/api/__init__.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,13 @@ def create_project_for_test_cases(data):
1717
new_project = Project(**data)
1818
db.session.add(new_project)
1919
db.session.commit()
20-
return new_project.id
20+
return new_project.as_dict()
21+
22+
def create_project_link_for_test_cases(data):
23+
new_project_link = ProjectLink(**data)
24+
db.session.add(new_project_link)
25+
db.session.commit()
26+
return new_project_link.as_dict()
2127

2228
def create_user_for_test_cases(data):
2329
new_user = User(**data)
@@ -27,12 +33,6 @@ def create_user_for_test_cases(data):
2733

2834
def create_user_link_for_test_cases(data):
2935
new_user_link = UserLink(**data)
30-
db.session.add(new_user)
36+
db.session.add(new_user_link)
3137
db.session.commit()
3238
return new_user_link.as_dict()
33-
34-
def create_project_for_test_cases(data):
35-
new_project_link = ProjectLink(**data)
36-
db.session.add(new_project_link)
37-
db.session.commit()
38-
return new_project_link.as_dict()

tests/api/views/test_projectView.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from tests.conftest import client
22
from tests import db, Project
3-
from tests.api import create_project_for_test_cases
43

4+
from tests.api import create_project_for_test_cases
55
class TestProjectView(object):
66

77
valid_data = {
@@ -41,3 +41,13 @@ def test_delete_project(self, client):
4141
# project_id = self.create_project_for_test_cases()
4242
# response = client.delete('/project/{}'.format(project_id))
4343
# assert response.status_code == 202
44+
45+
def test_create_porject_link(self, client):
46+
project = create_project_for_test_cases(self.valid_data)
47+
url = '/projects/{}/links'.format(project["id"])
48+
49+
response = client.post(url, json={"user_id": 0})
50+
assert response.status_code == 400
51+
52+
response = client.post(url, json={"name": "Main link", "url": "http://main.link"})
53+
assert response.status_code == 201

tests/api/views/test_userView.py

Lines changed: 66 additions & 6 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
3-
from tests.api import create_user_for_test_cases
2+
from tests import db, User, UserLink
3+
from tests.api import create_user_for_test_cases, create_user_link_for_test_cases
44

55
class TestUserView(object):
66

@@ -84,17 +84,77 @@ def test_get_all_users(self, client):
8484
assert response.status_code == 200
8585
assert response.get_json() == [users_dict[1]]
8686

87-
# notice: Why do we need name in UserLink?
88-
# notice: Won't the API will provide the UserLink, then why the endpoint expects a UserLink specification?
8987
def test_create_user_link(self, client):
9088
user = create_user_for_test_cases(self.valid_data)
9189
url = '/users/{}/links'.format(user["id"])
9290

9391
response = client.post(url, json={"user_id": user["id"]})
9492
assert response.status_code == 400
9593

96-
# response = client.post(url, )
97-
# assert 1 == 1
94+
response = client.post(url, json={"name": "Smedia", "url": "http://s.media"})
95+
assert response.status_code == 201
96+
97+
response = client.post(url, json={"name": None, "url": "http://l.co"})
98+
assert response.status_code == 400
99+
100+
response = client.post(url, json={"name": "WORK"})
101+
assert response.status_code == 400
102+
103+
def test_update_user_link(self, client):
104+
user = create_user_for_test_cases(self.valid_data)
105+
link = create_user_link_for_test_cases({"name": "Discord", "url": "http://dc.com/my", "user_id": user["id"]})
106+
107+
url = "/users/{0}/links/{1}".format(0, link["id"])
108+
109+
response = client.post(url, json={"name": "Portfolio"})
110+
assert response.status_code == 400
111+
112+
url = "/users/{0}/links/{1}".format(user["id"], link["id"])
113+
114+
response = client.post(url, json={"user_id": 0})
115+
assert response.status_code == 400
116+
117+
response = client.post(url, json={"link_id": 1})
118+
assert response.status_code == 400
119+
120+
# notice: Should we respond to update_user request without json data with status code 200?
121+
# response = client.post(url, json={})
122+
# assert response.status_code == 400
123+
124+
response = client.post(url, json={"name": "New Name"})
125+
assert response.status_code == 200
126+
assert response.get_json()["name"] == "New Name"
127+
128+
def test_get_all_user_links(self, client):
129+
user = create_user_for_test_cases(self.valid_data)
130+
link1 = create_user_link_for_test_cases({"name": "Discord", "url": "http://dc.com/my", "user_id": user["id"]})
131+
link2 = create_user_link_for_test_cases({"name": "PB", "url": "http://pb.com/ur234", "user_id": user["id"]})
132+
133+
response = client.get("/users/{}/links".format(user["id"]))
134+
assert response.status_code == 200
135+
assert response.get_json() == [link1, link2]
136+
137+
def test_delete_user_link(self, client):
138+
user = create_user_for_test_cases(self.valid_data)
139+
link1 = UserLink(**{"name": "Discord", "url": "http://dc.com/my", "user_id": user["id"]})
140+
link2 = UserLink(**{"name": "PB", "url": "http://pb.com/ur234", "user_id": user["id"]})
141+
142+
db.session.add(link1)
143+
db.session.add(link2)
144+
db.session.commit()
145+
146+
response = client.delete("/users/{0}/links/{1}".format(0, link1.id))
147+
assert response.status_code == 404
148+
149+
response = client.delete("/users/{0}/links/{1}".format(user["id"], 0))
150+
assert response.status_code == 404
151+
152+
response = client.delete("/users/{0}/links/{1}".format(user["id"], link1.id))
153+
assert response.status_code == 200
154+
155+
recorded_links = UserLink.query.all()
156+
assert len(recorded_links) == 1
157+
assert link1 not in recorded_links
98158

99159
def test_create_user_feedback(self, client):
100160
user1 = create_user_for_test_cases(self.valid_data)

0 commit comments

Comments
 (0)