feat(semantic-tags): Add CurrencyAmount struct with amount and currencyCode fields#213
Merged
Merged
Conversation
…cy_code fields Implements Issue #115 (amount field) and #98 (currency_code field). The CurrencyAmount struct represents monetary values with their associated ISO 4217 currency code, commonly used in semantic tags for balance, price, or other financial information in Apple Wallet passes. Features: - Required 'amount' field (string) for the monetary value - Required 'currency_code' field validated against ISO 4217 codes - Accepts currency codes as both strings and atoms (atoms converted to strings) - JSON encoding with camelCase keys for Apple Wallet compatibility - Comprehensive validation and error messages - Full test coverage (21 tests including doctests) Closes #115 Closes #98
|
Minimum allowed coverage is Generated by 🐒 cobertura-action against b4160dd |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
This PR is being reviewed by Cursor Bugbot
Details
You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.
To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.
Empty or whitespace-only currency_code now returns 'currency_code is required' instead of 'Invalid currency code ' for consistency with amount field validation. Added tests for empty and whitespace-only currency_code cases.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Title
feat(semantic-tags): Add CurrencyAmount struct with amount and currencyCode fields
Type of Change
Description
This PR implements Issues #115 and #98 by adding the
ExPass.Structs.SemanticTags.CurrencyAmountmodule that represents monetary values with their associated currency for use in Apple Wallet pass semantic tags.Key Features:
amountfield (string) for the monetary valuecurrency_codefield validated against ISO 4217 currency codesImplementation Details:
The
CurrencyAmountstruct follows the established patterns from other semantic tags (likeSeat) and validates:amountmust be a non-empty stringcurrency_codemust be a valid ISO 4217 code (using existingValidators.validate_currency_code/1)classDiagram class CurrencyAmount { +amount: String* +currency_code: String* +new(attrs) CurrencyAmount -normalize_currency_code(attrs) attrs -validate_required_currency_code(value) ok or error } note for CurrencyAmount "Both fields are required.\ncurrency_code validates against ISO 4217."Testing
Comprehensive Test Coverage:
All Tests Pass:
Impact
Positive Impact:
Technical Considerations:
Additional Information
Apple Documentation Compliance:
This implementation aligns with Apple's PassKit documentation for currency amounts in semantic tags.
Checklist
Closes #115
Closes #98
Note
Introduces
ExPass.Structs.SemanticTags.CurrencyAmountto represent monetary values for Apple Wallet semantic tags.amountandcurrency_codefields with validation (required string foramount; ISO 4217 check forcurrency_code), including atom-to-string normalizationConverterandValidatorsutilities and encodes to JSON with camelCase keys (currencyCode)Written by Cursor Bugbot for commit b4160dd. This will update automatically on new commits. Configure here.