From 7d9402dc7ac778485732788e68050d9992690eef Mon Sep 17 00:00:00 2001 From: raven <248401188+r4venrudy@users.noreply.github.com> Date: Tue, 13 Oct 2026 16:48:36 +0200 Subject: [PATCH] Initialize effective enum when decoding subscription modify descriptors --- ...edCommerceSubscriptionModifyDescriptors.py | 5 ++-- tests/test_advanced_commerce_models.py | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/appstoreserverlibrary/models/AdvancedCommerceSubscriptionModifyDescriptors.py b/appstoreserverlibrary/models/AdvancedCommerceSubscriptionModifyDescriptors.py index b46edde0..efa400eb 100644 --- a/appstoreserverlibrary/models/AdvancedCommerceSubscriptionModifyDescriptors.py +++ b/appstoreserverlibrary/models/AdvancedCommerceSubscriptionModifyDescriptors.py @@ -5,9 +5,10 @@ from attr import define from .AdvancedCommerceEffective import AdvancedCommerceEffective from .HelperValidationUtils import HelperValidationUtils +from .LibraryUtility import AttrsRawValueAware @define -class AdvancedCommerceSubscriptionModifyDescriptors(): +class AdvancedCommerceSubscriptionModifyDescriptors(AttrsRawValueAware): """ The data your app provides to change the description and display name of an auto-renewable subscription. @@ -33,4 +34,4 @@ class AdvancedCommerceSubscriptionModifyDescriptors(): ) """ https://developer.apple.com/documentation/advancedcommerceapi/displayname - """ \ No newline at end of file + """ diff --git a/tests/test_advanced_commerce_models.py b/tests/test_advanced_commerce_models.py index 93e2315d..67f934a3 100644 --- a/tests/test_advanced_commerce_models.py +++ b/tests/test_advanced_commerce_models.py @@ -489,6 +489,35 @@ def test_advanced_commerce_subscription_modify_descriptors_deserialization(self) self.assertEqual("description", descriptors.description) self.assertEqual("displayName", descriptors.displayName) + + self.assertEqual(AdvancedCommerceEffective(descriptors_dict["effective"]), descriptors.effective) + self.assertEqual(descriptors_dict["effective"], descriptors.rawEffective) + + def test_modify_descriptors_raw_effective_initialization(self): + for effective in AdvancedCommerceEffective: + with self.subTest(effective=effective): + descriptors = AdvancedCommerceSubscriptionModifyDescriptors(rawEffective=effective.value) + self.assertEqual(effective, descriptors.effective) + self.assertEqual(effective.value, descriptors.rawEffective) + + def test_modify_descriptors_effective_round_trip(self): + converter = _get_cattrs_converter(AdvancedCommerceSubscriptionModifyDescriptors) + for effective in AdvancedCommerceEffective: + with self.subTest(effective=effective): + descriptors = AdvancedCommerceSubscriptionModifyDescriptors(effective=effective) + serialized = converter.unstructure(descriptors) + self.assertEqual({"effective": effective.value}, serialized) + restored = converter.structure(serialized, AdvancedCommerceSubscriptionModifyDescriptors) + self.assertEqual(descriptors, restored) + + def test_modify_descriptors_unknown_effective(self): + descriptors = AdvancedCommerceSubscriptionModifyDescriptors(rawEffective="FUTURE_VALUE") + self.assertIsNone(descriptors.effective) + self.assertEqual("FUTURE_VALUE", descriptors.rawEffective) + descriptors.rawEffective = AdvancedCommerceEffective.NEXT_BILL_CYCLE.value + self.assertEqual(AdvancedCommerceEffective.NEXT_BILL_CYCLE, descriptors.effective) + descriptors.effective = AdvancedCommerceEffective.IMMEDIATELY + self.assertEqual("IMMEDIATELY", descriptors.rawEffective) def test_advanced_commerce_subscription_change_metadata_descriptors_deserialization(self): json_data = read_data_from_file('tests/resources/models/advancedCommerceSubscriptionChangeMetadataDescriptors.json')