11from tests .conftest import client
22from tests import db , User
3+ from tests .api import create_user_for_test_cases
34
45class TestUserView (object ):
56
7+ # valid data for user creation
68 valid_data = {
79 'name' : 'L Jone' ,
810 'bio' : 'coding...' ,
@@ -12,12 +14,6 @@ class TestUserView(object):
1214 'occupation' : 'cashier'
1315 }
1416
15- def create_user_for_test_cases (self ):
16- new_user = User (** self .valid_data )
17- db .session .add (new_user )
18- db .session .commit ()
19- return new_user .id
20-
2117 def test_create_user (self , client ):
2218 response = client .post ('/users' , json = self .valid_data )
2319 assert response .status_code == 201
@@ -26,7 +22,7 @@ def test_create_user(self, client):
2622 assert response .status_code == 400
2723
2824 def test_update_user (self , client ):
29- user_id = self . create_user_for_test_cases ()
25+ user_id = create_user_for_test_cases (self . valid_data )[ "id" ]
3026
3127 response = client .post ('/users/1' , json = {})
3228 assert response .status_code == 400
@@ -38,15 +34,14 @@ def test_update_user(self, client):
3834 response = client .post ('/users/{}' .format (user_id ), json = {"name" : "Updated Name" })
3935 assert response .status_code == 200
4036
41- # created_user = User.query.filter_by(id=user_id).first()
4237 assert response .get_json ()['name' ] == "Updated Name"
4338
4439 def test_delete_user (self , client ):
4540 user_id = None
4641 response = client .delete ('/users/{}' .format (user_id ))
4742 assert response .status_code == 404
4843
49- user_id = self . create_user_for_test_cases ()
44+ user_id = create_user_for_test_cases (self . valid_data )[ "id" ]
5045 response = client .delete ('/users/{}' .format (user_id ))
5146 assert response .status_code == 200
5247
@@ -55,15 +50,14 @@ def test_get_user(self, client):
5550 response = client .get ('/users/{}' .format (user_id ))
5651 assert response .status_code == 404
5752
58- user_id = self .create_user_for_test_cases ()
53+ user = create_user_for_test_cases (self .valid_data )
54+ user_id = user ["id" ]
5955 response = client .get ('/users/{}' .format (user_id ))
6056 assert response .status_code == 200
61-
62- created_user = User .query .filter_by (id = user_id ).first ()
63- assert response .get_json () == created_user .as_dict ()
57+ assert response .get_json () == user
6458
6559 def test_get_all_users (self , client ):
66- self . create_user_for_test_cases ()
60+ create_user_for_test_cases (self . valid_data )
6761
6862 self .valid_data = {
6963 'name' : 'Valid' ,
@@ -74,7 +68,7 @@ def test_get_all_users(self, client):
7468 'occupation' : 'cashier2.1'
7569 }
7670
77- self . create_user_for_test_cases ()
71+ create_user_for_test_cases (self . valid_data )
7872
7973 response = client .get ('/users' )
8074 assert response .status_code == 200
@@ -89,3 +83,34 @@ def test_get_all_users(self, client):
8983 response = client .get ('/users' )
9084 assert response .status_code == 200
9185 assert response .get_json () == [users_dict [1 ]]
86+
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?
89+ def test_create_user_link (self , client ):
90+ user = create_user_for_test_cases (self .valid_data )
91+ url = '/users/{}/links' .format (user ["id" ])
92+
93+ response = client .post (url , json = {"user_id" : user ["id" ]})
94+ assert response .status_code == 400
95+
96+ # response = client.post(url, )
97+ # assert 1 == 1
98+
99+ def test_create_user_feedback (self , client ):
100+ user1 = create_user_for_test_cases (self .valid_data )
101+
102+ self .valid_data ["name" ] = "Other name"
103+ user2 = create_user_for_test_cases (self .valid_data )
104+
105+ url = '/users/{}/feedbacks' .format (user2 ["id" ])
106+ response = client .post (url , json = {"user_id" : user2 ["id" ]})
107+ assert response .status_code == 400
108+
109+ feedback = {
110+ "author_id" : int (user1 ["id" ]),
111+ "rating" : 5 ,
112+ "description" : "Cool guy!" ,
113+ }
114+
115+ response = client .post (url , json = feedback )
116+ assert response .status_code == 201
0 commit comments