def test_should_return_stream_details_correctly( get_stream_details_use_case: GetStreamDetailsUseCase, find_stream_by_stream_id: Mock, find_projects_by_stream: Mock, get_stream_by_name: Mock, ) -> None: stream_id = uuid4() stream = Stream( stream_id=stream_id, name="TEST_STREAM", source_type=SourceType.STREAM, source_name="OTHER_STREAM_TEST", ) project_list = [ Project( project_id=uuid4(), title="Project One", created_at=datetime.now(), status=ProjectStatus.ACTIVE, ), Project( project_id=uuid4(), title="Project Two", created_at=datetime.now(), status=ProjectStatus.INACTIVE, ), ] ksql_stream_detailed = KSQLStreamDetailed( name="TEST_STREAM", fields=[ KSQLStreamDetailed.KSQLStreamField( name="field_one", schema=KSQLStreamDetailed.KSQLStreamField. KSQLStreamFieldSchema(type="INT"), ) ], type="STREAM", format="JSON", topic="SOME_TOPIC", ) stream_details = StreamDetails.build(stream, project_list, ksql_stream_detailed) find_stream_by_stream_id.return_value = Success(Maybe.from_value(stream)) find_projects_by_stream.return_value = Success(project_list) get_stream_by_name.return_value = Success(ksql_stream_detailed) actual = get_stream_details_use_case(stream_id) get_stream_by_name.assert_called_once() get_stream_by_name.assert_called_with(stream.name) assert isinstance(actual, Result.success_type) assert isinstance(actual.unwrap(), StreamDetails) assert stream_details == actual.unwrap()
def test_should_return_projects_details_one_streams( get_project_details_use_case: GetProjectDetailsUseCase, find_project_by_project_id: Mock, find_streams_by_project: Mock, ) -> None: project_id = uuid4() project = Project( project_id=project_id, title="Test Project Title", created_at=datetime.now(), status=ProjectStatus.ACTIVE, ) project_maybe: Maybe[Project] = Maybe.from_value(project) streams = [ Stream( stream_id=uuid4(), name="Test Stream", source_type=SourceType.TOPIC, source_name="test_one_stream", ), ] find_project_by_project_id.return_value = Success(project_maybe) find_streams_by_project.return_value = Success(StreamList(streams)) actual = get_project_details_use_case(project_id) find_project_by_project_id.assert_called_once() find_streams_by_project.assert_called_once() find_streams_by_project.assert_called_with(project) assert isinstance(actual, Result.success_type) assert project_id == actual.unwrap().project.project_id assert 1 == len(actual.unwrap().streams) assert streams == actual.unwrap().streams
def to_entity(self) -> Project: return Project( project_id=self.project_id, title=self.title, created_at=self.created_at, status=self.status, )
def test_should_return_failure_when_get_stream_by_name_fails( get_stream_details_use_case: GetStreamDetailsUseCase, find_stream_by_stream_id: Mock, find_projects_by_stream: Mock, get_stream_by_name: Mock, ) -> None: stream_id = uuid4() stream = Stream( stream_id=stream_id, name="TEST_STREAM", source_type=SourceType.STREAM, source_name="OTHER_STREAM_TEST", ) project_list = [ Project( project_id=uuid4(), title="Project One", created_at=datetime.now(), status=ProjectStatus.ACTIVE, ), Project( project_id=uuid4(), title="Project Two", created_at=datetime.now(), status=ProjectStatus.INACTIVE, ), ] failure = FailureDetails(reason="TEST_FIND_STREAM_BY_NAME_FAILS") find_stream_by_stream_id.return_value = Success(Maybe.from_value(stream)) find_projects_by_stream.return_value = Success(project_list) get_stream_by_name.return_value = Failure(failure) actual = get_stream_details_use_case(stream_id) get_stream_by_name.assert_called_once() get_stream_by_name.assert_called_with(stream.name) assert isinstance(actual, Result.failure_type) assert isinstance(actual.failure(), FailureDetails) assert failure == actual.failure()
def test_get_projects_details( get_projects_list_use_case: GetProjectsListUseCase, get_projects_list: Mock ) -> None: expected_projects_list = [ Project( project_id=uuid4(), title="Test Project Title", created_at=datetime.now(), status=ProjectStatus.ACTIVE, ), Project( project_id=uuid4(), title="Test Super Project Title", created_at=datetime.now() - timedelta(days=10), status=ProjectStatus.INACTIVE, ), ] get_projects_list.return_value = expected_projects_list actual_projects_list = get_projects_list_use_case() get_projects_list.assert_called_once() assert expected_projects_list == actual_projects_list
def test_create_new_project( create_new_project_use_case: CreateNewProjectUseCase, create_new_project: Mock) -> None: command = CreateNewProjectCommand(title="Test Project Title") expected_project = Project( project_id=uuid4(), title="Test Project Title", created_at=datetime.now(), status=ProjectStatus.ACTIVE, ) create_new_project.return_value = expected_project actual_project = create_new_project_use_case(command) create_new_project.assert_called_once() create_new_project.assert_called_with("Test Project Title") assert expected_project == actual_project