Pull from stripe-ruby-mock:origin/master#3
Open
quekshuy wants to merge 14 commits into
Open
Conversation
strawhatduckk
approved these changes
Nov 7, 2025
daryllxd
approved these changes
Nov 7, 2025
* stripe_validator_spec.rb was loaded twice: once by RSpec (matching *_spec.rb pattern via load) and once by spec_helper (via require in Dir glob), causing a shared example group redefinition warning. * Rename to stripe_validator.rb since it is a shared context, not a spec file.
* Stripe v6 uses Subscription#delete, v7+ uses #cancel. * Add cancel_subscription and cancel_subscription_by_id helpers that delegate to the correct method.
* Invoice.create_preview was added in Stripe v11. * Tests now check for method availability and skip gracefully on older versions.
* Stripe v6 requires a positional argument for
Invoice.upcoming; passing {} works across all versions.
* Add appraisal gemfiles for Stripe 6-11 * Add gemfiles for testing against Stripe SDK v6 through v11 to verify backward compatibility. * Add lockfiles for Stripe 6-11 gemfiles * Add Stripe 6-11 to CI test matrix * Full Ruby matrix (3.1, 3.2, 3.3) for Stripe 12-13. * Single Ruby 3.3 for Stripe 6-11 backward compat checks. * Use full matrix for Stripe 6-11 CI test combinations
The require was added in c34c4e8 (2013) but was apparently never used. Removing it silences the Ruby 3.4 bundled-gem deprecation warning ("ostruct was loaded from the standard library, but will no longer be part of the default gems") without needing to add ostruct as a dependency.
* test: Deflake time related tests (cherry picked from commit 1c0e057) * Deflake subscription current_period_start filter spec "filters out subscriptions based on their current_period" created two subscriptions and then asserted that filtering by subscription1.current_period_start returned both of them. That only holds if both Subscription.create calls happen within the same wall-clock second; if the clock ticks between them then the test fails. --------- Co-authored-by: strawhatduckk <strawhatduck@wallwisher.com>
The DRb server needs to be running once client-side, but it holds no state and so doesn't need to be restarted. The same service is process-wide and can be used to talk with multiple backend DRb servers. `DRb.start_service` replaces the `primary_server` each time it is called, orphaning the previous one as it does so. This leads to fd leaks if `StripeMock.start_client` and `StripeMock.stop_client` are called repeatedly, such as when running the test suite. An alternative approach would be to stop the service during `stop_client`, but this would interfere with any other code in the same process that's using the DRb.
* Declare logger as an explicit dependency logger is a dependency of stripe, but it was removed from the default gems in ruby 4 and only added explicitly to stripe in v19. * Add Ruby 4.0 to the CI test matrix
Elsewhere in the code the symbol key `:status` is used, and this mismatch is flagged up as a warning when using ruby 4.0
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.
This pull request introduces improvements to promotion code filtering and makes minor updates to gem usage and loading. The main change is the addition of case-insensitive filtering for promotion codes when listing, along with corresponding test coverage. There are also updates to the gem installation instructions and the main library file.
Promotion code filtering:
codewhen listing promotion codes inlist_promotion_code, ensuring that searches match regardless of letter case.promotion_code_examples.rb.Gem usage and loading:
README.mdto remove the explicit:require => 'stripe_mock'option, simplifying usage.require 'stripe_mock'statement to the mainstripe-ruby-mock.rbfile to ensure proper loading of the gem.