Skip to content

Conversation

@jimmyn
Copy link
Collaborator

@jimmyn jimmyn commented Dec 1, 2025

Summary

Add comprehensive unit tests for the ApplePayCertificateApi class, replacing placeholder stubs.

Implementation

  • 14 unit tests covering all API operations (create, list, get, activate, update, delete)
  • Parameter validation tests for required fields (id, request objects)
  • Error handling tests for 401 Unauthorized and 404 Not Found responses
  • Uses mock HTTP client pattern consistent with existing PaymentsApiTest

Test plan

  • testCreate - POST creates certificate with CSR
  • testCallList - GET returns list of certificates
  • testGet - GET returns single certificate by ID
  • testActivate - POST activates certificate with signed cert
  • testUpdate - POST updates certificate active status
  • testDelete - DELETE removes certificate
  • testGetWithMissingIdThrowsException
  • testDeleteWithMissingIdThrowsException
  • testActivateWithMissingIdThrowsException
  • testActivateWithMissingRequestThrowsException
  • testUpdateWithMissingIdThrowsException
  • testUpdateWithMissingRequestThrowsException
  • testGetNotFoundError - 404 throws ApiException
  • testUnauthorizedError - 401 throws ApiException
  • All tests pass: composer test
  • Code style passes: composer cs-check

Summary by CodeRabbit

  • New Features
    • Apple Pay Certificate management added (create, list, get, activate, update, delete) and exposed via client.
  • Models
    • New models for Apple Pay certificate requests/responses.
  • Tests
    • Added PHPUnit tests covering certificate flows, input validation, and error scenarios.
  • Documentation
    • OpenAPI/documentation version bumped to 1.8.0.

✏️ Tip: You can customize this high-level summary in your review settings.

- Add 14 unit tests covering all API operations
- Test create, list, get, activate, update, delete endpoints
- Test parameter validation for required fields
- Test error handling for 401 and 404 responses
- Use mock HTTP client pattern consistent with PaymentsApiTest

Previously the test file only had placeholder stubs marked incomplete.
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@coderabbitai
Copy link

coderabbitai bot commented Dec 1, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

Adds Apple Pay certificates: new OpenAPI-generated API client and models, PHPUnit tests for API and models, MoneiClient wiring for the new API, numerous OpenAPI doc-version header updates, dev-dependency bumps, and a commitlint rule addition.

Changes

Cohort / File(s) Summary
Apple Pay Certificate API
lib/Api/ApplePayCertificateApi.php
New OpenAPI-generated API client providing create, callList, get, update, delete, activate operations with sync/async variants, request builders, auth handling, response deserialization, and ApiException mappings.
New Models (Apple Pay)
lib/Model/ApplePayCertificate.php, lib/Model/ActivateApplePayCertificateRequest.php, lib/Model/UpdateApplePayCertificateRequest.php
New OpenAPI-generated model classes implementing ModelInterface/ArrayAccess/JsonSerializable with metadata, nullability tracking, validation, getters/setters, and serialization helpers.
Client wiring
lib/MoneiClient.php
Adds use Monei\Api\ApplePayCertificateApi;, a public applePayCertificate property, and initializes it in the constructor.
API Tests
test/Api/ApplePayCertificateApiTest.php
New PHPUnit tests exercising create/list/get/activate/update/delete flows, validation-error cases, and 401/404 error handling using Guzzle MockHandler and history middleware.
Model Tests (stubs)
test/Model/ActivateApplePayCertificateRequestTest.php, test/Model/ApplePayCertificateTest.php, test/Model/UpdateApplePayCertificateRequestTest.php
New PHPUnit model test stubs with lifecycle hooks and placeholder (incomplete) tests for model properties.
Dev tooling / package
package.json
Bumped devDependencies (commitlint, openapi-generator-cli, release tooling, etc.) and packageManager (yarn) version updates.
Lint config
commitlint.config.js
Adds a new header-max-length rule (disabled) alongside existing rules.
OpenAPI doc-version header updates
lib/Api/..., lib/Model/..., lib/Configuration.php, lib/ObjectSerializer.php, lib/ApiException.php, lib/FormDataProcessor.php, lib/HeaderSelector.php, ...
Many files had their OpenAPI document version in file headers updated from 1.7.3 to 1.8.0; these are documentation/comment changes with no functional edits.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • Review focus areas:
    • lib/Api/ApplePayCertificateApi.php — request construction, status-code → model mapping, error handling, and async variants.
    • lib/Model/*ApplePay* — nullability tracking, required-field enforcement, serialization/deserialization.
    • test/Api/ApplePayCertificateApiTest.php — mocked responses, asserted request bodies/paths, and exception assertions.
    • lib/MoneiClient.php — ensure new API wiring does not regress existing initialization.
    • package.json and commitlint.config.js — CI/tooling compatibility with bumped versions.

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: adding tests for ApplePayCertificateApi. It is concise, specific, and directly reflects the primary purpose of the changeset.
Docstring Coverage ✅ Passed Docstring coverage is 98.57% which is sufficient. The required threshold is 80.00%.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/apple-pay-certificate-api-tests

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
test/Api/ApplePayCertificateApiTest.php (2)

71-73: Remove empty lifecycle methods.

The setUpBeforeClass() and tearDownAfterClass() methods are empty and serve no purpose. Consider removing them to reduce clutter.

-    /**
-     * Setup before running any test cases
-     *
-     * @return void
-     */
-    public static function setUpBeforeClass(): void
-    {
-    }
-
-    /**
-     * Clean up after running all test cases
-     *
-     * @return void
-     */
-    public static function tearDownAfterClass(): void
-    {
-    }
-

Also applies to: 110-112


50-50: Consider adding typed property declarations.

While DocBlocks document the types, PHP 7.4+ typed properties provide runtime type safety. This is a minor quality improvement.

-    protected $api;
+    protected ApplePayCertificateApi $api;
-    protected $mockHandler;
+    protected MockHandler $mockHandler;
-    protected $container = [];
+    protected array $container = [];

Also applies to: 57-57, 64-64

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between be05252 and 7774b15.

📒 Files selected for processing (1)
  • test/Api/ApplePayCertificateApiTest.php (1 hunks)
🧰 Additional context used
📓 Path-based instructions (3)
**/*.php

📄 CodeRabbit inference engine (CLAUDE.md)

Adhere to PSR-12 code style across the PHP codebase (use cs-check/cs-fix)

Files:

  • test/Api/ApplePayCertificateApiTest.php
test/**/*.php

📄 CodeRabbit inference engine (CLAUDE.md)

test/**/*.php: Place unit tests in the test/ directory for all API classes and models and run them with PHPUnit
Use mocked HTTP responses in tests to ensure isolated, deterministic testing

Files:

  • test/Api/ApplePayCertificateApiTest.php
**/*

⚙️ CodeRabbit configuration file

**/*: Generate manual testing checkboxes for the PR. The checkboxes should cover:

  1. Visual verification that the UI renders correctly
  2. Functional testing of user interactions
  3. Edge cases and error states
  4. Cross-browser/device testing if applicable
  5. Integration with related features

Files:

  • test/Api/ApplePayCertificateApiTest.php
🪛 GitHub Actions: PHP Tests & Guzzle Compatibility
test/Api/ApplePayCertificateApiTest.php

[error] 91-91: PHPUnit failed: Class 'Monei\Api\ApplePayCertificateApi' not found. Test at ApplePayCertificateApiTest.php:91. Command: 'composer test'.

🔇 Additional comments (2)
test/Api/ApplePayCertificateApiTest.php (2)

121-531: Comprehensive test coverage and well-structured test suite.

The test suite thoroughly covers CRUD operations, parameter validation, and error handling scenarios. The use of Guzzle's MockHandler provides isolated, deterministic testing as required by the coding guidelines. The test methods are well-named, properly documented, and include appropriate assertions for both request formation and response parsing.


279-279: ApplePayCertificateApi does not exist in the codebase. The test file instantiates new ApplePayCertificateApi() (line 91), but this class is not present in lib/Api/. The test cannot run as written. Either implement the missing ApplePayCertificateApi class or remove this test file if it is premature.

Likely an incorrect or invalid review comment.

…anager to [email protected]

- Updated the OpenAPI document version across multiple model and API files.
- Added ApplePayCertificateApi to the MoneiClient.
- Upgraded package manager from [email protected] to [email protected].
- Updated yarn.lock to reflect new dependencies.
@socket-security
Copy link

socket-security bot commented Dec 1, 2025

- Add ApplePayCertificateApi for iOS app certificate management
- Add ApplePayCertificate, ActivateApplePayCertificateRequest,
  UpdateApplePayCertificateRequest models
- Add 14 unit tests covering all API operations
- Test create, list, get, activate, update, delete endpoints
- Test parameter validation for required fields
- Test error handling for 401 and 404 responses
@jimmyn jimmyn force-pushed the feat/apple-pay-certificate-api-tests branch from 9143423 to 143108d Compare December 1, 2025 19:30
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7774b15 and 809180f.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (107)
  • .openapi-generator/FILES (3 hunks)
  • lib/Api/ApplePayCertificateApi.php (1 hunks)
  • lib/Api/ApplePayDomainApi.php (1 hunks)
  • lib/Api/BizumApi.php (1 hunks)
  • lib/Api/PaymentMethodsApi.php (1 hunks)
  • lib/Api/PaymentsApi.php (1 hunks)
  • lib/Api/SubscriptionsApi.php (1 hunks)
  • lib/ApiException.php (1 hunks)
  • lib/Configuration.php (2 hunks)
  • lib/FormDataProcessor.php (1 hunks)
  • lib/HeaderSelector.php (1 hunks)
  • lib/Model/ActivateApplePayCertificateRequest.php (1 hunks)
  • lib/Model/ActivateSubscriptionRequest.php (1 hunks)
  • lib/Model/Address.php (1 hunks)
  • lib/Model/ApiException.php (1 hunks)
  • lib/Model/ApplePayCertificate.php (1 hunks)
  • lib/Model/BadRequestError.php (1 hunks)
  • lib/Model/CancelPaymentRequest.php (1 hunks)
  • lib/Model/CancelSubscriptionRequest.php (1 hunks)
  • lib/Model/CapturePaymentRequest.php (1 hunks)
  • lib/Model/ConfirmPaymentRequest.php (1 hunks)
  • lib/Model/ConfirmPaymentRequestPaymentMethod.php (1 hunks)
  • lib/Model/ConfirmPaymentRequestPaymentMethodCard.php (1 hunks)
  • lib/Model/CreatePaymentRequest.php (1 hunks)
  • lib/Model/CreateSubscriptionRequest.php (1 hunks)
  • lib/Model/InlineObject.php (1 hunks)
  • lib/Model/InlineObject1.php (1 hunks)
  • lib/Model/InternalServerError.php (1 hunks)
  • lib/Model/ModelInterface.php (1 hunks)
  • lib/Model/NotFoundError.php (1 hunks)
  • lib/Model/PauseSubscriptionRequest.php (1 hunks)
  • lib/Model/Payment.php (1 hunks)
  • lib/Model/PaymentBillingDetails.php (1 hunks)
  • lib/Model/PaymentCancellationReason.php (1 hunks)
  • lib/Model/PaymentCustomer.php (1 hunks)
  • lib/Model/PaymentLastRefundReason.php (1 hunks)
  • lib/Model/PaymentMessageChannel.php (1 hunks)
  • lib/Model/PaymentMessageLanguage.php (1 hunks)
  • lib/Model/PaymentMethods.php (1 hunks)
  • lib/Model/PaymentMethodsMetadata.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataAlipay.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataApplePay.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataBancontact.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataBizum.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataBlik.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataCard.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataClickToPay.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataClickToPayDiscover.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataClickToPayMastercard.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataClickToPayVisa.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataEps.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataGiropay.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataGooglePay.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataIDeal.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataKlarna.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataMbway.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataSepa.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataSofort.php (1 hunks)
  • lib/Model/PaymentMethodsMetadataTrustly.php (1 hunks)
  • lib/Model/PaymentNextAction.php (1 hunks)
  • lib/Model/PaymentPaymentMethod.php (1 hunks)
  • lib/Model/PaymentPaymentMethodBizum.php (1 hunks)
  • lib/Model/PaymentPaymentMethodBizumInput.php (1 hunks)
  • lib/Model/PaymentPaymentMethodCard.php (1 hunks)
  • lib/Model/PaymentPaymentMethodCardInput.php (1 hunks)
  • lib/Model/PaymentPaymentMethodInput.php (1 hunks)
  • lib/Model/PaymentPaymentMethodKlarna.php (1 hunks)
  • lib/Model/PaymentPaymentMethodMbway.php (1 hunks)
  • lib/Model/PaymentPaymentMethodPaypal.php (1 hunks)
  • lib/Model/PaymentPaymentMethodSepa.php (1 hunks)
  • lib/Model/PaymentPaymentMethodTrustly.php (1 hunks)
  • lib/Model/PaymentRefundReason.php (1 hunks)
  • lib/Model/PaymentSequence.php (1 hunks)
  • lib/Model/PaymentSequenceRecurring.php (1 hunks)
  • lib/Model/PaymentSessionDetails.php (1 hunks)
  • lib/Model/PaymentShippingDetails.php (1 hunks)
  • lib/Model/PaymentShop.php (1 hunks)
  • lib/Model/PaymentStatus.php (1 hunks)
  • lib/Model/PaymentTraceDetails.php (1 hunks)
  • lib/Model/PaymentTransactionType.php (1 hunks)
  • lib/Model/RecurringPaymentRequest.php (1 hunks)
  • lib/Model/RefundPaymentRequest.php (1 hunks)
  • lib/Model/RegisterApplePayDomainRequest.php (1 hunks)
  • lib/Model/SendPaymentLinkRequest.php (1 hunks)
  • lib/Model/SendPaymentReceiptRequest.php (1 hunks)
  • lib/Model/SendPaymentRequestRequest.php (1 hunks)
  • lib/Model/SendSubscriptionLinkRequest.php (1 hunks)
  • lib/Model/SendSubscriptionStatusRequest.php (1 hunks)
  • lib/Model/ServiceUnavailableError.php (1 hunks)
  • lib/Model/Subscription.php (1 hunks)
  • lib/Model/SubscriptionInterval.php (1 hunks)
  • lib/Model/SubscriptionLastPayment.php (1 hunks)
  • lib/Model/SubscriptionPaymentMethod.php (1 hunks)
  • lib/Model/SubscriptionPaymentMethodCard.php (1 hunks)
  • lib/Model/SubscriptionRetryScheduleInner.php (1 hunks)
  • lib/Model/SubscriptionStatus.php (1 hunks)
  • lib/Model/UnauthorizedError.php (1 hunks)
  • lib/Model/UnprocessableEntityError.php (1 hunks)
  • lib/Model/UpdateApplePayCertificateRequest.php (1 hunks)
  • lib/Model/UpdateSubscriptionRequest.php (1 hunks)
  • lib/Model/ValidateBizumPhoneRequest.php (1 hunks)
  • lib/MoneiClient.php (3 hunks)
  • lib/ObjectSerializer.php (1 hunks)
  • package.json (1 hunks)
  • test/Model/ActivateApplePayCertificateRequestTest.php (1 hunks)
  • test/Model/ApplePayCertificateTest.php (1 hunks)
  • test/Model/UpdateApplePayCertificateRequestTest.php (1 hunks)
✅ Files skipped from review due to trivial changes (68)
  • lib/Model/PaymentMethodsMetadataBizum.php
  • lib/Model/PaymentMethodsMetadataMbway.php
  • lib/Model/PaymentCustomer.php
  • lib/Model/PaymentPaymentMethodSepa.php
  • lib/Model/PaymentMethodsMetadataTrustly.php
  • lib/Api/PaymentsApi.php
  • lib/Model/SendSubscriptionStatusRequest.php
  • lib/Model/PaymentMethodsMetadataGiropay.php
  • lib/Model/CancelPaymentRequest.php
  • lib/Model/CancelSubscriptionRequest.php
  • lib/Model/PaymentPaymentMethodBizum.php
  • lib/Model/SendPaymentRequestRequest.php
  • lib/Model/PaymentMethodsMetadataSepa.php
  • lib/Model/SubscriptionStatus.php
  • lib/Model/PaymentMethodsMetadataClickToPay.php
  • lib/Model/UnauthorizedError.php
  • lib/Api/SubscriptionsApi.php
  • lib/Model/PaymentMethodsMetadataClickToPayMastercard.php
  • lib/Model/PaymentMethodsMetadataSofort.php
  • lib/Model/InlineObject1.php
  • lib/Model/CreateSubscriptionRequest.php
  • lib/Model/ModelInterface.php
  • lib/Model/SubscriptionInterval.php
  • lib/Model/PaymentPaymentMethodPaypal.php
  • lib/Model/PaymentPaymentMethod.php
  • lib/Model/PaymentPaymentMethodKlarna.php
  • lib/Model/CapturePaymentRequest.php
  • lib/Model/UnprocessableEntityError.php
  • lib/Model/PauseSubscriptionRequest.php
  • lib/Model/ApiException.php
  • lib/Model/InlineObject.php
  • lib/Model/PaymentMethodsMetadataEps.php
  • lib/Model/PaymentShop.php
  • lib/Model/Payment.php
  • lib/Model/PaymentMethodsMetadataCard.php
  • lib/Model/SubscriptionPaymentMethod.php
  • lib/Model/BadRequestError.php
  • lib/Model/PaymentPaymentMethodBizumInput.php
  • lib/Model/PaymentTransactionType.php
  • lib/Configuration.php
  • lib/ObjectSerializer.php
  • lib/Model/RefundPaymentRequest.php
  • lib/Model/UpdateSubscriptionRequest.php
  • lib/Model/PaymentBillingDetails.php
  • lib/Model/Address.php
  • lib/Model/PaymentMethodsMetadata.php
  • lib/Model/PaymentMethodsMetadataClickToPayDiscover.php
  • lib/Model/PaymentPaymentMethodCardInput.php
  • lib/Model/PaymentLastRefundReason.php
  • lib/Model/RecurringPaymentRequest.php
  • lib/Model/PaymentPaymentMethodCard.php
  • lib/ApiException.php
  • lib/Model/PaymentMethods.php
  • lib/HeaderSelector.php
  • lib/Model/SubscriptionRetryScheduleInner.php
  • lib/Model/PaymentSequenceRecurring.php
  • lib/Model/PaymentNextAction.php
  • lib/Model/PaymentMessageChannel.php
  • lib/Model/ServiceUnavailableError.php
  • lib/Model/InternalServerError.php
  • lib/Model/ConfirmPaymentRequestPaymentMethod.php
  • lib/Model/CreatePaymentRequest.php
  • lib/Model/PaymentSessionDetails.php
  • lib/Model/RegisterApplePayDomainRequest.php
  • lib/Model/ConfirmPaymentRequest.php
  • lib/Api/PaymentMethodsApi.php
  • lib/Model/SubscriptionLastPayment.php
  • lib/Model/PaymentCancellationReason.php
🧰 Additional context used
📓 Path-based instructions (5)
lib/{Api,Model}/**/*.php

📄 CodeRabbit inference engine (CLAUDE.md)

Do not edit auto-generated code under lib/Api and lib/Model; it is regenerated from the OpenAPI spec

Files:

  • lib/Model/PaymentMethodsMetadataClickToPayVisa.php
  • lib/Model/PaymentTraceDetails.php
  • lib/Model/SubscriptionPaymentMethodCard.php
  • lib/Model/PaymentMethodsMetadataGooglePay.php
  • lib/Api/BizumApi.php
  • lib/Model/PaymentRefundReason.php
  • lib/Model/SendPaymentReceiptRequest.php
  • lib/Model/PaymentPaymentMethodInput.php
  • lib/Model/PaymentMethodsMetadataIDeal.php
  • lib/Model/PaymentMethodsMetadataApplePay.php
  • lib/Model/NotFoundError.php
  • lib/Model/SendSubscriptionLinkRequest.php
  • lib/Model/PaymentMethodsMetadataKlarna.php
  • lib/Model/Subscription.php
  • lib/Model/SendPaymentLinkRequest.php
  • lib/Model/PaymentMethodsMetadataBlik.php
  • lib/Model/PaymentPaymentMethodTrustly.php
  • lib/Model/PaymentMessageLanguage.php
  • lib/Model/ValidateBizumPhoneRequest.php
  • lib/Model/PaymentMethodsMetadataBancontact.php
  • lib/Api/ApplePayDomainApi.php
  • lib/Model/PaymentStatus.php
  • lib/Model/PaymentMethodsMetadataAlipay.php
  • lib/Model/ConfirmPaymentRequestPaymentMethodCard.php
  • lib/Model/PaymentPaymentMethodMbway.php
  • lib/Model/PaymentShippingDetails.php
  • lib/Model/ActivateApplePayCertificateRequest.php
  • lib/Model/ActivateSubscriptionRequest.php
  • lib/Model/UpdateApplePayCertificateRequest.php
  • lib/Model/PaymentSequence.php
  • lib/Model/ApplePayCertificate.php
  • lib/Api/ApplePayCertificateApi.php
**/*.php

📄 CodeRabbit inference engine (CLAUDE.md)

Adhere to PSR-12 code style across the PHP codebase (use cs-check/cs-fix)

Files:

  • lib/Model/PaymentMethodsMetadataClickToPayVisa.php
  • lib/Model/PaymentTraceDetails.php
  • lib/Model/SubscriptionPaymentMethodCard.php
  • lib/Model/PaymentMethodsMetadataGooglePay.php
  • lib/Api/BizumApi.php
  • lib/Model/PaymentRefundReason.php
  • lib/Model/SendPaymentReceiptRequest.php
  • lib/MoneiClient.php
  • lib/Model/PaymentPaymentMethodInput.php
  • lib/Model/PaymentMethodsMetadataIDeal.php
  • lib/Model/PaymentMethodsMetadataApplePay.php
  • lib/Model/NotFoundError.php
  • lib/Model/SendSubscriptionLinkRequest.php
  • lib/Model/PaymentMethodsMetadataKlarna.php
  • lib/Model/Subscription.php
  • lib/Model/SendPaymentLinkRequest.php
  • test/Model/UpdateApplePayCertificateRequestTest.php
  • lib/Model/PaymentMethodsMetadataBlik.php
  • lib/Model/PaymentPaymentMethodTrustly.php
  • lib/Model/PaymentMessageLanguage.php
  • lib/Model/ValidateBizumPhoneRequest.php
  • lib/Model/PaymentMethodsMetadataBancontact.php
  • lib/FormDataProcessor.php
  • lib/Api/ApplePayDomainApi.php
  • lib/Model/PaymentStatus.php
  • test/Model/ActivateApplePayCertificateRequestTest.php
  • lib/Model/PaymentMethodsMetadataAlipay.php
  • lib/Model/ConfirmPaymentRequestPaymentMethodCard.php
  • lib/Model/PaymentPaymentMethodMbway.php
  • lib/Model/PaymentShippingDetails.php
  • lib/Model/ActivateApplePayCertificateRequest.php
  • lib/Model/ActivateSubscriptionRequest.php
  • lib/Model/UpdateApplePayCertificateRequest.php
  • lib/Model/PaymentSequence.php
  • test/Model/ApplePayCertificateTest.php
  • lib/Model/ApplePayCertificate.php
  • lib/Api/ApplePayCertificateApi.php
**/*

⚙️ CodeRabbit configuration file

**/*: Generate manual testing checkboxes for the PR. The checkboxes should cover:

  1. Visual verification that the UI renders correctly
  2. Functional testing of user interactions
  3. Edge cases and error states
  4. Cross-browser/device testing if applicable
  5. Integration with related features

Files:

  • lib/Model/PaymentMethodsMetadataClickToPayVisa.php
  • lib/Model/PaymentTraceDetails.php
  • lib/Model/SubscriptionPaymentMethodCard.php
  • lib/Model/PaymentMethodsMetadataGooglePay.php
  • lib/Api/BizumApi.php
  • lib/Model/PaymentRefundReason.php
  • lib/Model/SendPaymentReceiptRequest.php
  • lib/MoneiClient.php
  • lib/Model/PaymentPaymentMethodInput.php
  • lib/Model/PaymentMethodsMetadataIDeal.php
  • lib/Model/PaymentMethodsMetadataApplePay.php
  • lib/Model/NotFoundError.php
  • lib/Model/SendSubscriptionLinkRequest.php
  • lib/Model/PaymentMethodsMetadataKlarna.php
  • lib/Model/Subscription.php
  • lib/Model/SendPaymentLinkRequest.php
  • test/Model/UpdateApplePayCertificateRequestTest.php
  • lib/Model/PaymentMethodsMetadataBlik.php
  • lib/Model/PaymentPaymentMethodTrustly.php
  • lib/Model/PaymentMessageLanguage.php
  • lib/Model/ValidateBizumPhoneRequest.php
  • lib/Model/PaymentMethodsMetadataBancontact.php
  • lib/FormDataProcessor.php
  • lib/Api/ApplePayDomainApi.php
  • lib/Model/PaymentStatus.php
  • package.json
  • test/Model/ActivateApplePayCertificateRequestTest.php
  • lib/Model/PaymentMethodsMetadataAlipay.php
  • lib/Model/ConfirmPaymentRequestPaymentMethodCard.php
  • lib/Model/PaymentPaymentMethodMbway.php
  • lib/Model/PaymentShippingDetails.php
  • lib/Model/ActivateApplePayCertificateRequest.php
  • lib/Model/ActivateSubscriptionRequest.php
  • lib/Model/UpdateApplePayCertificateRequest.php
  • lib/Model/PaymentSequence.php
  • test/Model/ApplePayCertificateTest.php
  • lib/Model/ApplePayCertificate.php
  • lib/Api/ApplePayCertificateApi.php
lib/MoneiClient.php

📄 CodeRabbit inference engine (CLAUDE.md)

lib/MoneiClient.php: Implement all custom SDK logic in MoneiClient.php (constructor, helpers, webhook verification, partner Account ID, custom User-Agent) rather than editing generated files
Ensure API-related errors surfaced by custom code throw ApiException with detailed response info

Files:

  • lib/MoneiClient.php
test/**/*.php

📄 CodeRabbit inference engine (CLAUDE.md)

test/**/*.php: Place unit tests in the test/ directory for all API classes and models and run them with PHPUnit
Use mocked HTTP responses in tests to ensure isolated, deterministic testing

Files:

  • test/Model/UpdateApplePayCertificateRequestTest.php
  • test/Model/ActivateApplePayCertificateRequestTest.php
  • test/Model/ApplePayCertificateTest.php
🧬 Code graph analysis (6)
test/Model/UpdateApplePayCertificateRequestTest.php (2)
test/Model/ActivateApplePayCertificateRequestTest.php (4)
  • setUpBeforeClass (48-50)
  • setUp (55-57)
  • tearDown (62-64)
  • tearDownAfterClass (69-71)
test/Model/ApplePayCertificateTest.php (5)
  • setUpBeforeClass (48-50)
  • setUp (55-57)
  • tearDown (62-64)
  • tearDownAfterClass (69-71)
  • testPropertyActive (121-125)
test/Model/ActivateApplePayCertificateRequestTest.php (2)
test/Model/ApplePayCertificateTest.php (5)
  • setUpBeforeClass (48-50)
  • setUp (55-57)
  • tearDown (62-64)
  • tearDownAfterClass (69-71)
  • testPropertyCert (112-116)
test/Model/UpdateApplePayCertificateRequestTest.php (4)
  • setUpBeforeClass (48-50)
  • setUp (55-57)
  • tearDown (62-64)
  • tearDownAfterClass (69-71)
lib/Model/ActivateApplePayCertificateRequest.php (2)
lib/ObjectSerializer.php (2)
  • ObjectSerializer (41-531)
  • sanitizeForSerialization (63-108)
lib/Model/ConfirmPaymentRequest.php (5)
  • openAPITypes (82-85)
  • openAPIFormats (91-94)
  • getters (185-188)
  • listInvalidProperties (242-249)
  • valid (256-259)
test/Model/ApplePayCertificateTest.php (2)
test/Model/ActivateApplePayCertificateRequestTest.php (5)
  • setUpBeforeClass (48-50)
  • setUp (55-57)
  • tearDown (62-64)
  • tearDownAfterClass (69-71)
  • testPropertyCert (85-89)
test/Model/UpdateApplePayCertificateRequestTest.php (5)
  • setUpBeforeClass (48-50)
  • setUp (55-57)
  • tearDown (62-64)
  • tearDownAfterClass (69-71)
  • testPropertyActive (85-89)
lib/Model/ApplePayCertificate.php (5)
lib/ObjectSerializer.php (2)
  • ObjectSerializer (41-531)
  • sanitizeForSerialization (63-108)
lib/Model/ConfirmPaymentRequest.php (11)
  • openAPITypes (82-85)
  • openAPIFormats (91-94)
  • openAPINullables (100-103)
  • getOpenAPINullablesSetToNull (109-112)
  • setOpenAPINullablesSetToNull (118-121)
  • isNullable (128-131)
  • isNullableSetToNull (138-141)
  • attributeMap (167-170)
  • getters (185-188)
  • valid (256-259)
  • __toString (519-522)
lib/Model/InlineObject.php (11)
  • openAPITypes (82-85)
  • openAPIFormats (91-94)
  • openAPINullables (100-103)
  • getOpenAPINullablesSetToNull (109-112)
  • setOpenAPINullablesSetToNull (118-121)
  • isNullable (128-131)
  • isNullableSetToNull (138-141)
  • attributeMap (167-170)
  • getters (185-188)
  • valid (246-249)
  • __toString (341-344)
lib/Model/Subscription.php (2)
  • getId (308-311)
  • setId (319-326)
lib/Internal/guzzlehttp/psr7/src/Uri.php (1)
  • jsonSerialize (418-421)
lib/Api/ApplePayCertificateApi.php (9)
lib/Internal/guzzlehttp/guzzle/src/Exception/RequestException.php (1)
  • RequestException (14-112)
lib/Internal/guzzlehttp/psr7/src/MultipartStream.php (1)
  • MultipartStream (13-132)
lib/Internal/guzzlehttp/psr7/src/Request.php (1)
  • Request (15-126)
lib/Internal/guzzlehttp/guzzle/src/RequestOptions.php (1)
  • RequestOptions (10-244)
lib/ApiException.php (1)
  • ApiException (39-111)
lib/Configuration.php (2)
  • Configuration (38-474)
  • getApiKeyWithPrefix (404-417)
lib/FormDataProcessor.php (1)
  • FormDataProcessor (44-194)
lib/HeaderSelector.php (2)
  • HeaderSelector (37-228)
  • selectHeaders (45-59)
lib/ObjectSerializer.php (3)
  • ObjectSerializer (41-531)
  • deserialize (352-471)
  • sanitizeForSerialization (63-108)
🪛 PHPMD (2.15.0)
lib/Model/ActivateApplePayCertificateRequest.php

118-121: Avoid unused private methods such as 'setOpenAPINullablesSetToNull'. (undefined)

(UnusedPrivateMethod)

lib/Model/UpdateApplePayCertificateRequest.php

118-121: Avoid unused private methods such as 'setOpenAPINullablesSetToNull'. (undefined)

(UnusedPrivateMethod)

lib/Model/ApplePayCertificate.php

119-122: Avoid unused private methods such as 'setOpenAPINullablesSetToNull'. (undefined)

(UnusedPrivateMethod)

lib/Api/ApplePayCertificateApi.php

1326-1331: Avoid unused private methods such as 'responseWithinRangeCode'. (undefined)

(UnusedPrivateMethod)

🔇 Additional comments (36)
lib/Model/PaymentMethodsMetadataKlarna.php (1)

18-18: LGTM! Auto-generated version update.

The OpenAPI document version has been updated from 1.7.3 to 1.8.0. This is an auto-generated change resulting from the OpenAPI specification update that introduces Apple Pay certificate API support.

lib/FormDataProcessor.php (1)

17-20: LGTM: metadata-only OpenAPI version bump

The change here is limited to the OpenAPI document version in the header; no functional or behavioral code was modified. This is fine and consistent with the regenerated client.

lib/Model/PaymentPaymentMethodInput.php (1)

18-21: LGTM: header OpenAPI version updated to 1.8.0

Only the OpenAPI document version metadata changed; the model definition and behavior remain untouched, which is appropriate for auto-generated code under lib/Model.

As per coding guidelines, lib/Model classes should not be manually edited beyond regeneration from the OpenAPI spec.

lib/Model/ConfirmPaymentRequestPaymentMethodCard.php (1)

18-21: LGTM: OpenAPI header version bump only

The diff is restricted to the docblock’s OpenAPI document version; all properties, accessors, and nullability behavior are unchanged.

lib/Model/PaymentTraceDetails.php (1)

18-21: LGTM: metadata-only update

Only the documented OpenAPI version was updated; the tracing fields and accessors remain identical, so there is no behavioral impact.

lib/Model/PaymentStatus.php (1)

18-21: LGTM: enum remains unchanged

Only the header’s OpenAPI document version changed; the PaymentStatus enum values and helper method are intact.

lib/Model/PaymentMethodsMetadataBancontact.php (1)

18-21: LGTM: docblock version alignment

The only modification is the OpenAPI document version in the header; the Bancontact metadata model itself is untouched.

lib/Model/PaymentMessageLanguage.php (1)

18-21: LGTM: header-only change

The OpenAPI document version was bumped, with no changes to the PaymentMessageLanguage enum values or API surface.

lib/Model/PaymentMethodsMetadataApplePay.php (1)

18-21: LGTM: OpenAPI doc version bumped

Only the header’s OpenAPI version string was updated; the Apple Pay metadata model (merchant_id) and its serialization behavior are unchanged.

lib/Model/PaymentMethodsMetadataIDeal.php (1)

14-21: OpenAPI document version bump is consistent and non-breaking

Header now points to spec version 1.8.0; no behavioral or structural changes in this auto-generated model.

lib/Model/PaymentMethodsMetadataClickToPayVisa.php (1)

14-21: Header metadata updated to OpenAPI 1.8.0

Version bump in the docblock matches the generator output; model behavior remains unchanged.

lib/Model/PaymentRefundReason.php (1)

14-21: Enum model keeps same semantics with updated spec version

Only the OpenAPI document version in the header moved to 1.8.0; refund reason enum is unchanged.

lib/Model/SendSubscriptionLinkRequest.php (1)

14-21: SendSubscriptionLinkRequest metadata aligned with OpenAPI 1.8.0

Docblock version bump only; request schema and validation logic are untouched.

lib/Model/PaymentPaymentMethodTrustly.php (1)

14-21: Trustly payment method model: metadata-only update

OpenAPI document version updated to 1.8.0 with no runtime or serialization changes.

lib/Model/ValidateBizumPhoneRequest.php (1)

14-21: ValidateBizumPhoneRequest header now reflects OpenAPI 1.8.0

Only the spec version in the docblock changed; request validation and structure are unaffected.

lib/Api/ApplePayDomainApi.php (1)

13-20: ApplePayDomainApi header version bump only

Docblock now targets OpenAPI 1.8.0; request/response handling and error mapping logic remain the same.

lib/Model/Subscription.php (1)

14-21: Subscription model metadata updated to OpenAPI 1.8.0

The change is limited to the header version reference; the Subscription schema and behavior are unchanged.

lib/Model/ActivateSubscriptionRequest.php (1)

18-18: Auto-generated code regeneration — LGTM.

This OpenAPI version bump to 1.8.0 is expected as part of the SDK regeneration from the updated OpenAPI specification. As per coding guidelines, this file should not be manually edited.

lib/Model/NotFoundError.php (1)

18-18: Auto-generated code regeneration — LGTM.

OpenAPI version bump to 1.8.0 from SDK regeneration. No functional changes.

lib/Model/PaymentMethodsMetadataBlik.php (1)

18-18: Auto-generated code regeneration — LGTM.

OpenAPI version bump to 1.8.0 from SDK regeneration. No functional changes.

lib/Model/PaymentMethodsMetadataAlipay.php (1)

18-18: Auto-generated code regeneration — LGTM.

OpenAPI version bump to 1.8.0 from SDK regeneration. No functional changes.

lib/Model/SendPaymentReceiptRequest.php (1)

18-18: Auto-generated code regeneration — LGTM.

OpenAPI version bump to 1.8.0 from SDK regeneration. No functional changes.

package.json (1)

19-27: Dev dependency updates — verify commitlint v20 compatibility.

These are routine dev dependency updates. The major version bump for @commitlint/cli and @commitlint/config-conventional (19.x → 20.x) includes breaking changes: ESM migration, rule behavior changes (e.g., body-max-line-length now ignores URL lines), and config/loader refactoring. Before merging, verify that:

  • Your commitlint configuration file format is compatible (ESM vs CommonJS alignment)
  • Node version in CI/dev environments meets requirements (Node 20+)
  • Any commitlint rule configurations work with updated behavior
  • Plugins or extended configs are updated to v20-compatible versions
  • CI passes with the new versions
lib/Model/PaymentPaymentMethodMbway.php (1)

18-18: Auto-generated file acknowledged — version header update only.

This file is auto-generated from the OpenAPI spec. The version bump from 1.7.3 to 1.8.0 is consistent with the API specification update. No manual edits should be made to this file.

lib/Model/PaymentShippingDetails.php (1)

18-18: Auto-generated file acknowledged — version header update only.

This file is auto-generated from the OpenAPI spec. The version bump from 1.7.3 to 1.8.0 is consistent with the API specification update.

lib/Model/PaymentMethodsMetadataGooglePay.php (1)

18-18: Auto-generated file acknowledged — version header update only.

This file is auto-generated from the OpenAPI spec. The version bump from 1.7.3 to 1.8.0 is consistent with the API specification update.

lib/Model/SendPaymentLinkRequest.php (1)

18-18: Auto-generated file acknowledged — version header update only.

This file is auto-generated from the OpenAPI spec. The version bump from 1.7.3 to 1.8.0 is consistent with the API specification update.

lib/Api/BizumApi.php (1)

17-17: Auto-generated file acknowledged — version header update only.

This file is auto-generated from the OpenAPI spec. The version bump from 1.7.3 to 1.8.0 is consistent with the API specification update.

lib/MoneiClient.php (3)

16-16: LGTM!

The import is correctly added and follows alphabetical ordering with other API imports.


55-56: LGTM!

The property declaration follows the established pattern for other API clients in MoneiClient, with proper type documentation.


91-91: LGTM!

The ApplePayCertificateApi initialization follows the established pattern and is correctly positioned with related Apple Pay APIs.

lib/Model/ActivateApplePayCertificateRequest.php (1)

118-121: Static analysis warning is a false positive in auto-generated code.

The PHPMD warning about the unused private method setOpenAPINullablesSetToNull can be safely ignored. This method is part of the OpenAPI generator's standard model template and may be used via reflection or by the serialization infrastructure. As per coding guidelines, auto-generated code under lib/Model should not be manually edited.

test/Model/UpdateApplePayCertificateRequestTest.php (1)

19-19: Remove this comment — the OpenAPI version is consistent.

The test file test/Model/UpdateApplePayCertificateRequestTest.php references OpenAPI version 1.8.0 (not 1.7.4), and all the mentioned model files (lib/Model/PaymentSequence.php, lib/Model/SubscriptionPaymentMethodCard.php, lib/Model/ActivateApplePayCertificateRequest.php) also reference version 1.8.0. There is no version mismatch.

Likely an incorrect or invalid review comment.

lib/Model/UpdateApplePayCertificateRequest.php (1)

1-357: Auto-generated model — no changes required.

This file is auto-generated by OpenAPI Generator as indicated in the header comments. The structure follows established patterns used by other models in the codebase (e.g., InlineObject, ConfirmPaymentRequest).

The static analysis warning about the unused setOpenAPINullablesSetToNull method (lines 118-121) is expected — this is standard generator boilerplate for nullable property tracking that may be used in certain edge cases or future scenarios.

As per coding guidelines, do not edit auto-generated code under lib/Model; any fixes should be applied to the OpenAPI spec.

lib/Model/ApplePayCertificate.php (1)

1-517: Auto-generated model — no changes required.

This file is auto-generated by OpenAPI Generator. The model correctly defines the ApplePayCertificate entity with appropriate properties for certificate management (id, account_id, csr, cert, active, expire_at, created_at).

The static analysis warning about the unused setOpenAPINullablesSetToNull method (lines 119-122) is expected generator boilerplate.

The pattern where getters return nullable types (e.g., getCsr(): string|null) while setters throw on null is standard OpenAPI generator behavior — it distinguishes between "property not present in response" vs. "explicitly setting null."

As per coding guidelines, do not edit auto-generated code under lib/Model.

lib/Api/ApplePayCertificateApi.php (1)

1-1332: Auto-generated API client — no changes required.

This file is auto-generated by OpenAPI Generator and provides a complete API client for Apple Pay certificate management with proper:

  • CRUD operations (create, get, callList, update, delete) plus activate
  • Synchronous and asynchronous variants with HTTP info
  • Error handling for standard HTTP status codes (400, 401, 404, 422, 500, 503)
  • API key authentication via the Authorization header
  • Request building with proper path parameter substitution and JSON serialization

The static analysis warning about the unused responseWithinRangeCode method (lines 1326-1331) is expected — this is generator boilerplate for range-based status code handling that may be used by other generated APIs or future operations.

As per coding guidelines, do not edit auto-generated code under lib/Api; any fixes should be applied to the OpenAPI spec or generator templates.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
test/Api/ApplePayCertificateApiTest.php (1)

279-279: Consider using model classes instead of stdClass for request objects.

The tests use stdClass ((object)['key' => 'value']) for request bodies, but actual model classes exist (ActivateApplePayCertificateRequest, UpdateApplePayCertificateRequest). Using the model classes would better test the full integration including model validation and serialization.

Example for activate:

-$activateRequest = (object)['cert' => 'base64_signed_cert_from_apple'];
+$activateRequest = new \Monei\Model\ActivateApplePayCertificateRequest();
+$activateRequest->setCert('base64_signed_cert_from_apple');

Example for update:

-$updateRequest = (object)['active' => false];
+$updateRequest = new \Monei\Model\UpdateApplePayCertificateRequest();
+$updateRequest->setActive(false);

Also applies to lines 427, 439, 454, 466 in validation tests.

Also applies to: 326-326

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 809180f and 143108d.

📒 Files selected for processing (5)
  • commitlint.config.js (1 hunks)
  • test/Api/ApplePayCertificateApiTest.php (1 hunks)
  • test/Model/ActivateApplePayCertificateRequestTest.php (1 hunks)
  • test/Model/ApplePayCertificateTest.php (1 hunks)
  • test/Model/UpdateApplePayCertificateRequestTest.php (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • test/Model/ApplePayCertificateTest.php
  • test/Model/UpdateApplePayCertificateRequestTest.php
  • test/Model/ActivateApplePayCertificateRequestTest.php
🧰 Additional context used
📓 Path-based instructions (3)
**/*

⚙️ CodeRabbit configuration file

**/*: Generate manual testing checkboxes for the PR. The checkboxes should cover:

  1. Visual verification that the UI renders correctly
  2. Functional testing of user interactions
  3. Edge cases and error states
  4. Cross-browser/device testing if applicable
  5. Integration with related features

Files:

  • commitlint.config.js
  • test/Api/ApplePayCertificateApiTest.php
**/*.php

📄 CodeRabbit inference engine (CLAUDE.md)

Adhere to PSR-12 code style across the PHP codebase (use cs-check/cs-fix)

Files:

  • test/Api/ApplePayCertificateApiTest.php
test/**/*.php

📄 CodeRabbit inference engine (CLAUDE.md)

test/**/*.php: Place unit tests in the test/ directory for all API classes and models and run them with PHPUnit
Use mocked HTTP responses in tests to ensure isolated, deterministic testing

Files:

  • test/Api/ApplePayCertificateApiTest.php
🧬 Code graph analysis (1)
test/Api/ApplePayCertificateApiTest.php (2)
lib/Model/ApplePayCertificate.php (4)
  • getId (274-277)
  • getAccountId (298-301)
  • getCsr (322-325)
  • getActive (370-373)
lib/Model/UpdateApplePayCertificateRequest.php (1)
  • getActive (258-261)
🔇 Additional comments (6)
commitlint.config.js (1)

5-6: Commit message length rules are explicitly disabled — confirm this matches intent

The new body-max-line-length and header-max-length entries are configured with severity 0, so commitlint will not enforce any limits on body line length or header length. This is valid configuration; just make sure the goal is to fully disable these checks rather than relaxing them to a higher limit (in which case you’d want a non‑zero severity and a max length value).

test/Api/ApplePayCertificateApiTest.php (5)

1-64: LGTM! Test structure follows established patterns.

The test class is properly structured with appropriate imports and properties. The setup matches the existing PaymentsApiTest pattern with Guzzle mock handler for isolated testing.


80-103: LGTM! Proper test fixture setup and cleanup.

The setUp and tearDown methods correctly initialize the mock HTTP infrastructure and clean up after each test, ensuring test isolation.


121-383: Excellent test coverage for API operations.

The tests comprehensively verify all CRUD operations with proper assertions for HTTP methods, endpoints, request bodies, and response parsing. The defensive checks ensuring create/update don't hit the activate endpoint (lines 148-151, 337-340) are particularly good.


390-467: LGTM! Thorough parameter validation testing.

The validation tests properly verify that required parameters (id and request objects) throw InvalidArgumentException when missing. Good defensive coverage.


474-531: LGTM! Solid error handling coverage.

The tests properly verify that 404 and 401 HTTP errors are surfaced as ApiException with correct error codes and response body details. The try-catch pattern with fail() ensures exceptions are actually thrown.

@jimmyn jimmyn merged commit f3a7370 into master Dec 1, 2025
13 of 14 checks passed
@jimmyn jimmyn deleted the feat/apple-pay-certificate-api-tests branch December 1, 2025 20:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants