|
1 | 1 | from V2.source.daos.activities_json_dao import ActivitiesJsonDao |
2 | | -from V2.source.dtos.activity import ActivityDto |
3 | | -from http import HTTPStatus |
| 2 | +from V2.source.dtos.activity import Activity |
| 3 | +from faker import Faker |
4 | 4 | import json |
| 5 | +import pytest |
| 6 | +import typing |
5 | 7 |
|
6 | 8 |
|
7 | | -OPEN_FILE = 'builtins.open' |
| 9 | +@pytest.fixture(name='create_fake_activities') |
| 10 | +def _create_fake_activities(mocker) -> typing.List[Activity]: |
| 11 | + def _creator(activities): |
| 12 | + read_data = json.dumps(activities) |
| 13 | + mocker.patch('builtins.open', mocker.mock_open(read_data=read_data)) |
| 14 | + return [Activity(**activity) for activity in activities] |
8 | 15 |
|
| 16 | + return _creator |
9 | 17 |
|
10 | | -def test_get_by_id__return_activity_dto__when_find_activity_that_matches_its_id( |
11 | | - mocker, |
| 18 | + |
| 19 | +def test_get_by_id__returns_an_activity_dto__when_found_one_activity_that_matches_its_id( |
| 20 | + create_fake_activities, |
12 | 21 | ): |
13 | | - activities_json_dao = ActivitiesJsonDao('non-important-path') |
14 | | - activities = [ |
15 | | - { |
16 | | - "name": "test_name", |
17 | | - "description": "test_description", |
18 | | - "tenant_id": "test_tenant_id", |
19 | | - "id": "test_id", |
20 | | - "deleted": "test_deleted", |
21 | | - "status": "test_status", |
22 | | - } |
23 | | - ] |
24 | | - read_data = json.dumps(activities) |
25 | | - activity_dto = ActivityDto(**activities.pop()) |
26 | | - |
27 | | - mocker.patch(OPEN_FILE, mocker.mock_open(read_data=read_data)) |
| 22 | + activities_json_dao = ActivitiesJsonDao(Faker().file_path()) |
| 23 | + activities = create_fake_activities( |
| 24 | + [ |
| 25 | + { |
| 26 | + "name": "test_name", |
| 27 | + "description": "test_description", |
| 28 | + "tenant_id": "test_tenant_id", |
| 29 | + "id": "test_id", |
| 30 | + "deleted": "test_deleted", |
| 31 | + "status": "test_status", |
| 32 | + } |
| 33 | + ] |
| 34 | + ) |
| 35 | + activity_dto = activities.pop() |
| 36 | + |
28 | 37 | result = activities_json_dao.get_by_id(activity_dto.id) |
29 | 38 |
|
30 | 39 | assert result == activity_dto |
31 | 40 |
|
32 | 41 |
|
33 | | -def test__get_by_id__return_httpstatus_not_found__when_no_activity_matches_its_id( |
34 | | - mocker, |
| 42 | +def test__get_by_id__returns_none__when_no_activity_matches_its_id( |
| 43 | + create_fake_activities, |
35 | 44 | ): |
36 | | - activities_json_dao = ActivitiesJsonDao('non-important-path') |
37 | | - activities = [] |
38 | | - read_data = json.dumps(activities) |
| 45 | + activities_json_dao = ActivitiesJsonDao(Faker().file_path()) |
| 46 | + create_fake_activities([]) |
39 | 47 |
|
40 | | - mocker.patch(OPEN_FILE, mocker.mock_open(read_data=read_data)) |
41 | | - result = activities_json_dao.get_by_id('non-important-id') |
| 48 | + result = activities_json_dao.get_by_id(Faker().uuid4()) |
42 | 49 |
|
43 | | - assert result == HTTPStatus.NOT_FOUND |
| 50 | + assert result == None |
44 | 51 |
|
45 | 52 |
|
46 | | -def test_get_all__return_list_of_activity_dto__when_find_one_or_more_activities( |
47 | | - mocker, |
| 53 | +def test__get_all__returns_a_list_of_activity_dto_objects__when_one_or_more_activities_are_found( |
| 54 | + create_fake_activities, |
48 | 55 | ): |
49 | | - activities_json_dao = ActivitiesJsonDao('non-important-path') |
50 | | - activity = { |
51 | | - "name": "test_name", |
52 | | - "description": "test_description", |
53 | | - "tenant_id": "test_tenant_id", |
54 | | - "id": "test_id", |
55 | | - "deleted": "test_deleted", |
56 | | - "status": "test_status", |
57 | | - } |
| 56 | + activities_json_dao = ActivitiesJsonDao(Faker().file_path()) |
58 | 57 | number_of_activities = 3 |
59 | | - activity_dto = ActivityDto(**activity) |
60 | | - list_activities_dto = [activity_dto] * number_of_activities |
61 | | - activities = [activity] * number_of_activities |
62 | | - read_data = json.dumps(activities) |
| 58 | + activities = create_fake_activities( |
| 59 | + [ |
| 60 | + { |
| 61 | + "name": "test_name", |
| 62 | + "description": "test_description", |
| 63 | + "tenant_id": "test_tenant_id", |
| 64 | + "id": "test_id", |
| 65 | + "deleted": "test_deleted", |
| 66 | + "status": "test_status", |
| 67 | + } |
| 68 | + ] |
| 69 | + * number_of_activities |
| 70 | + ) |
63 | 71 |
|
64 | | - mocker.patch(OPEN_FILE, mocker.mock_open(read_data=read_data)) |
65 | 72 | result = activities_json_dao.get_all() |
66 | 73 |
|
67 | | - assert result == list_activities_dto |
| 74 | + assert result == activities |
68 | 75 |
|
69 | 76 |
|
70 | | -def test_get_all__return_empty_list__when_doesnt_found_any_activities(mocker): |
71 | | - activities_json_dao = ActivitiesJsonDao('non-important-path') |
72 | | - activities = [] |
73 | | - read_data = json.dumps(activities) |
| 77 | +def test_get_all__returns_an_empty_list__when_doesnt_found_any_activities( |
| 78 | + create_fake_activities, |
| 79 | +): |
| 80 | + activities_json_dao = ActivitiesJsonDao(Faker().file_path()) |
| 81 | + activities = create_fake_activities([]) |
74 | 82 |
|
75 | | - mocker.patch(OPEN_FILE, mocker.mock_open(read_data=read_data)) |
76 | 83 | result = activities_json_dao.get_all() |
77 | 84 |
|
78 | 85 | assert result == activities |
0 commit comments