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()
Esempio n. 2
0
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
Esempio n. 3
0
 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