"""Unit tests for pricing_family model.""" from pricing.models import orchard_pricing_tier import pytest from tests.utils import db_operations @pytest.fixture def db_fixture(): """Drop and re-create all the SQLite tables and seed them.""" db_operations.create_tables() db_operations.seed_data() def test_get_orchard_pricing_tier_by_pricing_family_ids(db_fixture): """Test that the multiple orchard pricing tiers can be retrieved.""" result = orchard_pricing_tier.\ get_orchard_pricing_tier_by_pricing_family_ids((1,)) message = result.message assert len(message) == 1 orchard_pricing_tiers = message['items'] assert orchard_pricing_tiers[0]['name'] == 'Premium' assert orchard_pricing_tiers[1]['name'] == 'Mid' assert orchard_pricing_tiers[2]['name'] == 'Budget' def test_get_orchard_pricing_tier_by_pricing_family_id(db_fixture): """Test that the orchard pricing tiers can be retrieved.""" result = \ orchard_pricing_tier.get_orchard_pricing_tier_by_pricing_family_id(1) message = result.message assert len(message) == 1 orchard_pricing_tiers = message['items'] assert orchard_pricing_tiers[0]['name'] == 'Premium' assert orchard_pricing_tiers[1]['name'] == 'Mid' assert orchard_pricing_tiers[2]['name'] == 'Budget' def test_get_orchard_pricing_tier_by_pricing_family_id_not_found(db_fixture): """Test for not found response when no orchard pricing tiers.""" result = \ orchard_pricing_tier.get_orchard_pricing_tier_by_pricing_family_id(100) assert result.status == 404 def test_create_orchard_pricing_tier(db_fixture): """Test that an orchard pricing tier can be created.""" data = { 'orchard_pricing_tier_id': 4, 'name': 'New Tier', 'pricing_family_id': 1, 'sort_order': 4 } result = orchard_pricing_tier.create_orchard_pricing_tier(data) created_orchard_pricing_tier = result.message assert created_orchard_pricing_tier['name'] == 'New Tier' assert created_orchard_pricing_tier['orchard_pricing_tier_id'] == 4 def test_create_orchard_pricing_tier_empty_body(db_fixture): """Test that an orchard pricing tier requires fields to be created.""" data = {} result = orchard_pricing_tier.create_orchard_pricing_tier(data) assert result.status == 400 def test_update_orchard_pricing_tier_by_id(db_fixture): """Test that an orchard pricing tier can be updated.""" data = { 'name': 'Updated Tier', 'pricing_family_id': 1, 'sort_order': 2 } result = orchard_pricing_tier.update_orchard_pricing_tier_by_id(1, data) created_orchard_pricing_tier = result.message assert created_orchard_pricing_tier['name'] == 'Updated Tier' assert created_orchard_pricing_tier['sort_order'] == 2 def test_update_orchard_pricing_tier_by_id_empty_body(db_fixture): """Test that an orchard pricing tier cannot be updated with no data.""" data = {} result = orchard_pricing_tier.update_orchard_pricing_tier_by_id(1, data) assert result.status == 400 def test_update_orchard_pricing_tier_by_id_not_found(db_fixture): """Test that an orchard pricing tier cannot be updated with no data.""" data = { 'name': 'Updated Tier', 'pricing_family_id': 1, 'sort_order': 2 } result = orchard_pricing_tier.update_orchard_pricing_tier_by_id(100, data) assert result.status == 404