"""Tests for carveins logic.""" from oto import response import pytest from ows_product_physical.constant import error from ows_product_physical.logic import carveins from ows_product_physical.models import ows_carveouts @pytest.mark.parametrize(('carveouts', 'expected_result'), [ (response.Response( {str(carveins.US_STORE): {}, str(carveins.AU_STORE): {}}), response.Response( set([carveins.UK_STORE, carveins.CA_STORE, carveins.EU_STORE]))), (response.Response([]), response.Response(set(carveins.ALL_STORE_IDS))), (response.Response(status=400, message='oopsies!'), response.Response(status=400, message='oopsies!')) ]) def test_get_carveins_for_upc(mocker, carveouts, expected_result): """Test getting the carveins.""" mocker.patch.object( ows_carveouts, 'get_release_carveouts_for_upc', return_value=carveouts) result = carveins.get_carveins_for_upc(12) assert result.status == expected_result.status assert result.message == expected_result.message def test_get_days_required_for_carveins(): """Test getting the days needed for sales based on carveins.""" days = carveins.get_days_required_for_carveins( [carveins.US_STORE, carveins.EU_STORE]) assert days == 75 days = carveins.get_days_required_for_carveins( [carveins.UK_STORE]) assert days == 35 days = carveins.get_days_required_for_carveins( [carveins.AU_STORE, carveins.UK_STORE]) assert days == 60 days = carveins.get_days_required_for_carveins( [carveins.CA_STORE, carveins.UK_STORE]) assert days == 60 days = carveins.get_days_required_for_carveins( [carveins.EU_STORE, carveins.UK_STORE]) assert days == 60 def test_get_days_message_required_for_carveins(): """Test error message for the days needed for sales based on carveins.""" message = carveins.get_days_message_required_for_carveins( [carveins.US_STORE, carveins.EU_STORE]) assert message == error.RELEASE_STATUS_SALE_START_DATE_US_ERROR message = carveins.get_days_message_required_for_carveins( [carveins.EU_STORE]) assert message == error.RELEASE_STATUS_SALE_START_DATE_AU_CA_EU_ERROR message = carveins.get_days_message_required_for_carveins([]) assert message == error.RELEASE_STATUS_SALE_START_DATE_DEFAULT_ERROR