#
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
#
from __future__ import annotations

from pathlib import Path

import pytest

import pipelines.helpers.connectors.modifed
from pipelines.airbyte_ci.steps import gradle
from pipelines.models import steps

pytestmark = [
    pytest.mark.anyio,
]


class TestGradleTask:
    class DummyStep(gradle.GradleTask):
        gradle_task_name = "dummyTask"
        title = "Dummy Step"

        async def _run(self) -> steps.StepResult:
            return steps.StepResult(step=self, status=steps.StepStatus.SUCCESS)

    @pytest.fixture
    def test_context(self, mocker, dagger_client):
        return mocker.Mock(
            secrets_to_mask=[],
            dagger_client=dagger_client,
            connector=pipelines.helpers.connectors.modifed.ConnectorWithModifiedFiles(
                "source-postgres",
                frozenset(
                    {
                        Path(
                            "airbyte-integrations/connectors/source-postgres/metadata.yaml"
                        )
                    }
                ),
            ),
        )

    def test_params(self, test_context):
        step = self.DummyStep(test_context)
        step.extra_params = {"-x": ["dummyTask", "dummyTask2"]}
        assert set(step.params_as_cli_options) == {
            "-x=dummyTask",
            "-x=dummyTask2",
        }
