diff --git a/CHANGELOG.md b/CHANGELOG.md index 5fd6eac7..b1239f41 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # Changelog ## Version 3.1.0 -- Incoproate changes for Advanced Commerce API, Retention Messaging API 1.5 and App Store Server API v1.21 [https://github.com/apple/app-store-server-library-python/pull/188] [https://github.com/apple/app-store-server-library-python/pull/189] from @riyazpanjwani +- Incorporate changes for Advanced Commerce API, Retention Messaging API 1.5 and App Store Server API v1.21 [https://github.com/apple/app-store-server-library-python/pull/188] [https://github.com/apple/app-store-server-library-python/pull/189] from @riyazpanjwani - Incorporate changes for App Store Server API v1.20 [https://github.com/apple/app-store-server-library-python/pull/191] from @riyazpanjwani - Incorporate changes for Retention Messaging API v1.3 and 1.4 [https://github.com/apple/app-store-server-library-python/pull/186] - Fix deliveryStatus not being included in consumption information [https://github.com/apple/app-store-server-library-python/pull/184] from @ohadbenita diff --git a/appstoreserverlibrary/models/LibraryUtility.py b/appstoreserverlibrary/models/LibraryUtility.py index 253d446f..0ee535d8 100644 --- a/appstoreserverlibrary/models/LibraryUtility.py +++ b/appstoreserverlibrary/models/LibraryUtility.py @@ -97,6 +97,8 @@ def make_overrides(cl): cattrs_overrides[raw_field] = override(rename=matching_name) else: cattrs_overrides[raw_field] = override(rename=matching_name, omit_if_default=True) + elif not attribute.init and attribute.name not in cattrs_overrides: + cattrs_overrides[attribute.name] = override(omit=False) elif attribute.default is None and attribute.name not in cattrs_overrides: cattrs_overrides[attribute.name] = override(omit_if_default=True) return cattrs_overrides diff --git a/tests/resources/models/advancedCommerceOneTimeChargeCreateRequest.json b/tests/resources/models/advancedCommerceOneTimeChargeCreateRequest.json index d9874797..b81f2783 100644 --- a/tests/resources/models/advancedCommerceOneTimeChargeCreateRequest.json +++ b/tests/resources/models/advancedCommerceOneTimeChargeCreateRequest.json @@ -10,7 +10,5 @@ "requestReferenceId": "550e8400-e29b-41d4-a716-446655440000" }, "taxCode": "taxCode", - "storefront": "USA", - "operation": "CREATE", - "version": "1.0" + "storefront": "USA" } diff --git a/tests/test_advanced_commerce_models.py b/tests/test_advanced_commerce_models.py index 88ec27cd..93e2315d 100644 --- a/tests/test_advanced_commerce_models.py +++ b/tests/test_advanced_commerce_models.py @@ -622,6 +622,46 @@ def test_advanced_commerce_subscription_migrate_response_deserialization(self): self.assertEqual("signed_renewal_info_value", response.signedRenewalInfo) self.assertEqual("signed_transaction_info_value", response.signedTransactionInfo) + def test_one_time_charge_create_request_deserialization_sets_operation_and_version(self): + json_data = read_data_from_file('tests/resources/models/advancedCommerceOneTimeChargeCreateRequest.json') + + request_dict = json.loads(json_data) + request = _get_cattrs_converter(AdvancedCommerceOneTimeChargeCreateRequest).structure(request_dict, AdvancedCommerceOneTimeChargeCreateRequest) + + result = _get_cattrs_converter(AdvancedCommerceOneTimeChargeCreateRequest).unstructure(request) + self.assertEqual("CREATE_ONE_TIME_CHARGE", result["operation"]) + self.assertEqual("1", result["version"]) + + def test_subscription_create_request_deserialization_sets_operation_and_version(self): + json_data = read_data_from_file('tests/resources/models/advancedCommerceSubscriptionCreateRequest.json') + + request_dict = json.loads(json_data) + request = _get_cattrs_converter(AdvancedCommerceSubscriptionCreateRequest).structure(request_dict, AdvancedCommerceSubscriptionCreateRequest) + + result = _get_cattrs_converter(AdvancedCommerceSubscriptionCreateRequest).unstructure(request) + self.assertEqual("CREATE_SUBSCRIPTION", result["operation"]) + self.assertEqual("1", result["version"]) + + def test_subscription_modify_in_app_request_deserialization_sets_operation_and_version(self): + json_data = read_data_from_file('tests/resources/models/advancedCommerceSubscriptionModifyInAppRequest.json') + + request_dict = json.loads(json_data) + request = _get_cattrs_converter(AdvancedCommerceSubscriptionModifyInAppRequest).structure(request_dict, AdvancedCommerceSubscriptionModifyInAppRequest) + + result = _get_cattrs_converter(AdvancedCommerceSubscriptionModifyInAppRequest).unstructure(request) + self.assertEqual("MODIFY_SUBSCRIPTION", result["operation"]) + self.assertEqual("1", result["version"]) + + def test_subscription_reactivate_in_app_request_deserialization_sets_operation_and_version(self): + json_data = read_data_from_file('tests/resources/models/advancedCommerceSubscriptionReactivateInAppRequest.json') + + request_dict = json.loads(json_data) + request = _get_cattrs_converter(AdvancedCommerceSubscriptionReactivateInAppRequest).structure(request_dict, AdvancedCommerceSubscriptionReactivateInAppRequest) + + result = _get_cattrs_converter(AdvancedCommerceSubscriptionReactivateInAppRequest).unstructure(request) + self.assertEqual("REACTIVATE_SUBSCRIPTION", result["operation"]) + self.assertEqual("1", result["version"]) + def test_advanced_commerce_price_increase_info_status(self): self.assertEqual("SCHEDULED", AdvancedCommercePriceIncreaseInfoStatus.SCHEDULED.value) self.assertEqual("PENDING", AdvancedCommercePriceIncreaseInfoStatus.PENDING.value)