"""Unit tests for product_orchard_pricing_tier model.""" from pricing.models import product_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_by_product_id_and_pricing_family_id(db_fixture): """Test that the product orchard pricing tier can be returned.""" result = product_orchard_pricing_tier.\ get_by_product_id_and_pricing_family_id(1, 1) assert result retrieved = result.message assert retrieved['product_orchard_pricing_tier_id'] == 1 assert retrieved['orchard_pricing_tier_id'] == 1 assert retrieved['product_id'] == 1 assert retrieved['pricing_family_id'] == 1 def test_get_by_product_id_and_pricing_family_id_not_found(db_fixture): """Test that an empty 200 response is returned if no result is found.""" result = product_orchard_pricing_tier.\ get_by_product_id_and_pricing_family_id(100, 1) assert result.status == 200 assert not result.message def test_update_insert_row(db_fixture): """Test that an orchard pricing tier can be set on product first time.""" data = { 'product_orchard_pricing_tier_id': 10, 'orchard_pricing_tier_id': 1 } result = product_orchard_pricing_tier.\ update_product_with_orchard_pricing_tier( 5, 1, data) assert result created = result.message assert created['orchard_pricing_tier_id'] == 1 assert created['product_id'] == 5 assert created['pricing_family_id'] == 1 def test_update_update_row(db_fixture): """Test that an orchard pricing tier can be set on a product again.""" data = { 'product_orchard_pricing_tier_id': 11, 'orchard_pricing_tier_id': 1 } result = product_orchard_pricing_tier.\ update_product_with_orchard_pricing_tier( 6, 1, data) data = { 'orchard_pricing_tier_id': 2 } result = product_orchard_pricing_tier.\ update_product_with_orchard_pricing_tier( 6, 1, data) assert result updated = result.message assert updated['orchard_pricing_tier_id'] == 2 assert updated['product_id'] == 6 assert updated['pricing_family_id'] == 1 def test_update_empty_body(db_fixture): """Test that a 400 response is returned if no data is provided.""" result = product_orchard_pricing_tier.\ update_product_with_orchard_pricing_tier( 1, 1, {}) assert result.status == 400 def test_delete_by_product_id_and_pricing_family_id(db_fixture): """Test that a popt can be deleted with product_id.""" product_id = 2 pricing_family_id = 1 result = product_orchard_pricing_tier.\ delete_by_product_id_and_pricing_family_id( product_id, pricing_family_id) assert result assert result.status == 200 def test_delete_by_product_id_and_pricing_family_id_not_found_response( db_fixture): """Test that a popt can be deleted by a product_id.""" product_id = 6 pricing_family_id = 10 result = product_orchard_pricing_tier.\ delete_by_product_id_and_pricing_family_id( product_id, pricing_family_id) assert result.errors assert result.status == 404 def test_get_all_migrated_product_ids(db_fixture): """Test getting all migrated product ids.""" result = product_orchard_pricing_tier.get_all_migrated_product_ids() assert result assert len(result) == 5