Skip to content

0.2.0

Compare
Choose a tag to compare
@gabrielmbmb gabrielmbmb released this 17 Apr 19:44
· 5 commits to main since this release
9090f1b

✨ Features

  • Add a TestClient that allows writing unit tests for consumer functions
import pytest

from kaflow import FromValue, Kaflow, Message
from kaflow.testclient import TestClient

app = Kaflow(client_id="test", brokers=["localhost:9092"])


class RandomDependency:
    def __init__(self, random: str = "random") -> None:
        self.random = random


@app.consume(topic="test_topic", sink_topics=["test_topic_2"])
async def consume_test_topic(
    value: FromValue[bytes], dependency: RandomDependency
) -> Message:
    print("Value", value)
    print("Override dependency:", dependency.random)
    return Message(value=b"Hello Unit Test!")


@pytest.fixture
def test_client() -> TestClient:
    client = TestClient(app=app)

    with app.dependency_overrides:
        app.dependency_overrides[RandomDependency] = lambda: RandomDependency(
            random="not so random"
        )
        yield client


def test_consume_test_topic(test_client: TestClient) -> None:
    message = test_client.publish(
        topic="test_topic",
        value=b"Hello World!",
    )
    assert message.value == b"Hello Unit Test!"