Skip to content

Commit 844797f

Browse files
committed
test: TT-417 add test with customer id
1 parent 4ad3e77 commit 844797f

File tree

5 files changed

+50
-23
lines changed

5 files changed

+50
-23
lines changed

V2/tests/api/azure/project_azure_endpoints_test.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@ def _new_project(project: domain.Project, database: DB):
2222

2323

2424
def test__project_azure_endpoint__returns_all_projects(
25-
test_db, project_factory, insert_project
25+
test_db, project_factory, insert_project, insert_customer, customer_factory
2626
):
27-
project_to_insert = [project_factory(), project_factory()]
27+
inserted_customer = insert_customer(customer_factory(), test_db)
28+
project_to_insert = [project_factory(customer_id=inserted_customer.id),
29+
project_factory(customer_id=inserted_customer.id)]
2830
inserted_projects = [
2931
insert_project(project_to_insert[0], test_db).__dict__,
3032
insert_project(project_to_insert[1], test_db).__dict__
@@ -39,9 +41,10 @@ def test__project_azure_endpoint__returns_all_projects(
3941

4042

4143
def test__project_azure_endpoint__returns_an_project__when_project_matches_its_id(
42-
test_db, project_factory, insert_project
44+
test_db, project_factory, insert_project, insert_customer, customer_factory
4345
):
44-
project_to_insert = project_factory()
46+
inserted_customer = insert_customer(customer_factory(), test_db)
47+
project_to_insert = project_factory(customer_id=inserted_customer.id)
4548
inserted_project = insert_project(project_to_insert, test_db).__dict__
4649

4750
req = func.HttpRequest(
@@ -74,9 +77,10 @@ def test__projects_azure_endpoint__returns_a_status_code_400__when_project_reciv
7477

7578

7679
def test__project_azure_endpoint__returns_an_project_with_inactive_status__when_an_project_matching_its_id_is_found(
77-
test_db, project_factory, insert_project
80+
test_db, project_factory, insert_project, insert_customer, customer_factory
7881
):
79-
project_to_insert = project_factory()
82+
inserted_customer = insert_customer(customer_factory(), test_db)
83+
project_to_insert = project_factory(customer_id=inserted_customer.id)
8084
inserted_project = insert_project(project_to_insert, test_db).__dict__
8185

8286
req = func.HttpRequest(
@@ -110,9 +114,10 @@ def test__delete_projects_azure_endpoint__returns_a_status_code_400__when_projec
110114

111115

112116
def test__update_project_azure_endpoint__returns_an_project__when_found_an_project_to_update(
113-
test_db, project_factory, insert_project
117+
test_db, project_factory, insert_project, insert_customer, customer_factory
114118
):
115-
project_to_insert = project_factory()
119+
inserted_customer = insert_customer(customer_factory(), test_db)
120+
project_to_insert = project_factory(customer_id=inserted_customer.id)
116121
inserted_project = insert_project(project_to_insert, test_db).__dict__
117122

118123
project_body = {"description": Faker().sentence()}
@@ -147,9 +152,10 @@ def test__update_projects_azure_endpoint__returns_a_status_code_400__when_projec
147152

148153

149154
def test__project_azure_endpoint__creates_an_project__when_project_has_all_attributes(
150-
project_factory
155+
test_db, project_factory, insert_customer, customer_factory
151156
):
152-
project_body = project_factory().__dict__
157+
inserted_customer = insert_customer(customer_factory(), test_db)
158+
project_body = project_factory(customer_id=inserted_customer.id).__dict__
153159
body = json.dumps(project_body).encode("utf-8")
154160
req = func.HttpRequest(
155161
method='POST',

V2/tests/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# flake8: noqa
22
from fixtures import _activity_factory, _test_db, _insert_activity
33
from fixtures import _time_entry_factory
4-
from fixtures import _customer_factory
4+
from fixtures import _customer_factory, _insert_customer
55
from fixtures import _project_factory

V2/tests/fixtures.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import time_tracker.activities._infrastructure as activities_infrastructure
66
import time_tracker.time_entries._domain as time_entries_domain
77
import time_tracker.customers._domain as customers_domain
8+
import time_tracker.customers._infrastructure as customers_infrastructure
89
import time_tracker.projects._domain as projects_domain
910
from time_tracker._infrastructure import DB
1011

@@ -95,6 +96,8 @@ def _make_customer(
9596
return customer
9697

9798
return _make_customer
99+
100+
98101
@pytest.fixture(name='project_factory')
99102
def _project_factory() -> projects_domain.Project:
100103
def _make_project(
@@ -119,3 +122,12 @@ def _make_project(
119122
)
120123
return project
121124
return _make_project
125+
126+
127+
@pytest.fixture(name='insert_customer')
128+
def _insert_customer() -> dict:
129+
def _new_customer(activity: customers_domain.Customer, database: DB):
130+
dao = customers_infrastructure.CustomersSQLDao(database)
131+
new_activity = dao.create(activity)
132+
return new_activity
133+
return _new_customer

V2/tests/integration/daos/projects_dao_test.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,11 @@ def _clean_database():
2424

2525

2626
def test__create_project__returns_a_project_dto__when_saves_correctly_with_sql_database(
27-
create_fake_dao, project_factory
27+
create_fake_dao, project_factory, insert_customer, customer_factory
2828
):
2929
dao = create_fake_dao
30-
project_to_insert = project_factory()
30+
inserted_customer = insert_customer(customer_factory(), dao.db)
31+
project_to_insert = project_factory(customer_id=inserted_customer.id)
3132

3233
inserted_project = dao.create(project_to_insert)
3334

@@ -36,10 +37,12 @@ def test__create_project__returns_a_project_dto__when_saves_correctly_with_sql_d
3637

3738

3839
def test_update__returns_an_update_project__when_an_project_matching_its_id_is_found_with_sql_database(
39-
create_fake_dao, project_factory
40+
create_fake_dao, project_factory, insert_customer, customer_factory
4041
):
4142
dao = create_fake_dao
42-
project_to_insert = project_factory()
43+
inserted_customer = insert_customer(customer_factory(), dao.db)
44+
project_to_insert = project_factory(customer_id=inserted_customer.id)
45+
4346
inserted_project = dao.create(project_to_insert)
4447

4548
expected_description = Faker().sentence()
@@ -62,10 +65,13 @@ def test_update__returns_none__when_no_project_matching_its_id_is_found_with_sql
6265

6366

6467
def test__get_all__returns_a_list_of_project_dto_objects__when_one_or_more_projects_are_found_with_sql_database(
65-
create_fake_dao, project_factory
68+
create_fake_dao, project_factory, insert_customer, customer_factory
6669
):
6770
dao = create_fake_dao
68-
project_to_inserts = [project_factory(), project_factory()]
71+
inserted_customer = insert_customer(customer_factory(), dao.db)
72+
project_to_inserts = [project_factory(customer_id=inserted_customer.id),
73+
project_factory(customer_id=inserted_customer.id)]
74+
6975
inserted_projects = [
7076
dao.create(project_to_inserts[0]),
7177
dao.create(project_to_inserts[1])
@@ -77,10 +83,12 @@ def test__get_all__returns_a_list_of_project_dto_objects__when_one_or_more_proje
7783

7884

7985
def test_get_by_id__returns_an_project_dto__when_found_one_project_that_matches_its_id_with_sql_database(
80-
create_fake_dao, project_factory
86+
create_fake_dao, project_factory, insert_customer, customer_factory
8187
):
8288
dao = create_fake_dao
83-
project_to_insert = project_factory()
89+
inserted_customer = insert_customer(customer_factory(), dao.db)
90+
project_to_insert = project_factory(customer_id=inserted_customer.id)
91+
8492
inserted_project = dao.create(project_to_insert)
8593

8694
project = dao.get_by_id(inserted_project.id)
@@ -111,10 +119,11 @@ def test_get_all__returns_an_empty_list__when_doesnt_found_any_projects_with_sql
111119

112120

113121
def test_delete__returns_an_project_with_inactive_status__when_an_project_matching_its_id_is_found_with_sql_database(
114-
create_fake_dao, project_factory
122+
create_fake_dao, project_factory, insert_customer, customer_factory
115123
):
116124
dao = create_fake_dao
117-
project_to_insert = project_factory()
125+
inserted_customer = insert_customer(customer_factory(), dao.db)
126+
project_to_insert = project_factory(customer_id=inserted_customer.id)
118127
inserted_project = dao.create(project_to_insert)
119128

120129
project = dao.delete(inserted_project.id)

V2/time_tracker/projects/_infrastructure/_data_persistence/_projects_dao.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def __init__(self, database: _db.DB):
1919
sq.Column('name', sq.String),
2020
sq.Column('description', sq.String),
2121
sq.Column('project_type_id', sq.Integer),
22-
sq.Column('customer_id', sq.Integer),
22+
sq.Column('customer_id', sq.Integer, sq.ForeignKey('customer.id')),
2323
sq.Column('status', sq.SmallInteger),
2424
sq.Column('deleted', sq.BOOLEAN),
2525
sq.Column(
@@ -39,7 +39,7 @@ def create(self, project_data: domain.Project) -> domain.Project:
3939
new_project.update({"id": project.inserted_primary_key[0]})
4040
return self.__create_project_dto(new_project)
4141

42-
except sq.exc.sqError:
42+
except sq.exc.SQLAlchemyError:
4343
return None
4444

4545
def get_by_id(self, id: int) -> domain.Project:

0 commit comments

Comments
 (0)