from zerver.lib.test_classes import WebhookTestCase


class OpenCollectiveHookTests(WebhookTestCase):
    STREAM_NAME = "test"
    URL_TEMPLATE = "/api/v1/external/opencollective?&api_key={api_key}&stream={stream}"
    WEBHOOK_DIR_NAME = "opencollective"

    # Note: Include a test function per each distinct message condition your integration supports
    def test_one_time_donation(self) -> None:  # test one time donation
        expected_topic = "New Member"
        expected_message = "@_**Λευτέρης Κυριαζάνος** donated **€1.00**! :tada:"

        self.check_webhook(
            "one_time_donation",
            expected_topic,
            expected_message,
            content_type="application/x-www-form-urlencoded",
        )

    def test_one_time_incognito_donation(self) -> None:  # test one time incognito donation
        expected_topic = "New Member"
        expected_message = "An **Incognito** member donated **$1.00**! :tada:"

        # use fixture named helloworld_hello
        self.check_webhook(
            "one_time_incognito_donation",
            expected_topic,
            expected_message,
            content_type="application/x-www-form-urlencoded",
        )
