#
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
#

import json
from pathlib import Path
from unittest.mock import Mock

import pytest
from smartsheet.models import Sheet

HERE = Path(__file__).parent.absolute()


@pytest.fixture
def response_mock():
    with open(HERE / "response.json") as json_file:
        return json.loads(json_file.read())


@pytest.fixture
def config():
    return {"spreadsheet_id": "id", "credentials": {"access_token": "token"}, "metadata_fields": ["row_id"]}


@pytest.fixture
def get_sheet_mocker(mocker, response_mock):
    def _mocker(api_wrapper, data=None):
        sheet_obj = Sheet(props=response_mock, base_obj=api_wrapper)
        get_sheet_mock = Mock(return_value=sheet_obj)
        mocker.patch.object(api_wrapper, "_get_sheet", data or get_sheet_mock)
        return get_sheet_mock, sheet_obj

    return _mocker
