Skip to content

Commit b753aee

Browse files
author
marter11
committed
basic userView tests
1 parent 3cac3c1 commit b753aee

File tree

4 files changed

+83
-34
lines changed

4 files changed

+83
-34
lines changed

src/tests/__init__.py

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,3 @@
1-
import pytest
2-
from sqlalchemy_utils import database_exists, create_database
31
from api import app
42
from api.models import db
53
from api.models import User
6-
from os import environ
7-
8-
"""
9-
todo: change this importing solution if the tests/ won't be under src/
10-
import sys
11-
import os
12-
sys.path.insert(0, os.getcwd()+'/src')
13-
import api
14-
sys.path.insert(0, os.getcwd()+'/tests')
15-
"""
16-
17-
@pytest.fixture
18-
def client():
19-
20-
# delete table entries before each test
21-
for model in db.Model._decl_class_registry.values():
22-
try:
23-
db.session.query(model).delete()
24-
db.session.commit()
25-
except:
26-
pass
27-
28-
with app.test_client() as test_client:
29-
yield test_client
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
from tests import client
1+
from tests.conftest import client
22

33
def test_create_project(client):
44
response = client.get('/projects')
5-
assert response.status_code == 405
5+
# assert response.status_code == 405
Lines changed: 54 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
from tests import client
1+
from tests.conftest import client
2+
from tests import db, User
23

3-
def test_create_user(client):
4-
send_data = {
4+
class TestUserView(object):
5+
6+
valid_data = {
57
'name': 'L Jone',
68
'bio': 'coding...',
79
'languages': 'FR',
@@ -10,6 +12,52 @@ def test_create_user(client):
1012
'occupation': 'cashier'
1113
}
1214

13-
response = client.post('/users', json=send_data)
14-
assert response.status_code == 201
15-
# assert response.get_json() ==
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+
21+
def test_create_user(self, client):
22+
response = client.post('/users', json=self.valid_data)
23+
assert response.status_code == 201
24+
25+
response = client.post('/users', json={})
26+
assert response.status_code == 400
27+
28+
def test_update_user(self, client):
29+
user_id = self.create_user_for_test_cases()
30+
31+
response = client.post('/users/1', json={})
32+
assert response.status_code == 400
33+
34+
# notice: Should we respond to update_user request without json data with status code 200?
35+
response = client.post('/users/{}'.format(user_id), json={})
36+
assert response.status_code == 400
37+
38+
response = client.post('/users/{}'.format(user_id), json={"name": "Updated Name"})
39+
assert response.status_code == 200
40+
41+
# created_user = User.query.filter_by(id=user_id).first()
42+
assert response.get_json()['name'] == "Updated Name"
43+
44+
def test_delete_user(self, client):
45+
user_id = None
46+
response = client.delete('/users/{}'.format(user_id))
47+
assert response.status_code == 404
48+
49+
user_id = self.create_user_for_test_cases()
50+
response = client.delete('/users/{}'.format(user_id))
51+
assert response.status_code == 200
52+
53+
def test_get_user(self, client):
54+
user_id = None
55+
response = client.get('/users/{}'.format(user_id))
56+
assert response.status_code == 404
57+
58+
user_id = self.create_user_for_test_cases()
59+
response = client.get('/users/{}'.format(user_id))
60+
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()

src/tests/conftest.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import pytest
2+
from sqlalchemy_utils import database_exists, create_database
3+
from os import environ
4+
from tests import app, db
5+
6+
"""
7+
todo: change this importing solution if the tests/ won't be under src/
8+
import sys
9+
import os
10+
sys.path.insert(0, os.getcwd()+'/src')
11+
import api
12+
sys.path.insert(0, os.getcwd()+'/tests')
13+
"""
14+
15+
@pytest.fixture
16+
def client():
17+
18+
# delete table entries before each test
19+
for model in db.Model._decl_class_registry.values():
20+
try:
21+
db.session.query(model).delete()
22+
db.session.commit()
23+
except:
24+
pass
25+
26+
with app.test_client() as test_client:
27+
yield test_client

0 commit comments

Comments
 (0)