from unittest.mock import MagicMock

from magento.magento_api import MagentoRestClient


def test_create_attribute_omits_scope_and_uses_int_flags_for_text():
    oauth = MagicMock()
    oauth._request.return_value = (201, {"attribute_id": 99}, None)
    client = MagentoRestClient(oauth)

    status, body = client.create_attribute(
        "ada_compliant",
        frontend_label="Ada Compliant",
        frontend_input="text",
        backend_type="varchar",
        is_searchable=False,
        is_filterable=False,
        is_filterable_in_search=False,
    )

    assert status == 201
    assert body == {"attribute_id": 99}
    _, _, kwargs = oauth._request.mock_calls[0]
    payload = kwargs["json"]["attribute"]
    assert "scope" not in payload
    assert payload["is_global"] == 1
    assert payload["is_required"] == 0
    assert payload["used_in_product_listing"] == 1
    assert "is_filterable" not in payload
    assert "is_searchable" not in payload


def test_create_attribute_includes_select_flags_as_ints():
    oauth = MagicMock()
    oauth._request.return_value = (201, {"attribute_id": 100}, None)
    client = MagentoRestClient(oauth)

    client.create_attribute(
        "variation_axis",
        frontend_label="Variation Axis",
        frontend_input="select",
        backend_type="int",
        is_configurable=True,
    )

    payload = oauth._request.mock_calls[0][2]["json"]["attribute"]
    assert payload["is_configurable"] == 1
    assert payload["is_filterable"] == 1
    assert payload["is_filterable_in_search"] == 1
    assert "scope" not in payload
