|
1 |
| -from time_tracker.time_entries._infrastructure import TimeEntriesJsonDao |
2 |
| -from time_tracker.time_entries._domain import TimeEntry |
3 |
| -from faker import Faker |
4 | 1 | import json
|
5 | 2 | import pytest
|
6 | 3 | import typing
|
7 | 4 | import random
|
8 | 5 |
|
| 6 | +from faker import Faker |
| 7 | + |
| 8 | +import time_tracker.activities._domain as domain |
| 9 | +import time_tracker.activities._infrastructure as infrastructure |
| 10 | +from time_tracker._infrastructure import DB |
| 11 | + |
| 12 | +from time_tracker.time_entries._infrastructure import TimeEntriesSQLDao |
| 13 | +from time_tracker.time_entries._domain import TimeEntry,TimeEntriesDao |
| 14 | + |
9 | 15 | fake_time_entries = [
|
10 | 16 | {
|
11 | 17 | "id": Faker().pyint(),
|
|
21 | 27 | "project_id": Faker().uuid4(),
|
22 | 28 | }
|
23 | 29 | ]
|
| 30 | +# @pytest.fixture(name='insert_activity') |
| 31 | +# def _insert_activity() -> domain.Activity: |
| 32 | +# def _new_activity(activity: domain.Activity, dao: domain.ActivitiesDao): |
| 33 | +# new_activity = dao.create(activity) |
| 34 | +# return new_activity |
| 35 | +# return _new_activity |
24 | 36 |
|
25 | 37 |
|
26 |
| -@pytest.fixture(name="create_fake_time_entries") |
27 |
| -def _create_fake_time_entries(mocker) -> typing.List[TimeEntry]: |
28 |
| - def _creator(time_entries): |
29 |
| - read_data = json.dumps(time_entries) |
30 |
| - mocker.patch("builtins.open", mocker.mock_open(read_data=read_data)) |
31 |
| - return [TimeEntry(**time_entry) for time_entry in time_entries] |
32 | 38 |
|
33 |
| - return _creator |
| 39 | +@pytest.fixture(name='insert_time_entry') |
| 40 | +def _insert_time_entry() -> TimeEntry: |
| 41 | + def _new_time_entry(time_entry: TimeEntry, dao: TimeEntriesSQLDao): |
| 42 | + _new_time_entry = dao.create(time_entry) |
| 43 | + return _new_time_entry |
| 44 | + return _new_time_entry |
34 | 45 |
|
| 46 | +@pytest.fixture(name='create_fake_dao') |
| 47 | +def _create_fake_dao() -> TimeEntriesSQLDao: |
| 48 | + db_fake = DB('sqlite:///:memory:') |
| 49 | + dao = TimeEntriesSQLDao(db_fake) |
| 50 | + return dao |
35 | 51 |
|
36 |
| -def test_get_by_id__returns_an_time_entry_dto__when_found_one_time_entry_that_matches_its_id( |
37 |
| - create_fake_time_entries, |
38 |
| -): |
39 |
| - print(fake_time_entries) |
40 |
| - time_entries_json_dao = TimeEntriesJsonDao(Faker().file_path()) |
41 |
| - time_entries = create_fake_time_entries(fake_time_entries) |
42 |
| - time_entries_dto = time_entries.pop() |
43 | 52 |
|
44 |
| - result = time_entries_json_dao.get_by_id(time_entries_dto.id) |
| 53 | +@pytest.fixture(name='clean_database', autouse=True) |
| 54 | +def _clean_database(): |
| 55 | + yield |
| 56 | + db_fake = DB('sqlite:///:memory:') |
| 57 | + dao = infrastructure.ActivitiesSQLDao(db_fake) |
| 58 | + query = dao.activity.delete() |
| 59 | + dao.db.get_session().execute(query) |
| 60 | + |
45 | 61 |
|
46 |
| - assert result == time_entries_dto |
47 | 62 |
|
| 63 | +# @pytest.fixture(name="create_fake_time_entries") |
| 64 | +# def _create_fake_time_entries(mocker) -> typing.List[TimeEntry]: |
| 65 | +# def _creator(time_entries): |
| 66 | +# read_data = json.dumps(time_entries) |
| 67 | +# mocker.patch("builtins.open", mocker.mock_open(read_data=read_data)) |
| 68 | +# return [TimeEntry(**time_entry) for time_entry in time_entries] |
48 | 69 |
|
49 |
| -def test__get_by_id__returns_none__when_no_time_entry_matches_its_id( |
50 |
| - create_fake_time_entries, |
| 70 | +# return _creator |
| 71 | + |
| 72 | + |
| 73 | +def test__get_all__returns_a_list_of_time_entries_dto_objects__when_one_or_more_time_entries_are_found_in_sql_database( |
| 74 | + create_fake_dao, time_entry_factory, insert_time_entry,insert_activity, activity_factory |
51 | 75 | ):
|
52 |
| - time_entries_json_dao = TimeEntriesJsonDao(Faker().file_path()) |
53 |
| - create_fake_time_entries([]) |
| 76 | + dao=create_fake_dao |
| 77 | + inserted_activity = insert_activity(activity_factory(),dao.db) |
| 78 | + print("================") |
| 79 | + print(activity_factory()) |
| 80 | + print(inserted_activity) |
| 81 | + existent_time_entries = [time_entry_factory(activity_id=inserted_activity.id)] |
| 82 | + inserted_time_entries = [insert_time_entry(existent_time_entries[0], dao)] |
| 83 | + time_entry= dao.get_all() |
| 84 | + |
| 85 | + assert isinstance(time_entry, typing.List) |
| 86 | + assert time_entry == inserted_time_entries |
54 | 87 |
|
55 |
| - result = time_entries_json_dao.get_by_id(Faker().uuid4()) |
| 88 | +# def test__get_by_id__returns_none__when_no_time_entry_matches_its_id( |
| 89 | +# create_fake_time_entries, |
| 90 | +# ): |
| 91 | +# time_entries_json_dao = TimeEntriesJsonDao(Faker().file_path()) |
| 92 | +# create_fake_time_entries([]) |
56 | 93 |
|
57 |
| - assert result is None |
| 94 | +# result = time_entries_json_dao.get_by_id(Faker().uuid4()) |
58 | 95 |
|
| 96 | +# assert result is None |
59 | 97 |
|
60 |
| -def test__get_all__returns_a_list_of_time_entry_dto_objects__when_one_or_more_time_entries_are_found( |
61 |
| - create_fake_time_entries, |
62 |
| -): |
63 |
| - time_entries_json_dao = TimeEntriesJsonDao(Faker().file_path()) |
64 |
| - number_of_time_entries = 3 |
65 |
| - time_entries = create_fake_time_entries(fake_time_entries * number_of_time_entries) |
66 | 98 |
|
67 |
| - result = time_entries_json_dao.get_all() |
| 99 | +# def test__get_all__returns_a_list_of_time_entry_dto_objects__when_one_or_more_time_entries_are_found( |
| 100 | +# create_fake_time_entries, |
| 101 | +# ): |
| 102 | +# time_entries_json_dao = TimeEntriesJsonDao(Faker().file_path()) |
| 103 | +# number_of_time_entries = 3 |
| 104 | +# time_entries = create_fake_time_entries(fake_time_entries * number_of_time_entries) |
68 | 105 |
|
69 |
| - assert result == time_entries |
| 106 | +# result = time_entries_json_dao.get_all() |
70 | 107 |
|
| 108 | +# assert result == time_entries |
| 109 | + |
| 110 | + |
| 111 | +# def test_get_all__returns_an_empty_list__when_doesnt_found_any_time_entries( |
| 112 | +# create_fake_time_entries, |
| 113 | +# ): |
| 114 | +# time_entries_json_dao = TimeEntriesJsonDao(Faker().file_path()) |
| 115 | +# time_entries = create_fake_time_entries([]) |
| 116 | + |
| 117 | +# result = time_entries_json_dao.get_all() |
| 118 | + |
| 119 | +# assert result == time_entries |
| 120 | + |
| 121 | +# def test__get_all__returns_a_list_of_activity_dto_objects__when_one_or_more_activities_are_found_with_sql_database( |
| 122 | +# create_fake_dao, activity_factory, insert_activity |
| 123 | +# ): |
| 124 | +# dao = create_fake_dao |
| 125 | +# existent_activities = [activity_factory(), activity_factory()] |
| 126 | +# inserted_activities = [ |
| 127 | +# insert_activity(existent_activities[0], dao), |
| 128 | +# insert_activity(existent_activities[1], dao) |
| 129 | +# ] |
| 130 | + |
| 131 | +# activities = dao.get_all() |
| 132 | + |
| 133 | +# assert isinstance(activities, typing.List) |
| 134 | +# assert activities == inserted_activities |
| 135 | + |
| 136 | + |
| 137 | +# def test_get_by_id__returns_an_activity_dto__when_found_one_activity_that_matches_its_id_with_sql_database( |
| 138 | +# create_fake_dao, activity_factory, insert_activity |
| 139 | +# ): |
| 140 | +# dao = create_fake_dao |
| 141 | +# existent_activity = activity_factory() |
| 142 | +# inserted_activity = insert_activity(existent_activity, dao) |
| 143 | + |
| 144 | +# activity = dao.get_by_id(inserted_activity.id) |
| 145 | + |
| 146 | +# assert isinstance(activity, domain.Activity) |
| 147 | +# assert activity.id == inserted_activity.id |
| 148 | +# assert activity == inserted_activity |
| 149 | + |
| 150 | + |
| 151 | +# def test__get_by_id__returns_none__when_no_activity_matches_its_id_with_sql_database( |
| 152 | +# create_fake_dao, activity_factory |
| 153 | +# ): |
| 154 | +# dao = create_fake_dao |
| 155 | +# existent_activity = activity_factory() |
| 156 | + |
| 157 | +# activity = dao.get_by_id(existent_activity.id) |
| 158 | + |
| 159 | +# assert activity is None |
71 | 160 |
|
72 |
| -def test_get_all__returns_an_empty_list__when_doesnt_found_any_time_entries( |
73 |
| - create_fake_time_entries, |
74 |
| -): |
75 |
| - time_entries_json_dao = TimeEntriesJsonDao(Faker().file_path()) |
76 |
| - time_entries = create_fake_time_entries([]) |
77 | 161 |
|
78 |
| - result = time_entries_json_dao.get_all() |
| 162 | +# def test_get_all__returns_an_empty_list__when_doesnt_found_any_activities_with_sql_database( |
| 163 | +# create_fake_dao |
| 164 | +# ): |
| 165 | +# activities = create_fake_dao.get_all() |
79 | 166 |
|
80 |
| - assert result == time_entries |
| 167 | +# assert isinstance(activities, typing.List) |
| 168 | +# assert activities == [] |
0 commit comments