Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion backend/tests/test_services/test_auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ async def test_register_not_unique_username(
auth_service: AuthService,
) -> None:
await auth_service.register(register_user_data)

register_user_data.email = "email2@email.com"
with pytest.raises(UserUsernameAlreadyExistsError):
await auth_service.register(register_user_data)
Expand Down
109 changes: 74 additions & 35 deletions backend/tests/test_services/test_projects/test_project.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@ async def test_get_by_id_valid(
minio_client: MinioClient,
project_service: ProjectService,
) -> None:
mocker.patch.object(
validator_mock = mocker.patch.object(
project_service.project_access_validator,
"validate_access_to_get_project",
return_value=full_project,
autospec=True,
)
mocker.patch(
get_from_database_mock = mocker.patch(
"services.projects.project.ProjectWithRenderFileFullResponse.get_from_database",
return_value=full_project,
autospec=True,
Expand All @@ -39,6 +39,11 @@ async def test_get_by_id_valid(
project_owner.id,
minio_client,
)
validator_mock.assert_called_once_with(
project_id=full_project.id,
user_id=project_owner.id,
)
get_from_database_mock.assert_called_once()

async def test_get_by_id_project_not_exists(
self,
Expand All @@ -48,8 +53,8 @@ async def test_get_by_id_project_not_exists(
minio_client: MinioClient,
project_service: ProjectService,
) -> None:
mocker.patch.object(
project_service.project_repository,
get_project_by_id_mock = mocker.patch.object(
project_service.project_access_validator.project_repository,
"get_by_id",
return_value=None,
autospec=True,
Expand All @@ -61,6 +66,8 @@ async def test_get_by_id_project_not_exists(
minio_client,
)

get_project_by_id_mock.assert_called_once_with(project_id=full_project.id)

async def test_get_private_project_by_id_not_by_owner(
self,
project_owner: User,
Expand All @@ -70,13 +77,13 @@ async def test_get_private_project_by_id_not_by_owner(
project_service: ProjectService,
) -> None:
full_project.visibility = ProjectVisibility.private
mocker.patch.object(
get_project_by_id_mock = mocker.patch.object(
project_service.project_access_validator.project_repository,
"get_by_id",
return_value=full_project,
autospec=True,
)
mocker.patch.object(
get_project_owner_mock = mocker.patch.object(
project_service.project_access_validator.project_repository,
"get_project_owner",
return_value=project_owner,
Expand All @@ -89,6 +96,9 @@ async def test_get_private_project_by_id_not_by_owner(
minio_client,
)

get_project_by_id_mock.assert_called_once_with(project_id=full_project.id)
get_project_owner_mock.assert_called_once_with(project_id=full_project.id)

async def test_create_project_valid(
self,
create_project_request: ProjectWithRenderCreate,
Expand All @@ -99,44 +109,50 @@ async def test_create_project_valid(
mocker: MockerFixture,
project_service: ProjectService,
) -> None:
mocker.patch.object(
get_file_by_id_mock = mocker.patch.object(
project_service.file_repository,
"get_by_id",
return_value=source_file,
autospec=True,
)
mocker.patch.object(
create_render_mock = mocker.patch.object(
project_service.render_repository,
"create_render",
return_value=render,
autospec=True,
)
mocker.patch.object(
create_project_mock = mocker.patch.object(
project_service.project_repository,
"create_project",
return_value=full_project,
autospec=True,
)
mocker.patch.object(
create_event_mock = mocker.patch.object(
project_service.outbox_repository,
"create_event",
return_value=None,
autospec=True,
)

await project_service.create_project(
user_id=project_owner.id,
create_project=create_project_request,
)

get_file_by_id_mock.assert_called_once_with(
file_id=create_project_request.project.source_file_id,
)
create_render_mock.assert_called_once()
create_project_mock.assert_called_once()
create_event_mock.assert_called_once()

async def test_create_project_file_not_exists(
self,
create_project_request: ProjectWithRenderCreate,
project_owner: User,
mocker: MockerFixture,
project_service: ProjectService,
) -> None:
mocker.patch.object(
get_file_by_id_mock = mocker.patch.object(
project_service.file_repository,
"get_by_id",
return_value=None,
Expand All @@ -148,32 +164,30 @@ async def test_create_project_file_not_exists(
create_project=create_project_request,
)

get_file_by_id_mock.assert_called_once_with(
file_id=create_project_request.project.source_file_id,
)

async def test_partial_update_project_valid(
self,
project_owner: User,
full_project: Project,
mocker: MockerFixture,
project_service: ProjectService,
) -> None:
mocker.patch.object(
get_project_by_id_mock = mocker.patch.object(
project_service.project_access_validator.project_repository,
"get_by_id",
return_value=full_project,
autospec=True,
)
mocker.patch.object(
get_project_owner_mock = mocker.patch.object(
project_service.project_access_validator.project_repository,
"get_project_owner",
return_value=project_owner,
autospec=True,
)
mocker.patch.object(
project_service.project_repository,
"get_project_owner",
return_value=project_owner,
autospec=True,
)
mocker.patch.object(
partial_update_project_mock = mocker.patch.object(
project_service.project_repository,
"partial_update_project",
return_value=full_project,
Expand All @@ -188,15 +202,22 @@ async def test_partial_update_project_valid(
partial_update_project_data,
)

get_project_by_id_mock.assert_called_once_with(project_id=full_project.id)
get_project_owner_mock.assert_called_once_with(project_id=full_project.id)
partial_update_project_mock.assert_called_once_with(
project_id=full_project.id,
partial_update_project_data=partial_update_project_data,
)

async def test_partial_update_project_not_exists(
self,
project_owner: User,
full_project: Project,
mocker: MockerFixture,
project_service: ProjectService,
) -> None:
mocker.patch.object(
project_service.project_repository,
get_project_by_id_mock = mocker.patch.object(
project_service.project_access_validator.project_repository,
"get_by_id",
return_value=None,
autospec=True,
Expand All @@ -211,20 +232,22 @@ async def test_partial_update_project_not_exists(
partial_update_project_data,
)

get_project_by_id_mock.assert_called_once_with(full_project.id)

async def test_partial_update_project_not_by_owner(
self,
project_owner: User,
full_project: Project,
mocker: MockerFixture,
project_service: ProjectService,
) -> None:
mocker.patch.object(
get_project_by_id_mock = mocker.patch.object(
project_service.project_access_validator.project_repository,
"get_by_id",
return_value=full_project,
autospec=True,
)
mocker.patch.object(
get_project_owner_mock = mocker.patch.object(
project_service.project_access_validator.project_repository,
"get_project_owner",
return_value=project_owner,
Expand All @@ -240,24 +263,35 @@ async def test_partial_update_project_not_by_owner(
partial_update_project_data,
)

get_project_by_id_mock.assert_called_once_with(project_id=full_project.id)
get_project_owner_mock.assert_called_once_with(project_id=full_project.id)

async def test_delete_by_id_valid(
self,
project_owner: User,
full_project: Project,
mocker: MockerFixture,
project_service: ProjectService,
) -> None:
mocker.patch.object(
get_project_by_id_mock = mocker.patch.object(
project_service.project_access_validator.project_repository,
"get_by_id",
return_value=full_project,
)
mocker.patch.object(
get_project_owner_mock = mocker.patch.object(
project_service.project_access_validator.project_repository,
"get_project_owner",
return_value=project_owner,
)
delete_project_by_id_mock = mocker.patch.object(
project_service.project_repository,
"delete_by_id",
return_value=None,
)
await project_service.delete_by_id(full_project.id, project_owner.id)
get_project_by_id_mock.assert_called_once_with(full_project.id)
get_project_owner_mock.assert_called_once_with(full_project.id)
delete_project_by_id_mock.assert_called_once_with(full_project.id)

async def test_delete_by_id_project_not_exists(
self,
Expand All @@ -266,30 +300,35 @@ async def test_delete_by_id_project_not_exists(
mocker: MockerFixture,
project_service: ProjectService,
) -> None:
mocker.patch.object(
project_service.project_repository,
get_project_by_id_mock = mocker.patch.object(
project_service.project_access_validator.project_repository,
"get_by_id",
return_value=None,
)
with pytest.raises(ProjectIdNotFoundError):
await project_service.delete_by_id(full_project.id, project_owner.id)

get_project_by_id_mock.assert_called_once_with(full_project.id)

async def test_delete_by_id_not_by_owner(
self,
project_owner: User,
full_project: Project,
mocker: MockerFixture,
project_service: ProjectService,
) -> None:
mocker.patch.object(
project_service.project_repository,
get_project_by_id_mock = mocker.patch.object(
project_service.project_access_validator.project_repository,
"get_by_id",
return_value=None,
return_value=full_project,
)
mocker.patch.object(
project_service.project_repository,
get_project_owner_mock = mocker.patch.object(
project_service.project_access_validator.project_repository,
"get_project_owner",
return_value=project_owner,
)
with pytest.raises(ProjectIdNotFoundError):
with pytest.raises(PermissionDeniedError):
await project_service.delete_by_id(full_project.id, project_owner.id + 1)

get_project_by_id_mock.assert_called_once_with(full_project.id)
get_project_owner_mock.assert_called_once_with(full_project.id)
Loading
Loading