"""Functional tests for fetching splits via dataloder.""" import json from unittest.mock import ANY from collaborator.models.ows import ows_product, ows_track from tests.testutils import db, mock_auth @db.test_schema_default_seed def test_post_splits_dataloader(auth_client, mocker): """Test post statement periods dataloader.""" vendor_id = 24601 mock_auth(mocker, vendor_id) mocker.patch.object( ows_track, "get_tracks", return_value={"items": [{"upc": 284828}]}, ) mocker.patch.object( ows_product, "get_products_by_upc", return_value={"items": [{"vendor_id": vendor_id}]}, ) result = auth_client.post( "/splits/dataloader", data=json.dumps({"track_ids": ["12345", "67890", "3"]}), content_type="application/json", ) assert result.json == [ { "data": [ { "collaborator_id": 5, "created_date": ANY, "id": 7, "identifier": "12345", "rate_type": "NET", "source": None, "split_rate": 0.2, "split_type_id": 2, "updated_date": None, } ] }, { "data": [ { "collaborator_id": 5, "created_date": ANY, "id": 8, "identifier": "67890", "rate_type": "NET", "source": None, "split_rate": 0.25, "split_type_id": 2, "updated_date": None, } ] }, {"data": []}, ] assert result.status_code == 200 @db.test_schema_default_seed def test_post_splits_dataloader_missing_track_ids(auth_client, mocker): """Expect a 400 when track_ids is absent.""" mock_auth(mocker, 24601) result = auth_client.post( "/splits/dataloader", data=json.dumps({}), content_type="application/json", ) assert result.status_code == 400 @db.test_schema_default_seed def test_post_splits_dataloader_track_ids_not_a_list(auth_client, mocker): """Expect a 400 when track_ids is not a list.""" mock_auth(mocker, 24601) result = auth_client.post( "/splits/dataloader", data=json.dumps({"track_ids": "12345"}), content_type="application/json", ) assert result.status_code == 400