"""Tests for ProductTerritorySplits model.""" import pytest from contracts.models import product_territory_split from tests.utils import db_operations def test_get_product_territory_split(db_fixture): """Test get product_territory_split.""" expected_paginated_response = { 'items': [ { 'upc': db_operations.product_territory_split_data[0]['product_id'], 'vendor_id': db_operations.product_territory_split_data[0]['vendor_id'], 'product_territory_split': db_operations.product_territory_split_data[ 0 ]['split_rate'], 'country_details': { 'id': 2, 'name': 'Canada', 'country_code': 'CA', 'abbrivation': 'CA', 'continent': 'North America', 'latitude': 56.130366, 'longitude': -106.346771, 'iso3166a3': 'CAN', 'continent_id': 5, }, } ], 'pagination': {'type': 'standard', 'offset': 1, 'limit': 2, 'total_records': 2}, } response = product_territory_split.get_product_territory_split( db_operations.product_territory_split_data[0]['vendor_id'], 1, 2 ) assert response.message == expected_paginated_response @pytest.mark.parametrize( ('upc', 'country_id', 'vend_contract_id', 'status'), [(191018337490, 2, 9856, 200), (123, 2, 9856, 404), (126, 3, 5623, 404)], ) def test_delete_product_territory_split( db_fixture, upc, country_id, vend_contract_id, status ): """Test delete product territory splits.""" request_param = { 'oa_user_id': 562, 'country_id': country_id, 'vend_contract_id': vend_contract_id, 'country_name': 'India', } response = product_territory_split.delete_product_territory_split( upc, request_param ) assert response.status == status def test_set_product_territory_split( db_fixture, fixture_product_territory_split_post_request_parameters, monkeypatch ): """Test set product territory splits.""" vendor_id = 25824 upc = 648620331038 request_param = [fixture_product_territory_split_post_request_parameters] expected_paginated_response = { 'items': [], 'pagination': {'limit': 2, 'offset': 1, 'total_records': 0, 'type': 'standard'}, } response = product_territory_split.set_product_territory_split( request_param, vendor_id ) product_territory_split_response = ( product_territory_split.get_product_territory_split(upc, 1, 2) ) assert response.status == 200 assert product_territory_split_response.message == expected_paginated_response def test_set_product_territory_split_error( db_fixture, fixture_product_territory_split_post_request_parameters, monkeypatch ): """Test set product_territory_split with duplicate data.""" vendor_id = 25824 upc = 648620331038 request_param = [ fixture_product_territory_split_post_request_parameters, fixture_product_territory_split_post_request_parameters, ] response = product_territory_split.set_product_territory_split( request_param, vendor_id ) product_territory_split_response = ( product_territory_split.get_product_territory_split(upc, 1, 2) ) assert response.status == 409 assert len(product_territory_split_response.message) == 2 def test_update_product_territory_split( db_fixture, fixture_product_territory_split_put_request_parameters ): """Test update product_territory_split.""" request_param = [fixture_product_territory_split_put_request_parameters] response = product_territory_split.update_product_territory_split(request_param) assert response.status == 200 assert response.message == {'status': 'ok'} def test_update_product_territory_split_error(db_fixture): """Test update product_territory_split with data not found.""" request_param = [ { 'oa_user_id': 562, 'vend_contract_id': 66500, 'country_id': 2, 'split_rate': 0.56, 'upc': 648620331038, 'old_split_rate': 0.56, } ] response = product_territory_split.update_product_territory_split(request_param) assert response.status == 404