"""Tests for Product Orchard Pricing Tier logic.""" from unittest.mock import MagicMock from oto import response from pricing.constants import pricing_family from pricing.logic import change_detection from pricing.logic import product_orchard_pricing_tier from pricing.models import product_orchard_pricing_tier \ as product_orchard_pricing_tier_model import pytest @pytest.fixture def fixture_product_orchard_pricing_tier(): """Fixture for single product orchard pricing tier.""" return response.Response({'orchard_pricing_tier_id': 1}) def test_get_by_product_id_and_pricing_family_id( monkeypatch, fixture_product_orchard_pricing_tier): """Test getting a product orchard pricing tier.""" monkeypatch.setattr( product_orchard_pricing_tier_model, 'get_by_product_id_and_pricing_family_id', MagicMock(return_value=fixture_product_orchard_pricing_tier)) result = product_orchard_pricing_tier.\ get_by_product_id_and_pricing_family_id(1, 1) assert result assert result.message == fixture_product_orchard_pricing_tier.message def test_update_product_with_orchard_pricing_tier( monkeypatch, fixture_product_orchard_pricing_tier): """Test update a product with an orchard pricing tier.""" monkeypatch.setattr( product_orchard_pricing_tier_model, 'update_product_with_orchard_pricing_tier', MagicMock(return_value=fixture_product_orchard_pricing_tier)) data = {'orchard_pricing_tier_id': 1} result = product_orchard_pricing_tier.\ update_product_with_orchard_pricing_tier( pricing_family.FILM_PRICING_FAMILY_ID, 1, data) assert result assert result.message == fixture_product_orchard_pricing_tier.message def test_update_product_with_orchard_pricing_tier_for_physical( monkeypatch, fixture_product_orchard_pricing_tier): """Test update a product with an orchard pricing tier.""" monkeypatch.setattr( product_orchard_pricing_tier_model, 'update_product_with_orchard_pricing_tier', MagicMock(return_value=fixture_product_orchard_pricing_tier)) monkeypatch.setattr( change_detection, 'write_pricing_changes', MagicMock()) product_id = 10 data = {'orchard_pricing_tier_id': 1} result = product_orchard_pricing_tier.\ update_product_with_orchard_pricing_tier( str(product_id), str(pricing_family.PHYSICAL_PRICING_FAMILY_ID), data) assert result assert result.message == fixture_product_orchard_pricing_tier.message change_detection.write_pricing_changes.assert_called_once_with( product_id, pricing_family.PHYSICAL_PRICING_FAMILY_ID)