|
| 1 | +from V2.source.daos.activities_json_dao import ActivitiesJsonDao |
| 2 | +from V2.source.dtos.activity import Activity |
| 3 | +from faker import Faker |
| 4 | +import json |
| 5 | +import pytest |
| 6 | +import typing |
| 7 | + |
| 8 | + |
| 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] |
| 15 | + |
| 16 | + return _creator |
| 17 | + |
| 18 | + |
| 19 | +def test_get_by_id__returns_an_activity_dto__when_found_one_activity_that_matches_its_id( |
| 20 | + create_fake_activities, |
| 21 | +): |
| 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 | + |
| 37 | + result = activities_json_dao.get_by_id(activity_dto.id) |
| 38 | + |
| 39 | + assert result == activity_dto |
| 40 | + |
| 41 | + |
| 42 | +def test__get_by_id__returns_none__when_no_activity_matches_its_id( |
| 43 | + create_fake_activities, |
| 44 | +): |
| 45 | + activities_json_dao = ActivitiesJsonDao(Faker().file_path()) |
| 46 | + create_fake_activities([]) |
| 47 | + |
| 48 | + result = activities_json_dao.get_by_id(Faker().uuid4()) |
| 49 | + |
| 50 | + assert result == None |
| 51 | + |
| 52 | + |
| 53 | +def test__get_all__returns_a_list_of_activity_dto_objects__when_one_or_more_activities_are_found( |
| 54 | + create_fake_activities, |
| 55 | +): |
| 56 | + activities_json_dao = ActivitiesJsonDao(Faker().file_path()) |
| 57 | + number_of_activities = 3 |
| 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 | + ) |
| 71 | + |
| 72 | + result = activities_json_dao.get_all() |
| 73 | + |
| 74 | + assert result == activities |
| 75 | + |
| 76 | + |
| 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([]) |
| 82 | + |
| 83 | + result = activities_json_dao.get_all() |
| 84 | + |
| 85 | + assert result == activities |
0 commit comments