"""Subscription Model unit tests.""" import pytest from pydantic import ValidationError from src.models.subscription import ProfileSubscriptionsUpdatedV1 from src.models.subscription import SForceSubscriptionUpdate CRM_ID = '2131231' def test_profile_updated_full(subscription_active_off): """Test ProfileSubscriptionsUpdatedV1 model with a full message.""" profile_updated = ProfileSubscriptionsUpdatedV1(**subscription_active_off) assert profile_updated.newValue == subscription_active_off['newValue'] assert profile_updated.crmId == subscription_active_off['crmId'] def test_sforce_update_active_off(subscription_active_off): """Test SForceSubscriptionUpdate for subscription that is off.""" profile_updated = ProfileSubscriptionsUpdatedV1(**subscription_active_off) sforce_update = SForceSubscriptionUpdate.from_profile_update(profile_updated, CRM_ID) assert sforce_update.Action__c == 'Unsub' def test_sforce_update_active_on(subscription_active_on): """Test SForceSubscriptionUpdate for subscription that is on.""" profile_updated = ProfileSubscriptionsUpdatedV1(**subscription_active_on) sforce_update = SForceSubscriptionUpdate.from_profile_update(profile_updated, CRM_ID) assert sforce_update.Action__c == 'Sign Up' @pytest.mark.parametrize('input,', [ { 'id': 'uuid-2', 'crmId': 'a0V0800000dG1zb', 'newValue': 'some value' }, { 'id': 'uuid-2', 'crmId': 'a0V0800000dG1zb', }, { 'crmId': 'a0V0800000dG1zb', 'newValue': True } ]) def test_sforce_update_bad_data(input): """Test ProfileSubscriptionsUpdatedV1 for bad data.""" with pytest.raises(ValidationError): ProfileSubscriptionsUpdatedV1(**input)