From ee1f60808e084571cd840c86b5b78a279671afc4 Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Thu, 29 Feb 2024 18:32:18 +0100 Subject: [PATCH 001/319] prevent generating invoices when order's distributor can't generate invoices --- .../spree/admin/invoices_controller.rb | 10 ++++++++-- .../spree/admin/orders/invoices_spec.rb | 20 +++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/app/controllers/spree/admin/invoices_controller.rb b/app/controllers/spree/admin/invoices_controller.rb index 81f79a299e..e0c01c7bee 100644 --- a/app/controllers/spree/admin/invoices_controller.rb +++ b/app/controllers/spree/admin/invoices_controller.rb @@ -19,8 +19,14 @@ module Spree def generate @order = Order.find_by(number: params[:order_id]) - authorize! :invoice, @order - OrderInvoiceGenerator.new(@order).generate_or_update_latest_invoice + if @order.distributor.can_invoice? + authorize! :invoice, @order + OrderInvoiceGenerator.new(@order).generate_or_update_latest_invoice + else + flash[:error] = t(:must_have_valid_business_number, + enterprise_name: @order.distributor.name) + end + redirect_back(fallback_location: spree.admin_dashboard_path) end diff --git a/spec/controllers/spree/admin/orders/invoices_spec.rb b/spec/controllers/spree/admin/orders/invoices_spec.rb index 88cfdfc39e..1fcfa606ce 100644 --- a/spec/controllers/spree/admin/orders/invoices_spec.rb +++ b/spec/controllers/spree/admin/orders/invoices_spec.rb @@ -158,6 +158,10 @@ describe Spree::Admin::InvoicesController, type: :controller do let(:distributor) { order.distributor } let(:params) { { order_id: order.number } } + before do + distributor.update_attribute(:abn, "123412341234") + end + context "as a normal user" do before { allow(controller).to receive(:spree_current_user) { user } } @@ -193,6 +197,22 @@ describe Spree::Admin::InvoicesController, type: :controller do expect(response).to redirect_to spree.admin_dashboard_path end + + context "distributor didn't set an ABN" do + before do + distributor.update_attribute(:abn, "") + end + + it "should not allow me to generate a new invoice for the order" do + expect do + spree_get :generate, params + end.to change{ Invoice.count }.by(0) + + expect(response).to redirect_to spree.admin_dashboard_path + expect(flash[:error]) + .to eq "#{distributor.name} must have a valid ABN before invoices can be used." + end + end end end end From d16308011554c9da955bdd0f638b88a0d3f85277 Mon Sep 17 00:00:00 2001 From: Kelly Date: Tue, 16 Apr 2024 14:52:17 -0400 Subject: [PATCH 002/319] added test for if user isn't logged in for payments_controller --- spec/controllers/payments_controller_spec.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 spec/controllers/payments_controller_spec.rb diff --git a/spec/controllers/payments_controller_spec.rb b/spec/controllers/payments_controller_spec.rb new file mode 100644 index 0000000000..64c663de99 --- /dev/null +++ b/spec/controllers/payments_controller_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe PaymentsController, type: :controller do + + describe "testing redirect_to_authorize" do + context "when user isn't logged in" do + it "redirects to the login page and set error flash msg" do + get :redirect_to_authorize, params: { id: payment.id } + expect(response).to redirect_to(root_path(anchor: "/login", after_login: request.original_fullpath)) + expect(flash[:error]).to eq I18n.t("spree.orders.edit.login_to_view_order") + end + end + + context "when user is logged in" do + + end + +end \ No newline at end of file From 7d814e739d4ad5d15e5ab88c657816fec41c2806 Mon Sep 17 00:00:00 2001 From: Kelly Date: Tue, 16 Apr 2024 15:09:21 -0400 Subject: [PATCH 003/319] added objects necessary for testing - user, order, payment --- spec/controllers/payments_controller_spec.rb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/spec/controllers/payments_controller_spec.rb b/spec/controllers/payments_controller_spec.rb index 64c663de99..e3b2cf5d90 100644 --- a/spec/controllers/payments_controller_spec.rb +++ b/spec/controllers/payments_controller_spec.rb @@ -3,6 +3,9 @@ require 'spec_helper' describe PaymentsController, type: :controller do + let!(:user) { create(:user) } + let!(:order) { create(:order, user: user) } + let!(:payment) { create(:payment, order: order) } describe "testing redirect_to_authorize" do context "when user isn't logged in" do @@ -13,8 +16,8 @@ describe PaymentsController, type: :controller do end end - context "when user is logged in" do - + context "when user is logged in" do + + end end - end \ No newline at end of file From 1ad544820c37ef53a8e91cdb51839a0e022c3459 Mon Sep 17 00:00:00 2001 From: Kelly Date: Tue, 16 Apr 2024 15:21:49 -0400 Subject: [PATCH 004/319] completed payments_controller_spec testing --- spec/controllers/payments_controller_spec.rb | 23 +++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/spec/controllers/payments_controller_spec.rb b/spec/controllers/payments_controller_spec.rb index e3b2cf5d90..b68478eb4c 100644 --- a/spec/controllers/payments_controller_spec.rb +++ b/spec/controllers/payments_controller_spec.rb @@ -17,7 +17,28 @@ describe PaymentsController, type: :controller do end context "when user is logged in" do - + before do + allow(controller).to receive(:spree_current_user).and_return(user) + end + + context "has cvv response message" do + before do + allow_any_instance_of(Spree::Payment).to receive(:cvv_response_message).and_return('http://example.com') + end + + it "redirects to the CVV response URL" do + get :redirect_to_authorize, params: { id: payment.id } + expect(response).to redirect_to('http://example.com') + end + + end + + context "doesn't have cvv response message" do + it "redirect to order URL" do + get :redirect_to_authorize, params: { id: payment.id } + expect(response).to redirect_to(order_url(order)) + end + end end end end \ No newline at end of file From 954125b7f6862f2bcfa701d0a37867795bde59bb Mon Sep 17 00:00:00 2001 From: Kelly Date: Tue, 16 Apr 2024 15:30:21 -0400 Subject: [PATCH 005/319] style improvements after running rubocop --- spec/controllers/payments_controller_spec.rb | 74 ++++++++++---------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/spec/controllers/payments_controller_spec.rb b/spec/controllers/payments_controller_spec.rb index b68478eb4c..2af4e7a481 100644 --- a/spec/controllers/payments_controller_spec.rb +++ b/spec/controllers/payments_controller_spec.rb @@ -3,42 +3,42 @@ require 'spec_helper' describe PaymentsController, type: :controller do - let!(:user) { create(:user) } - let!(:order) { create(:order, user: user) } - let!(:payment) { create(:payment, order: order) } - - describe "testing redirect_to_authorize" do - context "when user isn't logged in" do - it "redirects to the login page and set error flash msg" do - get :redirect_to_authorize, params: { id: payment.id } - expect(response).to redirect_to(root_path(anchor: "/login", after_login: request.original_fullpath)) - expect(flash[:error]).to eq I18n.t("spree.orders.edit.login_to_view_order") - end - end - - context "when user is logged in" do - before do - allow(controller).to receive(:spree_current_user).and_return(user) - end + let!(:user) { create(:user) } + let!(:order) { create(:order, user:) } + let!(:payment) { create(:payment, order:) } - context "has cvv response message" do - before do - allow_any_instance_of(Spree::Payment).to receive(:cvv_response_message).and_return('http://example.com') - end - - it "redirects to the CVV response URL" do - get :redirect_to_authorize, params: { id: payment.id } - expect(response).to redirect_to('http://example.com') - end - - end - - context "doesn't have cvv response message" do - it "redirect to order URL" do - get :redirect_to_authorize, params: { id: payment.id } - expect(response).to redirect_to(order_url(order)) - end - end - end + describe "testing redirect_to_authorize" do + context "when user isn't logged in" do + it "redirects to the login page and set error flash msg" do + get :redirect_to_authorize, params: { id: payment.id } + expect(response).to redirect_to(root_path(anchor: "/login", + after_login: request.original_fullpath)) + expect(flash[:error]).to eq I18n.t("spree.orders.edit.login_to_view_order") + end end -end \ No newline at end of file + + context "when user is logged in" do + before do + allow(controller).to receive(:spree_current_user).and_return(user) + end + + context "has cvv response message" do + before do + allow_any_instance_of(Spree::Payment).to receive(:cvv_response_message).and_return('http://example.com') + end + + it "redirects to the CVV response URL" do + get :redirect_to_authorize, params: { id: payment.id } + expect(response).to redirect_to('http://example.com') + end + end + + context "doesn't have cvv response message" do + it "redirect to order URL" do + get :redirect_to_authorize, params: { id: payment.id } + expect(response).to redirect_to(order_url(order)) + end + end + end + end +end From 51d90e782b94adc166099ac36f6821471c62d8a1 Mon Sep 17 00:00:00 2001 From: Sergio Souza Date: Wed, 27 Mar 2024 09:49:47 -0300 Subject: [PATCH 006/319] remove the source_locale from the avaliable_locales method --- lib/open_food_network/i18n_config.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/open_food_network/i18n_config.rb b/lib/open_food_network/i18n_config.rb index d0d71d0450..838a4308cb 100644 --- a/lib/open_food_network/i18n_config.rb +++ b/lib/open_food_network/i18n_config.rb @@ -17,7 +17,7 @@ module OpenFoodNetwork # All locales that can be accessed by the application, including fallbacks. def self.available_locales - (selectable_locales + [default_locale, source_locale]).uniq + (selectable_locales + [default_locale]).uniq end # The default locale that is used when the user doesn't have a preference. From 947772599790166627282b4fabae0bccaaba4f53 Mon Sep 17 00:00:00 2001 From: Sergio Souza Date: Tue, 16 Apr 2024 18:02:13 -0300 Subject: [PATCH 007/319] update tests for avaliable_locales --- spec/lib/open_food_network/i18n_config_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/lib/open_food_network/i18n_config_spec.rb b/spec/lib/open_food_network/i18n_config_spec.rb index b69aa8b745..457ce35a49 100644 --- a/spec/lib/open_food_network/i18n_config_spec.rb +++ b/spec/lib/open_food_network/i18n_config_spec.rb @@ -77,7 +77,7 @@ module OpenFoodNetwork end it "provides the default available locales" do - expect(I18nConfig.available_locales).to eq ["en_GB", "en"] + expect(I18nConfig.available_locales).to eq ["en_GB"] end end @@ -92,7 +92,7 @@ module OpenFoodNetwork end it "provides the default available locales" do - expect(I18nConfig.available_locales).to eq ["es", "fr", "de", "en"] + expect(I18nConfig.available_locales).to eq ["es", "fr", "de"] end end end From 9ae064a24f8fdc2d814a7787b4a087e02f46522c Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Mon, 22 Apr 2024 17:36:47 +0200 Subject: [PATCH 008/319] Fix RedundantPresenceValidationOnBelongs on some files - presence: true is redundant since Rails 5.0 BUT applies with new default config of belongs_to_required_by_default to true Lots of files with belongs_to_required_by_default = false (backward compatibility) So: deleting this setting implies to adding optional: true - added 'NOT NULL' constraints so model constraints match with contraints on DB tables. - updated the todo --- .rubocop_todo.yml | 7 +------ app/models/enterprise_fee.rb | 1 - app/models/exchange.rb | 3 --- app/models/inventory_item.rb | 4 ---- app/models/order_cycle.rb | 4 +--- app/models/spree/address.rb | 6 ++---- ...cle_and_sender_and_receiver_on_exchange.rb | 7 +++++++ ...ire_name_and_coordinator_on_order_cycle.rb | 6 ++++++ ...ty_and_phone_and_country_and_on_address.rb | 8 ++++++++ db/schema.rb | 20 +++++++++---------- 10 files changed, 35 insertions(+), 31 deletions(-) create mode 100644 db/migrate/20240422140057_require_order_cycle_and_sender_and_receiver_on_exchange.rb create mode 100644 db/migrate/20240422145353_require_name_and_coordinator_on_order_cycle.rb create mode 100644 db/migrate/20240422150502_require_address1_and_city_and_phone_and_country_and_on_address.rb diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 8ed82cc4a7..3092909883 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -660,15 +660,10 @@ Rails/RedundantActiveRecordAllMethod: - 'app/models/spree/variant.rb' - 'spec/system/admin/product_import_spec.rb' -# Offense count: 20 +# Offense count: 14 # This cop supports unsafe autocorrection (--autocorrect-all). Rails/RedundantPresenceValidationOnBelongsTo: Exclude: - - 'app/models/enterprise_fee.rb' - - 'app/models/exchange.rb' - - 'app/models/inventory_item.rb' - - 'app/models/order_cycle.rb' - - 'app/models/spree/address.rb' - 'app/models/spree/line_item.rb' - 'app/models/spree/order.rb' - 'app/models/spree/product_property.rb' diff --git a/app/models/enterprise_fee.rb b/app/models/enterprise_fee.rb index a4bcdd272d..16f61a3cd3 100644 --- a/app/models/enterprise_fee.rb +++ b/app/models/enterprise_fee.rb @@ -21,7 +21,6 @@ class EnterpriseFee < ApplicationRecord validates :fee_type, inclusion: { in: FEE_TYPES } validates :name, presence: true - validates :enterprise_id, presence: true before_save :ensure_valid_tax_category_settings diff --git a/app/models/exchange.rb b/app/models/exchange.rb index 796a251ed1..32aa3237ab 100644 --- a/app/models/exchange.rb +++ b/app/models/exchange.rb @@ -10,8 +10,6 @@ # shopfront (outgoing products). But the set of shown products can be smaller # than all incoming products. class Exchange < ApplicationRecord - self.belongs_to_required_by_default = false - acts_as_taggable belongs_to :order_cycle @@ -24,7 +22,6 @@ class Exchange < ApplicationRecord has_many :exchange_fees, dependent: :destroy has_many :enterprise_fees, through: :exchange_fees - validates :order_cycle, :sender, :receiver, presence: true validates :sender_id, uniqueness: { scope: [:order_cycle_id, :receiver_id, :incoming] } before_destroy :delete_related_exchange_variants, prepend: true diff --git a/app/models/inventory_item.rb b/app/models/inventory_item.rb index d013ea52f2..8d90a4271f 100644 --- a/app/models/inventory_item.rb +++ b/app/models/inventory_item.rb @@ -1,14 +1,10 @@ # frozen_string_literal: true class InventoryItem < ApplicationRecord - self.belongs_to_required_by_default = false - belongs_to :enterprise belongs_to :variant, class_name: "Spree::Variant" validates :variant_id, uniqueness: { scope: :enterprise_id } - validates :enterprise, presence: true - validates :variant, presence: true validates :visible, inclusion: { in: [true, false], message: I18n.t(:inventory_item_visibility_error) } diff --git a/app/models/order_cycle.rb b/app/models/order_cycle.rb index e6b0d1dff1..7b71a3a79e 100644 --- a/app/models/order_cycle.rb +++ b/app/models/order_cycle.rb @@ -3,8 +3,6 @@ require 'open_food_network/scope_variant_to_hub' class OrderCycle < ApplicationRecord - self.belongs_to_required_by_default = false - searchable_attributes :orders_open_at, :orders_close_at, :coordinator_id searchable_scopes :active, :inactive, :active_or_complete, :upcoming, :closed, :not_closed, :dated, :undated, :soonest_opening, :soonest_closing, :most_recently_closed @@ -44,7 +42,7 @@ class OrderCycle < ApplicationRecord before_update :reset_processed_at, if: :will_save_change_to_orders_close_at? after_save :sync_subscriptions, if: :opening? - validates :name, :coordinator_id, presence: true + validates :name, presence: true validate :orders_close_at_after_orders_open_at? preference :product_selection_from_coordinator_inventory_only, :boolean, default: false diff --git a/app/models/spree/address.rb b/app/models/spree/address.rb index 59363374f1..9c305be78d 100644 --- a/app/models/spree/address.rb +++ b/app/models/spree/address.rb @@ -4,19 +4,17 @@ module Spree class Address < ApplicationRecord include AddressDisplay - self.belongs_to_required_by_default = false - searchable_attributes :firstname, :lastname, :phone, :full_name, :full_name_reversed, :full_name_with_comma, :full_name_with_comma_reversed searchable_associations :country, :state belongs_to :country, class_name: "Spree::Country" - belongs_to :state, class_name: "Spree::State" + belongs_to :state, class_name: "Spree::State", optional: true has_one :enterprise, dependent: :restrict_with_exception has_many :shipments - validates :address1, :city, :country, :phone, presence: true + validates :address1, :city, :phone, presence: true validates :company, presence: true, unless: -> { first_name.blank? || last_name.blank? } validates :firstname, :lastname, presence: true, if: -> do company.blank? || company == 'unused' diff --git a/db/migrate/20240422140057_require_order_cycle_and_sender_and_receiver_on_exchange.rb b/db/migrate/20240422140057_require_order_cycle_and_sender_and_receiver_on_exchange.rb new file mode 100644 index 0000000000..b159516a3a --- /dev/null +++ b/db/migrate/20240422140057_require_order_cycle_and_sender_and_receiver_on_exchange.rb @@ -0,0 +1,7 @@ +class RequireOrderCycleAndSenderAndReceiverOnExchange < ActiveRecord::Migration[7.0] + def change + change_column_null :exchanges, :order_cycle_id, false + change_column_null :exchanges, :sender_id, false + change_column_null :exchanges, :receiver_id, false + end +end diff --git a/db/migrate/20240422145353_require_name_and_coordinator_on_order_cycle.rb b/db/migrate/20240422145353_require_name_and_coordinator_on_order_cycle.rb new file mode 100644 index 0000000000..a58db5462d --- /dev/null +++ b/db/migrate/20240422145353_require_name_and_coordinator_on_order_cycle.rb @@ -0,0 +1,6 @@ +class RequireNameAndCoordinatorOnOrderCycle < ActiveRecord::Migration[7.0] + def change + change_column_null :order_cycles, :name, false + change_column_null :order_cycles, :coordinator_id, false + end +end diff --git a/db/migrate/20240422150502_require_address1_and_city_and_phone_and_country_and_on_address.rb b/db/migrate/20240422150502_require_address1_and_city_and_phone_and_country_and_on_address.rb new file mode 100644 index 0000000000..f200225349 --- /dev/null +++ b/db/migrate/20240422150502_require_address1_and_city_and_phone_and_country_and_on_address.rb @@ -0,0 +1,8 @@ +class RequireAddress1AndCityAndPhoneAndCountryAndOnAddress < ActiveRecord::Migration[7.0] + def change + change_column_null :spree_addresses, :address1, false + change_column_null :spree_addresses, :city, false + change_column_null :spree_addresses, :phone, false + change_column_null :spree_addresses, :country_id, false + end +end diff --git a/db/schema.rb b/db/schema.rb index 51491dce7f..68d8d5206d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_02_13_044159) do +ActiveRecord::Schema[7.0].define(version: 2024_04_22_150502) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" enable_extension "plpgsql" @@ -258,9 +258,9 @@ ActiveRecord::Schema[7.0].define(version: 2024_02_13_044159) do end create_table "exchanges", id: :serial, force: :cascade do |t| - t.integer "order_cycle_id" - t.integer "sender_id" - t.integer "receiver_id" + t.integer "order_cycle_id", null: false + t.integer "sender_id", null: false + t.integer "receiver_id", null: false t.text "pickup_time" t.text "pickup_instructions" t.datetime "created_at", precision: nil, null: false @@ -330,10 +330,10 @@ ActiveRecord::Schema[7.0].define(version: 2024_02_13_044159) do end create_table "order_cycles", id: :serial, force: :cascade do |t| - t.string "name", limit: 255 + t.string "name", limit: 255, null: false t.datetime "orders_open_at", precision: nil t.datetime "orders_close_at", precision: nil - t.integer "coordinator_id" + t.integer "coordinator_id", null: false t.datetime "created_at", precision: nil, null: false t.datetime "updated_at", precision: nil, null: false t.datetime "processed_at", precision: nil @@ -420,15 +420,15 @@ ActiveRecord::Schema[7.0].define(version: 2024_02_13_044159) do create_table "spree_addresses", id: :serial, force: :cascade do |t| t.string "firstname", limit: 255 t.string "lastname", limit: 255 - t.string "address1", limit: 255 + t.string "address1", limit: 255, null: false t.string "address2", limit: 255 - t.string "city", limit: 255 + t.string "city", limit: 255, null: false t.string "zipcode", limit: 255 - t.string "phone", limit: 255 + t.string "phone", limit: 255, null: false t.string "state_name", limit: 255 t.string "alternative_phone", limit: 255 t.integer "state_id" - t.integer "country_id" + t.integer "country_id", null: false t.datetime "created_at", precision: nil, null: false t.datetime "updated_at", precision: nil, null: false t.string "company", limit: 255 From 64d633c64e46a4ec864119aed8a51bfc49aba66e Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 23 Apr 2024 13:50:46 +1000 Subject: [PATCH 009/319] Publish enterprise website with https:// --- engines/dfc_provider/app/services/enterprise_builder.rb | 3 +++ engines/dfc_provider/spec/requests/enterprises_spec.rb | 1 + swagger/dfc.yaml | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/engines/dfc_provider/app/services/enterprise_builder.rb b/engines/dfc_provider/app/services/enterprise_builder.rb index b2087c2601..b03d27737d 100644 --- a/engines/dfc_provider/app/services/enterprise_builder.rb +++ b/engines/dfc_provider/app/services/enterprise_builder.rb @@ -23,6 +23,9 @@ class EnterpriseBuilder < DfcBuilder socialMedias: SocialMediaBuilder.social_medias(enterprise), websites: [enterprise.website].compact, ).tap do |e| + # The model strips the protocol and we need to add it: + e.websites = e.websites.map { |url| "https://#{url}" } + add_ofn_property(e, "ofn:long_description", enterprise.long_description) # This could be expressed as dfc-b:hasMainContact Person with name. diff --git a/engines/dfc_provider/spec/requests/enterprises_spec.rb b/engines/dfc_provider/spec/requests/enterprises_spec.rb index 587971a2ec..c205bc62a9 100644 --- a/engines/dfc_provider/spec/requests/enterprises_spec.rb +++ b/engines/dfc_provider/spec/requests/enterprises_spec.rb @@ -71,6 +71,7 @@ describe "Enterprises", type: :request, swagger_doc: "dfc.yaml", rswag_autodoc: expect(json_response["@graph"][0]).to include( "dfc-b:affiliates" => "http://test.host/api/dfc/enterprise_groups/60000", + "dfc-b:websitePage" => "https://openfoodnetwork.org", ) # Insert static value to keep documentation deterministic: diff --git a/swagger/dfc.yaml b/swagger/dfc.yaml index a96c33c2e7..f75cd154dc 100644 --- a/swagger/dfc.yaml +++ b/swagger/dfc.yaml @@ -376,7 +376,7 @@ paths: dfc-b:hasAddress: http://test.host/api/dfc/addresses/40000 dfc-b:hasPhoneNumber: 0404 444 000 200 dfc-b:email: hello@example.org - dfc-b:websitePage: openfoodnetwork.org + dfc-b:websitePage: https://openfoodnetwork.org dfc-b:hasSocialMedia: http://test.host/api/dfc/enterprises/10000/social_medias/facebook dfc-b:logo: '' dfc-b:name: Fred's Farm From d0f683d2792e5292cef65521f3d0e65faaf0de63 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 23 Apr 2024 16:48:52 +1000 Subject: [PATCH 010/319] Spec for bug --- spec/system/admin/products_v3/products_spec.rb | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 7384f1c0bd..a4f2a3b139 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -2,13 +2,16 @@ require "system_helper" -describe 'As an admin, I can manage products', feature: :admin_style_v3 do +describe 'As an enterprise user, I can manage my products', feature: :admin_style_v3 do include WebHelper include AuthenticationHelper include FileHelper + let(:producer) { create(:supplier_enterprise) } + let(:user) { create(:user, enterprises: [producer]) } + before do - login_as_admin + login_as user end it "can see the new product page" do @@ -129,8 +132,10 @@ describe 'As an admin, I can manage products', feature: :admin_style_v3 do before { create_products 1 } # create a product with a different supplier - let!(:producer) { create(:supplier_enterprise, name: "Producer 1") } - let!(:product_by_supplier) { create(:simple_product, name: "Apples", supplier: producer) } + let!(:producer1) { create(:supplier_enterprise, name: "Producer 1") } + let!(:product_by_supplier) { create(:simple_product, name: "Apples", supplier: producer1) } + + before { user.enterprise_roles.create(enterprise: producer1) } it "can search for and update a product" do visit admin_products_url @@ -145,6 +150,7 @@ describe 'As an admin, I can manage products', feature: :admin_style_v3 do fill_in "Name", with: "Pommes" end + pending "#12403" expect { click_button "Save changes" @@ -180,7 +186,7 @@ describe 'As an admin, I can manage products', feature: :admin_style_v3 do end end - describe "updating" do + xdescribe "updating" do # pending #12403 let!(:variant_a1) { product_a.variants.first.tap{ |v| v.update! display_name: "Medium box", sku: "APL-01", price: 5.25, on_hand: 5, @@ -974,7 +980,7 @@ describe 'As an admin, I can manage products', feature: :admin_style_v3 do def create_products(amount) amount.times do |i| - create(:simple_product, name: "product #{i}") + create(:simple_product, name: "product #{i}", supplier: producer) end end From b5cdee3d65f725df76aaea1f993959b02ff5ef57 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 23 Apr 2024 13:02:54 +1000 Subject: [PATCH 011/319] Rename translation key So that it can be used for more general purposes. --- app/webpacker/controllers/application_controller.js | 2 +- config/locales/en.yml | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/webpacker/controllers/application_controller.js b/app/webpacker/controllers/application_controller.js index 3065427cf4..50f5e57269 100644 --- a/app/webpacker/controllers/application_controller.js +++ b/app/webpacker/controllers/application_controller.js @@ -47,7 +47,7 @@ export default class extends Controller { console.error(reflex + ":\n " + error); // show error message - alert(I18n.t("errors.stimulus_reflex_error")); + alert(I18n.t("errors.general_error.message")); } reflexForbidden(element, reflex, noop, reflexId) { diff --git a/config/locales/en.yml b/config/locales/en.yml index e20236b1d9..1fe516fee8 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -175,14 +175,15 @@ en: message_html: "

The change you wanted was rejected. Maybe you tried to change something you don't have access to.

Return home

" - stimulus_reflex_error: "We're sorry, but something went wrong. + general_error: + message: "We're sorry, but something went wrong. - This might be a temporary problem, so please try again or reload the page. + This might be a temporary problem, so please try again or reload the page. - We record all errors and may be working on a fix. + We record all errors and may be working on a fix. - If the problem persists or is urgent, please contact us." + If the problem persists or is urgent, please contact us." stripe: error_code: incorrect_number: "The card number is incorrect." From 574e8f01356e51f5b9641d2fd8cf5d926930f6a2 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 23 Apr 2024 13:04:48 +1000 Subject: [PATCH 012/319] Show error message when turbo:frame-missing Instead of replacing frame contents with unhelpful text 'Content missing'. --- app/webpacker/js/turbo.js | 14 ++++++++++++++ app/webpacker/packs/admin.js | 3 ++- app/webpacker/packs/application.js | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 app/webpacker/js/turbo.js diff --git a/app/webpacker/js/turbo.js b/app/webpacker/js/turbo.js new file mode 100644 index 0000000000..4451810c93 --- /dev/null +++ b/app/webpacker/js/turbo.js @@ -0,0 +1,14 @@ +import "@hotwired/turbo"; + +document.addEventListener("turbo:frame-missing", (event) => { + // don't replace frame contents + event.preventDefault(); + + // show error message instead + status = event.detail.response.status; + if(status == 401) { + alert(I18n.t("errors.unauthorized.message")); + } else { + alert(I18n.t("errors.general_error.message")); + } +}); diff --git a/app/webpacker/packs/admin.js b/app/webpacker/packs/admin.js index 81735d3040..dbb68bafc2 100644 --- a/app/webpacker/packs/admin.js +++ b/app/webpacker/packs/admin.js @@ -1,6 +1,6 @@ import "controllers"; import "channels"; -import "@hotwired/turbo"; +import "../js/turbo"; import "../js/hotkeys"; import "../js/mrujs"; import "../js/matomo"; @@ -17,3 +17,4 @@ import Trix from "trix"; document.addEventListener("trix-file-accept", (event) => { event.preventDefault(); }); + diff --git a/app/webpacker/packs/application.js b/app/webpacker/packs/application.js index 5ee6a3b066..f8263d1830 100644 --- a/app/webpacker/packs/application.js +++ b/app/webpacker/packs/application.js @@ -1,5 +1,5 @@ import "controllers"; -import "@hotwired/turbo"; +import "../js/turbo"; import "../js/hotkeys"; import "../js/mrujs"; import "../js/matomo"; From 5a9b9a065b0d2dc2861d8fccddd6f9bb0d8d5647 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 23 Apr 2024 16:49:45 +1000 Subject: [PATCH 013/319] DRY website fix --- engines/dfc_provider/app/services/enterprise_builder.rb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/engines/dfc_provider/app/services/enterprise_builder.rb b/engines/dfc_provider/app/services/enterprise_builder.rb index b03d27737d..0d61c1735d 100644 --- a/engines/dfc_provider/app/services/enterprise_builder.rb +++ b/engines/dfc_provider/app/services/enterprise_builder.rb @@ -21,11 +21,10 @@ class EnterpriseBuilder < DfcBuilder localizations: [address], phoneNumbers: [enterprise.phone].compact, socialMedias: SocialMediaBuilder.social_medias(enterprise), - websites: [enterprise.website].compact, - ).tap do |e| - # The model strips the protocol and we need to add it: - e.websites = e.websites.map { |url| "https://#{url}" } + # The model strips the protocol and we need to add it: + websites: [enterprise.website].compact.map { |url| "https://#{url}" }, + ).tap do |e| add_ofn_property(e, "ofn:long_description", enterprise.long_description) # This could be expressed as dfc-b:hasMainContact Person with name. From 5559816e12169cbd4e401fc151ec0f1270608cb5 Mon Sep 17 00:00:00 2001 From: Anthony Musyoki <445103+anthonyms@users.noreply.github.com> Date: Thu, 21 Mar 2024 15:02:38 +0300 Subject: [PATCH 014/319] Fix Rubocop Rails issue: Rails/HasManyOrHasOneDependent --- app/models/enterprise.rb | 8 ++++--- spec/factories/payment_method_factory.rb | 5 ++++ spec/factories/shipping_method_factory.rb | 5 ++++ spec/models/enterprise_spec.rb | 29 +++++++++++++++++++++++ 4 files changed, 44 insertions(+), 3 deletions(-) diff --git a/app/models/enterprise.rb b/app/models/enterprise.rb index 22a18473a9..5340aecddd 100644 --- a/app/models/enterprise.rb +++ b/app/models/enterprise.rb @@ -43,7 +43,9 @@ class Enterprise < ApplicationRecord foreign_key: 'supplier_id', dependent: :destroy has_many :supplied_variants, through: :supplied_products, source: :variants - has_many :distributed_orders, class_name: 'Spree::Order', foreign_key: 'distributor_id' + has_many :distributed_orders, class_name: 'Spree::Order', + foreign_key: 'distributor_id', + dependent: :destroy belongs_to :address, class_name: 'Spree::Address' belongs_to :business_address, optional: true, class_name: 'Spree::Address', dependent: :destroy has_many :enterprise_fees @@ -52,9 +54,9 @@ class Enterprise < ApplicationRecord belongs_to :owner, class_name: 'Spree::User', inverse_of: :owned_enterprises has_many :distributor_payment_methods, - inverse_of: :distributor, foreign_key: :distributor_id + inverse_of: :distributor, foreign_key: :distributor_id, dependent: :destroy has_many :distributor_shipping_methods, - inverse_of: :distributor, foreign_key: :distributor_id + inverse_of: :distributor, foreign_key: :distributor_id, dependent: :destroy has_many :payment_methods, through: :distributor_payment_methods has_many :shipping_methods, through: :distributor_shipping_methods has_many :customers, dependent: :destroy diff --git a/spec/factories/payment_method_factory.rb b/spec/factories/payment_method_factory.rb index 98e8d36a35..c93657ef21 100644 --- a/spec/factories/payment_method_factory.rb +++ b/spec/factories/payment_method_factory.rb @@ -24,4 +24,9 @@ FactoryBot.define do distributors { [FactoryBot.create(:stripe_account).enterprise] } preferred_enterprise_id { distributors.first.id } end + + factory :distributor_payment_method, class: DistributorPaymentMethod do + distributor { FactoryBot.create(:distributor_enterprise) } + payment_method { FactoryBot.create(:payment_method) } + end end diff --git a/spec/factories/shipping_method_factory.rb b/spec/factories/shipping_method_factory.rb index d6957e78bd..68b41106c4 100644 --- a/spec/factories/shipping_method_factory.rb +++ b/spec/factories/shipping_method_factory.rb @@ -68,4 +68,9 @@ FactoryBot.define do distributors { [create(:distributor_enterprise_with_tax)] } end end + + factory :distributor_shipping_method, class: DistributorShippingMethod do + shipping_method { FactoryBot.create(:shipping_method) } + distributor { FactoryBot.create(:distributor_enterprise) } + end end diff --git a/spec/models/enterprise_spec.rb b/spec/models/enterprise_spec.rb index e764c9da73..06eb7cfbb0 100644 --- a/spec/models/enterprise_spec.rb +++ b/spec/models/enterprise_spec.rb @@ -57,6 +57,35 @@ describe Enterprise do expect(EnterpriseRelationship.where(id: [er1, er2])).to be_empty end + it "destroys all distributed_orders upon destroy" do + enterprise = create(:distributor_enterprise) + order_ids = create_list(:order, 2, distributor: enterprise).map(&:id) + + expect(Spree::Order.where(id: order_ids)).to exist + enterprise.destroy + expect(Spree::Order.where(id: order_ids)).not_to exist + end + + it "destroys all distributor_payment_methods upon destroy" do + enterprise = create(:distributor_enterprise) + payment_method_ids = create_list(:distributor_payment_method, 2, + distributor: enterprise).map(&:id) + + expect(DistributorPaymentMethod.where(id: payment_method_ids)).to exist + enterprise.destroy + expect(DistributorPaymentMethod.where(id: payment_method_ids)).not_to exist + end + + it "destroys all distributor_shipping_methods upon destroy" do + enterprise = create(:enterprise) + shipping_method_ids = create_list(:distributor_shipping_method, 2, + distributor: enterprise).map(&:id) + + expect(DistributorShippingMethod.where(id: shipping_method_ids)).to exist + enterprise.destroy + expect(DistributorShippingMethod.where(id: shipping_method_ids)).not_to exist + end + describe "relationships to other enterprises" do let(:e) { create(:distributor_enterprise) } let(:p) { create(:supplier_enterprise) } From 1ec453df4df494a4c1c5f675b57616d3095e2a85 Mon Sep 17 00:00:00 2001 From: Anthony Musyoki <445103+anthonyms@users.noreply.github.com> Date: Thu, 21 Mar 2024 15:54:29 +0300 Subject: [PATCH 015/319] Fix Rubocop issue: Do not delete addresses having shipments The reasoning is that we should not delete an address that has ever received a shipment --- app/models/spree/address.rb | 2 +- spec/models/spree/address_spec.rb | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/models/spree/address.rb b/app/models/spree/address.rb index 9c305be78d..9d7cac881f 100644 --- a/app/models/spree/address.rb +++ b/app/models/spree/address.rb @@ -12,7 +12,7 @@ module Spree belongs_to :state, class_name: "Spree::State", optional: true has_one :enterprise, dependent: :restrict_with_exception - has_many :shipments + has_many :shipments, dependent: :restrict_with_exception validates :address1, :city, :phone, presence: true validates :company, presence: true, unless: -> { first_name.blank? || last_name.blank? } diff --git a/spec/models/spree/address_spec.rb b/spec/models/spree/address_spec.rb index 41d0a28b15..c0b4f17234 100644 --- a/spec/models/spree/address_spec.rb +++ b/spec/models/spree/address_spec.rb @@ -134,6 +134,17 @@ describe Spree::Address do end end + context "associations" do + it "destroys shipments upon destroy" do + address = create(:address) + create(:shipment, address:) + + expect { + address.destroy + }.to raise_error(ActiveRecord::DeleteRestrictionError) + end + end + context ".default" do it "sets up a new record the default country" do expect(Spree::Address.default.country).to eq DefaultCountry.country From 4f851bbe1f5e3a518c25ad95691ae9a26ecf63c3 Mon Sep 17 00:00:00 2001 From: Anthony Musyoki <445103+anthonyms@users.noreply.github.com> Date: Mon, 25 Mar 2024 11:47:58 +0300 Subject: [PATCH 016/319] Fix Rubocop: Do not delete dependent stock_movements --- app/models/spree/stock_item.rb | 2 +- spec/models/spree/stock_item_spec.rb | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/models/spree/stock_item.rb b/app/models/spree/stock_item.rb index 192a154b3d..6ac038beb6 100644 --- a/app/models/spree/stock_item.rb +++ b/app/models/spree/stock_item.rb @@ -8,7 +8,7 @@ module Spree belongs_to :stock_location, class_name: 'Spree::StockLocation', inverse_of: :stock_items belongs_to :variant, -> { with_deleted }, class_name: 'Spree::Variant' - has_many :stock_movements + has_many :stock_movements, dependent: nil validates :stock_location, :variant, presence: true validates :variant_id, uniqueness: { scope: [:stock_location_id, :deleted_at] } diff --git a/spec/models/spree/stock_item_spec.rb b/spec/models/spree/stock_item_spec.rb index d3b1b26bab..2cf29f9918 100644 --- a/spec/models/spree/stock_item_spec.rb +++ b/spec/models/spree/stock_item_spec.rb @@ -112,6 +112,10 @@ RSpec.describe Spree::StockItem do it "doesnt raise ReadOnlyRecord error" do expect { subject.destroy }.not_to raise_error end + + it "does not destroy stock_movements when destroyed" do + expect { subject.destroy }.not_to change { Spree::StockMovement.count } + end end end end From 4140257fa1e3ffa1b63efa53ae694276ecf9c81a Mon Sep 17 00:00:00 2001 From: Anthony Musyoki <445103+anthonyms@users.noreply.github.com> Date: Tue, 26 Mar 2024 09:54:51 +0300 Subject: [PATCH 017/319] Fix Rubocop: Do not delete dependent adjustments TaxRate acts_as_paranoid iand is thus not hard_deleted --- app/models/spree/tax_rate.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/spree/tax_rate.rb b/app/models/spree/tax_rate.rb index 62dade25b1..d7d91a7b73 100644 --- a/app/models/spree/tax_rate.rb +++ b/app/models/spree/tax_rate.rb @@ -21,7 +21,7 @@ module Spree belongs_to :zone, class_name: "Spree::Zone", inverse_of: :tax_rates belongs_to :tax_category, class_name: "Spree::TaxCategory", inverse_of: :tax_rates - has_many :adjustments, as: :originator + has_many :adjustments, as: :originator, dependent: nil validates :amount, presence: true, numericality: true validates :tax_category, presence: true From 645cb10864d1736113ed5d51290ec37797eb8ecb Mon Sep 17 00:00:00 2001 From: Anthony Musyoki <445103+anthonyms@users.noreply.github.com> Date: Tue, 26 Mar 2024 10:01:02 +0300 Subject: [PATCH 018/319] Fix Rubocop: Do not delete Spree::Variant associations Spree::Variant acts_as_paranoid and is thus not hard deleted --- app/models/spree/variant.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/models/spree/variant.rb b/app/models/spree/variant.rb index c5f93e0de9..294c1edfe0 100644 --- a/app/models/spree/variant.rb +++ b/app/models/spree/variant.rb @@ -32,8 +32,8 @@ module Spree delegate :name, :name=, :description, :description=, :meta_keywords, to: :product - has_many :inventory_units, inverse_of: :variant - has_many :line_items, inverse_of: :variant + has_many :inventory_units, inverse_of: :variant, dependent: nil + has_many :line_items, inverse_of: :variant, dependent: nil has_many :stock_items, dependent: :destroy, inverse_of: :variant has_many :stock_locations, through: :stock_items @@ -53,7 +53,7 @@ module Spree :currency, :currency=, to: :find_or_build_default_price - has_many :exchange_variants + has_many :exchange_variants, dependent: nil has_many :exchanges, through: :exchange_variants has_many :variant_overrides, dependent: :destroy has_many :inventory_items, dependent: :destroy From c2cbe4f0bfaae10b5136f7d3ec16bbd77ca571a9 Mon Sep 17 00:00:00 2001 From: Anthony Musyoki <445103+anthonyms@users.noreply.github.com> Date: Tue, 26 Mar 2024 10:57:40 +0300 Subject: [PATCH 019/319] Fix Rubocop: Hard delete paranoid associations As much as the associated models act_as_paranoid, it doesnt make sense to keep them around after deleting the enterprise --- app/models/enterprise.rb | 15 +++++++++++++-- spec/models/enterprise_spec.rb | 20 ++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/app/models/enterprise.rb b/app/models/enterprise.rb index 5340aecddd..3c080e7fca 100644 --- a/app/models/enterprise.rb +++ b/app/models/enterprise.rb @@ -48,7 +48,7 @@ class Enterprise < ApplicationRecord dependent: :destroy belongs_to :address, class_name: 'Spree::Address' belongs_to :business_address, optional: true, class_name: 'Spree::Address', dependent: :destroy - has_many :enterprise_fees + has_many :enterprise_fees, dependent: nil # paranoid association is deleted in a before_destroy has_many :enterprise_roles, dependent: :destroy has_many :users, through: :enterprise_roles belongs_to :owner, class_name: 'Spree::User', @@ -63,7 +63,7 @@ class Enterprise < ApplicationRecord has_many :inventory_items, dependent: :destroy has_many :tag_rules, dependent: :destroy has_one :stripe_account, dependent: :destroy - has_many :vouchers + has_many :vouchers, dependent: nil # paranoid association is deleted in a before_destroy has_many :connected_apps, dependent: :destroy has_one :custom_tab, dependent: :destroy @@ -130,6 +130,9 @@ class Enterprise < ApplicationRecord after_create :set_default_contact after_create :relate_to_owners_enterprises + before_destroy :delete_all_enterprise_fees + before_destroy :delete_all_vouchers + after_rollback :restore_permalink after_touch :touch_distributors after_create_commit :send_welcome_email @@ -587,4 +590,12 @@ class Enterprise < ApplicationRecord where.not(enterprises: { id: }). update_all(updated_at: Time.zone.now) end + + def delete_all_enterprise_fees + enterprise_fees.each(&:really_destroy!) + end + + def delete_all_vouchers + vouchers.each(&:really_destroy!) + end end diff --git a/spec/models/enterprise_spec.rb b/spec/models/enterprise_spec.rb index 06eb7cfbb0..d21514ff8e 100644 --- a/spec/models/enterprise_spec.rb +++ b/spec/models/enterprise_spec.rb @@ -86,6 +86,26 @@ describe Enterprise do expect(DistributorShippingMethod.where(id: shipping_method_ids)).not_to exist end + it "destroys all enterprise_fees upon destroy" do + enterprise = create(:enterprise) + fee_ids = create_list(:enterprise_fee, 2, enterprise:).map(&:id) + + expect(EnterpriseFee.where(id: fee_ids)).to exist + enterprise.destroy + expect(EnterpriseFee.where(id: fee_ids)).not_to exist + end + + it "destroys all vouchers upon destroy" do + enterprise = create(:enterprise) + voucher_ids = (1..2).map do |code| + create(:voucher, enterprise:, code: "new code #{code}") + end.map(&:id) + + expect(Voucher.where(id: voucher_ids)).to exist + enterprise.destroy + expect(Voucher.where(id: voucher_ids)).not_to exist + end + describe "relationships to other enterprises" do let(:e) { create(:distributor_enterprise) } let(:p) { create(:supplier_enterprise) } From 434afb73cd28777fff7c98636814cf852df4f0b2 Mon Sep 17 00:00:00 2001 From: Anthony Musyoki <445103+anthonyms@users.noreply.github.com> Date: Wed, 3 Apr 2024 12:34:50 +0300 Subject: [PATCH 020/319] Fix Rubocop: Update handling of enterprise associations --- app/models/enterprise.rb | 24 +++++-------- spec/models/enterprise_spec.rb | 66 +++++++++++++++++++--------------- 2 files changed, 46 insertions(+), 44 deletions(-) diff --git a/app/models/enterprise.rb b/app/models/enterprise.rb index 3c080e7fca..dd5a63a5fc 100644 --- a/app/models/enterprise.rb +++ b/app/models/enterprise.rb @@ -45,25 +45,29 @@ class Enterprise < ApplicationRecord has_many :supplied_variants, through: :supplied_products, source: :variants has_many :distributed_orders, class_name: 'Spree::Order', foreign_key: 'distributor_id', - dependent: :destroy + dependent: :restrict_with_exception belongs_to :address, class_name: 'Spree::Address' belongs_to :business_address, optional: true, class_name: 'Spree::Address', dependent: :destroy - has_many :enterprise_fees, dependent: nil # paranoid association is deleted in a before_destroy + has_many :enterprise_fees, dependent: :restrict_with_exception has_many :enterprise_roles, dependent: :destroy has_many :users, through: :enterprise_roles belongs_to :owner, class_name: 'Spree::User', inverse_of: :owned_enterprises has_many :distributor_payment_methods, - inverse_of: :distributor, foreign_key: :distributor_id, dependent: :destroy + inverse_of: :distributor, + foreign_key: :distributor_id, + dependent: :restrict_with_exception has_many :distributor_shipping_methods, - inverse_of: :distributor, foreign_key: :distributor_id, dependent: :destroy + inverse_of: :distributor, + foreign_key: :distributor_id, + dependent: :restrict_with_exception has_many :payment_methods, through: :distributor_payment_methods has_many :shipping_methods, through: :distributor_shipping_methods has_many :customers, dependent: :destroy has_many :inventory_items, dependent: :destroy has_many :tag_rules, dependent: :destroy has_one :stripe_account, dependent: :destroy - has_many :vouchers, dependent: nil # paranoid association is deleted in a before_destroy + has_many :vouchers, dependent: :restrict_with_exception has_many :connected_apps, dependent: :destroy has_one :custom_tab, dependent: :destroy @@ -130,8 +134,6 @@ class Enterprise < ApplicationRecord after_create :set_default_contact after_create :relate_to_owners_enterprises - before_destroy :delete_all_enterprise_fees - before_destroy :delete_all_vouchers after_rollback :restore_permalink after_touch :touch_distributors @@ -590,12 +592,4 @@ class Enterprise < ApplicationRecord where.not(enterprises: { id: }). update_all(updated_at: Time.zone.now) end - - def delete_all_enterprise_fees - enterprise_fees.each(&:really_destroy!) - end - - def delete_all_vouchers - vouchers.each(&:really_destroy!) - end end diff --git a/spec/models/enterprise_spec.rb b/spec/models/enterprise_spec.rb index d21514ff8e..8fd7c29f1f 100644 --- a/spec/models/enterprise_spec.rb +++ b/spec/models/enterprise_spec.rb @@ -57,53 +57,61 @@ describe Enterprise do expect(EnterpriseRelationship.where(id: [er1, er2])).to be_empty end - it "destroys all distributed_orders upon destroy" do + it "raises a DeleteRestrictionError on destroy if distributed_orders exist" do enterprise = create(:distributor_enterprise) - order_ids = create_list(:order, 2, distributor: enterprise).map(&:id) + create_list(:order, 2, distributor: enterprise) - expect(Spree::Order.where(id: order_ids)).to exist - enterprise.destroy - expect(Spree::Order.where(id: order_ids)).not_to exist + expect do + enterprise.destroy + end.to raise_error(ActiveRecord::DeleteRestrictionError, + /Cannot delete record because of dependent distributed_orders/) + .and change { Spree::Order.count }.by(0) end - it "destroys all distributor_payment_methods upon destroy" do + it "raises an DeleteRestrictionError on destroy if distributor_payment_methods exist" do enterprise = create(:distributor_enterprise) - payment_method_ids = create_list(:distributor_payment_method, 2, - distributor: enterprise).map(&:id) + create_list(:distributor_payment_method, 2, distributor: enterprise) - expect(DistributorPaymentMethod.where(id: payment_method_ids)).to exist - enterprise.destroy - expect(DistributorPaymentMethod.where(id: payment_method_ids)).not_to exist + expect do + enterprise.destroy + end.to raise_error(ActiveRecord::DeleteRestrictionError, + /Cannot delete record because of dependent distributor_payment_methods/) + .and change { DistributorPaymentMethod.count }.by(0) end - it "destroys all distributor_shipping_methods upon destroy" do - enterprise = create(:enterprise) - shipping_method_ids = create_list(:distributor_shipping_method, 2, - distributor: enterprise).map(&:id) + it "raises an DeleteRestrictionError on destroy if distributor_shipping_methods exist" do + enterprise = create(:distributor_enterprise) + create_list(:distributor_shipping_method, 2, distributor: enterprise) - expect(DistributorShippingMethod.where(id: shipping_method_ids)).to exist - enterprise.destroy - expect(DistributorShippingMethod.where(id: shipping_method_ids)).not_to exist + expect do + enterprise.destroy + end.to raise_error(ActiveRecord::DeleteRestrictionError, + /Cannot delete record because of dependent distributor_shipping_methods/) + .and change { DistributorShippingMethod.count }.by(0) end - it "destroys all enterprise_fees upon destroy" do + it "does not destroy enterprise_fees upon destroy" do enterprise = create(:enterprise) - fee_ids = create_list(:enterprise_fee, 2, enterprise:).map(&:id) + create_list(:enterprise_fee, 2, enterprise:) - expect(EnterpriseFee.where(id: fee_ids)).to exist - enterprise.destroy - expect(EnterpriseFee.where(id: fee_ids)).not_to exist + expect do + enterprise.destroy + end.to raise_error(ActiveRecord::DeleteRestrictionError, + /Cannot delete record because of dependent enterprise_fees/) + .and change { EnterpriseFee.count }.by(0) end - it "destroys all vouchers upon destroy" do + it "does not destroy vouchers upon destroy" do enterprise = create(:enterprise) - voucher_ids = (1..2).map do |code| + (1..2).map do |code| create(:voucher, enterprise:, code: "new code #{code}") - end.map(&:id) + end - expect(Voucher.where(id: voucher_ids)).to exist - enterprise.destroy - expect(Voucher.where(id: voucher_ids)).not_to exist + expect do + enterprise.destroy + end.to raise_error(ActiveRecord::DeleteRestrictionError, + /Cannot delete record because of dependent vouchers/) + .and change { Voucher.count }.by(0) end describe "relationships to other enterprises" do From 0d03cdf8159ed0e68c122a3a4b08769fccfacdb8 Mon Sep 17 00:00:00 2001 From: Anthony Musyoki <445103+anthonyms@users.noreply.github.com> Date: Tue, 23 Apr 2024 12:47:38 +0300 Subject: [PATCH 021/319] Fix Rubocop: Delete dependent stock_movements --- .rubocop_todo.yml | 11 ----------- app/models/spree/stock_item.rb | 2 +- app/models/spree/stock_movement.rb | 4 ---- spec/models/spree/stock_item_spec.rb | 6 +----- spec/models/spree/stock_movement_spec.rb | 7 ------- 5 files changed, 2 insertions(+), 28 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 3092909883..4f407763c9 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -565,17 +565,6 @@ RSpecRails/InferredSpecType: - 'spec/requests/voucher_adjustments_spec.rb' - 'spec/routing/stripe_spec.rb' -# Offense count: 11 -# Configuration parameters: Include. -# Include: app/models/**/*.rb -Rails/HasManyOrHasOneDependent: - Exclude: - - 'app/models/enterprise.rb' - - 'app/models/spree/address.rb' - - 'app/models/spree/stock_item.rb' - - 'app/models/spree/tax_rate.rb' - - 'app/models/spree/variant.rb' - # Offense count: 22 # Configuration parameters: IgnoreScopes, Include. # Include: app/models/**/*.rb diff --git a/app/models/spree/stock_item.rb b/app/models/spree/stock_item.rb index 6ac038beb6..565a165e6f 100644 --- a/app/models/spree/stock_item.rb +++ b/app/models/spree/stock_item.rb @@ -8,7 +8,7 @@ module Spree belongs_to :stock_location, class_name: 'Spree::StockLocation', inverse_of: :stock_items belongs_to :variant, -> { with_deleted }, class_name: 'Spree::Variant' - has_many :stock_movements, dependent: nil + has_many :stock_movements, dependent: :destroy validates :stock_location, :variant, presence: true validates :variant_id, uniqueness: { scope: [:stock_location_id, :deleted_at] } diff --git a/app/models/spree/stock_movement.rb b/app/models/spree/stock_movement.rb index 1cf432df5c..02352588e2 100644 --- a/app/models/spree/stock_movement.rb +++ b/app/models/spree/stock_movement.rb @@ -14,10 +14,6 @@ module Spree scope :recent, -> { order('created_at DESC') } - def readonly? - !new_record? - end - private def update_stock_item_quantity diff --git a/spec/models/spree/stock_item_spec.rb b/spec/models/spree/stock_item_spec.rb index 2cf29f9918..c3f94ef71a 100644 --- a/spec/models/spree/stock_item_spec.rb +++ b/spec/models/spree/stock_item_spec.rb @@ -109,12 +109,8 @@ RSpec.describe Spree::StockItem do context "with stock movements" do before { Spree::StockMovement.create(stock_item: subject, quantity: 1) } - it "doesnt raise ReadOnlyRecord error" do - expect { subject.destroy }.not_to raise_error - end - it "does not destroy stock_movements when destroyed" do - expect { subject.destroy }.not_to change { Spree::StockMovement.count } + expect { subject.destroy }.to change { Spree::StockMovement.count }.by(-1) end end end diff --git a/spec/models/spree/stock_movement_spec.rb b/spec/models/spree/stock_movement_spec.rb index 95f0ea5564..251ed56e5c 100644 --- a/spec/models/spree/stock_movement_spec.rb +++ b/spec/models/spree/stock_movement_spec.rb @@ -11,13 +11,6 @@ describe Spree::StockMovement do expect(subject).to respond_to(:stock_item) end - it 'is readonly unless new' do - subject.save - expect { - subject.save - }.to raise_error(ActiveRecord::ReadOnlyRecord) - end - context "when quantity is negative" do context "after save" do it "should decrement the stock item count on hand" do From 85e3d5d8580b4c7bb04c1f5634c7582a3e164349 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 22 Apr 2024 17:21:19 +0100 Subject: [PATCH 022/319] Tests payment intents for offline payments Moves let variables outside shared examples block Re-records cassettes --- ...t_intent_last_payment_error_as_message.yml | 632 ++++++++++++ ...t_intent_last_payment_error_as_message.yml | 632 ++++++++++++ ...t_intent_last_payment_error_as_message.yml | 632 ++++++++++++ ...t_intent_last_payment_error_as_message.yml | 632 ++++++++++++ ...t_intent_last_payment_error_as_message.yml | 632 ++++++++++++ ...t_intent_last_payment_error_as_message.yml | 632 ++++++++++++ ...t_intent_last_payment_error_as_message.yml | 630 ++++++++++++ ...t_intent_last_payment_error_as_message.yml | 632 ++++++++++++ .../captures_the_payment.yml | 905 ++++++++++++++++++ ...s_payment_intent_id_and_does_not_raise.yml | 512 ++++++++++ .../captures_the_payment.yml | 905 ++++++++++++++++++ ...s_payment_intent_id_and_does_not_raise.yml | 512 ++++++++++ .../from_Diners_Club/captures_the_payment.yml | 905 ++++++++++++++++++ ...s_payment_intent_id_and_does_not_raise.yml | 512 ++++++++++ .../captures_the_payment.yml | 905 ++++++++++++++++++ ...s_payment_intent_id_and_does_not_raise.yml | 512 ++++++++++ .../from_Discover/captures_the_payment.yml | 905 ++++++++++++++++++ ...s_payment_intent_id_and_does_not_raise.yml | 512 ++++++++++ .../captures_the_payment.yml | 905 ++++++++++++++++++ ...s_payment_intent_id_and_does_not_raise.yml | 512 ++++++++++ .../from_JCB/captures_the_payment.yml | 905 ++++++++++++++++++ ...s_payment_intent_id_and_does_not_raise.yml | 512 ++++++++++ .../from_Mastercard/captures_the_payment.yml | 905 ++++++++++++++++++ ...s_payment_intent_id_and_does_not_raise.yml | 512 ++++++++++ .../captures_the_payment.yml | 905 ++++++++++++++++++ ...s_payment_intent_id_and_does_not_raise.yml | 512 ++++++++++ .../captures_the_payment.yml | 905 ++++++++++++++++++ ...s_payment_intent_id_and_does_not_raise.yml | 512 ++++++++++ .../captures_the_payment.yml | 905 ++++++++++++++++++ ...s_payment_intent_id_and_does_not_raise.yml | 512 ++++++++++ .../from_UnionPay/captures_the_payment.yml | 905 ++++++++++++++++++ ...s_payment_intent_id_and_does_not_raise.yml | 512 ++++++++++ .../captures_the_payment.yml | 905 ++++++++++++++++++ ...s_payment_intent_id_and_does_not_raise.yml | 512 ++++++++++ .../from_Visa/captures_the_payment.yml | 905 ++++++++++++++++++ ...s_payment_intent_id_and_does_not_raise.yml | 512 ++++++++++ .../from_Visa_debit_/captures_the_payment.yml | 905 ++++++++++++++++++ ...s_payment_intent_id_and_does_not_raise.yml | 512 ++++++++++ ...t_intent_last_payment_error_as_message.yml | 70 +- ...t_intent_last_payment_error_as_message.yml | 70 +- ...t_intent_last_payment_error_as_message.yml | 70 +- ...t_intent_last_payment_error_as_message.yml | 70 +- ...t_intent_last_payment_error_as_message.yml | 70 +- ...t_intent_last_payment_error_as_message.yml | 70 +- ...t_intent_last_payment_error_as_message.yml | 70 +- ...t_intent_last_payment_error_as_message.yml | 70 +- .../captures_the_payment.yml | 116 +-- ...s_payment_intent_id_and_does_not_raise.yml | 58 +- .../captures_the_payment.yml | 116 +-- ...s_payment_intent_id_and_does_not_raise.yml | 58 +- .../from_Diners_Club/captures_the_payment.yml | 116 +-- ...s_payment_intent_id_and_does_not_raise.yml | 58 +- .../captures_the_payment.yml | 116 +-- ...s_payment_intent_id_and_does_not_raise.yml | 58 +- .../from_Discover/captures_the_payment.yml | 116 +-- ...s_payment_intent_id_and_does_not_raise.yml | 58 +- .../captures_the_payment.yml | 116 +-- ...s_payment_intent_id_and_does_not_raise.yml | 58 +- .../from_JCB/captures_the_payment.yml | 116 +-- ...s_payment_intent_id_and_does_not_raise.yml | 58 +- .../from_Mastercard/captures_the_payment.yml | 116 +-- ...s_payment_intent_id_and_does_not_raise.yml | 58 +- .../captures_the_payment.yml | 116 +-- ...s_payment_intent_id_and_does_not_raise.yml | 58 +- .../captures_the_payment.yml | 116 +-- ...s_payment_intent_id_and_does_not_raise.yml | 58 +- .../captures_the_payment.yml | 116 +-- ...s_payment_intent_id_and_does_not_raise.yml | 58 +- .../from_UnionPay/captures_the_payment.yml | 116 +-- ...s_payment_intent_id_and_does_not_raise.yml | 58 +- .../captures_the_payment.yml | 116 +-- ...s_payment_intent_id_and_does_not_raise.yml | 58 +- .../from_Visa/captures_the_payment.yml | 116 +-- ...s_payment_intent_id_and_does_not_raise.yml | 58 +- .../from_Visa_debit_/captures_the_payment.yml | 116 +-- ...s_payment_intent_id_and_does_not_raise.yml | 58 +- .../stripe/payment_intent_validator_spec.rb | 381 +++++--- 77 files changed, 28163 insertions(+), 1697 deletions(-) create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml (89%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml (89%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml (89%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml (89%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml (89%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml (89%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml (89%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml (89%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml (88%) rename spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/{ => as_a_guest}/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml (88%) diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml new file mode 100644 index 0000000000..a457dd85fe --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -0,0 +1,632 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=4000000000006975&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_sojXClxhQQaFbW","request_duration_ms":394}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:59 GMT + Content-Type: + - application/json + Content-Length: + - '996' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 22e0121b-31af-4767-b4ae-cd488f756d92 + Original-Request: + - req_rLIXRkYVBfZDQW + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_rLIXRkYVBfZDQW + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hR9KuuB1fWySnujBh02U7", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "WoxwxVPUPcg0EjXW", + "funding": "credit", + "generated_from": null, + "last4": "6975", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871379, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:59 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_rLIXRkYVBfZDQW","request_duration_ms":453}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:59 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 78275c47-0297-4c0e-a239-98563992887d + Original-Request: + - req_GVnMFgqWxAysaQ + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_GVnMFgqWxAysaQ + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyekV1ShGBjY8G", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871379, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "84F0FD2D", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:59 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hR9KuuB1fWySnujBh02U7&payment_method_types[0]=card&capture_method=manual&customer=cus_PyekV1ShGBjY8G&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_GVnMFgqWxAysaQ","request_duration_ms":429}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:23:00 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 162743d2-74b2-4292-a1ee-0bc2bb6a4801 + Original-Request: + - req_zlPjMc54Tkbu9m + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_zlPjMc54Tkbu9m + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hR9KuuB1fWySn1nJd2Z0s", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871379, + "currency": "eur", + "customer": "cus_PyekV1ShGBjY8G", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hR9KuuB1fWySnujBh02U7", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:23:00 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hR9KuuB1fWySn1nJd2Z0s/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_zlPjMc54Tkbu9m","request_duration_ms":487}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 402 + message: Payment Required + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:23:01 GMT + Content-Type: + - application/json + Content-Length: + - '5051' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 5a61ef34-70b9-4d94-a0d7-47616a39b2b4 + Original-Request: + - req_fyMzG745GeHI6Y + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_fyMzG745GeHI6Y + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: | + { + "error": { + "charge": "ch_3P8hR9KuuB1fWySn1n33UgF4", + "code": "card_declined", + "decline_code": "card_velocity_exceeded", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined for making repeated attempts too frequently or exceeding its amount limit.", + "payment_intent": { + "id": "pi_3P8hR9KuuB1fWySn1nJd2Z0s", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": { + } + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871379, + "currency": "eur", + "customer": "cus_PyekV1ShGBjY8G", + "description": null, + "invoice": null, + "last_payment_error": { + "charge": "ch_3P8hR9KuuB1fWySn1n33UgF4", + "code": "card_declined", + "decline_code": "card_velocity_exceeded", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined for making repeated attempts too frequently or exceeding its amount limit.", + "payment_method": { + "id": "pm_1P8hR9KuuB1fWySnujBh02U7", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "WoxwxVPUPcg0EjXW", + "funding": "credit", + "generated_from": null, + "last4": "6975", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871379, + "customer": null, + "livemode": false, + "metadata": { + }, + "type": "card" + }, + "type": "card_error" + }, + "latest_charge": "ch_3P8hR9KuuB1fWySn1n33UgF4", + "livemode": false, + "metadata": { + }, + "next_action": null, + "on_behalf_of": null, + "payment_method": null, + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + }, + "payment_method": { + "id": "pm_1P8hR9KuuB1fWySnujBh02U7", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "WoxwxVPUPcg0EjXW", + "funding": "credit", + "generated_from": null, + "last4": "6975", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871379, + "customer": null, + "livemode": false, + "metadata": { + }, + "type": "card" + }, + "request_log_url": "https://dashboard.stripe.com/test/logs/req_fyMzG745GeHI6Y?t=1713871380", + "type": "card_error" + } + } + recorded_at: Tue, 23 Apr 2024 11:23:01 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml new file mode 100644 index 0000000000..077dc39ebc --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -0,0 +1,632 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=4000000000000069&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_M2EjGTJOmFPvjA","request_duration_ms":413}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:51 GMT + Content-Type: + - application/json + Content-Length: + - '996' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 178dad88-b557-4875-bbfa-d9ecfdfb98b5 + Original-Request: + - req_bqKC4w4oOMZvSc + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_bqKC4w4oOMZvSc + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hR1KuuB1fWySnbxi4nn24", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "qpQikrTL7IyNA2rE", + "funding": "credit", + "generated_from": null, + "last4": "0069", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871371, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:51 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_bqKC4w4oOMZvSc","request_duration_ms":533}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:52 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 5835fb77-1637-4a76-ad9d-792b3db11f50 + Original-Request: + - req_SfQyNVeNfePrtc + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_SfQyNVeNfePrtc + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyekuTW9G8teWh", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871371, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "0A1B36ED", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:52 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hR1KuuB1fWySnbxi4nn24&payment_method_types[0]=card&capture_method=manual&customer=cus_PyekuTW9G8teWh&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_SfQyNVeNfePrtc","request_duration_ms":509}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:52 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 0a884fa9-98f8-4aa7-baaf-0c03ef7042ea + Original-Request: + - req_YNJjarvaZJsYcl + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_YNJjarvaZJsYcl + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hR2KuuB1fWySn2lcIMkzA", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871372, + "currency": "eur", + "customer": "cus_PyekuTW9G8teWh", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hR1KuuB1fWySnbxi4nn24", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:52 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hR2KuuB1fWySn2lcIMkzA/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_YNJjarvaZJsYcl","request_duration_ms":510}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 402 + message: Payment Required + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:53 GMT + Content-Type: + - application/json + Content-Length: + - '4857' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - f6345948-00a4-4462-a7ad-6b2c14710441 + Original-Request: + - req_a226IErp01tmAg + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_a226IErp01tmAg + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: | + { + "error": { + "charge": "ch_3P8hR2KuuB1fWySn2Q4UrurZ", + "code": "expired_card", + "doc_url": "https://stripe.com/docs/error-codes/expired-card", + "message": "Your card has expired.", + "param": "exp_month", + "payment_intent": { + "id": "pi_3P8hR2KuuB1fWySn2lcIMkzA", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": { + } + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871372, + "currency": "eur", + "customer": "cus_PyekuTW9G8teWh", + "description": null, + "invoice": null, + "last_payment_error": { + "charge": "ch_3P8hR2KuuB1fWySn2Q4UrurZ", + "code": "expired_card", + "doc_url": "https://stripe.com/docs/error-codes/expired-card", + "message": "Your card has expired.", + "param": "exp_month", + "payment_method": { + "id": "pm_1P8hR1KuuB1fWySnbxi4nn24", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "qpQikrTL7IyNA2rE", + "funding": "credit", + "generated_from": null, + "last4": "0069", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871371, + "customer": null, + "livemode": false, + "metadata": { + }, + "type": "card" + }, + "type": "card_error" + }, + "latest_charge": "ch_3P8hR2KuuB1fWySn2Q4UrurZ", + "livemode": false, + "metadata": { + }, + "next_action": null, + "on_behalf_of": null, + "payment_method": null, + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + }, + "payment_method": { + "id": "pm_1P8hR1KuuB1fWySnbxi4nn24", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "qpQikrTL7IyNA2rE", + "funding": "credit", + "generated_from": null, + "last4": "0069", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871371, + "customer": null, + "livemode": false, + "metadata": { + }, + "type": "card" + }, + "request_log_url": "https://dashboard.stripe.com/test/logs/req_a226IErp01tmAg?t=1713871372", + "type": "card_error" + } + } + recorded_at: Tue, 23 Apr 2024 11:22:53 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml new file mode 100644 index 0000000000..c1529614fc --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -0,0 +1,632 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=4000000000000002&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_jw6WIU0GBeVnT2","request_duration_ms":406}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:41 GMT + Content-Type: + - application/json + Content-Length: + - '996' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - b7635034-0538-409f-8de4-029495aa738e + Original-Request: + - req_17rocy9XEkwQk7 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_17rocy9XEkwQk7 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hQrKuuB1fWySnoJXDVbMV", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "IKC2ubfpSLuZKsVs", + "funding": "credit", + "generated_from": null, + "last4": "0002", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871361, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:41 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_17rocy9XEkwQk7","request_duration_ms":445}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:41 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - ac92f435-bad8-453d-a832-6b6b01ea665d + Original-Request: + - req_hmFNjhNpTLnsD2 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_hmFNjhNpTLnsD2 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_Pyek1w8BYYKnV9", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871361, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "8824622E", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:41 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hQrKuuB1fWySnoJXDVbMV&payment_method_types[0]=card&capture_method=manual&customer=cus_Pyek1w8BYYKnV9&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_hmFNjhNpTLnsD2","request_duration_ms":503}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:42 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 24277f63-f991-44e9-a545-04e748071bf9 + Original-Request: + - req_9auOceZoxHo5tE + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_9auOceZoxHo5tE + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQsKuuB1fWySn0dRsCAlk", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871362, + "currency": "eur", + "customer": "cus_Pyek1w8BYYKnV9", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQrKuuB1fWySnoJXDVbMV", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:42 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQsKuuB1fWySn0dRsCAlk/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_9auOceZoxHo5tE","request_duration_ms":509}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 402 + message: Payment Required + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:43 GMT + Content-Type: + - application/json + Content-Length: + - '4889' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - df30ad1c-4cf2-4fef-a887-03a948f403da + Original-Request: + - req_d5nQ4wPD4E7f6U + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_d5nQ4wPD4E7f6U + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: | + { + "error": { + "charge": "ch_3P8hQsKuuB1fWySn02qML9H0", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_intent": { + "id": "pi_3P8hQsKuuB1fWySn0dRsCAlk", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": { + } + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871362, + "currency": "eur", + "customer": "cus_Pyek1w8BYYKnV9", + "description": null, + "invoice": null, + "last_payment_error": { + "charge": "ch_3P8hQsKuuB1fWySn02qML9H0", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_method": { + "id": "pm_1P8hQrKuuB1fWySnoJXDVbMV", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "IKC2ubfpSLuZKsVs", + "funding": "credit", + "generated_from": null, + "last4": "0002", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871361, + "customer": null, + "livemode": false, + "metadata": { + }, + "type": "card" + }, + "type": "card_error" + }, + "latest_charge": "ch_3P8hQsKuuB1fWySn02qML9H0", + "livemode": false, + "metadata": { + }, + "next_action": null, + "on_behalf_of": null, + "payment_method": null, + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + }, + "payment_method": { + "id": "pm_1P8hQrKuuB1fWySnoJXDVbMV", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "IKC2ubfpSLuZKsVs", + "funding": "credit", + "generated_from": null, + "last4": "0002", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871361, + "customer": null, + "livemode": false, + "metadata": { + }, + "type": "card" + }, + "request_log_url": "https://dashboard.stripe.com/test/logs/req_d5nQ4wPD4E7f6U?t=1713871362", + "type": "card_error" + } + } + recorded_at: Tue, 23 Apr 2024 11:22:43 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml new file mode 100644 index 0000000000..20386adda1 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -0,0 +1,632 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=4000000000000127&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_YNJjarvaZJsYcl","request_duration_ms":510}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:54 GMT + Content-Type: + - application/json + Content-Length: + - '996' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 5be022b2-592a-457f-823e-4222727e3646 + Original-Request: + - req_SogiZHLOYlhFRn + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_SogiZHLOYlhFRn + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hR3KuuB1fWySnQyTSkSEY", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "eWmxEL5j3bNdPnK5", + "funding": "credit", + "generated_from": null, + "last4": "0127", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871374, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:54 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_SogiZHLOYlhFRn","request_duration_ms":443}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:54 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - d5888172-b4f9-4931-804d-a9e0743066f3 + Original-Request: + - req_6VS5p3Zquah6Lb + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_6VS5p3Zquah6Lb + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_Pyek0DFHdMA6i4", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871374, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "95A6066A", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:54 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hR3KuuB1fWySnQyTSkSEY&payment_method_types[0]=card&capture_method=manual&customer=cus_Pyek0DFHdMA6i4&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_6VS5p3Zquah6Lb","request_duration_ms":480}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:55 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - cf247e80-4e3b-444d-b26a-74c85e463dae + Original-Request: + - req_XZhN6FLRgLDom3 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_XZhN6FLRgLDom3 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hR4KuuB1fWySn1FYBXndE", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871374, + "currency": "eur", + "customer": "cus_Pyek0DFHdMA6i4", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hR3KuuB1fWySnQyTSkSEY", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:55 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hR4KuuB1fWySn1FYBXndE/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_XZhN6FLRgLDom3","request_duration_ms":509}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 402 + message: Payment Required + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:56 GMT + Content-Type: + - application/json + Content-Length: + - '4883' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 856d1ab8-1e63-4ee5-8037-4b8ff021ddda + Original-Request: + - req_FXCmu1rrYkWjml + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_FXCmu1rrYkWjml + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: | + { + "error": { + "charge": "ch_3P8hR4KuuB1fWySn1ONLa92O", + "code": "incorrect_cvc", + "doc_url": "https://stripe.com/docs/error-codes/incorrect-cvc", + "message": "Your card's security code is incorrect.", + "param": "cvc", + "payment_intent": { + "id": "pi_3P8hR4KuuB1fWySn1FYBXndE", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": { + } + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871374, + "currency": "eur", + "customer": "cus_Pyek0DFHdMA6i4", + "description": null, + "invoice": null, + "last_payment_error": { + "charge": "ch_3P8hR4KuuB1fWySn1ONLa92O", + "code": "incorrect_cvc", + "doc_url": "https://stripe.com/docs/error-codes/incorrect-cvc", + "message": "Your card's security code is incorrect.", + "param": "cvc", + "payment_method": { + "id": "pm_1P8hR3KuuB1fWySnQyTSkSEY", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "fail" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "eWmxEL5j3bNdPnK5", + "funding": "credit", + "generated_from": null, + "last4": "0127", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871374, + "customer": null, + "livemode": false, + "metadata": { + }, + "type": "card" + }, + "type": "card_error" + }, + "latest_charge": "ch_3P8hR4KuuB1fWySn1ONLa92O", + "livemode": false, + "metadata": { + }, + "next_action": null, + "on_behalf_of": null, + "payment_method": null, + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + }, + "payment_method": { + "id": "pm_1P8hR3KuuB1fWySnQyTSkSEY", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "fail" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "eWmxEL5j3bNdPnK5", + "funding": "credit", + "generated_from": null, + "last4": "0127", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871374, + "customer": null, + "livemode": false, + "metadata": { + }, + "type": "card" + }, + "request_log_url": "https://dashboard.stripe.com/test/logs/req_FXCmu1rrYkWjml?t=1713871375", + "type": "card_error" + } + } + recorded_at: Tue, 23 Apr 2024 11:22:56 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml new file mode 100644 index 0000000000..23a3cf8bfa --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -0,0 +1,632 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=4000000000009995&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_9auOceZoxHo5tE","request_duration_ms":509}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:43 GMT + Content-Type: + - application/json + Content-Length: + - '996' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - efb26086-55ca-4fed-96f9-712e811983b5 + Original-Request: + - req_JFuZ8mpCSSE39O + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_JFuZ8mpCSSE39O + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hQtKuuB1fWySnkWg8Yi12", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "O0I0muUGQBJy3p73", + "funding": "credit", + "generated_from": null, + "last4": "9995", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871363, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:43 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_JFuZ8mpCSSE39O","request_duration_ms":485}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:44 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - d6655148-6ed2-47b6-ba01-38b8bb4a198d + Original-Request: + - req_f8LoVSm6ehzIOQ + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_f8LoVSm6ehzIOQ + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_Pyekp6fXoSyo4f", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871364, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "B923F253", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:44 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hQtKuuB1fWySnkWg8Yi12&payment_method_types[0]=card&capture_method=manual&customer=cus_Pyekp6fXoSyo4f&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_f8LoVSm6ehzIOQ","request_duration_ms":509}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:44 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - d797d3c9-2865-44b3-bf91-76176a96bf24 + Original-Request: + - req_7nTlJ3fHIjzIPN + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_7nTlJ3fHIjzIPN + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQuKuuB1fWySn2YcCudO4", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871364, + "currency": "eur", + "customer": "cus_Pyekp6fXoSyo4f", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQtKuuB1fWySnkWg8Yi12", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:44 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQuKuuB1fWySn2YcCudO4/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_7nTlJ3fHIjzIPN","request_duration_ms":510}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 402 + message: Payment Required + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:45 GMT + Content-Type: + - application/json + Content-Length: + - '4915' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - f0b1f823-2b28-4b51-829e-030893bb1ce9 + Original-Request: + - req_Ua7pnZevBRWYWv + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_Ua7pnZevBRWYWv + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: | + { + "error": { + "charge": "ch_3P8hQuKuuB1fWySn2WZGczKx", + "code": "card_declined", + "decline_code": "insufficient_funds", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card has insufficient funds.", + "payment_intent": { + "id": "pi_3P8hQuKuuB1fWySn2YcCudO4", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": { + } + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871364, + "currency": "eur", + "customer": "cus_Pyekp6fXoSyo4f", + "description": null, + "invoice": null, + "last_payment_error": { + "charge": "ch_3P8hQuKuuB1fWySn2WZGczKx", + "code": "card_declined", + "decline_code": "insufficient_funds", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card has insufficient funds.", + "payment_method": { + "id": "pm_1P8hQtKuuB1fWySnkWg8Yi12", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "O0I0muUGQBJy3p73", + "funding": "credit", + "generated_from": null, + "last4": "9995", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871363, + "customer": null, + "livemode": false, + "metadata": { + }, + "type": "card" + }, + "type": "card_error" + }, + "latest_charge": "ch_3P8hQuKuuB1fWySn2WZGczKx", + "livemode": false, + "metadata": { + }, + "next_action": null, + "on_behalf_of": null, + "payment_method": null, + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + }, + "payment_method": { + "id": "pm_1P8hQtKuuB1fWySnkWg8Yi12", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "O0I0muUGQBJy3p73", + "funding": "credit", + "generated_from": null, + "last4": "9995", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871363, + "customer": null, + "livemode": false, + "metadata": { + }, + "type": "card" + }, + "request_log_url": "https://dashboard.stripe.com/test/logs/req_Ua7pnZevBRWYWv?t=1713871364", + "type": "card_error" + } + } + recorded_at: Tue, 23 Apr 2024 11:22:45 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml new file mode 100644 index 0000000000..ace8a4fe2d --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -0,0 +1,632 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=4000000000009987&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_7nTlJ3fHIjzIPN","request_duration_ms":510}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:46 GMT + Content-Type: + - application/json + Content-Length: + - '996' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - dd89d6d5-1928-425b-9e41-0d0ddbaabd66 + Original-Request: + - req_qPbK8GWnufeusA + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_qPbK8GWnufeusA + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hQwKuuB1fWySnnXjxt2Q5", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "hMDekBwrnWL1oLxe", + "funding": "credit", + "generated_from": null, + "last4": "9987", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871366, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:46 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_qPbK8GWnufeusA","request_duration_ms":446}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:46 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 8fa0ce75-bb64-4ed0-be30-0937ff2b8d3e + Original-Request: + - req_29DQjMmwvNd48X + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_29DQjMmwvNd48X + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyekDsErN9ufoM", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871366, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "1AB5687C", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:46 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hQwKuuB1fWySnnXjxt2Q5&payment_method_types[0]=card&capture_method=manual&customer=cus_PyekDsErN9ufoM&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_29DQjMmwvNd48X","request_duration_ms":508}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:47 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - c99be1bc-4a15-4ef0-9097-fd46b3b284f1 + Original-Request: + - req_aGW6Vn9eCXjmi7 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_aGW6Vn9eCXjmi7 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQxKuuB1fWySn1iZusZS1", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871367, + "currency": "eur", + "customer": "cus_PyekDsErN9ufoM", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQwKuuB1fWySnnXjxt2Q5", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:47 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQxKuuB1fWySn1iZusZS1/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_aGW6Vn9eCXjmi7","request_duration_ms":498}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 402 + message: Payment Required + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:48 GMT + Content-Type: + - application/json + Content-Length: + - '4877' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 2ee34069-f3f4-4ff7-b5dc-51348b21ddef + Original-Request: + - req_tE5NggyuH84Bwp + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_tE5NggyuH84Bwp + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: | + { + "error": { + "charge": "ch_3P8hQxKuuB1fWySn1mkDmi3i", + "code": "card_declined", + "decline_code": "lost_card", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_intent": { + "id": "pi_3P8hQxKuuB1fWySn1iZusZS1", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": { + } + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871367, + "currency": "eur", + "customer": "cus_PyekDsErN9ufoM", + "description": null, + "invoice": null, + "last_payment_error": { + "charge": "ch_3P8hQxKuuB1fWySn1mkDmi3i", + "code": "card_declined", + "decline_code": "lost_card", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_method": { + "id": "pm_1P8hQwKuuB1fWySnnXjxt2Q5", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "hMDekBwrnWL1oLxe", + "funding": "credit", + "generated_from": null, + "last4": "9987", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871366, + "customer": null, + "livemode": false, + "metadata": { + }, + "type": "card" + }, + "type": "card_error" + }, + "latest_charge": "ch_3P8hQxKuuB1fWySn1mkDmi3i", + "livemode": false, + "metadata": { + }, + "next_action": null, + "on_behalf_of": null, + "payment_method": null, + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + }, + "payment_method": { + "id": "pm_1P8hQwKuuB1fWySnnXjxt2Q5", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "hMDekBwrnWL1oLxe", + "funding": "credit", + "generated_from": null, + "last4": "9987", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871366, + "customer": null, + "livemode": false, + "metadata": { + }, + "type": "card" + }, + "request_log_url": "https://dashboard.stripe.com/test/logs/req_tE5NggyuH84Bwp?t=1713871367", + "type": "card_error" + } + } + recorded_at: Tue, 23 Apr 2024 11:22:48 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml new file mode 100644 index 0000000000..df960e5ab8 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -0,0 +1,630 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=4000000000000119&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_XZhN6FLRgLDom3","request_duration_ms":509}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:56 GMT + Content-Type: + - application/json + Content-Length: + - '996' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 4fde0975-18cb-4a02-9522-870f259bb1da + Original-Request: + - req_gd1J4ZPBCCug9x + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_gd1J4ZPBCCug9x + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hR6KuuB1fWySnbrsC9UJ6", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "9HWWxe4EyniQy61z", + "funding": "credit", + "generated_from": null, + "last4": "0119", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871376, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:56 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_gd1J4ZPBCCug9x","request_duration_ms":535}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:57 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - d325710f-8b58-405e-9f71-bf77f88ab4b8 + Original-Request: + - req_2YAwLlhn1Wwsms + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_2YAwLlhn1Wwsms + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyekmaUZEsfvMy", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871377, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "E9D00917", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:57 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hR6KuuB1fWySnbrsC9UJ6&payment_method_types[0]=card&capture_method=manual&customer=cus_PyekmaUZEsfvMy&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_2YAwLlhn1Wwsms","request_duration_ms":509}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:57 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - c9d7fb8c-89f1-4453-bf7b-8d895ae3db51 + Original-Request: + - req_sojXClxhQQaFbW + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_sojXClxhQQaFbW + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hR7KuuB1fWySn1TR0go8r", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871377, + "currency": "eur", + "customer": "cus_PyekmaUZEsfvMy", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hR6KuuB1fWySnbrsC9UJ6", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:57 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hR7KuuB1fWySn1TR0go8r/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_sojXClxhQQaFbW","request_duration_ms":394}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 402 + message: Payment Required + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:58 GMT + Content-Type: + - application/json + Content-Length: + - '4917' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 58fced99-2bea-4f22-aeff-3c29242fc17c + Original-Request: + - req_D19RydovrPMO35 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_D19RydovrPMO35 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: | + { + "error": { + "charge": "ch_3P8hR7KuuB1fWySn1QTbIwTK", + "code": "processing_error", + "doc_url": "https://stripe.com/docs/error-codes/processing-error", + "message": "An error occurred while processing your card. Try again in a little bit.", + "payment_intent": { + "id": "pi_3P8hR7KuuB1fWySn1TR0go8r", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": { + } + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871377, + "currency": "eur", + "customer": "cus_PyekmaUZEsfvMy", + "description": null, + "invoice": null, + "last_payment_error": { + "charge": "ch_3P8hR7KuuB1fWySn1QTbIwTK", + "code": "processing_error", + "doc_url": "https://stripe.com/docs/error-codes/processing-error", + "message": "An error occurred while processing your card. Try again in a little bit.", + "payment_method": { + "id": "pm_1P8hR6KuuB1fWySnbrsC9UJ6", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "9HWWxe4EyniQy61z", + "funding": "credit", + "generated_from": null, + "last4": "0119", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871376, + "customer": null, + "livemode": false, + "metadata": { + }, + "type": "card" + }, + "type": "card_error" + }, + "latest_charge": "ch_3P8hR7KuuB1fWySn1QTbIwTK", + "livemode": false, + "metadata": { + }, + "next_action": null, + "on_behalf_of": null, + "payment_method": null, + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + }, + "payment_method": { + "id": "pm_1P8hR6KuuB1fWySnbrsC9UJ6", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "9HWWxe4EyniQy61z", + "funding": "credit", + "generated_from": null, + "last4": "0119", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871376, + "customer": null, + "livemode": false, + "metadata": { + }, + "type": "card" + }, + "request_log_url": "https://dashboard.stripe.com/test/logs/req_D19RydovrPMO35?t=1713871377", + "type": "card_error" + } + } + recorded_at: Tue, 23 Apr 2024 11:22:58 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml new file mode 100644 index 0000000000..151fd5e6ce --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -0,0 +1,632 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=4000000000009979&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_aGW6Vn9eCXjmi7","request_duration_ms":498}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:48 GMT + Content-Type: + - application/json + Content-Length: + - '996' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 517ec7db-a996-4cba-9172-f86e41046730 + Original-Request: + - req_h1DaNRQAhqFgz9 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_h1DaNRQAhqFgz9 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hQyKuuB1fWySnCgvttCSO", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "1pjhEFFOW1eCi1AB", + "funding": "credit", + "generated_from": null, + "last4": "9979", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871368, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:48 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_h1DaNRQAhqFgz9","request_duration_ms":413}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:49 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - cb7724a0-993d-47f7-960f-f63acaac72e2 + Original-Request: + - req_sIi1TlK5XDpKSt + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_sIi1TlK5XDpKSt + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyekDa34UUgaBy", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871369, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "542CB18D", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:49 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hQyKuuB1fWySnCgvttCSO&payment_method_types[0]=card&capture_method=manual&customer=cus_PyekDa34UUgaBy&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_sIi1TlK5XDpKSt","request_duration_ms":522}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:49 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - e9749b76-4a91-4707-be17-a771d0f94596 + Original-Request: + - req_M2EjGTJOmFPvjA + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_M2EjGTJOmFPvjA + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQzKuuB1fWySn2Tv4Uyhb", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871369, + "currency": "eur", + "customer": "cus_PyekDa34UUgaBy", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQyKuuB1fWySnCgvttCSO", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:49 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQzKuuB1fWySn2Tv4Uyhb/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_M2EjGTJOmFPvjA","request_duration_ms":413}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 402 + message: Payment Required + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:50 GMT + Content-Type: + - application/json + Content-Length: + - '4881' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 204e1661-6051-4cd8-a5e2-e8c923a871d0 + Original-Request: + - req_SMrYdbWXABS1Ya + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_SMrYdbWXABS1Ya + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: | + { + "error": { + "charge": "ch_3P8hQzKuuB1fWySn2DGsgH8G", + "code": "card_declined", + "decline_code": "stolen_card", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_intent": { + "id": "pi_3P8hQzKuuB1fWySn2Tv4Uyhb", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": { + } + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871369, + "currency": "eur", + "customer": "cus_PyekDa34UUgaBy", + "description": null, + "invoice": null, + "last_payment_error": { + "charge": "ch_3P8hQzKuuB1fWySn2DGsgH8G", + "code": "card_declined", + "decline_code": "stolen_card", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_method": { + "id": "pm_1P8hQyKuuB1fWySnCgvttCSO", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "1pjhEFFOW1eCi1AB", + "funding": "credit", + "generated_from": null, + "last4": "9979", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871368, + "customer": null, + "livemode": false, + "metadata": { + }, + "type": "card" + }, + "type": "card_error" + }, + "latest_charge": "ch_3P8hQzKuuB1fWySn2DGsgH8G", + "livemode": false, + "metadata": { + }, + "next_action": null, + "on_behalf_of": null, + "payment_method": null, + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + }, + "payment_method": { + "id": "pm_1P8hQyKuuB1fWySnCgvttCSO", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "1pjhEFFOW1eCi1AB", + "funding": "credit", + "generated_from": null, + "last4": "9979", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871368, + "customer": null, + "livemode": false, + "metadata": { + }, + "type": "card" + }, + "request_log_url": "https://dashboard.stripe.com/test/logs/req_SMrYdbWXABS1Ya?t=1713871370", + "type": "card_error" + } + } + recorded_at: Tue, 23 Apr 2024 11:22:51 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml new file mode 100644 index 0000000000..3f6c536730 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml @@ -0,0 +1,905 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=378282246310005&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_WWwLrQp4sVqJV4","request_duration_ms":1003}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:34 GMT + Content-Type: + - application/json + Content-Length: + - '1009' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 4bd1d110-3526-486a-8c1f-e9deec2604d3 + Original-Request: + - req_q3SMRET2pdEU3x + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_q3SMRET2pdEU3x + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hPlKuuB1fWySnRO8H7pVp", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "amex", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "american_express", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "zYCOiuhqkk4w2g2M", + "funding": "credit", + "generated_from": null, + "last4": "0005", + "networks": { + "available": [ + "amex" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": false + }, + "wallet": null + }, + "created": 1713871294, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:21:34 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_q3SMRET2pdEU3x","request_duration_ms":519}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:34 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 0f4ad5da-12eb-46f3-93f9-27728fff5b96 + Original-Request: + - req_sO5qBMluUDTjVx + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_sO5qBMluUDTjVx + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyejlhPSbHpRU7", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871294, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "1FD8C6AE", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:21:34 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hPlKuuB1fWySnRO8H7pVp&payment_method_types[0]=card&capture_method=manual&customer=cus_PyejlhPSbHpRU7&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_sO5qBMluUDTjVx","request_duration_ms":410}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:35 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 30d95687-1376-4eb3-890c-9becd6c87be8 + Original-Request: + - req_swH0esqzotIIDC + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_swH0esqzotIIDC + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPmKuuB1fWySn0I96SqZc", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871294, + "currency": "eur", + "customer": "cus_PyejlhPSbHpRU7", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPlKuuB1fWySnRO8H7pVp", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:35 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPmKuuB1fWySn0I96SqZc/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_swH0esqzotIIDC","request_duration_ms":404}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:36 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - ce2ff524-3c64-4512-94eb-e683354019be + Original-Request: + - req_GtduzogqOBxFuM + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_GtduzogqOBxFuM + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPmKuuB1fWySn0I96SqZc", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871294, + "currency": "eur", + "customer": "cus_PyejlhPSbHpRU7", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPmKuuB1fWySn0TCXtFhe", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPlKuuB1fWySnRO8H7pVp", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:36 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPmKuuB1fWySn0I96SqZc + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_GtduzogqOBxFuM","request_duration_ms":1107}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:36 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_KxAzk5rtNpzTnE + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPmKuuB1fWySn0I96SqZc", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871294, + "currency": "eur", + "customer": "cus_PyejlhPSbHpRU7", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPmKuuB1fWySn0TCXtFhe", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPlKuuB1fWySnRO8H7pVp", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:36 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPmKuuB1fWySn0I96SqZc/capture + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_KxAzk5rtNpzTnE","request_duration_ms":340}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:37 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - dbae392b-f0f0-4340-8072-bcd42a6f6be2 + Original-Request: + - req_rQgUbXQNdBUTkf + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_rQgUbXQNdBUTkf + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPmKuuB1fWySn0I96SqZc", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871294, + "currency": "eur", + "customer": "cus_PyejlhPSbHpRU7", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPmKuuB1fWySn0TCXtFhe", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPlKuuB1fWySnRO8H7pVp", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:37 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPmKuuB1fWySn0I96SqZc + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_rQgUbXQNdBUTkf","request_duration_ms":1188}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:38 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_UddWo6oZ6xRVWD + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPmKuuB1fWySn0I96SqZc", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871294, + "currency": "eur", + "customer": "cus_PyejlhPSbHpRU7", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPmKuuB1fWySn0TCXtFhe", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPlKuuB1fWySnRO8H7pVp", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:38 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml new file mode 100644 index 0000000000..89dcaddff6 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml @@ -0,0 +1,512 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=378282246310005&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_ZmshM8deU5LJ8a","request_duration_ms":394}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:31 GMT + Content-Type: + - application/json + Content-Length: + - '1009' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - e5a0531c-6e6e-44c8-8f5f-b20454feb897 + Original-Request: + - req_zp9rWUux4NmCmn + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_zp9rWUux4NmCmn + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hPjKuuB1fWySnB1rKwJD0", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "amex", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "american_express", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "zYCOiuhqkk4w2g2M", + "funding": "credit", + "generated_from": null, + "last4": "0005", + "networks": { + "available": [ + "amex" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": false + }, + "wallet": null + }, + "created": 1713871291, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:21:31 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_zp9rWUux4NmCmn","request_duration_ms":438}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:31 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - a7047b65-30fd-4a71-afe8-8f3e8dbeed4f + Original-Request: + - req_VvION4praYlJd6 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_VvION4praYlJd6 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_Pyej8RAVLLQG5C", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871291, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "645B7506", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:21:31 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hPjKuuB1fWySnB1rKwJD0&payment_method_types[0]=card&capture_method=manual&customer=cus_Pyej8RAVLLQG5C&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_VvION4praYlJd6","request_duration_ms":508}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:32 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 0174c247-8161-42c0-bf3f-877cd2f644f8 + Original-Request: + - req_knV0kmLqcT8rO2 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_knV0kmLqcT8rO2 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPkKuuB1fWySn2fu1bxGF", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871292, + "currency": "eur", + "customer": "cus_Pyej8RAVLLQG5C", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPjKuuB1fWySnB1rKwJD0", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:32 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPkKuuB1fWySn2fu1bxGF/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_knV0kmLqcT8rO2","request_duration_ms":407}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:33 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 4efb4540-e365-4044-8eb2-784ae473d9e1 + Original-Request: + - req_WWwLrQp4sVqJV4 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_WWwLrQp4sVqJV4 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPkKuuB1fWySn2fu1bxGF", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871292, + "currency": "eur", + "customer": "cus_Pyej8RAVLLQG5C", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPkKuuB1fWySn2NxNRLd1", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPjKuuB1fWySnB1rKwJD0", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:33 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml new file mode 100644 index 0000000000..d14e8d7e58 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml @@ -0,0 +1,905 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=6555900000604105&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_nanZFhzRIre71v","request_duration_ms":1077}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:13 GMT + Content-Type: + - application/json + Content-Length: + - '1008' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 07fd64c4-4b06-4b4d-83fb-9a6c5b1b21a5 + Original-Request: + - req_h4FbCjxiOZzc6u + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_h4FbCjxiOZzc6u + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hQOKuuB1fWySnId2Mzj5C", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "discover", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "discover", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "7NZ8adObS8Rw8HOq", + "funding": "credit", + "generated_from": null, + "last4": "4105", + "networks": { + "available": [ + "discover" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871333, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:13 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_h4FbCjxiOZzc6u","request_duration_ms":521}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:13 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 30499760-19e8-4a21-b9ef-40b16c04b75d + Original-Request: + - req_u5y0Bhoihunvpp + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_u5y0Bhoihunvpp + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyejGREjSBtXbR", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871333, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "F625C654", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:13 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hQOKuuB1fWySnId2Mzj5C&payment_method_types[0]=card&capture_method=manual&customer=cus_PyejGREjSBtXbR&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_u5y0Bhoihunvpp","request_duration_ms":428}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:14 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 79383762-a38a-4a9d-abf2-f770269aed52 + Original-Request: + - req_nFRDi5kuAQt46x + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_nFRDi5kuAQt46x + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQPKuuB1fWySn2NE05rrF", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871333, + "currency": "eur", + "customer": "cus_PyejGREjSBtXbR", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQOKuuB1fWySnId2Mzj5C", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:14 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQPKuuB1fWySn2NE05rrF/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_nFRDi5kuAQt46x","request_duration_ms":421}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:15 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - e6b09ac4-d1fe-4409-a3d6-3fdd579d36eb + Original-Request: + - req_063fZXRL9juaTV + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_063fZXRL9juaTV + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQPKuuB1fWySn2NE05rrF", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871333, + "currency": "eur", + "customer": "cus_PyejGREjSBtXbR", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQPKuuB1fWySn2lFq97s5", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQOKuuB1fWySnId2Mzj5C", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:15 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQPKuuB1fWySn2NE05rrF + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_063fZXRL9juaTV","request_duration_ms":1167}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:15 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_PDviclwoOQJWDY + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQPKuuB1fWySn2NE05rrF", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871333, + "currency": "eur", + "customer": "cus_PyejGREjSBtXbR", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQPKuuB1fWySn2lFq97s5", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQOKuuB1fWySnId2Mzj5C", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:15 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQPKuuB1fWySn2NE05rrF/capture + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_PDviclwoOQJWDY","request_duration_ms":406}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:17 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - dab6f1ca-f281-4ed8-8539-b77a10083c01 + Original-Request: + - req_TAyOFJqtk0XY4h + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_TAyOFJqtk0XY4h + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQPKuuB1fWySn2NE05rrF", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871333, + "currency": "eur", + "customer": "cus_PyejGREjSBtXbR", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQPKuuB1fWySn2lFq97s5", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQOKuuB1fWySnId2Mzj5C", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:17 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQPKuuB1fWySn2NE05rrF + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_TAyOFJqtk0XY4h","request_duration_ms":1635}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:17 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_3Dn9T1aixPSePK + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQPKuuB1fWySn2NE05rrF", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871333, + "currency": "eur", + "customer": "cus_PyejGREjSBtXbR", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQPKuuB1fWySn2lFq97s5", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQOKuuB1fWySnId2Mzj5C", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:17 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml new file mode 100644 index 0000000000..2a07f9971a --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml @@ -0,0 +1,512 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=6555900000604105&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_wFzCMoF0mQD3Eo","request_duration_ms":315}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:10 GMT + Content-Type: + - application/json + Content-Length: + - '1008' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - d0482a80-5afc-44e9-9508-69dba3a1dd84 + Original-Request: + - req_HfCWuNBUeFJHJ5 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_HfCWuNBUeFJHJ5 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hQMKuuB1fWySnN4KTfpDk", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "discover", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "discover", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "7NZ8adObS8Rw8HOq", + "funding": "credit", + "generated_from": null, + "last4": "4105", + "networks": { + "available": [ + "discover" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871330, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:10 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_HfCWuNBUeFJHJ5","request_duration_ms":415}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:10 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - ea256470-3297-4e6b-9052-5efcae4a7ffd + Original-Request: + - req_3gAE50rFEVax5i + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_3gAE50rFEVax5i + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyejoBfFWODSMx", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871330, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "4A967218", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:10 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hQMKuuB1fWySnN4KTfpDk&payment_method_types[0]=card&capture_method=manual&customer=cus_PyejoBfFWODSMx&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_3gAE50rFEVax5i","request_duration_ms":524}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:11 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 17e39583-5976-4667-9d1a-223dedd14257 + Original-Request: + - req_JJ9t7V8lKdZpqY + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_JJ9t7V8lKdZpqY + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQNKuuB1fWySn0piyeLve", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871331, + "currency": "eur", + "customer": "cus_PyejoBfFWODSMx", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQMKuuB1fWySnN4KTfpDk", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:11 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQNKuuB1fWySn0piyeLve/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_JJ9t7V8lKdZpqY","request_duration_ms":424}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:12 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 412cb586-8cff-44a6-b60b-3c9a0d6520ce + Original-Request: + - req_nanZFhzRIre71v + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_nanZFhzRIre71v + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQNKuuB1fWySn0piyeLve", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871331, + "currency": "eur", + "customer": "cus_PyejoBfFWODSMx", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQNKuuB1fWySn0Ub9RO8K", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQMKuuB1fWySnN4KTfpDk", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:12 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml new file mode 100644 index 0000000000..755b43fc3e --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml @@ -0,0 +1,905 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=3056930009020004&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_F0PIDyr31udtJ2","request_duration_ms":1001}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:58 GMT + Content-Type: + - application/json + Content-Length: + - '1008' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 699acfe0-14ca-4d60-bf0e-95f24bb5dbe9 + Original-Request: + - req_aMcxa09ry3qzsw + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_aMcxa09ry3qzsw + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hQ9KuuB1fWySnYVsRisH4", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "diners", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "diners_club", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "8CvV2XFCUY7eGw6O", + "funding": "credit", + "generated_from": null, + "last4": "0004", + "networks": { + "available": [ + "diners" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": false + }, + "wallet": null + }, + "created": 1713871318, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:21:58 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_aMcxa09ry3qzsw","request_duration_ms":441}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:58 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 4a72f8a7-096b-4828-9483-fbeea0e6f79d + Original-Request: + - req_Y5bjaH6gkAKoVc + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_Y5bjaH6gkAKoVc + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyejqoGIrbSloY", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871318, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "BCF7C75E", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:21:58 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hQ9KuuB1fWySnYVsRisH4&payment_method_types[0]=card&capture_method=manual&customer=cus_PyejqoGIrbSloY&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_Y5bjaH6gkAKoVc","request_duration_ms":500}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:59 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - b098ddc0-7aec-4d60-a9f6-b39e167e46e2 + Original-Request: + - req_JvotoTPIJvFb62 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_JvotoTPIJvFb62 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQAKuuB1fWySn2Gw633z1", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871318, + "currency": "eur", + "customer": "cus_PyejqoGIrbSloY", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQ9KuuB1fWySnYVsRisH4", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:59 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQAKuuB1fWySn2Gw633z1/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_JvotoTPIJvFb62","request_duration_ms":510}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:00 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - d49d4520-df0d-4f17-9539-e1a9f2497be8 + Original-Request: + - req_MZZk8A3FLOZ2cj + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_MZZk8A3FLOZ2cj + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQAKuuB1fWySn2Gw633z1", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871318, + "currency": "eur", + "customer": "cus_PyejqoGIrbSloY", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQAKuuB1fWySn27CF3HHg", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQ9KuuB1fWySnYVsRisH4", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:00 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQAKuuB1fWySn2Gw633z1 + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_MZZk8A3FLOZ2cj","request_duration_ms":1102}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:00 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_dWgYeF8wvQey17 + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQAKuuB1fWySn2Gw633z1", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871318, + "currency": "eur", + "customer": "cus_PyejqoGIrbSloY", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQAKuuB1fWySn27CF3HHg", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQ9KuuB1fWySnYVsRisH4", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:00 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQAKuuB1fWySn2Gw633z1/capture + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_dWgYeF8wvQey17","request_duration_ms":407}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:01 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - ea0e4c9f-d5ad-442f-b105-3c30b9a77760 + Original-Request: + - req_rbJH0wjaebh0ma + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_rbJH0wjaebh0ma + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQAKuuB1fWySn2Gw633z1", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871318, + "currency": "eur", + "customer": "cus_PyejqoGIrbSloY", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQAKuuB1fWySn27CF3HHg", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQ9KuuB1fWySnYVsRisH4", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:01 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQAKuuB1fWySn2Gw633z1 + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_rbJH0wjaebh0ma","request_duration_ms":1225}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:02 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_xmdIy0xcA8ttbI + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQAKuuB1fWySn2Gw633z1", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871318, + "currency": "eur", + "customer": "cus_PyejqoGIrbSloY", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQAKuuB1fWySn27CF3HHg", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQ9KuuB1fWySnYVsRisH4", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:02 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml new file mode 100644 index 0000000000..6d81c41bc1 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml @@ -0,0 +1,512 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=3056930009020004&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_p4PeKqmC2GcoAk","request_duration_ms":407}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:55 GMT + Content-Type: + - application/json + Content-Length: + - '1008' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 7fdcd9a1-34ee-4ce6-bbe0-759b5d7adf3a + Original-Request: + - req_ez8SRoPdvB73xw + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_ez8SRoPdvB73xw + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hQ7KuuB1fWySnSVV0shzQ", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "diners", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "diners_club", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "8CvV2XFCUY7eGw6O", + "funding": "credit", + "generated_from": null, + "last4": "0004", + "networks": { + "available": [ + "diners" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": false + }, + "wallet": null + }, + "created": 1713871315, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:21:55 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_ez8SRoPdvB73xw","request_duration_ms":434}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:55 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 3da20bb0-4fdd-4457-aa5a-c0482452f61d + Original-Request: + - req_DTfU4F1qwYuKyu + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_DTfU4F1qwYuKyu + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyejNRkCBsUcCT", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871315, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "3BD04305", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:21:55 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hQ7KuuB1fWySnSVV0shzQ&payment_method_types[0]=card&capture_method=manual&customer=cus_PyejNRkCBsUcCT&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_DTfU4F1qwYuKyu","request_duration_ms":509}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:56 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - d1c04eb7-242d-49e0-a4b7-ce8b4b7c86d3 + Original-Request: + - req_D4aNytWyNkrU1c + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_D4aNytWyNkrU1c + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQ8KuuB1fWySn0klY7sZZ", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871316, + "currency": "eur", + "customer": "cus_PyejNRkCBsUcCT", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQ7KuuB1fWySnSVV0shzQ", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:56 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQ8KuuB1fWySn0klY7sZZ/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_D4aNytWyNkrU1c","request_duration_ms":407}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:57 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 846d130a-be48-4026-9e59-8b0c31c4ca0d + Original-Request: + - req_F0PIDyr31udtJ2 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_F0PIDyr31udtJ2 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQ8KuuB1fWySn0klY7sZZ", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871316, + "currency": "eur", + "customer": "cus_PyejNRkCBsUcCT", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQ8KuuB1fWySn0sIkyJo1", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQ7KuuB1fWySnSVV0shzQ", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:57 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml new file mode 100644 index 0000000000..91f1d0046b --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml @@ -0,0 +1,905 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=36227206271667&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_y2bfu78HhF3dGA","request_duration_ms":1107}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:05 GMT + Content-Type: + - application/json + Content-Length: + - '1008' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 3148e7f5-db70-4dbb-9a75-194224932fca + Original-Request: + - req_iiefiwCR3youDU + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_iiefiwCR3youDU + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hQHKuuB1fWySnutfeAg3o", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "diners", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "diners_club", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "gDlx6y9moRYkO83e", + "funding": "credit", + "generated_from": null, + "last4": "1667", + "networks": { + "available": [ + "diners" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": false + }, + "wallet": null + }, + "created": 1713871325, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:05 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_iiefiwCR3youDU","request_duration_ms":521}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:06 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - e3c2de6d-f8be-479d-8ecf-71a3ef0d48ca + Original-Request: + - req_cVFNyy30EQtvcC + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_cVFNyy30EQtvcC + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyejYA0TC3ECno", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871326, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "21AF6C51", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:06 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hQHKuuB1fWySnutfeAg3o&payment_method_types[0]=card&capture_method=manual&customer=cus_PyejYA0TC3ECno&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_cVFNyy30EQtvcC","request_duration_ms":448}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:06 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 5bceb53d-e5f4-49eb-bfc2-79ed634ad8f5 + Original-Request: + - req_wFibir0ga44G9t + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_wFibir0ga44G9t + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQIKuuB1fWySn1V7vxE51", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871326, + "currency": "eur", + "customer": "cus_PyejYA0TC3ECno", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQHKuuB1fWySnutfeAg3o", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:06 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQIKuuB1fWySn1V7vxE51/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_wFibir0ga44G9t","request_duration_ms":415}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:07 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 77b39096-d434-42e4-a44a-1657bb9d9c30 + Original-Request: + - req_NSbeTZUD4OBDv7 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_NSbeTZUD4OBDv7 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQIKuuB1fWySn1V7vxE51", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871326, + "currency": "eur", + "customer": "cus_PyejYA0TC3ECno", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQIKuuB1fWySn1R60pYt8", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQHKuuB1fWySnutfeAg3o", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:07 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQIKuuB1fWySn1V7vxE51 + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_NSbeTZUD4OBDv7","request_duration_ms":1055}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:08 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_1QKMjLvP9QmP3M + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQIKuuB1fWySn1V7vxE51", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871326, + "currency": "eur", + "customer": "cus_PyejYA0TC3ECno", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQIKuuB1fWySn1R60pYt8", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQHKuuB1fWySnutfeAg3o", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:08 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQIKuuB1fWySn1V7vxE51/capture + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_1QKMjLvP9QmP3M","request_duration_ms":293}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:09 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 56bdbdb0-1282-4790-b9c0-3f13314ec128 + Original-Request: + - req_e6WjAta3RR7cDp + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_e6WjAta3RR7cDp + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQIKuuB1fWySn1V7vxE51", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871326, + "currency": "eur", + "customer": "cus_PyejYA0TC3ECno", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQIKuuB1fWySn1R60pYt8", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQHKuuB1fWySnutfeAg3o", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:09 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQIKuuB1fWySn1V7vxE51 + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_e6WjAta3RR7cDp","request_duration_ms":1340}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:09 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_wFzCMoF0mQD3Eo + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQIKuuB1fWySn1V7vxE51", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871326, + "currency": "eur", + "customer": "cus_PyejYA0TC3ECno", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQIKuuB1fWySn1R60pYt8", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQHKuuB1fWySnutfeAg3o", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:09 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml new file mode 100644 index 0000000000..5548728a17 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml @@ -0,0 +1,512 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=36227206271667&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_xmdIy0xcA8ttbI","request_duration_ms":408}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:02 GMT + Content-Type: + - application/json + Content-Length: + - '1008' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 9e719516-d99d-4916-94dc-61f6f1c2fc81 + Original-Request: + - req_UMNO0XHfcOP271 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_UMNO0XHfcOP271 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hQEKuuB1fWySnM0FueQDF", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "diners", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "diners_club", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "gDlx6y9moRYkO83e", + "funding": "credit", + "generated_from": null, + "last4": "1667", + "networks": { + "available": [ + "diners" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": false + }, + "wallet": null + }, + "created": 1713871322, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:03 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_UMNO0XHfcOP271","request_duration_ms":536}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:03 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 2181cbe0-9829-4395-89b9-3a0d98be464c + Original-Request: + - req_pzxTrEyqekgZUS + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_pzxTrEyqekgZUS + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyejNJe0cHnW15", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871323, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "2415657D", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:03 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hQEKuuB1fWySnM0FueQDF&payment_method_types[0]=card&capture_method=manual&customer=cus_PyejNJe0cHnW15&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_pzxTrEyqekgZUS","request_duration_ms":440}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:03 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 55d32630-3ae8-4d1f-bf6a-da26931bb412 + Original-Request: + - req_SNphmAy0Qmq6jg + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_SNphmAy0Qmq6jg + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQFKuuB1fWySn1Fs1vGsh", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871323, + "currency": "eur", + "customer": "cus_PyejNJe0cHnW15", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQEKuuB1fWySnM0FueQDF", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:03 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQFKuuB1fWySn1Fs1vGsh/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_SNphmAy0Qmq6jg","request_duration_ms":474}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:04 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 8310a181-52c7-47b1-9d1d-13b2359eff49 + Original-Request: + - req_y2bfu78HhF3dGA + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_y2bfu78HhF3dGA + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQFKuuB1fWySn1Fs1vGsh", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871323, + "currency": "eur", + "customer": "cus_PyejNJe0cHnW15", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQFKuuB1fWySn1ChVQwX4", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQEKuuB1fWySnM0FueQDF", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:05 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml new file mode 100644 index 0000000000..a700c19bfe --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml @@ -0,0 +1,905 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=6011111111111117&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_cKclt9jUdynwP8","request_duration_ms":1113}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:42 GMT + Content-Type: + - application/json + Content-Length: + - '1008' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 1ffe4335-3659-40c5-ba72-4b256d9055bc + Original-Request: + - req_Etu4Q54XyJuLfH + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_Etu4Q54XyJuLfH + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hPtKuuB1fWySnf5blcleZ", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "discover", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "discover", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "SJztPPlfyEUr9hdK", + "funding": "credit", + "generated_from": null, + "last4": "1117", + "networks": { + "available": [ + "discover" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871302, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:21:42 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_Etu4Q54XyJuLfH","request_duration_ms":500}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:42 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 490666bd-00c7-483c-b2d8-a68000ecbe6c + Original-Request: + - req_SJPCUBIOA8rqPC + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_SJPCUBIOA8rqPC + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyejzDOIBybDpN", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871302, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "FC09F1D5", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:21:42 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hPtKuuB1fWySnf5blcleZ&payment_method_types[0]=card&capture_method=manual&customer=cus_PyejzDOIBybDpN&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_SJPCUBIOA8rqPC","request_duration_ms":502}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:43 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 719ad88e-70b3-4d82-8274-5806dc3437d4 + Original-Request: + - req_ZGRZyXCxIUXC9E + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_ZGRZyXCxIUXC9E + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPuKuuB1fWySn1YuJhvuD", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871302, + "currency": "eur", + "customer": "cus_PyejzDOIBybDpN", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPtKuuB1fWySnf5blcleZ", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:43 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPuKuuB1fWySn1YuJhvuD/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_ZGRZyXCxIUXC9E","request_duration_ms":405}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:44 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - cac78d53-f544-464b-8303-e84ada269640 + Original-Request: + - req_KCA2UUWiEUB4HJ + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_KCA2UUWiEUB4HJ + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPuKuuB1fWySn1YuJhvuD", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871302, + "currency": "eur", + "customer": "cus_PyejzDOIBybDpN", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPuKuuB1fWySn1YV8AUSr", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPtKuuB1fWySnf5blcleZ", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:44 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPuKuuB1fWySn1YuJhvuD + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_KCA2UUWiEUB4HJ","request_duration_ms":1103}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:44 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_Da2a3MRFBmJh64 + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPuKuuB1fWySn1YuJhvuD", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871302, + "currency": "eur", + "customer": "cus_PyejzDOIBybDpN", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPuKuuB1fWySn1YV8AUSr", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPtKuuB1fWySnf5blcleZ", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:44 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPuKuuB1fWySn1YuJhvuD/capture + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_Da2a3MRFBmJh64","request_duration_ms":405}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:46 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - a2b644d6-4fce-4089-a05b-857e4733a67b + Original-Request: + - req_qvfrJW5qxylQHr + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_qvfrJW5qxylQHr + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPuKuuB1fWySn1YuJhvuD", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871302, + "currency": "eur", + "customer": "cus_PyejzDOIBybDpN", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPuKuuB1fWySn1YV8AUSr", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPtKuuB1fWySnf5blcleZ", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:46 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPuKuuB1fWySn1YuJhvuD + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_qvfrJW5qxylQHr","request_duration_ms":1533}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:46 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_SiTlYVqYvz9Aeu + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPuKuuB1fWySn1YuJhvuD", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871302, + "currency": "eur", + "customer": "cus_PyejzDOIBybDpN", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPuKuuB1fWySn1YV8AUSr", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPtKuuB1fWySnf5blcleZ", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:46 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml new file mode 100644 index 0000000000..9ac6da32c5 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml @@ -0,0 +1,512 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=6011111111111117&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_UddWo6oZ6xRVWD","request_duration_ms":1}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:38 GMT + Content-Type: + - application/json + Content-Length: + - '1008' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 7a037dc0-3384-4056-bc3b-7781c6e8114f + Original-Request: + - req_ruQYEyMa7HE0IL + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_ruQYEyMa7HE0IL + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hPqKuuB1fWySnJhvcNWbe", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "discover", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "discover", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "SJztPPlfyEUr9hdK", + "funding": "credit", + "generated_from": null, + "last4": "1117", + "networks": { + "available": [ + "discover" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871298, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:21:39 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_ruQYEyMa7HE0IL","request_duration_ms":547}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:39 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 047ca940-2eb5-4d2f-b864-52b2347968a1 + Original-Request: + - req_RH8SZXNRYFoB3J + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_RH8SZXNRYFoB3J + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyejNxKD3I5F0r", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871299, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "E003F017", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:21:39 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hPqKuuB1fWySnJhvcNWbe&payment_method_types[0]=card&capture_method=manual&customer=cus_PyejNxKD3I5F0r&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_RH8SZXNRYFoB3J","request_duration_ms":508}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:39 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 15c862de-bd7f-4165-95fe-0a6ef281ec0c + Original-Request: + - req_2BrH7w6xCebHNe + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_2BrH7w6xCebHNe + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPrKuuB1fWySn1waDmlml", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871299, + "currency": "eur", + "customer": "cus_PyejNxKD3I5F0r", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPqKuuB1fWySnJhvcNWbe", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:39 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPrKuuB1fWySn1waDmlml/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_2BrH7w6xCebHNe","request_duration_ms":395}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:40 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - f54fb634-6d1b-415a-94a5-755e4b51fc40 + Original-Request: + - req_cKclt9jUdynwP8 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_cKclt9jUdynwP8 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPrKuuB1fWySn1waDmlml", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871299, + "currency": "eur", + "customer": "cus_PyejNxKD3I5F0r", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPrKuuB1fWySn1yoLj8wA", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPqKuuB1fWySnJhvcNWbe", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:41 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml new file mode 100644 index 0000000000..e4457b59f7 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml @@ -0,0 +1,905 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=6011981111111113&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_zrfZPH2c8XapeS","request_duration_ms":1091}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:50 GMT + Content-Type: + - application/json + Content-Length: + - '1007' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 732f1c45-4d19-4494-a03b-d9725780b674 + Original-Request: + - req_4TC4ObnZbMHhnk + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_4TC4ObnZbMHhnk + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hQ2KuuB1fWySnGpLVYFPe", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "discover", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "discover", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "Y3EGIoTEEuDsD8eJ", + "funding": "debit", + "generated_from": null, + "last4": "1113", + "networks": { + "available": [ + "discover" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871310, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:21:50 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_4TC4ObnZbMHhnk","request_duration_ms":562}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:51 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - b73a1262-166c-410f-bded-4088c4fd9ffd + Original-Request: + - req_4fHYiy7Ue9KK7M + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_4fHYiy7Ue9KK7M + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyejYzVomzn5re", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871310, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "2A75B94A", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:21:51 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hQ2KuuB1fWySnGpLVYFPe&payment_method_types[0]=card&capture_method=manual&customer=cus_PyejYzVomzn5re&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_4fHYiy7Ue9KK7M","request_duration_ms":507}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:51 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 27b3483e-3f44-4ad0-b677-9f9c8aa2c3b4 + Original-Request: + - req_sRjhbgcqN2bsY7 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_sRjhbgcqN2bsY7 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQ3KuuB1fWySn0ZLWpymG", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871311, + "currency": "eur", + "customer": "cus_PyejYzVomzn5re", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQ2KuuB1fWySnGpLVYFPe", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:51 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQ3KuuB1fWySn0ZLWpymG/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_sRjhbgcqN2bsY7","request_duration_ms":509}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:52 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - f79e14b1-a958-405c-bdd2-1d2fc538f322 + Original-Request: + - req_bvdy3sBZtVigM0 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_bvdy3sBZtVigM0 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQ3KuuB1fWySn0ZLWpymG", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871311, + "currency": "eur", + "customer": "cus_PyejYzVomzn5re", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQ3KuuB1fWySn07iKNKo0", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQ2KuuB1fWySnGpLVYFPe", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:52 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQ3KuuB1fWySn0ZLWpymG + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_bvdy3sBZtVigM0","request_duration_ms":1102}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:53 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_M578EkslUXdo3o + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQ3KuuB1fWySn0ZLWpymG", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871311, + "currency": "eur", + "customer": "cus_PyejYzVomzn5re", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQ3KuuB1fWySn07iKNKo0", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQ2KuuB1fWySnGpLVYFPe", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:53 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQ3KuuB1fWySn0ZLWpymG/capture + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_M578EkslUXdo3o","request_duration_ms":406}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:54 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 1343fa34-5cfa-408b-9ea3-282d41ada996 + Original-Request: + - req_oEbaBwF6ygxOF7 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_oEbaBwF6ygxOF7 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQ3KuuB1fWySn0ZLWpymG", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871311, + "currency": "eur", + "customer": "cus_PyejYzVomzn5re", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQ3KuuB1fWySn07iKNKo0", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQ2KuuB1fWySnGpLVYFPe", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:54 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQ3KuuB1fWySn0ZLWpymG + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_oEbaBwF6ygxOF7","request_duration_ms":1121}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:54 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_p4PeKqmC2GcoAk + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQ3KuuB1fWySn0ZLWpymG", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871311, + "currency": "eur", + "customer": "cus_PyejYzVomzn5re", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQ3KuuB1fWySn07iKNKo0", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQ2KuuB1fWySnGpLVYFPe", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:54 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml new file mode 100644 index 0000000000..e58dedb2e8 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml @@ -0,0 +1,512 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=6011981111111113&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_SiTlYVqYvz9Aeu","request_duration_ms":2}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:47 GMT + Content-Type: + - application/json + Content-Length: + - '1007' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 613f61ce-a28b-4e82-8c1d-043b41bcedf0 + Original-Request: + - req_gjVPNV1bZJCG5V + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_gjVPNV1bZJCG5V + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hPzKuuB1fWySnHJcIIcGd", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "discover", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "discover", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "Y3EGIoTEEuDsD8eJ", + "funding": "debit", + "generated_from": null, + "last4": "1113", + "networks": { + "available": [ + "discover" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871307, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:21:47 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_gjVPNV1bZJCG5V","request_duration_ms":620}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:48 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - dc84e649-01b9-40e1-89ab-bc1d4d9fe428 + Original-Request: + - req_R8EWXoiJRbQ2hS + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_R8EWXoiJRbQ2hS + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyejMjytBCz673", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871308, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "370B4AA9", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:21:48 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hPzKuuB1fWySnHJcIIcGd&payment_method_types[0]=card&capture_method=manual&customer=cus_PyejMjytBCz673&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_R8EWXoiJRbQ2hS","request_duration_ms":416}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:48 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 404e8c97-149a-4587-a64a-fe47c10c25e6 + Original-Request: + - req_TEowAnkuxQIfVC + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_TEowAnkuxQIfVC + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQ0KuuB1fWySn19kz36u1", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871308, + "currency": "eur", + "customer": "cus_PyejMjytBCz673", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPzKuuB1fWySnHJcIIcGd", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:48 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQ0KuuB1fWySn19kz36u1/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_TEowAnkuxQIfVC","request_duration_ms":499}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:49 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - fb5b38a3-d7bf-4293-ab59-b5164c94fbdb + Original-Request: + - req_zrfZPH2c8XapeS + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_zrfZPH2c8XapeS + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQ0KuuB1fWySn19kz36u1", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871308, + "currency": "eur", + "customer": "cus_PyejMjytBCz673", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQ0KuuB1fWySn1DqAQGi8", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPzKuuB1fWySnHJcIIcGd", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:49 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml new file mode 100644 index 0000000000..b541295445 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml @@ -0,0 +1,905 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=3566002020360505&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_EgbKOKHH1Oogxo","request_duration_ms":1155}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:21 GMT + Content-Type: + - application/json + Content-Length: + - '993' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - f12fedd1-4207-4571-b07a-e2f305836786 + Original-Request: + - req_CQq1ktzUV9MqFJ + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_CQq1ktzUV9MqFJ + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hQWKuuB1fWySnWa6V9NVl", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "jcb", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "JP", + "display_brand": "jcb", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "8f2gcynh7EdGyDKt", + "funding": "credit", + "generated_from": null, + "last4": "0505", + "networks": { + "available": [ + "jcb" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871340, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:21 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_CQq1ktzUV9MqFJ","request_duration_ms":422}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:21 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 681d3354-3372-4e19-9427-75af968aca0f + Original-Request: + - req_77OG0zMCusvAH8 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_77OG0zMCusvAH8 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_Pyekag1X6tn12N", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871341, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "5115E0BA", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:21 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hQWKuuB1fWySnWa6V9NVl&payment_method_types[0]=card&capture_method=manual&customer=cus_Pyekag1X6tn12N&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_77OG0zMCusvAH8","request_duration_ms":443}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:21 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 9275769b-9c29-4426-aa8e-67e297df398b + Original-Request: + - req_661Y9jf4UsiecR + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_661Y9jf4UsiecR + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQXKuuB1fWySn14y7VDms", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871341, + "currency": "eur", + "customer": "cus_Pyekag1X6tn12N", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQWKuuB1fWySnWa6V9NVl", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:22 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQXKuuB1fWySn14y7VDms/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_661Y9jf4UsiecR","request_duration_ms":468}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:23 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 6eddba57-4009-449d-9648-1528d98c3ca4 + Original-Request: + - req_hnrL0sCstDoCem + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_hnrL0sCstDoCem + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQXKuuB1fWySn14y7VDms", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871341, + "currency": "eur", + "customer": "cus_Pyekag1X6tn12N", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQXKuuB1fWySn16fdv4KQ", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQWKuuB1fWySnWa6V9NVl", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:23 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQXKuuB1fWySn14y7VDms + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_hnrL0sCstDoCem","request_duration_ms":1105}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:23 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_8IXvg6Hp8IuACR + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQXKuuB1fWySn14y7VDms", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871341, + "currency": "eur", + "customer": "cus_Pyekag1X6tn12N", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQXKuuB1fWySn16fdv4KQ", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQWKuuB1fWySnWa6V9NVl", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:23 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQXKuuB1fWySn14y7VDms/capture + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_8IXvg6Hp8IuACR","request_duration_ms":370}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:24 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - '0708c16d-f364-4275-b7e8-fc09198ff28d' + Original-Request: + - req_Eq04Pk3EG52RWi + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_Eq04Pk3EG52RWi + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQXKuuB1fWySn14y7VDms", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871341, + "currency": "eur", + "customer": "cus_Pyekag1X6tn12N", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQXKuuB1fWySn16fdv4KQ", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQWKuuB1fWySnWa6V9NVl", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:24 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQXKuuB1fWySn14y7VDms + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_Eq04Pk3EG52RWi","request_duration_ms":1058}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:24 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_Afjysw1r194ODw + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQXKuuB1fWySn14y7VDms", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871341, + "currency": "eur", + "customer": "cus_Pyekag1X6tn12N", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQXKuuB1fWySn16fdv4KQ", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQWKuuB1fWySnWa6V9NVl", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:25 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml new file mode 100644 index 0000000000..eee8222ad8 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml @@ -0,0 +1,512 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=3566002020360505&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_3Dn9T1aixPSePK","request_duration_ms":304}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:18 GMT + Content-Type: + - application/json + Content-Length: + - '993' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 7742efc8-7b8c-4689-898e-35826e494d32 + Original-Request: + - req_mPAsulWY5R9k9c + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_mPAsulWY5R9k9c + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hQTKuuB1fWySn86A5AaSf", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "jcb", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "JP", + "display_brand": "jcb", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "8f2gcynh7EdGyDKt", + "funding": "credit", + "generated_from": null, + "last4": "0505", + "networks": { + "available": [ + "jcb" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871338, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:18 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_mPAsulWY5R9k9c","request_duration_ms":479}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:18 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 778f601d-a294-4d1c-bc4d-f8fb2d95e33f + Original-Request: + - req_dKbd53ZWnSnmFA + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_dKbd53ZWnSnmFA + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyejkLXRIq1ugx", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871338, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "8A1F63A5", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:18 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hQTKuuB1fWySn86A5AaSf&payment_method_types[0]=card&capture_method=manual&customer=cus_PyejkLXRIq1ugx&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_dKbd53ZWnSnmFA","request_duration_ms":474}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:19 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - eb4df177-5e40-4ccf-a6f1-8624979cbdcb + Original-Request: + - req_PaAwwxnxPniScH + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_PaAwwxnxPniScH + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQUKuuB1fWySn27Ds09zw", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871338, + "currency": "eur", + "customer": "cus_PyejkLXRIq1ugx", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQTKuuB1fWySn86A5AaSf", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:19 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQUKuuB1fWySn27Ds09zw/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_PaAwwxnxPniScH","request_duration_ms":426}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:20 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 24abb05e-86bc-4a71-80c8-747482832ab1 + Original-Request: + - req_EgbKOKHH1Oogxo + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_EgbKOKHH1Oogxo + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQUKuuB1fWySn27Ds09zw", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871338, + "currency": "eur", + "customer": "cus_PyejkLXRIq1ugx", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQUKuuB1fWySn2Tnqlb70", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQTKuuB1fWySn86A5AaSf", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:20 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml new file mode 100644 index 0000000000..6e98d0dd3f --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml @@ -0,0 +1,905 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=5555555555554444&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_dpZudD7c3yo3SI","request_duration_ms":1200}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:03 GMT + Content-Type: + - application/json + Content-Length: + - '1014' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 3d7aec29-77cb-4e54-9b5f-4dd4c40180e4 + Original-Request: + - req_KOzFI7nt7kMKke + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_KOzFI7nt7kMKke + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hPHKuuB1fWySnLbjJpRi0", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "mastercard", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "mastercard", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "BL35fEFVcTTS5wpE", + "funding": "credit", + "generated_from": null, + "last4": "4444", + "networks": { + "available": [ + "mastercard" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871263, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:21:03 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_KOzFI7nt7kMKke","request_duration_ms":455}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:03 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - e7d67003-d410-4c36-8ce9-155a7992119b + Original-Request: + - req_PSvwe3Dxuav0Gf + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_PSvwe3Dxuav0Gf + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyeiYi8vVBRK2u", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871263, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "CFD0CF05", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:21:03 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hPHKuuB1fWySnLbjJpRi0&payment_method_types[0]=card&capture_method=manual&customer=cus_PyeiYi8vVBRK2u&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_PSvwe3Dxuav0Gf","request_duration_ms":501}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:04 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 26500e8b-bb32-4172-a28e-5eda772e8932 + Original-Request: + - req_a3VHqjs5pn2kcv + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_a3VHqjs5pn2kcv + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPIKuuB1fWySn2GVyivsK", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871264, + "currency": "eur", + "customer": "cus_PyeiYi8vVBRK2u", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPHKuuB1fWySnLbjJpRi0", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:04 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPIKuuB1fWySn2GVyivsK/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_a3VHqjs5pn2kcv","request_duration_ms":510}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:05 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 2165ddb3-503e-448f-917e-b234ad764383 + Original-Request: + - req_vZt5nK8DPgR8pL + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_vZt5nK8DPgR8pL + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPIKuuB1fWySn2GVyivsK", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871264, + "currency": "eur", + "customer": "cus_PyeiYi8vVBRK2u", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPIKuuB1fWySn2MQDbPgq", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPHKuuB1fWySnLbjJpRi0", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:05 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPIKuuB1fWySn2GVyivsK + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_vZt5nK8DPgR8pL","request_duration_ms":1201}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:05 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_zs1gxsav59C70k + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPIKuuB1fWySn2GVyivsK", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871264, + "currency": "eur", + "customer": "cus_PyeiYi8vVBRK2u", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPIKuuB1fWySn2MQDbPgq", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPHKuuB1fWySnLbjJpRi0", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:06 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPIKuuB1fWySn2GVyivsK/capture + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_zs1gxsav59C70k","request_duration_ms":405}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:07 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 69dcfd08-8568-46e4-ac73-73461c8d3ea5 + Original-Request: + - req_3N7vO6ii3OWarj + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_3N7vO6ii3OWarj + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPIKuuB1fWySn2GVyivsK", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871264, + "currency": "eur", + "customer": "cus_PyeiYi8vVBRK2u", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPIKuuB1fWySn2MQDbPgq", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPHKuuB1fWySnLbjJpRi0", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:07 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPIKuuB1fWySn2GVyivsK + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_3N7vO6ii3OWarj","request_duration_ms":1417}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:07 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_OVEg8EKA2rq1lg + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPIKuuB1fWySn2GVyivsK", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871264, + "currency": "eur", + "customer": "cus_PyeiYi8vVBRK2u", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPIKuuB1fWySn2MQDbPgq", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPHKuuB1fWySnLbjJpRi0", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:07 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml new file mode 100644 index 0000000000..4eb1655ea1 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml @@ -0,0 +1,512 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=5555555555554444&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_0WphKlQD6xRFlt","request_duration_ms":345}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:00 GMT + Content-Type: + - application/json + Content-Length: + - '1014' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - f531daeb-de9d-45ec-a020-192f5232114b + Original-Request: + - req_p5BJZnd5OEEQIp + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_p5BJZnd5OEEQIp + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hPDKuuB1fWySnu51i92IF", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "mastercard", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "mastercard", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "BL35fEFVcTTS5wpE", + "funding": "credit", + "generated_from": null, + "last4": "4444", + "networks": { + "available": [ + "mastercard" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871260, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:21:00 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_p5BJZnd5OEEQIp","request_duration_ms":481}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:00 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 9fa23470-94c1-4922-bbb1-147103e5ea58 + Original-Request: + - req_Kc3uIqCbKbK4aj + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_Kc3uIqCbKbK4aj + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyeiL4Ha7nH52p", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871260, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "D7D6FFF2", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:21:00 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hPDKuuB1fWySnu51i92IF&payment_method_types[0]=card&capture_method=manual&customer=cus_PyeiL4Ha7nH52p&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_Kc3uIqCbKbK4aj","request_duration_ms":405}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:01 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 654ac650-6465-45b4-9e09-ff05016c7dd7 + Original-Request: + - req_ehiape7Y2BCHMQ + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_ehiape7Y2BCHMQ + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPEKuuB1fWySn2ixEyxTG", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871260, + "currency": "eur", + "customer": "cus_PyeiL4Ha7nH52p", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPDKuuB1fWySnu51i92IF", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:01 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPEKuuB1fWySn2ixEyxTG/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_ehiape7Y2BCHMQ","request_duration_ms":510}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:02 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 900491a2-de27-4c97-aa24-9fca5a0bb5d7 + Original-Request: + - req_dpZudD7c3yo3SI + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_dpZudD7c3yo3SI + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPEKuuB1fWySn2ixEyxTG", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871260, + "currency": "eur", + "customer": "cus_PyeiL4Ha7nH52p", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPEKuuB1fWySn2gDu5Twh", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPDKuuB1fWySnu51i92IF", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:02 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml new file mode 100644 index 0000000000..758b1a483f --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml @@ -0,0 +1,905 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=2223003122003222&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_Qwct4ea8onfN4E","request_duration_ms":1148}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:11 GMT + Content-Type: + - application/json + Content-Length: + - '1014' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 39a3fedf-0082-4b70-8fc9-64e5b90109e7 + Original-Request: + - req_ohuQ0ZgkxTZ7IU + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_ohuQ0ZgkxTZ7IU + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hPPKuuB1fWySnAFYipXE7", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "mastercard", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "mastercard", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "0gTPwvyIV7E6CAld", + "funding": "credit", + "generated_from": null, + "last4": "3222", + "networks": { + "available": [ + "mastercard" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871271, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:21:11 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_ohuQ0ZgkxTZ7IU","request_duration_ms":441}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:11 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - ef0764eb-2778-42e9-9823-11a47929eeb5 + Original-Request: + - req_UMrYXi7ohBePV0 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_UMrYXi7ohBePV0 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyeiXH2m671SXL", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871271, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "A66473CE", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:21:11 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hPPKuuB1fWySnAFYipXE7&payment_method_types[0]=card&capture_method=manual&customer=cus_PyeiXH2m671SXL&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_UMrYXi7ohBePV0","request_duration_ms":501}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:12 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 2dfad88b-9de8-45bf-8137-dc591deccce3 + Original-Request: + - req_8IFMzUqkWeaFle + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_8IFMzUqkWeaFle + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPPKuuB1fWySn0bvuskRz", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871271, + "currency": "eur", + "customer": "cus_PyeiXH2m671SXL", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPPKuuB1fWySnAFYipXE7", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:12 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPPKuuB1fWySn0bvuskRz/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_8IFMzUqkWeaFle","request_duration_ms":405}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:13 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 0df5fd10-aff7-4fad-9aec-df211d63fe3c + Original-Request: + - req_mPlX6F3DUm1kTj + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_mPlX6F3DUm1kTj + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPPKuuB1fWySn0bvuskRz", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871271, + "currency": "eur", + "customer": "cus_PyeiXH2m671SXL", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPPKuuB1fWySn0d4HHeI5", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPPKuuB1fWySnAFYipXE7", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:13 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPPKuuB1fWySn0bvuskRz + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_mPlX6F3DUm1kTj","request_duration_ms":1101}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:13 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_M0dyEDatIOFBZF + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPPKuuB1fWySn0bvuskRz", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871271, + "currency": "eur", + "customer": "cus_PyeiXH2m671SXL", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPPKuuB1fWySn0d4HHeI5", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPPKuuB1fWySnAFYipXE7", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:13 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPPKuuB1fWySn0bvuskRz/capture + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_M0dyEDatIOFBZF","request_duration_ms":406}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:14 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 4ded4141-cfe2-420a-906a-9e1a630eee56 + Original-Request: + - req_u1DEUioMcDKSBz + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_u1DEUioMcDKSBz + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPPKuuB1fWySn0bvuskRz", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871271, + "currency": "eur", + "customer": "cus_PyeiXH2m671SXL", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPPKuuB1fWySn0d4HHeI5", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPPKuuB1fWySnAFYipXE7", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:14 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPPKuuB1fWySn0bvuskRz + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_u1DEUioMcDKSBz","request_duration_ms":1123}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:15 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_bPSNztR1dTneVk + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPPKuuB1fWySn0bvuskRz", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871271, + "currency": "eur", + "customer": "cus_PyeiXH2m671SXL", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPPKuuB1fWySn0d4HHeI5", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPPKuuB1fWySnAFYipXE7", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:15 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml new file mode 100644 index 0000000000..36c742b099 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml @@ -0,0 +1,512 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=2223003122003222&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_OVEg8EKA2rq1lg","request_duration_ms":418}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:08 GMT + Content-Type: + - application/json + Content-Length: + - '1014' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 1cd7bf09-dd39-41dd-b997-08774ce3c46c + Original-Request: + - req_SI9IQrjUBSenxj + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_SI9IQrjUBSenxj + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hPMKuuB1fWySnuy58VLut", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "mastercard", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "mastercard", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "0gTPwvyIV7E6CAld", + "funding": "credit", + "generated_from": null, + "last4": "3222", + "networks": { + "available": [ + "mastercard" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871268, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:21:08 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_SI9IQrjUBSenxj","request_duration_ms":456}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:08 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 794febe3-f216-4eba-b499-7441f598cf39 + Original-Request: + - req_2wNbvHpVH4bRr8 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_2wNbvHpVH4bRr8 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_Pyei3qbC4ngA0q", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871268, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "6411439E", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:21:08 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hPMKuuB1fWySnuy58VLut&payment_method_types[0]=card&capture_method=manual&customer=cus_Pyei3qbC4ngA0q&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_2wNbvHpVH4bRr8","request_duration_ms":430}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:09 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 99ab2935-1385-434a-ae8f-b849104cde13 + Original-Request: + - req_9bq5isB4pDLUnQ + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_9bq5isB4pDLUnQ + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPNKuuB1fWySn0iOA6eso", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871269, + "currency": "eur", + "customer": "cus_Pyei3qbC4ngA0q", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPMKuuB1fWySnuy58VLut", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:09 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPNKuuB1fWySn0iOA6eso/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_9bq5isB4pDLUnQ","request_duration_ms":394}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:10 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 294702a4-00ae-4ba1-bb7d-70bd9a1891d9 + Original-Request: + - req_Qwct4ea8onfN4E + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_Qwct4ea8onfN4E + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPNKuuB1fWySn0iOA6eso", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871269, + "currency": "eur", + "customer": "cus_Pyei3qbC4ngA0q", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPNKuuB1fWySn0E1kZCXk", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPMKuuB1fWySnuy58VLut", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:10 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml new file mode 100644 index 0000000000..43ad09b350 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml @@ -0,0 +1,905 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=5200828282828210&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_8cc5GPIq99TZOD","request_duration_ms":995}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:18 GMT + Content-Type: + - application/json + Content-Length: + - '1013' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - d57a22e1-0a9d-4063-83a8-d40d90439a03 + Original-Request: + - req_oWDqQNDLNaLxs2 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_oWDqQNDLNaLxs2 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hPWKuuB1fWySnEN1H2XcM", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "mastercard", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "mastercard", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "DpQ8VoC0Z3P9xrbi", + "funding": "debit", + "generated_from": null, + "last4": "8210", + "networks": { + "available": [ + "mastercard" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871278, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:21:18 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_oWDqQNDLNaLxs2","request_duration_ms":423}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:19 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 1870f353-dce7-4dae-a21e-d8371f612aec + Original-Request: + - req_VuC610HZ6EQ48S + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_VuC610HZ6EQ48S + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyeiWqm0iyYG50", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871279, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "61598C19", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:21:19 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hPWKuuB1fWySnEN1H2XcM&payment_method_types[0]=card&capture_method=manual&customer=cus_PyeiWqm0iyYG50&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_VuC610HZ6EQ48S","request_duration_ms":429}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:19 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 90c34d1b-d4c3-4dc7-830d-7d0fa7165c76 + Original-Request: + - req_89FBzQnKpNe68K + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_89FBzQnKpNe68K + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPXKuuB1fWySn2dp19af5", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871279, + "currency": "eur", + "customer": "cus_PyeiWqm0iyYG50", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPWKuuB1fWySnEN1H2XcM", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:19 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPXKuuB1fWySn2dp19af5/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_89FBzQnKpNe68K","request_duration_ms":419}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:20 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 3eccb79a-3dc8-4d23-999b-54122e5f775b + Original-Request: + - req_Xlbq59TKfnepfo + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_Xlbq59TKfnepfo + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPXKuuB1fWySn2dp19af5", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871279, + "currency": "eur", + "customer": "cus_PyeiWqm0iyYG50", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPXKuuB1fWySn2ueI0CxW", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPWKuuB1fWySnEN1H2XcM", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:21 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPXKuuB1fWySn2dp19af5 + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_Xlbq59TKfnepfo","request_duration_ms":1180}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:21 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_HK7DlLFepfzHTF + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPXKuuB1fWySn2dp19af5", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871279, + "currency": "eur", + "customer": "cus_PyeiWqm0iyYG50", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPXKuuB1fWySn2ueI0CxW", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPWKuuB1fWySnEN1H2XcM", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:21 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPXKuuB1fWySn2dp19af5/capture + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_HK7DlLFepfzHTF","request_duration_ms":404}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:22 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - e241a01c-9037-4c29-bf7a-18cd817a4860 + Original-Request: + - req_l5OOJhOazt6PXP + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_l5OOJhOazt6PXP + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPXKuuB1fWySn2dp19af5", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871279, + "currency": "eur", + "customer": "cus_PyeiWqm0iyYG50", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPXKuuB1fWySn2ueI0CxW", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPWKuuB1fWySnEN1H2XcM", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:22 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPXKuuB1fWySn2dp19af5 + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_l5OOJhOazt6PXP","request_duration_ms":1327}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:23 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_B0SeZ79RLy2ebO + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPXKuuB1fWySn2dp19af5", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871279, + "currency": "eur", + "customer": "cus_PyeiWqm0iyYG50", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPXKuuB1fWySn2ueI0CxW", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPWKuuB1fWySnEN1H2XcM", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:23 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml new file mode 100644 index 0000000000..4ebd8fe024 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml @@ -0,0 +1,512 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=5200828282828210&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_bPSNztR1dTneVk","request_duration_ms":392}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:15 GMT + Content-Type: + - application/json + Content-Length: + - '1013' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - be62fead-d724-4e7f-8f55-4ef918754c29 + Original-Request: + - req_bpLMSxtmzD1zMl + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_bpLMSxtmzD1zMl + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hPTKuuB1fWySnoz4GaqoV", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "mastercard", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "mastercard", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "DpQ8VoC0Z3P9xrbi", + "funding": "debit", + "generated_from": null, + "last4": "8210", + "networks": { + "available": [ + "mastercard" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871275, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:21:15 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_bpLMSxtmzD1zMl","request_duration_ms":523}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:16 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 649ebdb6-ef29-4cbb-bc9e-98c21ae93685 + Original-Request: + - req_X2zcbnOjKFGYld + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_X2zcbnOjKFGYld + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_Pyei5krltxQE6d", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871276, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "91D990B8", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:21:16 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hPTKuuB1fWySnoz4GaqoV&payment_method_types[0]=card&capture_method=manual&customer=cus_Pyei5krltxQE6d&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_X2zcbnOjKFGYld","request_duration_ms":507}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:16 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 8fce28bf-6c72-4372-b021-fa9d6d8bf502 + Original-Request: + - req_kDyx3XmV2eI4QT + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_kDyx3XmV2eI4QT + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPUKuuB1fWySn0j2B8Quf", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871276, + "currency": "eur", + "customer": "cus_Pyei5krltxQE6d", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPTKuuB1fWySnoz4GaqoV", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:16 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPUKuuB1fWySn0j2B8Quf/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_kDyx3XmV2eI4QT","request_duration_ms":509}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:17 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 71740a65-f9b3-4dac-a364-5dc079a153db + Original-Request: + - req_8cc5GPIq99TZOD + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_8cc5GPIq99TZOD + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPUKuuB1fWySn0j2B8Quf", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871276, + "currency": "eur", + "customer": "cus_Pyei5krltxQE6d", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPUKuuB1fWySn0qUOZgP2", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPTKuuB1fWySnoz4GaqoV", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:17 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml new file mode 100644 index 0000000000..b47c8718ca --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml @@ -0,0 +1,905 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=5105105105105100&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_rL3sIDabBbB4Gh","request_duration_ms":1207}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:26 GMT + Content-Type: + - application/json + Content-Length: + - '1015' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 8e6f6958-d1b5-48bc-926f-4059825fedac + Original-Request: + - req_n0rtzuqR4K7abm + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_n0rtzuqR4K7abm + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hPeKuuB1fWySnW4VKALy7", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "mastercard", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "mastercard", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "B9ykFJ6imaeWU8aO", + "funding": "prepaid", + "generated_from": null, + "last4": "5100", + "networks": { + "available": [ + "mastercard" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871286, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:21:26 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_n0rtzuqR4K7abm","request_duration_ms":500}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:27 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - b0144ff2-71c9-419b-b436-b0e7a8209776 + Original-Request: + - req_iNcB4TD0OoXrMp + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_iNcB4TD0OoXrMp + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_Pyejn2MRlZ3Rv4", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871286, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "BEEAD97C", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:21:27 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hPeKuuB1fWySnW4VKALy7&payment_method_types[0]=card&capture_method=manual&customer=cus_Pyejn2MRlZ3Rv4&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_iNcB4TD0OoXrMp","request_duration_ms":421}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:27 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - cbfb6a51-0d39-47f5-8f00-49d09f946663 + Original-Request: + - req_XZ0IF5IsTNRkzQ + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_XZ0IF5IsTNRkzQ + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPfKuuB1fWySn1bQa89IW", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871287, + "currency": "eur", + "customer": "cus_Pyejn2MRlZ3Rv4", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPeKuuB1fWySnW4VKALy7", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:27 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPfKuuB1fWySn1bQa89IW/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_XZ0IF5IsTNRkzQ","request_duration_ms":496}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:28 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 2054d3c9-9176-44e6-8818-9e95b038b20e + Original-Request: + - req_YrjEkAC0zwuoxD + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_YrjEkAC0zwuoxD + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPfKuuB1fWySn1bQa89IW", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871287, + "currency": "eur", + "customer": "cus_Pyejn2MRlZ3Rv4", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPfKuuB1fWySn1Y0eeYT1", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPeKuuB1fWySnW4VKALy7", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:28 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPfKuuB1fWySn1bQa89IW + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_YrjEkAC0zwuoxD","request_duration_ms":1103}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:28 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_HYmPlTpnYcTd5G + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPfKuuB1fWySn1bQa89IW", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871287, + "currency": "eur", + "customer": "cus_Pyejn2MRlZ3Rv4", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPfKuuB1fWySn1Y0eeYT1", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPeKuuB1fWySnW4VKALy7", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:29 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPfKuuB1fWySn1bQa89IW/capture + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_HYmPlTpnYcTd5G","request_duration_ms":304}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:30 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - '084b8ea3-813c-42b7-a703-017a4962dee1' + Original-Request: + - req_FfAz3RRnSapSHv + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_FfAz3RRnSapSHv + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPfKuuB1fWySn1bQa89IW", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871287, + "currency": "eur", + "customer": "cus_Pyejn2MRlZ3Rv4", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPfKuuB1fWySn1Y0eeYT1", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPeKuuB1fWySnW4VKALy7", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:30 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPfKuuB1fWySn1bQa89IW + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_FfAz3RRnSapSHv","request_duration_ms":1442}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:30 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_ZmshM8deU5LJ8a + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPfKuuB1fWySn1bQa89IW", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871287, + "currency": "eur", + "customer": "cus_Pyejn2MRlZ3Rv4", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPfKuuB1fWySn1Y0eeYT1", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPeKuuB1fWySnW4VKALy7", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:30 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml new file mode 100644 index 0000000000..0e0e28c676 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml @@ -0,0 +1,512 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=5105105105105100&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_B0SeZ79RLy2ebO","request_duration_ms":407}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:23 GMT + Content-Type: + - application/json + Content-Length: + - '1015' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 06bc2d0e-bc55-4050-b6c8-2b30725ec08f + Original-Request: + - req_MBZLIMix75hQDk + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_MBZLIMix75hQDk + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hPbKuuB1fWySn1PuTLuFG", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "mastercard", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "mastercard", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "B9ykFJ6imaeWU8aO", + "funding": "prepaid", + "generated_from": null, + "last4": "5100", + "networks": { + "available": [ + "mastercard" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871283, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:21:23 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_MBZLIMix75hQDk","request_duration_ms":382}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:24 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 021f9338-d514-4116-8e74-72165bbcdd79 + Original-Request: + - req_HAqVYXRrNZNl5H + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_HAqVYXRrNZNl5H + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyejowstccnzWm", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871283, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "3615CA5B", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:21:24 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hPbKuuB1fWySn1PuTLuFG&payment_method_types[0]=card&capture_method=manual&customer=cus_PyejowstccnzWm&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_HAqVYXRrNZNl5H","request_duration_ms":414}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:24 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - c946b378-ce4c-4e88-a0ac-79bf916c71f3 + Original-Request: + - req_uyYhqCO1cHsTvf + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_uyYhqCO1cHsTvf + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPcKuuB1fWySn1BtL6gPB", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871284, + "currency": "eur", + "customer": "cus_PyejowstccnzWm", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPbKuuB1fWySn1PuTLuFG", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:24 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hPcKuuB1fWySn1BtL6gPB/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_uyYhqCO1cHsTvf","request_duration_ms":451}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:21:25 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 6a6ff1ca-5b17-4cdf-a36e-1bf792e14c1e + Original-Request: + - req_rL3sIDabBbB4Gh + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_rL3sIDabBbB4Gh + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hPcKuuB1fWySn1BtL6gPB", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871284, + "currency": "eur", + "customer": "cus_PyejowstccnzWm", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hPcKuuB1fWySn1aE0ioJv", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hPbKuuB1fWySn1PuTLuFG", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:21:25 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml new file mode 100644 index 0000000000..e68a91bd18 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml @@ -0,0 +1,905 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=6200000000000005&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_fyjHcxLOF999oK","request_duration_ms":1002}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:28 GMT + Content-Type: + - application/json + Content-Length: + - '1009' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 2eb27a6a-babd-4b11-a100-1cdc2bd22a54 + Original-Request: + - req_txAjwfJDd9kadL + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_txAjwfJDd9kadL + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hQeKuuB1fWySnUs50egBB", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "unionpay", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "CN", + "display_brand": "union_pay", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "Aq45rzUxvT6SiF1W", + "funding": "credit", + "generated_from": null, + "last4": "0005", + "networks": { + "available": [ + "unionpay" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871348, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:28 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_txAjwfJDd9kadL","request_duration_ms":510}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:28 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 4b483425-01c2-4ec8-889f-39731de009b1 + Original-Request: + - req_w1xt4D4fDnHl0q + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_w1xt4D4fDnHl0q + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyekeI9L8KiWy2", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871348, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "5AB93277", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:29 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hQeKuuB1fWySnUs50egBB&payment_method_types[0]=card&capture_method=manual&customer=cus_PyekeI9L8KiWy2&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_w1xt4D4fDnHl0q","request_duration_ms":508}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:29 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 2fdc45da-4ecd-4470-b775-92c1cdc7da5f + Original-Request: + - req_LudIVtt9zALBx6 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_LudIVtt9zALBx6 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQfKuuB1fWySn0Ntn0Tc9", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871349, + "currency": "eur", + "customer": "cus_PyekeI9L8KiWy2", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQeKuuB1fWySnUs50egBB", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:29 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQfKuuB1fWySn0Ntn0Tc9/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_LudIVtt9zALBx6","request_duration_ms":509}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:30 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 57c1ea23-9756-4500-a486-310f5029c61e + Original-Request: + - req_e402naQIpk5iiQ + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_e402naQIpk5iiQ + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQfKuuB1fWySn0Ntn0Tc9", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871349, + "currency": "eur", + "customer": "cus_PyekeI9L8KiWy2", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQfKuuB1fWySn0dMYJQcG", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQeKuuB1fWySnUs50egBB", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:30 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQfKuuB1fWySn0Ntn0Tc9 + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_e402naQIpk5iiQ","request_duration_ms":1145}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:31 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_GUTEmc3cfgDcU1 + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQfKuuB1fWySn0Ntn0Tc9", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871349, + "currency": "eur", + "customer": "cus_PyekeI9L8KiWy2", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQfKuuB1fWySn0dMYJQcG", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQeKuuB1fWySnUs50egBB", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:31 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQfKuuB1fWySn0Ntn0Tc9/capture + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_GUTEmc3cfgDcU1","request_duration_ms":312}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:32 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 0c0e55af-232b-4f6b-a4bc-a4d88df86c93 + Original-Request: + - req_EpQaQdb5BARrIA + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_EpQaQdb5BARrIA + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQfKuuB1fWySn0Ntn0Tc9", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871349, + "currency": "eur", + "customer": "cus_PyekeI9L8KiWy2", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQfKuuB1fWySn0dMYJQcG", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQeKuuB1fWySnUs50egBB", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:32 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQfKuuB1fWySn0Ntn0Tc9 + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_EpQaQdb5BARrIA","request_duration_ms":1588}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:32 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_RWM4G5bHZtHy17 + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQfKuuB1fWySn0Ntn0Tc9", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871349, + "currency": "eur", + "customer": "cus_PyekeI9L8KiWy2", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQfKuuB1fWySn0dMYJQcG", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQeKuuB1fWySnUs50egBB", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:33 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml new file mode 100644 index 0000000000..83158e32cf --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml @@ -0,0 +1,512 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=6200000000000005&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_Afjysw1r194ODw","request_duration_ms":407}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:25 GMT + Content-Type: + - application/json + Content-Length: + - '1009' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - a6435b66-6e13-4bf7-a2e9-a4bd93fb7710 + Original-Request: + - req_X05gS7DaBUKLKx + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_X05gS7DaBUKLKx + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hQbKuuB1fWySnhVjKsc0C", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "unionpay", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "CN", + "display_brand": "union_pay", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "Aq45rzUxvT6SiF1W", + "funding": "credit", + "generated_from": null, + "last4": "0005", + "networks": { + "available": [ + "unionpay" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871345, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:25 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_X05gS7DaBUKLKx","request_duration_ms":647}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:26 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 0acd3d5e-8df0-4e67-97b1-7d28428bc041 + Original-Request: + - req_9OhC77tXpXQnb2 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_9OhC77tXpXQnb2 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyekqfjxClE8lB", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871345, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "EFA75C2E", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:26 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hQbKuuB1fWySnhVjKsc0C&payment_method_types[0]=card&capture_method=manual&customer=cus_PyekqfjxClE8lB&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_9OhC77tXpXQnb2","request_duration_ms":407}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:26 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 8744c2fa-37a5-4a5b-9468-6fa09f102ac0 + Original-Request: + - req_3X99KLCSYLRjSH + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_3X99KLCSYLRjSH + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQcKuuB1fWySn1G1NpJx9", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871346, + "currency": "eur", + "customer": "cus_PyekqfjxClE8lB", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQbKuuB1fWySnhVjKsc0C", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:26 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQcKuuB1fWySn1G1NpJx9/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_3X99KLCSYLRjSH","request_duration_ms":509}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:27 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 5b830090-f7bb-455d-ac57-64054198be13 + Original-Request: + - req_fyjHcxLOF999oK + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_fyjHcxLOF999oK + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQcKuuB1fWySn1G1NpJx9", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871346, + "currency": "eur", + "customer": "cus_PyekqfjxClE8lB", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQcKuuB1fWySn1Emwtq0O", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQbKuuB1fWySnhVjKsc0C", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:27 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml new file mode 100644 index 0000000000..05a87ba93c --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml @@ -0,0 +1,905 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=6205500000000000004&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_sqvzkQBIKE8xCY","request_duration_ms":998}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:36 GMT + Content-Type: + - application/json + Content-Length: + - '1008' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 8603cfdb-1941-4710-bbc9-29882b72dcbe + Original-Request: + - req_ccHOb4oeDkQl3S + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_ccHOb4oeDkQl3S + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hQmKuuB1fWySnn2orDvvg", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "unionpay", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "union_pay", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "F9o1vzLUnyEJBPXi", + "funding": "debit", + "generated_from": null, + "last4": "0004", + "networks": { + "available": [ + "unionpay" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871356, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:36 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_ccHOb4oeDkQl3S","request_duration_ms":508}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:37 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - e9e3b4b3-bdf0-42c7-9a54-ea8e87b13699 + Original-Request: + - req_zZ0i2t3dCI6mVx + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_zZ0i2t3dCI6mVx + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_Pyek3c9niYy4Vu", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871356, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "8A52686D", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:37 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hQmKuuB1fWySnn2orDvvg&payment_method_types[0]=card&capture_method=manual&customer=cus_Pyek3c9niYy4Vu&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_zZ0i2t3dCI6mVx","request_duration_ms":509}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:37 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 492b91ee-5cc9-4f81-9be2-c0553b9941d7 + Original-Request: + - req_KE1rWeddaL5Mm6 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_KE1rWeddaL5Mm6 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQnKuuB1fWySn0DgdsMmY", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871357, + "currency": "eur", + "customer": "cus_Pyek3c9niYy4Vu", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQmKuuB1fWySnn2orDvvg", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:37 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQnKuuB1fWySn0DgdsMmY/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_KE1rWeddaL5Mm6","request_duration_ms":407}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:38 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 98fec250-8a2b-486b-942f-b48fa9900659 + Original-Request: + - req_yk8nJfBvtarnL2 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_yk8nJfBvtarnL2 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQnKuuB1fWySn0DgdsMmY", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871357, + "currency": "eur", + "customer": "cus_Pyek3c9niYy4Vu", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQnKuuB1fWySn0t9JlVPu", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQmKuuB1fWySnn2orDvvg", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:38 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQnKuuB1fWySn0DgdsMmY + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_yk8nJfBvtarnL2","request_duration_ms":1052}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:38 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_qgIZfThnNGQCzC + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQnKuuB1fWySn0DgdsMmY", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871357, + "currency": "eur", + "customer": "cus_Pyek3c9niYy4Vu", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQnKuuB1fWySn0t9JlVPu", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQmKuuB1fWySnn2orDvvg", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:38 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQnKuuB1fWySn0DgdsMmY/capture + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_qgIZfThnNGQCzC","request_duration_ms":354}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:40 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - dbbb8330-3a06-4c0c-a7d1-15513e71c503 + Original-Request: + - req_O51iX4HWFWM4Np + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_O51iX4HWFWM4Np + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQnKuuB1fWySn0DgdsMmY", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871357, + "currency": "eur", + "customer": "cus_Pyek3c9niYy4Vu", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQnKuuB1fWySn0t9JlVPu", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQmKuuB1fWySnn2orDvvg", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:40 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQnKuuB1fWySn0DgdsMmY + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_O51iX4HWFWM4Np","request_duration_ms":1431}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:40 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_jw6WIU0GBeVnT2 + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQnKuuB1fWySn0DgdsMmY", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871357, + "currency": "eur", + "customer": "cus_Pyek3c9niYy4Vu", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQnKuuB1fWySn0t9JlVPu", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQmKuuB1fWySnn2orDvvg", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:40 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml new file mode 100644 index 0000000000..f9d88a0aef --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml @@ -0,0 +1,512 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=6205500000000000004&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_RWM4G5bHZtHy17","request_duration_ms":408}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:33 GMT + Content-Type: + - application/json + Content-Length: + - '1008' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 98ae47f6-108a-483d-8bd4-5f3d04e19134 + Original-Request: + - req_rUeElhqjldp8wd + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_rUeElhqjldp8wd + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hQjKuuB1fWySnujPywnNy", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "unionpay", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "union_pay", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "F9o1vzLUnyEJBPXi", + "funding": "debit", + "generated_from": null, + "last4": "0004", + "networks": { + "available": [ + "unionpay" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871353, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:22:33 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_rUeElhqjldp8wd","request_duration_ms":528}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:34 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - b0c56f1b-7bba-44c1-9207-cb06cc604b82 + Original-Request: + - req_CbpEHLUsshTrfU + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_CbpEHLUsshTrfU + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_Pyek5nTJeHfC9P", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871353, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "6108543E", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:22:34 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hQjKuuB1fWySnujPywnNy&payment_method_types[0]=card&capture_method=manual&customer=cus_Pyek5nTJeHfC9P&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_CbpEHLUsshTrfU","request_duration_ms":509}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:34 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 7ecb4a7c-5bf1-425f-8eac-0dfb3df8ce31 + Original-Request: + - req_Eytj6WHXIq3CWW + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_Eytj6WHXIq3CWW + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQkKuuB1fWySn1brfFX0e", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871354, + "currency": "eur", + "customer": "cus_Pyek5nTJeHfC9P", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQjKuuB1fWySnujPywnNy", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:34 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hQkKuuB1fWySn1brfFX0e/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_Eytj6WHXIq3CWW","request_duration_ms":407}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:22:35 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - d1232c7c-ee0d-4e45-804f-d5703cbe17ba + Original-Request: + - req_sqvzkQBIKE8xCY + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_sqvzkQBIKE8xCY + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hQkKuuB1fWySn1brfFX0e", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871354, + "currency": "eur", + "customer": "cus_Pyek5nTJeHfC9P", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hQkKuuB1fWySn1PKudh8f", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hQjKuuB1fWySnujPywnNy", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:22:35 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml new file mode 100644 index 0000000000..1364f3a8d9 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml @@ -0,0 +1,905 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=4242424242424242&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_UgmaT5BH5c9gjk","request_duration_ms":1042}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:47 GMT + Content-Type: + - application/json + Content-Length: + - '996' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 837ec842-588f-411a-bccc-705efde724e7 + Original-Request: + - req_xrMxRLbJUU4A7G + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_xrMxRLbJUU4A7G + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hP1KuuB1fWySnz03Vo2yF", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "6E6tgVjx6U65iHFV", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871247, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:20:48 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_xrMxRLbJUU4A7G","request_duration_ms":458}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:48 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 1ceb128f-c6f0-4014-91ea-7618ef44b664 + Original-Request: + - req_MaiP5LaujwU0LK + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_MaiP5LaujwU0LK + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyeiUZlYixpFpZ", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871248, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "A6709702", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:20:48 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hP1KuuB1fWySnz03Vo2yF&payment_method_types[0]=card&capture_method=manual&customer=cus_PyeiUZlYixpFpZ&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_MaiP5LaujwU0LK","request_duration_ms":451}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:48 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 7b03c948-3308-4ee3-99c0-e74455818509 + Original-Request: + - req_UzsmC4fTGeJTcv + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_UzsmC4fTGeJTcv + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hP2KuuB1fWySn0XKEWUXu", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871248, + "currency": "eur", + "customer": "cus_PyeiUZlYixpFpZ", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hP1KuuB1fWySnz03Vo2yF", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:20:48 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hP2KuuB1fWySn0XKEWUXu/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_UzsmC4fTGeJTcv","request_duration_ms":404}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:49 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 9f4548cd-5a78-4a4f-a113-94b2a6829646 + Original-Request: + - req_jItuhngRLh3OBU + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_jItuhngRLh3OBU + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hP2KuuB1fWySn0XKEWUXu", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871248, + "currency": "eur", + "customer": "cus_PyeiUZlYixpFpZ", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hP2KuuB1fWySn05WVraBL", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hP1KuuB1fWySnz03Vo2yF", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:20:49 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hP2KuuB1fWySn0XKEWUXu + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_jItuhngRLh3OBU","request_duration_ms":1013}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:50 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_RSW0EOvXKVDOsj + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hP2KuuB1fWySn0XKEWUXu", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871248, + "currency": "eur", + "customer": "cus_PyeiUZlYixpFpZ", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hP2KuuB1fWySn05WVraBL", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hP1KuuB1fWySnz03Vo2yF", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:20:50 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hP2KuuB1fWySn0XKEWUXu/capture + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_RSW0EOvXKVDOsj","request_duration_ms":347}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:51 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - be7dad5d-c4c0-4359-97ed-2c37022aa5a2 + Original-Request: + - req_opMkWzGDrX3TTW + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_opMkWzGDrX3TTW + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hP2KuuB1fWySn0XKEWUXu", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871248, + "currency": "eur", + "customer": "cus_PyeiUZlYixpFpZ", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hP2KuuB1fWySn05WVraBL", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hP1KuuB1fWySnz03Vo2yF", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:20:51 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hP2KuuB1fWySn0XKEWUXu + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_opMkWzGDrX3TTW","request_duration_ms":1124}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:51 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_SuEUXxJcKAACHM + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hP2KuuB1fWySn0XKEWUXu", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871248, + "currency": "eur", + "customer": "cus_PyeiUZlYixpFpZ", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hP2KuuB1fWySn05WVraBL", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hP1KuuB1fWySnz03Vo2yF", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:20:51 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml new file mode 100644 index 0000000000..d5ed69d592 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml @@ -0,0 +1,512 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=4242424242424242&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_TD1ICnTqMW4RYP","request_duration_ms":392}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:45 GMT + Content-Type: + - application/json + Content-Length: + - '996' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 68d2582b-1a46-406d-8d18-2ace368db10c + Original-Request: + - req_LdjAk4FM1hpo0U + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_LdjAk4FM1hpo0U + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hOyKuuB1fWySnMzi4d4zE", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "6E6tgVjx6U65iHFV", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871245, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:20:45 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_LdjAk4FM1hpo0U","request_duration_ms":455}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:45 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - c1e6d5c1-e32a-42c6-a740-91cb151954f1 + Original-Request: + - req_E6VsQiT9u5lSaK + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_E6VsQiT9u5lSaK + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyeiIsHCXjEx5v", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871245, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "1D6BD4E6", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:20:45 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hOyKuuB1fWySnMzi4d4zE&payment_method_types[0]=card&capture_method=manual&customer=cus_PyeiIsHCXjEx5v&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_E6VsQiT9u5lSaK","request_duration_ms":416}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:45 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 95380c72-b685-4aad-9e95-386a54a2c352 + Original-Request: + - req_XQa3MYudfzFXtY + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_XQa3MYudfzFXtY + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hOzKuuB1fWySn2BfuNUlf", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871245, + "currency": "eur", + "customer": "cus_PyeiIsHCXjEx5v", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hOyKuuB1fWySnMzi4d4zE", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:20:46 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOzKuuB1fWySn2BfuNUlf/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_XQa3MYudfzFXtY","request_duration_ms":477}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:47 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - e3142c35-5f72-4c4b-bf20-a44cad45f0b5 + Original-Request: + - req_UgmaT5BH5c9gjk + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_UgmaT5BH5c9gjk + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hOzKuuB1fWySn2BfuNUlf", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871245, + "currency": "eur", + "customer": "cus_PyeiIsHCXjEx5v", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hOzKuuB1fWySn2D5AkAxu", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hOyKuuB1fWySnMzi4d4zE", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:20:47 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml new file mode 100644 index 0000000000..0890e52288 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml @@ -0,0 +1,905 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=4000056655665556&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_NSTT4HsXvES8zI","request_duration_ms":1116}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:55 GMT + Content-Type: + - application/json + Content-Length: + - '995' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 763b86b3-0434-4f53-90de-0e86a9a18e4a + Original-Request: + - req_d7wiIIWTC76kjJ + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_d7wiIIWTC76kjJ + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hP8KuuB1fWySnFqFZ163j", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "QOaaYMtlTSm6xJM8", + "funding": "debit", + "generated_from": null, + "last4": "5556", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871255, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:20:55 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_d7wiIIWTC76kjJ","request_duration_ms":474}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:55 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 519dbff1-4400-4473-ba03-3b38e8b5e34d + Original-Request: + - req_SUtRVQTrGlrpx7 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_SUtRVQTrGlrpx7 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyeiRd0uamjkpD", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871255, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "C9D877D7", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:20:55 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hP8KuuB1fWySnFqFZ163j&payment_method_types[0]=card&capture_method=manual&customer=cus_PyeiRd0uamjkpD&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_SUtRVQTrGlrpx7","request_duration_ms":443}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:56 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 20f5aa54-ad41-48aa-8cd4-f1a3c4c05910 + Original-Request: + - req_eXPcpqqf1hZDxS + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_eXPcpqqf1hZDxS + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hP9KuuB1fWySn1rE3MV9I", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871255, + "currency": "eur", + "customer": "cus_PyeiRd0uamjkpD", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hP8KuuB1fWySnFqFZ163j", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:20:56 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hP9KuuB1fWySn1rE3MV9I/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_eXPcpqqf1hZDxS","request_duration_ms":473}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:57 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 6498ca7d-8867-4a1f-b723-591e00d8bdf9 + Original-Request: + - req_ZtwX9Ykka4YUV8 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_ZtwX9Ykka4YUV8 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hP9KuuB1fWySn1rE3MV9I", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871255, + "currency": "eur", + "customer": "cus_PyeiRd0uamjkpD", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hP9KuuB1fWySn12dUJrfp", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hP8KuuB1fWySnFqFZ163j", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:20:57 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hP9KuuB1fWySn1rE3MV9I + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_ZtwX9Ykka4YUV8","request_duration_ms":1103}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:57 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_YM5wEDEnuXBpBm + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hP9KuuB1fWySn1rE3MV9I", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871255, + "currency": "eur", + "customer": "cus_PyeiRd0uamjkpD", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hP9KuuB1fWySn12dUJrfp", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hP8KuuB1fWySnFqFZ163j", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:20:57 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hP9KuuB1fWySn1rE3MV9I/capture + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_YM5wEDEnuXBpBm","request_duration_ms":405}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:59 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 40e231b3-aef9-4771-b9cf-a982dff14990 + Original-Request: + - req_SeSpAM5UPrqWYH + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_SeSpAM5UPrqWYH + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hP9KuuB1fWySn1rE3MV9I", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871255, + "currency": "eur", + "customer": "cus_PyeiRd0uamjkpD", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hP9KuuB1fWySn12dUJrfp", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hP8KuuB1fWySnFqFZ163j", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:20:59 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hP9KuuB1fWySn1rE3MV9I + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_SeSpAM5UPrqWYH","request_duration_ms":1532}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:59 GMT + Content-Type: + - application/json + Content-Length: + - '1383' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_0WphKlQD6xRFlt + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hP9KuuB1fWySn1rE3MV9I", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871255, + "currency": "eur", + "customer": "cus_PyeiRd0uamjkpD", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hP9KuuB1fWySn12dUJrfp", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hP8KuuB1fWySnFqFZ163j", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:20:59 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml new file mode 100644 index 0000000000..fa7cabf881 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_Stripe_customer/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml @@ -0,0 +1,512 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=4000056655665556&card[exp_month]=12&card[exp_year]=2025&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_SuEUXxJcKAACHM","request_duration_ms":294}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:52 GMT + Content-Type: + - application/json + Content-Length: + - '995' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - b416d5bb-1638-4a2a-a8f4-8c592f1a6f6e + Original-Request: + - req_GasZ8Q7X3U3mI0 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_GasZ8Q7X3U3mI0 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1P8hP5KuuB1fWySnGGKWJfNZ", + "object": "payment_method", + "allow_redisplay": "unspecified", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "display_brand": "visa", + "exp_month": 12, + "exp_year": 2025, + "fingerprint": "QOaaYMtlTSm6xJM8", + "funding": "debit", + "generated_from": null, + "last4": "5556", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1713871252, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Tue, 23 Apr 2024 11:20:52 GMT +- request: + method: post + uri: https://api.stripe.com/v1/customers + body: + encoding: UTF-8 + string: name=Apple+Customer&email=applecustomer%40example.com + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_GasZ8Q7X3U3mI0","request_duration_ms":408}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:52 GMT + Content-Type: + - application/json + Content-Length: + - '649' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fcustomers; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 5f289aa6-594d-432e-abf9-7d59afba6450 + Original-Request: + - req_04iwSX9RtGGLNc + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_04iwSX9RtGGLNc + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "cus_PyeioItiFsOZMV", + "object": "customer", + "address": null, + "balance": 0, + "created": 1713871252, + "currency": null, + "default_source": null, + "delinquent": false, + "description": null, + "discount": null, + "email": "applecustomer@example.com", + "invoice_prefix": "C9CA4B1C", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null, + "rendering_options": null + }, + "livemode": false, + "metadata": {}, + "name": "Apple Customer", + "next_invoice_sequence": 1, + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none", + "test_clock": null + } + recorded_at: Tue, 23 Apr 2024 11:20:52 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=eur&payment_method=pm_1P8hP5KuuB1fWySnGGKWJfNZ&payment_method_types[0]=card&capture_method=manual&customer=cus_PyeioItiFsOZMV&setup_future_usage=off_session + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_04iwSX9RtGGLNc","request_duration_ms":511}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:53 GMT + Content-Type: + - application/json + Content-Length: + - '1368' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 62229c32-c569-4948-a445-3bcec44b32c5 + Original-Request: + - req_cwRm9yGWWWilV1 + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_cwRm9yGWWWilV1 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hP6KuuB1fWySn1g8Xuc3F", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871252, + "currency": "eur", + "customer": "cus_PyeioItiFsOZMV", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hP5KuuB1fWySnGGKWJfNZ", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:20:53 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hP6KuuB1fWySn1g8Xuc3F/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/11.1.0 + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_cwRm9yGWWWilV1","request_duration_ms":400}}' + Stripe-Version: + - '2024-04-10' + X-Stripe-Client-User-Agent: + - "" + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Tue, 23 Apr 2024 11:20:54 GMT + Content-Type: + - application/json + Content-Length: + - '1390' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to="coop" + Idempotency-Key: + - 4716d47f-d624-4876-ad10-4c0be48da55d + Original-Request: + - req_NSTT4HsXvES8zI + Report-To: + - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' + Reporting-Endpoints: + - coop="https://q.stripe.com/coop-report" + Request-Id: + - req_NSTT4HsXvES8zI + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2024-04-10' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3P8hP6KuuB1fWySn1g8Xuc3F", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "", + "confirmation_method": "automatic", + "created": 1713871252, + "currency": "eur", + "customer": "cus_PyeioItiFsOZMV", + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3P8hP6KuuB1fWySn1TOxVGOJ", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1P8hP5KuuB1fWySnGGKWJfNZ", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": "off_session", + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Tue, 23 Apr 2024 11:20:54 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml similarity index 89% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml index 44a82d621f..296b238fec 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_MTnLIBxp9QZPi2","request_duration_ms":529}}' + - '{"last_request_metrics":{"request_id":"req_0P0dFe67uRApKs","request_duration_ms":409}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:40:07 GMT + - Tue, 23 Apr 2024 11:20:43 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - '09b0f20d-fff3-4742-92c3-dd5365c9ad01' + - d4a19938-529a-4e02-bdc3-e064ed837d87 Original-Request: - - req_1ebsHfB6iwjJOf + - req_tJEw7BTVnIwxON Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_1ebsHfB6iwjJOf + - req_tJEw7BTVnIwxON Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h98KuuB1fWySnPmskOrli", + "id": "pm_1P8hOxKuuB1fWySntaLexRXT", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393607, + "created": 1713871243, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:40:07 GMT + recorded_at: Tue, 23 Apr 2024 11:20:43 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h98KuuB1fWySnPmskOrli&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hOxKuuB1fWySntaLexRXT&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_1ebsHfB6iwjJOf","request_duration_ms":577}}' + - '{"last_request_metrics":{"request_id":"req_tJEw7BTVnIwxON","request_duration_ms":425}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:40:07 GMT + - Tue, 23 Apr 2024 11:20:43 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 8d303864-b4fd-48c3-812e-7fdd7d4651f6 + - 826bc3ae-17b2-462f-80a3-52c36e0a32bf Original-Request: - - req_ClLaOaXNsGN8vL + - req_TD1ICnTqMW4RYP Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_ClLaOaXNsGN8vL + - req_TD1ICnTqMW4RYP Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h99KuuB1fWySn2OfdkSPl", + "id": "pi_3P8hOxKuuB1fWySn0QCLCcvU", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393607, + "created": 1713871243, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h98KuuB1fWySnPmskOrli", + "payment_method": "pm_1P8hOxKuuB1fWySntaLexRXT", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:40:07 GMT + recorded_at: Tue, 23 Apr 2024 11:20:43 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h99KuuB1fWySn2OfdkSPl/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOxKuuB1fWySn0QCLCcvU/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_ClLaOaXNsGN8vL","request_duration_ms":510}}' + - '{"last_request_metrics":{"request_id":"req_TD1ICnTqMW4RYP","request_duration_ms":392}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:40:08 GMT + - Tue, 23 Apr 2024 11:20:44 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - ea22918b-5183-4f44-ac27-63e7299546d3 + - b1cffb62-959e-4f88-96d8-09fe3dcc4e2e Original-Request: - - req_HGck6NCIT0pJKh + - req_XsFaGGEDA5oXou Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_HGck6NCIT0pJKh + - req_XsFaGGEDA5oXou Stripe-Should-Retry: - 'false' Stripe-Version: @@ -347,13 +347,13 @@ http_interactions: string: | { "error": { - "charge": "ch_3P6h99KuuB1fWySn2Sv33DqP", + "charge": "ch_3P8hOxKuuB1fWySn0WGRPCvo", "code": "card_declined", "decline_code": "card_velocity_exceeded", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined for making repeated attempts too frequently or exceeding its amount limit.", "payment_intent": { - "id": "pi_3P6h99KuuB1fWySn2OfdkSPl", + "id": "pi_3P8hOxKuuB1fWySn0QCLCcvU", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -370,19 +370,19 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393607, + "created": 1713871243, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": { - "charge": "ch_3P6h99KuuB1fWySn2Sv33DqP", + "charge": "ch_3P8hOxKuuB1fWySn0WGRPCvo", "code": "card_declined", "decline_code": "card_velocity_exceeded", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined for making repeated attempts too frequently or exceeding its amount limit.", "payment_method": { - "id": "pm_1P6h98KuuB1fWySnPmskOrli", + "id": "pm_1P8hOxKuuB1fWySntaLexRXT", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -424,7 +424,7 @@ http_interactions: }, "wallet": null }, - "created": 1713393607, + "created": 1713871243, "customer": null, "livemode": false, "metadata": { @@ -433,7 +433,7 @@ http_interactions: }, "type": "card_error" }, - "latest_charge": "ch_3P6h99KuuB1fWySn2Sv33DqP", + "latest_charge": "ch_3P8hOxKuuB1fWySn0WGRPCvo", "livemode": false, "metadata": { }, @@ -465,7 +465,7 @@ http_interactions: "transfer_group": null }, "payment_method": { - "id": "pm_1P6h98KuuB1fWySnPmskOrli", + "id": "pm_1P8hOxKuuB1fWySntaLexRXT", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -507,16 +507,16 @@ http_interactions: }, "wallet": null }, - "created": 1713393607, + "created": 1713871243, "customer": null, "livemode": false, "metadata": { }, "type": "card" }, - "request_log_url": "https://dashboard.stripe.com/test/logs/req_HGck6NCIT0pJKh?t=1713393607", + "request_log_url": "https://dashboard.stripe.com/test/logs/req_XsFaGGEDA5oXou?t=1713871243", "type": "card_error" } } - recorded_at: Wed, 17 Apr 2024 22:40:08 GMT + recorded_at: Tue, 23 Apr 2024 11:20:44 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml similarity index 89% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml index 9c9221e541..444212ce29 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_91pHPi8RnhHsyR","request_duration_ms":1226}}' + - '{"last_request_metrics":{"request_id":"req_FTXU1ZIbyaeQkr","request_duration_ms":432}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:40:00 GMT + - Tue, 23 Apr 2024 11:20:37 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 95f41437-34b8-485a-8963-822e63ab7c47 + - 88982d68-09f6-4fa6-a572-6089b7a160e0 Original-Request: - - req_vwfQav2GN0SQ4r + - req_gY62TO1N0stfzS Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_vwfQav2GN0SQ4r + - req_gY62TO1N0stfzS Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h92KuuB1fWySn0HDWMel6", + "id": "pm_1P8hOrKuuB1fWySnjiUbqScR", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393600, + "created": 1713871237, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:40:00 GMT + recorded_at: Tue, 23 Apr 2024 11:20:37 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h92KuuB1fWySn0HDWMel6&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hOrKuuB1fWySnjiUbqScR&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_vwfQav2GN0SQ4r","request_duration_ms":497}}' + - '{"last_request_metrics":{"request_id":"req_gY62TO1N0stfzS","request_duration_ms":427}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:40:00 GMT + - Tue, 23 Apr 2024 11:20:38 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 102af3c2-a4d1-4f44-ab50-2a4f827c0cf9 + - f938c98a-bc71-4e87-94d7-b2a92dbf21cd Original-Request: - - req_AcKGwgfHNiqkQ2 + - req_KfMG7sTUwbVfkB Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_AcKGwgfHNiqkQ2 + - req_KfMG7sTUwbVfkB Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h92KuuB1fWySn10XVZK55", + "id": "pi_3P8hOrKuuB1fWySn0tLsTsi5", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393600, + "created": 1713871237, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h92KuuB1fWySn0HDWMel6", + "payment_method": "pm_1P8hOrKuuB1fWySnjiUbqScR", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:40:00 GMT + recorded_at: Tue, 23 Apr 2024 11:20:38 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h92KuuB1fWySn10XVZK55/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOrKuuB1fWySn0tLsTsi5/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_AcKGwgfHNiqkQ2","request_duration_ms":510}}' + - '{"last_request_metrics":{"request_id":"req_KfMG7sTUwbVfkB","request_duration_ms":389}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:40:02 GMT + - Tue, 23 Apr 2024 11:20:38 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 961364ed-f77a-46c9-8425-bff589bef4d6 + - e2035da6-4fe9-4851-8877-612b765b1b59 Original-Request: - - req_obyVJ21H3H5mhN + - req_D1X2WHpplGz7bG Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_obyVJ21H3H5mhN + - req_D1X2WHpplGz7bG Stripe-Should-Retry: - 'false' Stripe-Version: @@ -347,13 +347,13 @@ http_interactions: string: | { "error": { - "charge": "ch_3P6h92KuuB1fWySn1vimbcUq", + "charge": "ch_3P8hOrKuuB1fWySn0gEvcQdM", "code": "expired_card", "doc_url": "https://stripe.com/docs/error-codes/expired-card", "message": "Your card has expired.", "param": "exp_month", "payment_intent": { - "id": "pi_3P6h92KuuB1fWySn10XVZK55", + "id": "pi_3P8hOrKuuB1fWySn0tLsTsi5", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -370,19 +370,19 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393600, + "created": 1713871237, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": { - "charge": "ch_3P6h92KuuB1fWySn1vimbcUq", + "charge": "ch_3P8hOrKuuB1fWySn0gEvcQdM", "code": "expired_card", "doc_url": "https://stripe.com/docs/error-codes/expired-card", "message": "Your card has expired.", "param": "exp_month", "payment_method": { - "id": "pm_1P6h92KuuB1fWySn0HDWMel6", + "id": "pm_1P8hOrKuuB1fWySnjiUbqScR", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -424,7 +424,7 @@ http_interactions: }, "wallet": null }, - "created": 1713393600, + "created": 1713871237, "customer": null, "livemode": false, "metadata": { @@ -433,7 +433,7 @@ http_interactions: }, "type": "card_error" }, - "latest_charge": "ch_3P6h92KuuB1fWySn1vimbcUq", + "latest_charge": "ch_3P8hOrKuuB1fWySn0gEvcQdM", "livemode": false, "metadata": { }, @@ -465,7 +465,7 @@ http_interactions: "transfer_group": null }, "payment_method": { - "id": "pm_1P6h92KuuB1fWySn0HDWMel6", + "id": "pm_1P8hOrKuuB1fWySnjiUbqScR", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -507,16 +507,16 @@ http_interactions: }, "wallet": null }, - "created": 1713393600, + "created": 1713871237, "customer": null, "livemode": false, "metadata": { }, "type": "card" }, - "request_log_url": "https://dashboard.stripe.com/test/logs/req_obyVJ21H3H5mhN?t=1713393601", + "request_log_url": "https://dashboard.stripe.com/test/logs/req_D1X2WHpplGz7bG?t=1713871238", "type": "card_error" } } - recorded_at: Wed, 17 Apr 2024 22:40:02 GMT + recorded_at: Tue, 23 Apr 2024 11:20:38 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml similarity index 89% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml index 2a4f03f7be..fb80c6fa30 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_zvf4CAVwSgnYlD","request_duration_ms":325}}' + - '{"last_request_metrics":{"request_id":"req_CLAQeFdk7h5EGj","request_duration_ms":318}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:51 GMT + - Tue, 23 Apr 2024 11:20:29 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 3e2ebf31-c7da-4577-a8dc-1a2b58d16b4f + - '07758b53-1aa2-4a44-8916-d19cad8a069f' Original-Request: - - req_JEskdY1fDUZiGK + - req_0kskJiPnIOJVHG Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_JEskdY1fDUZiGK + - req_0kskJiPnIOJVHG Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8tKuuB1fWySnVkyyCW9S", + "id": "pm_1P8hOjKuuB1fWySnP7gYrBVw", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393591, + "created": 1713871229, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:51 GMT + recorded_at: Tue, 23 Apr 2024 11:20:29 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8tKuuB1fWySnVkyyCW9S&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hOjKuuB1fWySnP7gYrBVw&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_JEskdY1fDUZiGK","request_duration_ms":549}}' + - '{"last_request_metrics":{"request_id":"req_0kskJiPnIOJVHG","request_duration_ms":538}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:51 GMT + - Tue, 23 Apr 2024 11:20:30 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - a9b30257-3b69-44bb-b62c-4f1b28088b3d + - d1efddf1-415e-49fb-96b6-06df34262172 Original-Request: - - req_ozBWc8q3xpqvDc + - req_UzfS2TikGjkDvJ Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_ozBWc8q3xpqvDc + - req_UzfS2TikGjkDvJ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8tKuuB1fWySn0b4wKpwW", + "id": "pi_3P8hOjKuuB1fWySn1ouX7iIF", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393591, + "created": 1713871229, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8tKuuB1fWySnVkyyCW9S", + "payment_method": "pm_1P8hOjKuuB1fWySnP7gYrBVw", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:51 GMT + recorded_at: Tue, 23 Apr 2024 11:20:30 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8tKuuB1fWySn0b4wKpwW/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOjKuuB1fWySn1ouX7iIF/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_ozBWc8q3xpqvDc","request_duration_ms":507}}' + - '{"last_request_metrics":{"request_id":"req_UzfS2TikGjkDvJ","request_duration_ms":409}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:52 GMT + - Tue, 23 Apr 2024 11:20:31 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 0b9dcf4b-a558-4d29-8bd2-39741508a496 + - 8c6748e1-aa46-478d-a479-9a71de90eb22 Original-Request: - - req_P1pWIPxC0iMtgI + - req_gGUfDC9JLGf480 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_P1pWIPxC0iMtgI + - req_gGUfDC9JLGf480 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -347,13 +347,13 @@ http_interactions: string: | { "error": { - "charge": "ch_3P6h8tKuuB1fWySn0h2YuoXV", + "charge": "ch_3P8hOjKuuB1fWySn1cxYKudg", "code": "card_declined", "decline_code": "generic_decline", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined.", "payment_intent": { - "id": "pi_3P6h8tKuuB1fWySn0b4wKpwW", + "id": "pi_3P8hOjKuuB1fWySn1ouX7iIF", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -370,19 +370,19 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393591, + "created": 1713871229, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": { - "charge": "ch_3P6h8tKuuB1fWySn0h2YuoXV", + "charge": "ch_3P8hOjKuuB1fWySn1cxYKudg", "code": "card_declined", "decline_code": "generic_decline", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined.", "payment_method": { - "id": "pm_1P6h8tKuuB1fWySnVkyyCW9S", + "id": "pm_1P8hOjKuuB1fWySnP7gYrBVw", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -424,7 +424,7 @@ http_interactions: }, "wallet": null }, - "created": 1713393591, + "created": 1713871229, "customer": null, "livemode": false, "metadata": { @@ -433,7 +433,7 @@ http_interactions: }, "type": "card_error" }, - "latest_charge": "ch_3P6h8tKuuB1fWySn0h2YuoXV", + "latest_charge": "ch_3P8hOjKuuB1fWySn1cxYKudg", "livemode": false, "metadata": { }, @@ -465,7 +465,7 @@ http_interactions: "transfer_group": null }, "payment_method": { - "id": "pm_1P6h8tKuuB1fWySnVkyyCW9S", + "id": "pm_1P8hOjKuuB1fWySnP7gYrBVw", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -507,16 +507,16 @@ http_interactions: }, "wallet": null }, - "created": 1713393591, + "created": 1713871229, "customer": null, "livemode": false, "metadata": { }, "type": "card" }, - "request_log_url": "https://dashboard.stripe.com/test/logs/req_P1pWIPxC0iMtgI?t=1713393592", + "request_log_url": "https://dashboard.stripe.com/test/logs/req_gGUfDC9JLGf480?t=1713871230", "type": "card_error" } } - recorded_at: Wed, 17 Apr 2024 22:39:53 GMT + recorded_at: Tue, 23 Apr 2024 11:20:31 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml similarity index 89% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml index 0a57cb8215..f6f8a92529 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_AcKGwgfHNiqkQ2","request_duration_ms":510}}' + - '{"last_request_metrics":{"request_id":"req_KfMG7sTUwbVfkB","request_duration_ms":389}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:40:02 GMT + - Tue, 23 Apr 2024 11:20:39 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - c138f19e-3512-4b4a-ab08-b2d672ecfc54 + - 351a3773-aaaf-480b-a9df-f84107b9e010 Original-Request: - - req_AT9S1WAn7ax8yv + - req_ta6HZdIlldVny4 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_AT9S1WAn7ax8yv + - req_ta6HZdIlldVny4 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h94KuuB1fWySnQFqcyGd2", + "id": "pm_1P8hOtKuuB1fWySnSr39glVr", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393602, + "created": 1713871239, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:40:02 GMT + recorded_at: Tue, 23 Apr 2024 11:20:39 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h94KuuB1fWySnQFqcyGd2&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hOtKuuB1fWySnSr39glVr&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_AT9S1WAn7ax8yv","request_duration_ms":600}}' + - '{"last_request_metrics":{"request_id":"req_ta6HZdIlldVny4","request_duration_ms":467}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:40:03 GMT + - Tue, 23 Apr 2024 11:20:39 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - d290a537-0a3c-4289-a344-9798fab37425 + - 6451ed99-2f09-47ea-9dc0-72a18f36e276 Original-Request: - - req_wjgo9m5BZbNXmh + - req_UFCEYmCStF5gkT Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_wjgo9m5BZbNXmh + - req_UFCEYmCStF5gkT Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h95KuuB1fWySn097LCCVO", + "id": "pi_3P8hOtKuuB1fWySn0wyaR4ua", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393603, + "created": 1713871239, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h94KuuB1fWySnQFqcyGd2", + "payment_method": "pm_1P8hOtKuuB1fWySnSr39glVr", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:40:03 GMT + recorded_at: Tue, 23 Apr 2024 11:20:39 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h95KuuB1fWySn097LCCVO/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOtKuuB1fWySn0wyaR4ua/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_wjgo9m5BZbNXmh","request_duration_ms":509}}' + - '{"last_request_metrics":{"request_id":"req_UFCEYmCStF5gkT","request_duration_ms":416}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:40:04 GMT + - Tue, 23 Apr 2024 11:20:40 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 45c87915-37a5-4aec-b237-400cf3fcdb98 + - df4611ab-d527-4c86-a356-c4dae19c4f0c Original-Request: - - req_vnOxwSvTNRDLKP + - req_CSrOegPcnD3VnG Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_vnOxwSvTNRDLKP + - req_CSrOegPcnD3VnG Stripe-Should-Retry: - 'false' Stripe-Version: @@ -347,13 +347,13 @@ http_interactions: string: | { "error": { - "charge": "ch_3P6h95KuuB1fWySn02izQ9TQ", + "charge": "ch_3P8hOtKuuB1fWySn0WkfjXqH", "code": "incorrect_cvc", "doc_url": "https://stripe.com/docs/error-codes/incorrect-cvc", "message": "Your card's security code is incorrect.", "param": "cvc", "payment_intent": { - "id": "pi_3P6h95KuuB1fWySn097LCCVO", + "id": "pi_3P8hOtKuuB1fWySn0wyaR4ua", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -370,19 +370,19 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393603, + "created": 1713871239, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": { - "charge": "ch_3P6h95KuuB1fWySn02izQ9TQ", + "charge": "ch_3P8hOtKuuB1fWySn0WkfjXqH", "code": "incorrect_cvc", "doc_url": "https://stripe.com/docs/error-codes/incorrect-cvc", "message": "Your card's security code is incorrect.", "param": "cvc", "payment_method": { - "id": "pm_1P6h94KuuB1fWySnQFqcyGd2", + "id": "pm_1P8hOtKuuB1fWySnSr39glVr", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -424,7 +424,7 @@ http_interactions: }, "wallet": null }, - "created": 1713393602, + "created": 1713871239, "customer": null, "livemode": false, "metadata": { @@ -433,7 +433,7 @@ http_interactions: }, "type": "card_error" }, - "latest_charge": "ch_3P6h95KuuB1fWySn02izQ9TQ", + "latest_charge": "ch_3P8hOtKuuB1fWySn0WkfjXqH", "livemode": false, "metadata": { }, @@ -465,7 +465,7 @@ http_interactions: "transfer_group": null }, "payment_method": { - "id": "pm_1P6h94KuuB1fWySnQFqcyGd2", + "id": "pm_1P8hOtKuuB1fWySnSr39glVr", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -507,16 +507,16 @@ http_interactions: }, "wallet": null }, - "created": 1713393602, + "created": 1713871239, "customer": null, "livemode": false, "metadata": { }, "type": "card" }, - "request_log_url": "https://dashboard.stripe.com/test/logs/req_vnOxwSvTNRDLKP?t=1713393603", + "request_log_url": "https://dashboard.stripe.com/test/logs/req_CSrOegPcnD3VnG?t=1713871239", "type": "card_error" } } - recorded_at: Wed, 17 Apr 2024 22:40:04 GMT + recorded_at: Tue, 23 Apr 2024 11:20:40 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml similarity index 89% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml index 2f4c58fce1..4214cdd814 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_ozBWc8q3xpqvDc","request_duration_ms":507}}' + - '{"last_request_metrics":{"request_id":"req_UzfS2TikGjkDvJ","request_duration_ms":409}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:53 GMT + - Tue, 23 Apr 2024 11:20:31 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 811b2fb6-a22d-4e1c-b24f-99023c6c8c06 + - 6e9a7b4b-4c69-497b-a7eb-45e507e3506d Original-Request: - - req_X81UrQj5D2fIoG + - req_7BzxqpXKYTBsaC Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_X81UrQj5D2fIoG + - req_7BzxqpXKYTBsaC Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8vKuuB1fWySnVKifRHk9", + "id": "pm_1P8hOlKuuB1fWySnMz294q8D", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393593, + "created": 1713871231, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:53 GMT + recorded_at: Tue, 23 Apr 2024 11:20:31 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8vKuuB1fWySnVKifRHk9&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hOlKuuB1fWySnMz294q8D&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_X81UrQj5D2fIoG","request_duration_ms":497}}' + - '{"last_request_metrics":{"request_id":"req_7BzxqpXKYTBsaC","request_duration_ms":495}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:54 GMT + - Tue, 23 Apr 2024 11:20:32 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 212396f7-3cd5-491b-95ba-e1dc90a8b0af + - b1371ab7-5dc0-4192-97a9-a2a2e92e1d62 Original-Request: - - req_tdGmWRacIg71uZ + - req_4GGugKYm02eIx4 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_tdGmWRacIg71uZ + - req_4GGugKYm02eIx4 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8vKuuB1fWySn176iLXFn", + "id": "pi_3P8hOlKuuB1fWySn2gfd39po", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393593, + "created": 1713871231, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8vKuuB1fWySnVKifRHk9", + "payment_method": "pm_1P8hOlKuuB1fWySnMz294q8D", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:54 GMT + recorded_at: Tue, 23 Apr 2024 11:20:32 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8vKuuB1fWySn176iLXFn/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOlKuuB1fWySn2gfd39po/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_tdGmWRacIg71uZ","request_duration_ms":509}}' + - '{"last_request_metrics":{"request_id":"req_4GGugKYm02eIx4","request_duration_ms":415}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:55 GMT + - Tue, 23 Apr 2024 11:20:33 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 19c2ea46-8301-4ca7-a76e-91eafa74a68f + - 94c02762-13f1-4c86-90d7-e78b4d4081a7 Original-Request: - - req_Uinf6vD8KZj9v4 + - req_ZIPBAdotb8jZg4 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_Uinf6vD8KZj9v4 + - req_ZIPBAdotb8jZg4 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -347,13 +347,13 @@ http_interactions: string: | { "error": { - "charge": "ch_3P6h8vKuuB1fWySn1dijUtHM", + "charge": "ch_3P8hOlKuuB1fWySn2U29gWfE", "code": "card_declined", "decline_code": "insufficient_funds", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card has insufficient funds.", "payment_intent": { - "id": "pi_3P6h8vKuuB1fWySn176iLXFn", + "id": "pi_3P8hOlKuuB1fWySn2gfd39po", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -370,19 +370,19 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393593, + "created": 1713871231, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": { - "charge": "ch_3P6h8vKuuB1fWySn1dijUtHM", + "charge": "ch_3P8hOlKuuB1fWySn2U29gWfE", "code": "card_declined", "decline_code": "insufficient_funds", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card has insufficient funds.", "payment_method": { - "id": "pm_1P6h8vKuuB1fWySnVKifRHk9", + "id": "pm_1P8hOlKuuB1fWySnMz294q8D", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -424,7 +424,7 @@ http_interactions: }, "wallet": null }, - "created": 1713393593, + "created": 1713871231, "customer": null, "livemode": false, "metadata": { @@ -433,7 +433,7 @@ http_interactions: }, "type": "card_error" }, - "latest_charge": "ch_3P6h8vKuuB1fWySn1dijUtHM", + "latest_charge": "ch_3P8hOlKuuB1fWySn2U29gWfE", "livemode": false, "metadata": { }, @@ -465,7 +465,7 @@ http_interactions: "transfer_group": null }, "payment_method": { - "id": "pm_1P6h8vKuuB1fWySnVKifRHk9", + "id": "pm_1P8hOlKuuB1fWySnMz294q8D", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -507,16 +507,16 @@ http_interactions: }, "wallet": null }, - "created": 1713393593, + "created": 1713871231, "customer": null, "livemode": false, "metadata": { }, "type": "card" }, - "request_log_url": "https://dashboard.stripe.com/test/logs/req_Uinf6vD8KZj9v4?t=1713393594", + "request_log_url": "https://dashboard.stripe.com/test/logs/req_ZIPBAdotb8jZg4?t=1713871232", "type": "card_error" } } - recorded_at: Wed, 17 Apr 2024 22:39:55 GMT + recorded_at: Tue, 23 Apr 2024 11:20:33 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml similarity index 89% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml index 0fc939c873..58edacb702 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_tdGmWRacIg71uZ","request_duration_ms":509}}' + - '{"last_request_metrics":{"request_id":"req_4GGugKYm02eIx4","request_duration_ms":415}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:55 GMT + - Tue, 23 Apr 2024 11:20:33 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - d0d41881-d7af-4ce4-a47c-4ae4b0843c6e + - 4d397d2a-d89b-4fd8-866f-74c03f9ae451 Original-Request: - - req_xLfba5hGPhEt2G + - req_Tk2Da6Ib9v7iwQ Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_xLfba5hGPhEt2G + - req_Tk2Da6Ib9v7iwQ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8xKuuB1fWySnLRqxbX0I", + "id": "pm_1P8hOnKuuB1fWySnx8EJpGhb", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393595, + "created": 1713871233, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:55 GMT + recorded_at: Tue, 23 Apr 2024 11:20:33 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8xKuuB1fWySnLRqxbX0I&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hOnKuuB1fWySnx8EJpGhb&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_xLfba5hGPhEt2G","request_duration_ms":496}}' + - '{"last_request_metrics":{"request_id":"req_Tk2Da6Ib9v7iwQ","request_duration_ms":439}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:56 GMT + - Tue, 23 Apr 2024 11:20:34 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - c8d47cf3-ea2b-4a50-8591-18fa853b3a59 + - c39f7b2f-badb-4c89-b5e4-ec3627b4f0e7 Original-Request: - - req_64JFtjubv6sXiB + - req_HbCKCMYMlXyGXr Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_64JFtjubv6sXiB + - req_HbCKCMYMlXyGXr Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8xKuuB1fWySn1DJmrN9c", + "id": "pi_3P8hOnKuuB1fWySn1Lfg4kYU", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393595, + "created": 1713871233, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8xKuuB1fWySnLRqxbX0I", + "payment_method": "pm_1P8hOnKuuB1fWySnx8EJpGhb", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:56 GMT + recorded_at: Tue, 23 Apr 2024 11:20:34 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8xKuuB1fWySn1DJmrN9c/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOnKuuB1fWySn1Lfg4kYU/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_64JFtjubv6sXiB","request_duration_ms":509}}' + - '{"last_request_metrics":{"request_id":"req_HbCKCMYMlXyGXr","request_duration_ms":411}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:57 GMT + - Tue, 23 Apr 2024 11:20:35 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 0a23bb08-3af7-4271-a71c-8bcfc1270f8d + - 21964356-c5c7-4e3a-97e2-d163adf94548 Original-Request: - - req_pHn2N3UwZjAJka + - req_MzZhKZKuZqs3iH Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_pHn2N3UwZjAJka + - req_MzZhKZKuZqs3iH Stripe-Should-Retry: - 'false' Stripe-Version: @@ -347,13 +347,13 @@ http_interactions: string: | { "error": { - "charge": "ch_3P6h8xKuuB1fWySn1og4ys7e", + "charge": "ch_3P8hOnKuuB1fWySn12NqEdJr", "code": "card_declined", "decline_code": "lost_card", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined.", "payment_intent": { - "id": "pi_3P6h8xKuuB1fWySn1DJmrN9c", + "id": "pi_3P8hOnKuuB1fWySn1Lfg4kYU", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -370,19 +370,19 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393595, + "created": 1713871233, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": { - "charge": "ch_3P6h8xKuuB1fWySn1og4ys7e", + "charge": "ch_3P8hOnKuuB1fWySn12NqEdJr", "code": "card_declined", "decline_code": "lost_card", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined.", "payment_method": { - "id": "pm_1P6h8xKuuB1fWySnLRqxbX0I", + "id": "pm_1P8hOnKuuB1fWySnx8EJpGhb", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -424,7 +424,7 @@ http_interactions: }, "wallet": null }, - "created": 1713393595, + "created": 1713871233, "customer": null, "livemode": false, "metadata": { @@ -433,7 +433,7 @@ http_interactions: }, "type": "card_error" }, - "latest_charge": "ch_3P6h8xKuuB1fWySn1og4ys7e", + "latest_charge": "ch_3P8hOnKuuB1fWySn12NqEdJr", "livemode": false, "metadata": { }, @@ -465,7 +465,7 @@ http_interactions: "transfer_group": null }, "payment_method": { - "id": "pm_1P6h8xKuuB1fWySnLRqxbX0I", + "id": "pm_1P8hOnKuuB1fWySnx8EJpGhb", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -507,16 +507,16 @@ http_interactions: }, "wallet": null }, - "created": 1713393595, + "created": 1713871233, "customer": null, "livemode": false, "metadata": { }, "type": "card" }, - "request_log_url": "https://dashboard.stripe.com/test/logs/req_pHn2N3UwZjAJka?t=1713393596", + "request_log_url": "https://dashboard.stripe.com/test/logs/req_MzZhKZKuZqs3iH?t=1713871234", "type": "card_error" } } - recorded_at: Wed, 17 Apr 2024 22:39:57 GMT + recorded_at: Tue, 23 Apr 2024 11:20:35 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml similarity index 89% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml index 295baaa8f7..27adaf9c49 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_wjgo9m5BZbNXmh","request_duration_ms":509}}' + - '{"last_request_metrics":{"request_id":"req_UFCEYmCStF5gkT","request_duration_ms":416}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:40:05 GMT + - Tue, 23 Apr 2024 11:20:41 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - d5fc1c0d-9ed9-4c00-acf9-f4be04c6b19a + - 60897254-a14b-4cc0-ab5d-edcaec713df6 Original-Request: - - req_vIHentAe5XkqId + - req_0ABTeq9p7qRCrY Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_vIHentAe5XkqId + - req_0ABTeq9p7qRCrY Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h96KuuB1fWySnYl63gMcD", + "id": "pm_1P8hOvKuuB1fWySnmICExK3O", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393604, + "created": 1713871241, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:40:05 GMT + recorded_at: Tue, 23 Apr 2024 11:20:41 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h96KuuB1fWySnYl63gMcD&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hOvKuuB1fWySnmICExK3O&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_vIHentAe5XkqId","request_duration_ms":577}}' + - '{"last_request_metrics":{"request_id":"req_0ABTeq9p7qRCrY","request_duration_ms":463}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:40:05 GMT + - Tue, 23 Apr 2024 11:20:41 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - c11e2fb3-ceab-4dfe-8d7a-96280372a227 + - 0ef06f67-601c-499c-9882-04a35311c597 Original-Request: - - req_MTnLIBxp9QZPi2 + - req_0P0dFe67uRApKs Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_MTnLIBxp9QZPi2 + - req_0P0dFe67uRApKs Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h97KuuB1fWySn0bvt3XeL", + "id": "pi_3P8hOvKuuB1fWySn0gssyD54", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393605, + "created": 1713871241, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h96KuuB1fWySnYl63gMcD", + "payment_method": "pm_1P8hOvKuuB1fWySnmICExK3O", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:40:05 GMT + recorded_at: Tue, 23 Apr 2024 11:20:41 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h97KuuB1fWySn0bvt3XeL/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOvKuuB1fWySn0gssyD54/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_MTnLIBxp9QZPi2","request_duration_ms":529}}' + - '{"last_request_metrics":{"request_id":"req_0P0dFe67uRApKs","request_duration_ms":409}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:40:06 GMT + - Tue, 23 Apr 2024 11:20:42 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 483ca1ff-5a07-41ab-bebf-f2ca9dc6531e + - 3fe19571-82c8-4409-9e74-910a63b99ef3 Original-Request: - - req_wyhh7XdnfzCAm0 + - req_QTxZT4if0gpdwK Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_wyhh7XdnfzCAm0 + - req_QTxZT4if0gpdwK Stripe-Should-Retry: - 'false' Stripe-Version: @@ -347,12 +347,12 @@ http_interactions: string: | { "error": { - "charge": "ch_3P6h97KuuB1fWySn07xJWGvn", + "charge": "ch_3P8hOvKuuB1fWySn0Q1qaMc9", "code": "processing_error", "doc_url": "https://stripe.com/docs/error-codes/processing-error", "message": "An error occurred while processing your card. Try again in a little bit.", "payment_intent": { - "id": "pi_3P6h97KuuB1fWySn0bvt3XeL", + "id": "pi_3P8hOvKuuB1fWySn0gssyD54", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -369,18 +369,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393605, + "created": 1713871241, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": { - "charge": "ch_3P6h97KuuB1fWySn07xJWGvn", + "charge": "ch_3P8hOvKuuB1fWySn0Q1qaMc9", "code": "processing_error", "doc_url": "https://stripe.com/docs/error-codes/processing-error", "message": "An error occurred while processing your card. Try again in a little bit.", "payment_method": { - "id": "pm_1P6h96KuuB1fWySnYl63gMcD", + "id": "pm_1P8hOvKuuB1fWySnmICExK3O", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -422,7 +422,7 @@ http_interactions: }, "wallet": null }, - "created": 1713393604, + "created": 1713871241, "customer": null, "livemode": false, "metadata": { @@ -431,7 +431,7 @@ http_interactions: }, "type": "card_error" }, - "latest_charge": "ch_3P6h97KuuB1fWySn07xJWGvn", + "latest_charge": "ch_3P8hOvKuuB1fWySn0Q1qaMc9", "livemode": false, "metadata": { }, @@ -463,7 +463,7 @@ http_interactions: "transfer_group": null }, "payment_method": { - "id": "pm_1P6h96KuuB1fWySnYl63gMcD", + "id": "pm_1P8hOvKuuB1fWySnmICExK3O", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -505,16 +505,16 @@ http_interactions: }, "wallet": null }, - "created": 1713393604, + "created": 1713871241, "customer": null, "livemode": false, "metadata": { }, "type": "card" }, - "request_log_url": "https://dashboard.stripe.com/test/logs/req_wyhh7XdnfzCAm0?t=1713393605", + "request_log_url": "https://dashboard.stripe.com/test/logs/req_QTxZT4if0gpdwK?t=1713871241", "type": "card_error" } } - recorded_at: Wed, 17 Apr 2024 22:40:06 GMT + recorded_at: Tue, 23 Apr 2024 11:20:42 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml similarity index 89% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml index 160c03b9af..372cba76f7 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_64JFtjubv6sXiB","request_duration_ms":509}}' + - '{"last_request_metrics":{"request_id":"req_HbCKCMYMlXyGXr","request_duration_ms":411}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:57 GMT + - Tue, 23 Apr 2024 11:20:35 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 9b80cc2a-8752-4ccc-949c-427e3892c6f8 + - 03e5054a-e24b-4f76-81d6-55cf44579543 Original-Request: - - req_VroYwmmGAe7bGf + - req_zP0BeHy4YnIt0l Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_VroYwmmGAe7bGf + - req_zP0BeHy4YnIt0l Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8zKuuB1fWySnyte7TuZO", + "id": "pm_1P8hOpKuuB1fWySnOlYgiKQ7", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393597, + "created": 1713871235, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:57 GMT + recorded_at: Tue, 23 Apr 2024 11:20:35 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8zKuuB1fWySnyte7TuZO&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hOpKuuB1fWySnOlYgiKQ7&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_VroYwmmGAe7bGf","request_duration_ms":499}}' + - '{"last_request_metrics":{"request_id":"req_zP0BeHy4YnIt0l","request_duration_ms":433}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:58 GMT + - Tue, 23 Apr 2024 11:20:36 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 005b8a2f-5672-4d21-aebe-188d3bb56506 + - 7857cdf4-bb31-4f83-b0ba-764680363e61 Original-Request: - - req_91pHPi8RnhHsyR + - req_FTXU1ZIbyaeQkr Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_91pHPi8RnhHsyR + - req_FTXU1ZIbyaeQkr Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h90KuuB1fWySn2SMGU8mf", + "id": "pi_3P8hOpKuuB1fWySn02Y7jLP8", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393598, + "created": 1713871235, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8zKuuB1fWySnyte7TuZO", + "payment_method": "pm_1P8hOpKuuB1fWySnOlYgiKQ7", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:58 GMT + recorded_at: Tue, 23 Apr 2024 11:20:36 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h90KuuB1fWySn2SMGU8mf/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOpKuuB1fWySn02Y7jLP8/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_91pHPi8RnhHsyR","request_duration_ms":1226}}' + - '{"last_request_metrics":{"request_id":"req_FTXU1ZIbyaeQkr","request_duration_ms":432}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:59 GMT + - Tue, 23 Apr 2024 11:20:37 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 37315a7f-b15c-4f95-88ad-0ef2f556d2da + - f77c4d0f-c4e8-49aa-98b4-29df76dbb935 Original-Request: - - req_tJpyXlIUqME2C6 + - req_bEvAJU8I9JI3lP Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_tJpyXlIUqME2C6 + - req_bEvAJU8I9JI3lP Stripe-Should-Retry: - 'false' Stripe-Version: @@ -347,13 +347,13 @@ http_interactions: string: | { "error": { - "charge": "ch_3P6h90KuuB1fWySn2uILaF5P", + "charge": "ch_3P8hOpKuuB1fWySn03R1BqjO", "code": "card_declined", "decline_code": "stolen_card", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined.", "payment_intent": { - "id": "pi_3P6h90KuuB1fWySn2SMGU8mf", + "id": "pi_3P8hOpKuuB1fWySn02Y7jLP8", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -370,19 +370,19 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393598, + "created": 1713871235, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": { - "charge": "ch_3P6h90KuuB1fWySn2uILaF5P", + "charge": "ch_3P8hOpKuuB1fWySn03R1BqjO", "code": "card_declined", "decline_code": "stolen_card", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined.", "payment_method": { - "id": "pm_1P6h8zKuuB1fWySnyte7TuZO", + "id": "pm_1P8hOpKuuB1fWySnOlYgiKQ7", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -424,7 +424,7 @@ http_interactions: }, "wallet": null }, - "created": 1713393597, + "created": 1713871235, "customer": null, "livemode": false, "metadata": { @@ -433,7 +433,7 @@ http_interactions: }, "type": "card_error" }, - "latest_charge": "ch_3P6h90KuuB1fWySn2uILaF5P", + "latest_charge": "ch_3P8hOpKuuB1fWySn03R1BqjO", "livemode": false, "metadata": { }, @@ -465,7 +465,7 @@ http_interactions: "transfer_group": null }, "payment_method": { - "id": "pm_1P6h8zKuuB1fWySnyte7TuZO", + "id": "pm_1P8hOpKuuB1fWySnOlYgiKQ7", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -507,16 +507,16 @@ http_interactions: }, "wallet": null }, - "created": 1713393597, + "created": 1713871235, "customer": null, "livemode": false, "metadata": { }, "type": "card" }, - "request_log_url": "https://dashboard.stripe.com/test/logs/req_tJpyXlIUqME2C6?t=1713393599", + "request_log_url": "https://dashboard.stripe.com/test/logs/req_bEvAJU8I9JI3lP?t=1713871236", "type": "card_error" } } - recorded_at: Wed, 17 Apr 2024 22:39:59 GMT + recorded_at: Tue, 23 Apr 2024 11:20:37 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml index 87d9f2b0f0..044f8e4852 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_8RoSQ8dLWnQaG2","request_duration_ms":946}}' + - '{"last_request_metrics":{"request_id":"req_kYtLGywFxGssP5","request_duration_ms":1022}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:56 GMT + - Tue, 23 Apr 2024 11:19:37 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - dc2bb939-488a-4e51-acd0-f41ddadbff8e + - 7dd9ec98-ec26-49e5-8a2e-e55271f1e8ca Original-Request: - - req_yDVoUX6jGomVz3 + - req_NRjdFQhRkTMioQ Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_yDVoUX6jGomVz3 + - req_NRjdFQhRkTMioQ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h80KuuB1fWySnKLIYVtP4", + "id": "pm_1P8hNtKuuB1fWySnC8hS8ai0", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393536, + "created": 1713871177, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:38:56 GMT + recorded_at: Tue, 23 Apr 2024 11:19:37 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h80KuuB1fWySnKLIYVtP4&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hNtKuuB1fWySnC8hS8ai0&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_yDVoUX6jGomVz3","request_duration_ms":521}}' + - '{"last_request_metrics":{"request_id":"req_NRjdFQhRkTMioQ","request_duration_ms":512}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:57 GMT + - Tue, 23 Apr 2024 11:19:37 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - d56f56a8-973f-4586-baed-3d6321ccfedd + - 97db8c6b-3383-421e-9ccd-99f12dcd4b37 Original-Request: - - req_7zJLlUTwf7naGK + - req_NrilVTb819m4pV Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_7zJLlUTwf7naGK + - req_NrilVTb819m4pV Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h81KuuB1fWySn1i3iTLoX", + "id": "pi_3P8hNtKuuB1fWySn2oOeGD9B", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393537, + "created": 1713871177, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h80KuuB1fWySnKLIYVtP4", + "payment_method": "pm_1P8hNtKuuB1fWySnC8hS8ai0", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:57 GMT + recorded_at: Tue, 23 Apr 2024 11:19:38 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h81KuuB1fWySn1i3iTLoX/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNtKuuB1fWySn2oOeGD9B/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_7zJLlUTwf7naGK","request_duration_ms":509}}' + - '{"last_request_metrics":{"request_id":"req_NrilVTb819m4pV","request_duration_ms":612}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:58 GMT + - Tue, 23 Apr 2024 11:19:39 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - e0e61825-c787-4fce-8f17-c83e0ef3e61c + - 9308d030-49e2-49b5-83cf-35abd58e60b2 Original-Request: - - req_79R8PUCuDi3D9P + - req_FKzxCoUcrbqye9 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_79R8PUCuDi3D9P + - req_FKzxCoUcrbqye9 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h81KuuB1fWySn1i3iTLoX", + "id": "pi_3P8hNtKuuB1fWySn2oOeGD9B", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393537, + "created": 1713871177, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h81KuuB1fWySn1eMa5DyD", + "latest_charge": "ch_3P8hNtKuuB1fWySn27ThUZBq", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h80KuuB1fWySnKLIYVtP4", + "payment_method": "pm_1P8hNtKuuB1fWySnC8hS8ai0", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,10 +398,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:58 GMT + recorded_at: Tue, 23 Apr 2024 11:19:39 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h81KuuB1fWySn1i3iTLoX + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNtKuuB1fWySn2oOeGD9B body: encoding: US-ASCII string: '' @@ -413,7 +413,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_79R8PUCuDi3D9P","request_duration_ms":993}}' + - '{"last_request_metrics":{"request_id":"req_FKzxCoUcrbqye9","request_duration_ms":983}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -430,7 +430,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:58 GMT + - Tue, 23 Apr 2024 11:19:39 GMT Content-Type: - application/json Content-Length: @@ -462,7 +462,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_8YvzhYldSRubBW + - req_TIRR4OFr4m0I4b Stripe-Version: - '2024-04-10' Vary: @@ -475,7 +475,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h81KuuB1fWySn1i3iTLoX", + "id": "pi_3P8hNtKuuB1fWySn2oOeGD9B", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -491,18 +491,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393537, + "created": 1713871177, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h81KuuB1fWySn1eMa5DyD", + "latest_charge": "ch_3P8hNtKuuB1fWySn27ThUZBq", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h80KuuB1fWySnKLIYVtP4", + "payment_method": "pm_1P8hNtKuuB1fWySnC8hS8ai0", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -527,10 +527,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:58 GMT + recorded_at: Tue, 23 Apr 2024 11:19:39 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h81KuuB1fWySn1i3iTLoX/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNtKuuB1fWySn2oOeGD9B/capture body: encoding: US-ASCII string: '' @@ -542,7 +542,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_8YvzhYldSRubBW","request_duration_ms":435}}' + - '{"last_request_metrics":{"request_id":"req_TIRR4OFr4m0I4b","request_duration_ms":340}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -559,7 +559,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:00 GMT + - Tue, 23 Apr 2024 11:19:40 GMT Content-Type: - application/json Content-Length: @@ -587,15 +587,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 25ffa565-65dd-44f1-b1de-5d1f834d0c07 + - 14f9ae29-367b-4368-b016-8ef7cb7793c8 Original-Request: - - req_QHmUBQF84F7qG1 + - req_Hk2fDQ8IvV95Jc Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_QHmUBQF84F7qG1 + - req_Hk2fDQ8IvV95Jc Stripe-Should-Retry: - 'false' Stripe-Version: @@ -610,7 +610,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h81KuuB1fWySn1i3iTLoX", + "id": "pi_3P8hNtKuuB1fWySn2oOeGD9B", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -626,18 +626,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393537, + "created": 1713871177, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h81KuuB1fWySn1eMa5DyD", + "latest_charge": "ch_3P8hNtKuuB1fWySn27ThUZBq", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h80KuuB1fWySnKLIYVtP4", + "payment_method": "pm_1P8hNtKuuB1fWySnC8hS8ai0", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -662,10 +662,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:00 GMT + recorded_at: Tue, 23 Apr 2024 11:19:40 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h81KuuB1fWySn1i3iTLoX + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNtKuuB1fWySn2oOeGD9B body: encoding: US-ASCII string: '' @@ -677,7 +677,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_QHmUBQF84F7qG1","request_duration_ms":1124}}' + - '{"last_request_metrics":{"request_id":"req_Hk2fDQ8IvV95Jc","request_duration_ms":1001}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -694,7 +694,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:00 GMT + - Tue, 23 Apr 2024 11:19:40 GMT Content-Type: - application/json Content-Length: @@ -726,7 +726,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_lW3Bslok4Lawnx + - req_LKa5sZbf9NNCJ0 Stripe-Version: - '2024-04-10' Vary: @@ -739,7 +739,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h81KuuB1fWySn1i3iTLoX", + "id": "pi_3P8hNtKuuB1fWySn2oOeGD9B", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -755,18 +755,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393537, + "created": 1713871177, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h81KuuB1fWySn1eMa5DyD", + "latest_charge": "ch_3P8hNtKuuB1fWySn27ThUZBq", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h80KuuB1fWySnKLIYVtP4", + "payment_method": "pm_1P8hNtKuuB1fWySnC8hS8ai0", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -791,5 +791,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:00 GMT + recorded_at: Tue, 23 Apr 2024 11:19:40 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml index 0a231d2704..260b75c1db 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_Op5E047dEuFump","request_duration_ms":405}}' + - '{"last_request_metrics":{"request_id":"req_azV3R41xItqtxT","request_duration_ms":408}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:54 GMT + - Tue, 23 Apr 2024 11:19:34 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - c2c01d7e-8dba-4820-944c-529925047b7e + - 55cdc358-de43-428d-a4e2-73ef80c0e8de Original-Request: - - req_sQ1BbnbMqtgWCv + - req_h51EmrXIH4HXSy Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_sQ1BbnbMqtgWCv + - req_h51EmrXIH4HXSy Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h7yKuuB1fWySnAjXTMD0L", + "id": "pm_1P8hNqKuuB1fWySnJ6XqeFlN", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393534, + "created": 1713871174, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:38:54 GMT + recorded_at: Tue, 23 Apr 2024 11:19:35 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h7yKuuB1fWySnAjXTMD0L&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hNqKuuB1fWySnJ6XqeFlN&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_sQ1BbnbMqtgWCv","request_duration_ms":496}}' + - '{"last_request_metrics":{"request_id":"req_h51EmrXIH4HXSy","request_duration_ms":421}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:55 GMT + - Tue, 23 Apr 2024 11:19:35 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 9386dac8-1c19-4906-83cf-f2af342a6229 + - 1883fad3-3893-403c-a2f8-e4610272a7da Original-Request: - - req_mXHokzUAHJQ1zS + - req_sDHNMgqJB65g50 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_mXHokzUAHJQ1zS + - req_sDHNMgqJB65g50 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7zKuuB1fWySn1IOJf23O", + "id": "pi_3P8hNrKuuB1fWySn2DJrs4FT", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393535, + "created": 1713871175, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7yKuuB1fWySnAjXTMD0L", + "payment_method": "pm_1P8hNqKuuB1fWySnJ6XqeFlN", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:55 GMT + recorded_at: Tue, 23 Apr 2024 11:19:35 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7zKuuB1fWySn1IOJf23O/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNrKuuB1fWySn2DJrs4FT/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_mXHokzUAHJQ1zS","request_duration_ms":508}}' + - '{"last_request_metrics":{"request_id":"req_sDHNMgqJB65g50","request_duration_ms":444}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:56 GMT + - Tue, 23 Apr 2024 11:19:36 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 0e55b45a-9dfe-478d-8533-891777278c6d + - 2ad557c9-fa28-4f41-8a0b-2003b801b68b Original-Request: - - req_8RoSQ8dLWnQaG2 + - req_kYtLGywFxGssP5 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_8RoSQ8dLWnQaG2 + - req_kYtLGywFxGssP5 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7zKuuB1fWySn1IOJf23O", + "id": "pi_3P8hNrKuuB1fWySn2DJrs4FT", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393535, + "created": 1713871175, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7zKuuB1fWySn12dvB53S", + "latest_charge": "ch_3P8hNrKuuB1fWySn2XcS6yFA", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7yKuuB1fWySnAjXTMD0L", + "payment_method": "pm_1P8hNqKuuB1fWySnJ6XqeFlN", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,5 +398,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:56 GMT + recorded_at: Tue, 23 Apr 2024 11:19:36 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml index ace626cb3a..e4016493d7 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_3z0b70bAwXWXdV","request_duration_ms":1021}}' + - '{"last_request_metrics":{"request_id":"req_bR8Ns6vD0QQNye","request_duration_ms":894}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:29 GMT + - Tue, 23 Apr 2024 11:20:08 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 85034cd4-c0be-46d4-9682-7dd3ebcf5da9 + - d6622af2-c973-40ff-8461-e836f2dfc59d Original-Request: - - req_belJapNFhTfYji + - req_AKQ9x6bEHaqp7O Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_belJapNFhTfYji + - req_AKQ9x6bEHaqp7O Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8XKuuB1fWySnVdMtfDOI", + "id": "pm_1P8hONKuuB1fWySno9Mcl2ic", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393569, + "created": 1713871208, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:29 GMT + recorded_at: Tue, 23 Apr 2024 11:20:08 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8XKuuB1fWySnVdMtfDOI&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hONKuuB1fWySno9Mcl2ic&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_belJapNFhTfYji","request_duration_ms":455}}' + - '{"last_request_metrics":{"request_id":"req_AKQ9x6bEHaqp7O","request_duration_ms":423}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:30 GMT + - Tue, 23 Apr 2024 11:20:08 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - c33adf33-7e60-4ee6-b785-38eb34dcfe33 + - cb90cc82-5704-4771-930f-fdf5f9a6fcd2 Original-Request: - - req_H8BuN9wUGP5BSM + - req_nmIHWKLnoJo04s Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_H8BuN9wUGP5BSM + - req_nmIHWKLnoJo04s Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8XKuuB1fWySn2MhbFPiK", + "id": "pi_3P8hOOKuuB1fWySn2Odt72kl", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393569, + "created": 1713871208, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8XKuuB1fWySnVdMtfDOI", + "payment_method": "pm_1P8hONKuuB1fWySno9Mcl2ic", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:30 GMT + recorded_at: Tue, 23 Apr 2024 11:20:08 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8XKuuB1fWySn2MhbFPiK/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOOKuuB1fWySn2Odt72kl/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_H8BuN9wUGP5BSM","request_duration_ms":537}}' + - '{"last_request_metrics":{"request_id":"req_nmIHWKLnoJo04s","request_duration_ms":508}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:31 GMT + - Tue, 23 Apr 2024 11:20:09 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 607660cd-97a2-4ec4-a5be-b9813e87360f + - 100c875c-35f0-4c72-a966-bbb696c46fed Original-Request: - - req_VfWUNSJ16yKaDM + - req_DKBvjDBoTGkeUT Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_VfWUNSJ16yKaDM + - req_DKBvjDBoTGkeUT Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8XKuuB1fWySn2MhbFPiK", + "id": "pi_3P8hOOKuuB1fWySn2Odt72kl", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393569, + "created": 1713871208, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8XKuuB1fWySn27vTFz5x", + "latest_charge": "ch_3P8hOOKuuB1fWySn230U2EUB", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8XKuuB1fWySnVdMtfDOI", + "payment_method": "pm_1P8hONKuuB1fWySno9Mcl2ic", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,10 +398,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:31 GMT + recorded_at: Tue, 23 Apr 2024 11:20:09 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8XKuuB1fWySn2MhbFPiK + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOOKuuB1fWySn2Odt72kl body: encoding: US-ASCII string: '' @@ -413,7 +413,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_VfWUNSJ16yKaDM","request_duration_ms":996}}' + - '{"last_request_metrics":{"request_id":"req_DKBvjDBoTGkeUT","request_duration_ms":938}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -430,7 +430,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:31 GMT + - Tue, 23 Apr 2024 11:20:09 GMT Content-Type: - application/json Content-Length: @@ -462,7 +462,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_V3NhiQRMAVdhG5 + - req_p0BWdhdkOVIWYG Stripe-Version: - '2024-04-10' Vary: @@ -475,7 +475,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8XKuuB1fWySn2MhbFPiK", + "id": "pi_3P8hOOKuuB1fWySn2Odt72kl", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -491,18 +491,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393569, + "created": 1713871208, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8XKuuB1fWySn27vTFz5x", + "latest_charge": "ch_3P8hOOKuuB1fWySn230U2EUB", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8XKuuB1fWySnVdMtfDOI", + "payment_method": "pm_1P8hONKuuB1fWySno9Mcl2ic", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -527,10 +527,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:31 GMT + recorded_at: Tue, 23 Apr 2024 11:20:09 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8XKuuB1fWySn2MhbFPiK/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOOKuuB1fWySn2Odt72kl/capture body: encoding: US-ASCII string: '' @@ -542,7 +542,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_V3NhiQRMAVdhG5","request_duration_ms":407}}' + - '{"last_request_metrics":{"request_id":"req_p0BWdhdkOVIWYG","request_duration_ms":314}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -559,7 +559,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:32 GMT + - Tue, 23 Apr 2024 11:20:10 GMT Content-Type: - application/json Content-Length: @@ -587,15 +587,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 9ed1472d-bee6-44be-84b5-3295c458d1e4 + - a95287aa-0422-4a15-bfe5-81f03857c889 Original-Request: - - req_Zm7KQZK83zAent + - req_pK8yffh9OIdizQ Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_Zm7KQZK83zAent + - req_pK8yffh9OIdizQ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -610,7 +610,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8XKuuB1fWySn2MhbFPiK", + "id": "pi_3P8hOOKuuB1fWySn2Odt72kl", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -626,18 +626,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393569, + "created": 1713871208, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8XKuuB1fWySn27vTFz5x", + "latest_charge": "ch_3P8hOOKuuB1fWySn230U2EUB", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8XKuuB1fWySnVdMtfDOI", + "payment_method": "pm_1P8hONKuuB1fWySno9Mcl2ic", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -662,10 +662,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:32 GMT + recorded_at: Tue, 23 Apr 2024 11:20:11 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8XKuuB1fWySn2MhbFPiK + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOOKuuB1fWySn2Odt72kl body: encoding: US-ASCII string: '' @@ -677,7 +677,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_Zm7KQZK83zAent","request_duration_ms":1124}}' + - '{"last_request_metrics":{"request_id":"req_pK8yffh9OIdizQ","request_duration_ms":1033}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -694,7 +694,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:32 GMT + - Tue, 23 Apr 2024 11:20:11 GMT Content-Type: - application/json Content-Length: @@ -726,7 +726,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_hfwFTTxVfnyp1F + - req_JAV7p6VHbcflfL Stripe-Version: - '2024-04-10' Vary: @@ -739,7 +739,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8XKuuB1fWySn2MhbFPiK", + "id": "pi_3P8hOOKuuB1fWySn2Odt72kl", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -755,18 +755,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393569, + "created": 1713871208, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8XKuuB1fWySn27vTFz5x", + "latest_charge": "ch_3P8hOOKuuB1fWySn230U2EUB", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8XKuuB1fWySnVdMtfDOI", + "payment_method": "pm_1P8hONKuuB1fWySno9Mcl2ic", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -791,5 +791,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:33 GMT + recorded_at: Tue, 23 Apr 2024 11:20:11 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml index 154c7ef553..e410bd911e 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_I3pl4WWcmSdR3t","request_duration_ms":323}}' + - '{"last_request_metrics":{"request_id":"req_ddoELzhmVk5L54","request_duration_ms":306}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:27 GMT + - Tue, 23 Apr 2024 11:20:05 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 7e7c53f3-778d-4cf6-99b8-e9d2e323847c + - a9cc5447-3eca-4e18-a389-75afbedf4303 Original-Request: - - req_R5sPMLGXRV4s9f + - req_XOTBaA5jnWCyEJ Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_R5sPMLGXRV4s9f + - req_XOTBaA5jnWCyEJ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8VKuuB1fWySnG6WGYjOq", + "id": "pm_1P8hOLKuuB1fWySn72k0uhtc", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393567, + "created": 1713871205, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:27 GMT + recorded_at: Tue, 23 Apr 2024 11:20:05 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8VKuuB1fWySnG6WGYjOq&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hOLKuuB1fWySn72k0uhtc&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_R5sPMLGXRV4s9f","request_duration_ms":476}}' + - '{"last_request_metrics":{"request_id":"req_XOTBaA5jnWCyEJ","request_duration_ms":442}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:27 GMT + - Tue, 23 Apr 2024 11:20:06 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 9f4c16b6-e857-4835-a8c0-a898a480bc8d + - d568f439-f540-48be-8b8a-d333b20e6271 Original-Request: - - req_oiMNzBLhwBnOq5 + - req_hkoU27ho7VXuVC Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_oiMNzBLhwBnOq5 + - req_hkoU27ho7VXuVC Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8VKuuB1fWySn20Fo9znJ", + "id": "pi_3P8hOMKuuB1fWySn0xktqmNp", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393567, + "created": 1713871206, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8VKuuB1fWySnG6WGYjOq", + "payment_method": "pm_1P8hOLKuuB1fWySn72k0uhtc", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:27 GMT + recorded_at: Tue, 23 Apr 2024 11:20:06 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8VKuuB1fWySn20Fo9znJ/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOMKuuB1fWySn0xktqmNp/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_oiMNzBLhwBnOq5","request_duration_ms":509}}' + - '{"last_request_metrics":{"request_id":"req_hkoU27ho7VXuVC","request_duration_ms":407}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:28 GMT + - Tue, 23 Apr 2024 11:20:07 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - f5c42d6a-7ba8-484a-9729-b77ccd7e9702 + - aa80c1db-6bf5-40dd-bd27-4d3e30ff2d5a Original-Request: - - req_3z0b70bAwXWXdV + - req_bR8Ns6vD0QQNye Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_3z0b70bAwXWXdV + - req_bR8Ns6vD0QQNye Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8VKuuB1fWySn20Fo9znJ", + "id": "pi_3P8hOMKuuB1fWySn0xktqmNp", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393567, + "created": 1713871206, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8VKuuB1fWySn27KfJTAK", + "latest_charge": "ch_3P8hOMKuuB1fWySn0i4KPr2P", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8VKuuB1fWySnG6WGYjOq", + "payment_method": "pm_1P8hOLKuuB1fWySn72k0uhtc", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,5 +398,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:28 GMT + recorded_at: Tue, 23 Apr 2024 11:20:07 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml index fad9014f66..9e09e73af2 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_eMip2uJLGOAsUL","request_duration_ms":1021}}' + - '{"last_request_metrics":{"request_id":"req_ffAR0hNG0OYgX2","request_duration_ms":1124}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:17 GMT + - Tue, 23 Apr 2024 11:19:56 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 1a4570da-468a-4b3d-89fc-5e09e5f2139f + - f875e0ac-f59f-442f-aebd-f642fc83560a Original-Request: - - req_MJFLj7xyGzTDVH + - req_IEMrcHsXh2Eax0 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_MJFLj7xyGzTDVH + - req_IEMrcHsXh2Eax0 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8LKuuB1fWySnLJ1Se1NW", + "id": "pm_1P8hOCKuuB1fWySnMsprBNZg", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393557, + "created": 1713871196, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:17 GMT + recorded_at: Tue, 23 Apr 2024 11:19:56 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8LKuuB1fWySnLJ1Se1NW&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hOCKuuB1fWySnMsprBNZg&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_MJFLj7xyGzTDVH","request_duration_ms":470}}' + - '{"last_request_metrics":{"request_id":"req_IEMrcHsXh2Eax0","request_duration_ms":402}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:17 GMT + - Tue, 23 Apr 2024 11:19:56 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - '091a9024-bc8e-4ae1-974b-ea8c9444cb5c' + - be163a3d-683e-4e2f-aabc-9a83fc7ec3df Original-Request: - - req_fnovB9YHqPYxKh + - req_SOQ2fhN5iPFv7u Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_fnovB9YHqPYxKh + - req_SOQ2fhN5iPFv7u Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8LKuuB1fWySn2zowFGx3", + "id": "pi_3P8hOCKuuB1fWySn1JhOQVab", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393557, + "created": 1713871196, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8LKuuB1fWySnLJ1Se1NW", + "payment_method": "pm_1P8hOCKuuB1fWySnMsprBNZg", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:17 GMT + recorded_at: Tue, 23 Apr 2024 11:19:56 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8LKuuB1fWySn2zowFGx3/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOCKuuB1fWySn1JhOQVab/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_fnovB9YHqPYxKh","request_duration_ms":509}}' + - '{"last_request_metrics":{"request_id":"req_SOQ2fhN5iPFv7u","request_duration_ms":397}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:18 GMT + - Tue, 23 Apr 2024 11:19:57 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 474e1a09-5f2b-45b0-b6ef-04074541ad2c + - f2fbde41-efcd-4895-a239-70d3f7e63854 Original-Request: - - req_C7H2INDfTs3Tjy + - req_iw9oL8XP2dNuKP Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_C7H2INDfTs3Tjy + - req_iw9oL8XP2dNuKP Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8LKuuB1fWySn2zowFGx3", + "id": "pi_3P8hOCKuuB1fWySn1JhOQVab", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393557, + "created": 1713871196, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8LKuuB1fWySn2JuiHUdy", + "latest_charge": "ch_3P8hOCKuuB1fWySn1hv7Nwzr", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8LKuuB1fWySnLJ1Se1NW", + "payment_method": "pm_1P8hOCKuuB1fWySnMsprBNZg", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,10 +398,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:18 GMT + recorded_at: Tue, 23 Apr 2024 11:19:57 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8LKuuB1fWySn2zowFGx3 + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOCKuuB1fWySn1JhOQVab body: encoding: US-ASCII string: '' @@ -413,7 +413,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_C7H2INDfTs3Tjy","request_duration_ms":1021}}' + - '{"last_request_metrics":{"request_id":"req_iw9oL8XP2dNuKP","request_duration_ms":918}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -430,7 +430,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:19 GMT + - Tue, 23 Apr 2024 11:19:57 GMT Content-Type: - application/json Content-Length: @@ -462,7 +462,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_DOVGWJrVI35T4X + - req_fqNjDj939l3JjY Stripe-Version: - '2024-04-10' Vary: @@ -475,7 +475,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8LKuuB1fWySn2zowFGx3", + "id": "pi_3P8hOCKuuB1fWySn1JhOQVab", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -491,18 +491,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393557, + "created": 1713871196, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8LKuuB1fWySn2JuiHUdy", + "latest_charge": "ch_3P8hOCKuuB1fWySn1hv7Nwzr", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8LKuuB1fWySnLJ1Se1NW", + "payment_method": "pm_1P8hOCKuuB1fWySnMsprBNZg", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -527,10 +527,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:19 GMT + recorded_at: Tue, 23 Apr 2024 11:19:57 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8LKuuB1fWySn2zowFGx3/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOCKuuB1fWySn1JhOQVab/capture body: encoding: US-ASCII string: '' @@ -542,7 +542,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_DOVGWJrVI35T4X","request_duration_ms":407}}' + - '{"last_request_metrics":{"request_id":"req_fqNjDj939l3JjY","request_duration_ms":303}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -559,7 +559,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:20 GMT + - Tue, 23 Apr 2024 11:19:58 GMT Content-Type: - application/json Content-Length: @@ -587,15 +587,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - d900647d-2aec-4e64-98d1-f15c83461c8f + - 8a57705c-3908-4d53-9e32-0cecb040c9fd Original-Request: - - req_PsYDkuQdjXeUiU + - req_bk7uF9eamRsrzT Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_PsYDkuQdjXeUiU + - req_bk7uF9eamRsrzT Stripe-Should-Retry: - 'false' Stripe-Version: @@ -610,7 +610,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8LKuuB1fWySn2zowFGx3", + "id": "pi_3P8hOCKuuB1fWySn1JhOQVab", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -626,18 +626,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393557, + "created": 1713871196, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8LKuuB1fWySn2JuiHUdy", + "latest_charge": "ch_3P8hOCKuuB1fWySn1hv7Nwzr", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8LKuuB1fWySnLJ1Se1NW", + "payment_method": "pm_1P8hOCKuuB1fWySnMsprBNZg", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -662,10 +662,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:20 GMT + recorded_at: Tue, 23 Apr 2024 11:19:58 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8LKuuB1fWySn2zowFGx3 + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOCKuuB1fWySn1JhOQVab body: encoding: US-ASCII string: '' @@ -677,7 +677,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_PsYDkuQdjXeUiU","request_duration_ms":1129}}' + - '{"last_request_metrics":{"request_id":"req_bk7uF9eamRsrzT","request_duration_ms":985}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -694,7 +694,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:20 GMT + - Tue, 23 Apr 2024 11:19:59 GMT Content-Type: - application/json Content-Length: @@ -726,7 +726,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_O9M1jcSqndJOJC + - req_hv5wGyvlDCpZ4q Stripe-Version: - '2024-04-10' Vary: @@ -739,7 +739,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8LKuuB1fWySn2zowFGx3", + "id": "pi_3P8hOCKuuB1fWySn1JhOQVab", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -755,18 +755,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393557, + "created": 1713871196, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8LKuuB1fWySn2JuiHUdy", + "latest_charge": "ch_3P8hOCKuuB1fWySn1hv7Nwzr", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8LKuuB1fWySnLJ1Se1NW", + "payment_method": "pm_1P8hOCKuuB1fWySnMsprBNZg", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -791,5 +791,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:20 GMT + recorded_at: Tue, 23 Apr 2024 11:19:59 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml index 8781fce420..03bf3d774b 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_51gEEe58VXMvAb","request_duration_ms":464}}' + - '{"last_request_metrics":{"request_id":"req_QpAFzYIN9Npz9E","request_duration_ms":407}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:15 GMT + - Tue, 23 Apr 2024 11:19:53 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 3d62fb8d-e2d2-4a85-9cbf-db3f4eefc828 + - 89eeb309-a34b-4df4-b547-3509a1a1f2c1 Original-Request: - - req_8nJ9m62uUKZ1BT + - req_3OWdpekseC1OHc Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_8nJ9m62uUKZ1BT + - req_3OWdpekseC1OHc Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8IKuuB1fWySnR0Y3X7ef", + "id": "pm_1P8hO9KuuB1fWySnW0a4nkXb", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393554, + "created": 1713871193, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:15 GMT + recorded_at: Tue, 23 Apr 2024 11:19:53 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8IKuuB1fWySnR0Y3X7ef&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hO9KuuB1fWySnW0a4nkXb&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_8nJ9m62uUKZ1BT","request_duration_ms":572}}' + - '{"last_request_metrics":{"request_id":"req_3OWdpekseC1OHc","request_duration_ms":460}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:15 GMT + - Tue, 23 Apr 2024 11:19:54 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 91901a1a-fd2b-4876-b05c-bf94c201b9f6 + - 206fc4e9-d57b-41d7-8315-ea83924a960b Original-Request: - - req_vinBkTBwWki9qy + - req_hYzCOvueIy5BeU Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_vinBkTBwWki9qy + - req_hYzCOvueIy5BeU Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8JKuuB1fWySn2yadc0B1", + "id": "pi_3P8hOAKuuB1fWySn2WBXSlwq", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393555, + "created": 1713871194, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8IKuuB1fWySnR0Y3X7ef", + "payment_method": "pm_1P8hO9KuuB1fWySnW0a4nkXb", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:15 GMT + recorded_at: Tue, 23 Apr 2024 11:19:54 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8JKuuB1fWySn2yadc0B1/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOAKuuB1fWySn2WBXSlwq/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_vinBkTBwWki9qy","request_duration_ms":509}}' + - '{"last_request_metrics":{"request_id":"req_hYzCOvueIy5BeU","request_duration_ms":507}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:16 GMT + - Tue, 23 Apr 2024 11:19:55 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - e2fe3772-c299-4588-81a1-bdad8e9b314b + - 8be4ebdd-2a0e-471d-8065-de8dd1be088a Original-Request: - - req_eMip2uJLGOAsUL + - req_ffAR0hNG0OYgX2 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_eMip2uJLGOAsUL + - req_ffAR0hNG0OYgX2 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8JKuuB1fWySn2yadc0B1", + "id": "pi_3P8hOAKuuB1fWySn2WBXSlwq", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393555, + "created": 1713871194, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8JKuuB1fWySn26uIchSq", + "latest_charge": "ch_3P8hOAKuuB1fWySn2Uidmutm", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8IKuuB1fWySnR0Y3X7ef", + "payment_method": "pm_1P8hO9KuuB1fWySnW0a4nkXb", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,5 +398,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:16 GMT + recorded_at: Tue, 23 Apr 2024 11:19:55 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml index ed30b7c4f3..4b20403343 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_0ok5x8RVmzx0fI","request_duration_ms":1022}}' + - '{"last_request_metrics":{"request_id":"req_F50bsJAfpjP1no","request_duration_ms":1020}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:23 GMT + - Tue, 23 Apr 2024 11:20:02 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - bdd25ab2-01bf-4d8a-b996-790be486e8f5 + - 68142e73-7169-4fd0-8d60-238cd3b2f51f Original-Request: - - req_aW2iJeMUdsXpdu + - req_W7p2bvM5ekTGhy Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_aW2iJeMUdsXpdu + - req_W7p2bvM5ekTGhy Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8RKuuB1fWySnfA4I9N8P", + "id": "pm_1P8hOHKuuB1fWySn4wnEZUnj", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393563, + "created": 1713871202, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:23 GMT + recorded_at: Tue, 23 Apr 2024 11:20:02 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8RKuuB1fWySnfA4I9N8P&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hOHKuuB1fWySn4wnEZUnj&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_aW2iJeMUdsXpdu","request_duration_ms":476}}' + - '{"last_request_metrics":{"request_id":"req_W7p2bvM5ekTGhy","request_duration_ms":464}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:23 GMT + - Tue, 23 Apr 2024 11:20:02 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - f38730a5-9b88-41bb-af95-f3f0d1b6db51 + - 7895f41e-8196-4746-804f-7a476dffc8bd Original-Request: - - req_EKgkqCB3ZJn6mK + - req_EuXVMstokQQw3n Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_EKgkqCB3ZJn6mK + - req_EuXVMstokQQw3n Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8RKuuB1fWySn2f9Q1nED", + "id": "pi_3P8hOIKuuB1fWySn21HOyA6i", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393563, + "created": 1713871202, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8RKuuB1fWySnfA4I9N8P", + "payment_method": "pm_1P8hOHKuuB1fWySn4wnEZUnj", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:24 GMT + recorded_at: Tue, 23 Apr 2024 11:20:02 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8RKuuB1fWySn2f9Q1nED/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOIKuuB1fWySn21HOyA6i/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_EKgkqCB3ZJn6mK","request_duration_ms":509}}' + - '{"last_request_metrics":{"request_id":"req_EuXVMstokQQw3n","request_duration_ms":509}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:24 GMT + - Tue, 23 Apr 2024 11:20:03 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 11732f20-6777-4a68-b1a7-99963f769446 + - 38511fda-290e-4fce-a5b3-f4aee43b8b4b Original-Request: - - req_lvzjZr0RkFNeES + - req_NNPzzTeg5bGDdZ Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_lvzjZr0RkFNeES + - req_NNPzzTeg5bGDdZ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8RKuuB1fWySn2f9Q1nED", + "id": "pi_3P8hOIKuuB1fWySn21HOyA6i", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393563, + "created": 1713871202, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8RKuuB1fWySn2G5g1Oav", + "latest_charge": "ch_3P8hOIKuuB1fWySn2LL7XqVG", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8RKuuB1fWySnfA4I9N8P", + "payment_method": "pm_1P8hOHKuuB1fWySn4wnEZUnj", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,10 +398,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:25 GMT + recorded_at: Tue, 23 Apr 2024 11:20:03 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8RKuuB1fWySn2f9Q1nED + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOIKuuB1fWySn21HOyA6i body: encoding: US-ASCII string: '' @@ -413,7 +413,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_lvzjZr0RkFNeES","request_duration_ms":1022}}' + - '{"last_request_metrics":{"request_id":"req_NNPzzTeg5bGDdZ","request_duration_ms":945}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -430,7 +430,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:25 GMT + - Tue, 23 Apr 2024 11:20:04 GMT Content-Type: - application/json Content-Length: @@ -462,7 +462,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_mZY27L2xmuWtnA + - req_uOm7zegugymQDX Stripe-Version: - '2024-04-10' Vary: @@ -475,7 +475,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8RKuuB1fWySn2f9Q1nED", + "id": "pi_3P8hOIKuuB1fWySn21HOyA6i", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -491,18 +491,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393563, + "created": 1713871202, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8RKuuB1fWySn2G5g1Oav", + "latest_charge": "ch_3P8hOIKuuB1fWySn2LL7XqVG", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8RKuuB1fWySnfA4I9N8P", + "payment_method": "pm_1P8hOHKuuB1fWySn4wnEZUnj", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -527,10 +527,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:25 GMT + recorded_at: Tue, 23 Apr 2024 11:20:04 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8RKuuB1fWySn2f9Q1nED/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOIKuuB1fWySn21HOyA6i/capture body: encoding: US-ASCII string: '' @@ -542,7 +542,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_mZY27L2xmuWtnA","request_duration_ms":407}}' + - '{"last_request_metrics":{"request_id":"req_uOm7zegugymQDX","request_duration_ms":379}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -559,7 +559,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:26 GMT + - Tue, 23 Apr 2024 11:20:05 GMT Content-Type: - application/json Content-Length: @@ -587,15 +587,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - e01d3351-bd95-4c93-82f2-f68eb2c70b77 + - 2894fcfb-1365-416c-8fd0-1ee06b7bc3d7 Original-Request: - - req_eZOI1S6A1Np124 + - req_hNaSGKKhYrdaBI Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_eZOI1S6A1Np124 + - req_hNaSGKKhYrdaBI Stripe-Should-Retry: - 'false' Stripe-Version: @@ -610,7 +610,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8RKuuB1fWySn2f9Q1nED", + "id": "pi_3P8hOIKuuB1fWySn21HOyA6i", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -626,18 +626,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393563, + "created": 1713871202, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8RKuuB1fWySn2G5g1Oav", + "latest_charge": "ch_3P8hOIKuuB1fWySn2LL7XqVG", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8RKuuB1fWySnfA4I9N8P", + "payment_method": "pm_1P8hOHKuuB1fWySn4wnEZUnj", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -662,10 +662,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:26 GMT + recorded_at: Tue, 23 Apr 2024 11:20:05 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8RKuuB1fWySn2f9Q1nED + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOIKuuB1fWySn21HOyA6i body: encoding: US-ASCII string: '' @@ -677,7 +677,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_eZOI1S6A1Np124","request_duration_ms":1125}}' + - '{"last_request_metrics":{"request_id":"req_hNaSGKKhYrdaBI","request_duration_ms":1058}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -694,7 +694,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:26 GMT + - Tue, 23 Apr 2024 11:20:05 GMT Content-Type: - application/json Content-Length: @@ -726,7 +726,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_I3pl4WWcmSdR3t + - req_ddoELzhmVk5L54 Stripe-Version: - '2024-04-10' Vary: @@ -739,7 +739,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8RKuuB1fWySn2f9Q1nED", + "id": "pi_3P8hOIKuuB1fWySn21HOyA6i", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -755,18 +755,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393563, + "created": 1713871202, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8RKuuB1fWySn2G5g1Oav", + "latest_charge": "ch_3P8hOIKuuB1fWySn2LL7XqVG", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8RKuuB1fWySnfA4I9N8P", + "payment_method": "pm_1P8hOHKuuB1fWySn4wnEZUnj", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -791,5 +791,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:26 GMT + recorded_at: Tue, 23 Apr 2024 11:20:05 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml index 41d07ffa7f..8977ad1ddc 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_O9M1jcSqndJOJC","request_duration_ms":401}}' + - '{"last_request_metrics":{"request_id":"req_hv5wGyvlDCpZ4q","request_duration_ms":339}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:21 GMT + - Tue, 23 Apr 2024 11:19:59 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - d26715a9-307d-47f4-a2cf-bf33c3162e70 + - 796aa49b-c388-47db-a20a-f14dfee541e2 Original-Request: - - req_XdePxbRUWKTvjI + - req_WSVbwrOSeKTiWr Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_XdePxbRUWKTvjI + - req_WSVbwrOSeKTiWr Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8PKuuB1fWySnIah9Di2G", + "id": "pm_1P8hOFKuuB1fWySn1mu7MDlw", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393561, + "created": 1713871199, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:21 GMT + recorded_at: Tue, 23 Apr 2024 11:19:59 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8PKuuB1fWySnIah9Di2G&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hOFKuuB1fWySn1mu7MDlw&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_XdePxbRUWKTvjI","request_duration_ms":494}}' + - '{"last_request_metrics":{"request_id":"req_WSVbwrOSeKTiWr","request_duration_ms":463}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:21 GMT + - Tue, 23 Apr 2024 11:20:00 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - a5265d51-79c9-42f7-b184-6dbe3bd95491 + - 0dda9a0d-cf2f-4fe3-a4b9-dcfee8b3429c Original-Request: - - req_s14CejPPZfzuMk + - req_vFWYulKIEYjdV7 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_s14CejPPZfzuMk + - req_vFWYulKIEYjdV7 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8PKuuB1fWySn1OZkfwQc", + "id": "pi_3P8hOGKuuB1fWySn0s6S7d1V", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393561, + "created": 1713871200, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8PKuuB1fWySnIah9Di2G", + "payment_method": "pm_1P8hOFKuuB1fWySn1mu7MDlw", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:21 GMT + recorded_at: Tue, 23 Apr 2024 11:20:00 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8PKuuB1fWySn1OZkfwQc/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOGKuuB1fWySn0s6S7d1V/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_s14CejPPZfzuMk","request_duration_ms":509}}' + - '{"last_request_metrics":{"request_id":"req_vFWYulKIEYjdV7","request_duration_ms":496}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:22 GMT + - Tue, 23 Apr 2024 11:20:01 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - eab99991-a8d9-4da4-862a-53dba0b7e794 + - f2ba89d6-ebc3-40f2-befc-9b678db6064a Original-Request: - - req_0ok5x8RVmzx0fI + - req_F50bsJAfpjP1no Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_0ok5x8RVmzx0fI + - req_F50bsJAfpjP1no Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8PKuuB1fWySn1OZkfwQc", + "id": "pi_3P8hOGKuuB1fWySn0s6S7d1V", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393561, + "created": 1713871200, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8PKuuB1fWySn1mhyBhEE", + "latest_charge": "ch_3P8hOGKuuB1fWySn0ijMLscI", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8PKuuB1fWySnIah9Di2G", + "payment_method": "pm_1P8hOFKuuB1fWySn1mu7MDlw", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,5 +398,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:22 GMT + recorded_at: Tue, 23 Apr 2024 11:20:01 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml index 04091ae801..0fa5dc5ff2 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_Jro1T0jxbpxK3y","request_duration_ms":1021}}' + - '{"last_request_metrics":{"request_id":"req_hUelEOGt0XpqHS","request_duration_ms":1002}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:03 GMT + - Tue, 23 Apr 2024 11:19:43 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - fddb89f6-f813-470a-9e0a-0f81b7f597c9 + - d040ffac-52c8-4b68-b2c0-35bde2a0b790 Original-Request: - - req_DSWHOaVc1vEG2s + - req_mrcp2OjDSEhD4U Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_DSWHOaVc1vEG2s + - req_mrcp2OjDSEhD4U Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h87KuuB1fWySn9X4uRzJb", + "id": "pm_1P8hNzKuuB1fWySn7MxPo4mD", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393543, + "created": 1713871183, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:03 GMT + recorded_at: Tue, 23 Apr 2024 11:19:43 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h87KuuB1fWySn9X4uRzJb&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hNzKuuB1fWySn7MxPo4mD&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_DSWHOaVc1vEG2s","request_duration_ms":568}}' + - '{"last_request_metrics":{"request_id":"req_mrcp2OjDSEhD4U","request_duration_ms":434}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:04 GMT + - Tue, 23 Apr 2024 11:19:44 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - fb05d59c-5b57-4ff2-9698-8b86e8804653 + - e2f3f42f-7402-44e0-b802-f67cbee7fdd6 Original-Request: - - req_j8c27KKn1Qvu5O + - req_pJSWbZv3aRPI2J Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_j8c27KKn1Qvu5O + - req_pJSWbZv3aRPI2J Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h87KuuB1fWySn2axL111t", + "id": "pi_3P8hNzKuuB1fWySn1GYHjyQr", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393543, + "created": 1713871183, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h87KuuB1fWySn9X4uRzJb", + "payment_method": "pm_1P8hNzKuuB1fWySn7MxPo4mD", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:04 GMT + recorded_at: Tue, 23 Apr 2024 11:19:44 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h87KuuB1fWySn2axL111t/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNzKuuB1fWySn1GYHjyQr/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_j8c27KKn1Qvu5O","request_duration_ms":509}}' + - '{"last_request_metrics":{"request_id":"req_pJSWbZv3aRPI2J","request_duration_ms":523}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:05 GMT + - Tue, 23 Apr 2024 11:19:45 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 6de1b6ae-ab05-4390-9a15-b24623b2d1ab + - bba37f04-e7a0-4225-b165-91416ca762c9 Original-Request: - - req_qoa8w5ai6YeE1N + - req_r0DDvG3XCitRVS Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_qoa8w5ai6YeE1N + - req_r0DDvG3XCitRVS Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h87KuuB1fWySn2axL111t", + "id": "pi_3P8hNzKuuB1fWySn1GYHjyQr", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393543, + "created": 1713871183, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h87KuuB1fWySn2262lqw1", + "latest_charge": "ch_3P8hNzKuuB1fWySn1PWScwqp", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h87KuuB1fWySn9X4uRzJb", + "payment_method": "pm_1P8hNzKuuB1fWySn7MxPo4mD", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,10 +398,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:05 GMT + recorded_at: Tue, 23 Apr 2024 11:19:45 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h87KuuB1fWySn2axL111t + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNzKuuB1fWySn1GYHjyQr body: encoding: US-ASCII string: '' @@ -413,7 +413,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_qoa8w5ai6YeE1N","request_duration_ms":1021}}' + - '{"last_request_metrics":{"request_id":"req_r0DDvG3XCitRVS","request_duration_ms":912}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -430,7 +430,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:05 GMT + - Tue, 23 Apr 2024 11:19:45 GMT Content-Type: - application/json Content-Length: @@ -462,7 +462,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_qNYhyui7rxxXIa + - req_qChjEMQoRLH3qD Stripe-Version: - '2024-04-10' Vary: @@ -475,7 +475,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h87KuuB1fWySn2axL111t", + "id": "pi_3P8hNzKuuB1fWySn1GYHjyQr", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -491,18 +491,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393543, + "created": 1713871183, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h87KuuB1fWySn2262lqw1", + "latest_charge": "ch_3P8hNzKuuB1fWySn1PWScwqp", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h87KuuB1fWySn9X4uRzJb", + "payment_method": "pm_1P8hNzKuuB1fWySn7MxPo4mD", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -527,10 +527,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:05 GMT + recorded_at: Tue, 23 Apr 2024 11:19:45 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h87KuuB1fWySn2axL111t/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNzKuuB1fWySn1GYHjyQr/capture body: encoding: US-ASCII string: '' @@ -542,7 +542,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_qNYhyui7rxxXIa","request_duration_ms":407}}' + - '{"last_request_metrics":{"request_id":"req_qChjEMQoRLH3qD","request_duration_ms":413}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -559,7 +559,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:06 GMT + - Tue, 23 Apr 2024 11:19:46 GMT Content-Type: - application/json Content-Length: @@ -587,15 +587,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 9d88bb19-5593-4165-ab78-67d0c09ab47a + - 9fa89161-a992-4291-8b79-d402734179e6 Original-Request: - - req_RqO941hfsyaP41 + - req_mV2mn21SBOfoGe Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_RqO941hfsyaP41 + - req_mV2mn21SBOfoGe Stripe-Should-Retry: - 'false' Stripe-Version: @@ -610,7 +610,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h87KuuB1fWySn2axL111t", + "id": "pi_3P8hNzKuuB1fWySn1GYHjyQr", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -626,18 +626,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393543, + "created": 1713871183, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h87KuuB1fWySn2262lqw1", + "latest_charge": "ch_3P8hNzKuuB1fWySn1PWScwqp", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h87KuuB1fWySn9X4uRzJb", + "payment_method": "pm_1P8hNzKuuB1fWySn7MxPo4mD", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -662,10 +662,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:06 GMT + recorded_at: Tue, 23 Apr 2024 11:19:46 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h87KuuB1fWySn2axL111t + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNzKuuB1fWySn1GYHjyQr body: encoding: US-ASCII string: '' @@ -677,7 +677,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_RqO941hfsyaP41","request_duration_ms":1021}}' + - '{"last_request_metrics":{"request_id":"req_mV2mn21SBOfoGe","request_duration_ms":974}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -694,7 +694,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:07 GMT + - Tue, 23 Apr 2024 11:19:46 GMT Content-Type: - application/json Content-Length: @@ -726,7 +726,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_Ig3AJuIzfGoNOE + - req_RgFOb6snLO0WMi Stripe-Version: - '2024-04-10' Vary: @@ -739,7 +739,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h87KuuB1fWySn2axL111t", + "id": "pi_3P8hNzKuuB1fWySn1GYHjyQr", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -755,18 +755,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393543, + "created": 1713871183, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h87KuuB1fWySn2262lqw1", + "latest_charge": "ch_3P8hNzKuuB1fWySn1PWScwqp", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h87KuuB1fWySn9X4uRzJb", + "payment_method": "pm_1P8hNzKuuB1fWySn7MxPo4mD", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -791,5 +791,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:07 GMT + recorded_at: Tue, 23 Apr 2024 11:19:46 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml index b3ec3daf51..9063ae098a 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_lW3Bslok4Lawnx","request_duration_ms":0}}' + - '{"last_request_metrics":{"request_id":"req_LKa5sZbf9NNCJ0","request_duration_ms":8}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:01 GMT + - Tue, 23 Apr 2024 11:19:41 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - e67d2503-043f-45aa-bc19-c5cbf2448460 + - b71c72c1-0192-47f2-9212-489aba6fd1af Original-Request: - - req_1C24OBfM43wStd + - req_mLo9zfWfizkzUY Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_1C24OBfM43wStd + - req_mLo9zfWfizkzUY Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h85KuuB1fWySnyP9ccuXz", + "id": "pm_1P8hNxKuuB1fWySnfmO4yubj", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393541, + "created": 1713871181, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:01 GMT + recorded_at: Tue, 23 Apr 2024 11:19:41 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h85KuuB1fWySnyP9ccuXz&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hNxKuuB1fWySnfmO4yubj&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_1C24OBfM43wStd","request_duration_ms":724}}' + - '{"last_request_metrics":{"request_id":"req_mLo9zfWfizkzUY","request_duration_ms":533}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:01 GMT + - Tue, 23 Apr 2024 11:19:41 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 1750454d-cbef-4b4b-9948-a0a8d667c377 + - f3c1bb3f-1522-4527-8b5a-93da30ba2cda Original-Request: - - req_K1co9pzQLmxWV0 + - req_sF5Wv9QV3DwmcO Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_K1co9pzQLmxWV0 + - req_sF5Wv9QV3DwmcO Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h85KuuB1fWySn0Vn41J29", + "id": "pi_3P8hNxKuuB1fWySn01XI65KY", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393541, + "created": 1713871181, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h85KuuB1fWySnyP9ccuXz", + "payment_method": "pm_1P8hNxKuuB1fWySnfmO4yubj", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:01 GMT + recorded_at: Tue, 23 Apr 2024 11:19:42 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h85KuuB1fWySn0Vn41J29/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNxKuuB1fWySn01XI65KY/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_K1co9pzQLmxWV0","request_duration_ms":509}}' + - '{"last_request_metrics":{"request_id":"req_sF5Wv9QV3DwmcO","request_duration_ms":399}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:02 GMT + - Tue, 23 Apr 2024 11:19:42 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 69edc941-3f42-413c-b67b-34babe4bef61 + - 36247346-4c20-434b-bf06-63367b77b954 Original-Request: - - req_Jro1T0jxbpxK3y + - req_hUelEOGt0XpqHS Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_Jro1T0jxbpxK3y + - req_hUelEOGt0XpqHS Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h85KuuB1fWySn0Vn41J29", + "id": "pi_3P8hNxKuuB1fWySn01XI65KY", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393541, + "created": 1713871181, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h85KuuB1fWySn07C9hnvW", + "latest_charge": "ch_3P8hNxKuuB1fWySn0MW5J9bO", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h85KuuB1fWySnyP9ccuXz", + "payment_method": "pm_1P8hNxKuuB1fWySnfmO4yubj", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,5 +398,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:02 GMT + recorded_at: Tue, 23 Apr 2024 11:19:43 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml index 8d8991e463..1d72365cb6 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_wY4B9jGNDMtMfn","request_duration_ms":1025}}' + - '{"last_request_metrics":{"request_id":"req_fAlf1ANzZpDMNt","request_duration_ms":954}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:10 GMT + - Tue, 23 Apr 2024 11:19:50 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 2241cd18-8e05-445c-974e-8415a457fa84 + - ac9184bb-b326-4149-be1a-182155ad7b46 Original-Request: - - req_4IP4EqUc5hGbSe + - req_5tYNRKSrMEPncv Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_4IP4EqUc5hGbSe + - req_5tYNRKSrMEPncv Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8EKuuB1fWySnyWld9oNi", + "id": "pm_1P8hO5KuuB1fWySnqHXCiMaz", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393550, + "created": 1713871189, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:10 GMT + recorded_at: Tue, 23 Apr 2024 11:19:50 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8EKuuB1fWySnyWld9oNi&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hO5KuuB1fWySnqHXCiMaz&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_4IP4EqUc5hGbSe","request_duration_ms":475}}' + - '{"last_request_metrics":{"request_id":"req_5tYNRKSrMEPncv","request_duration_ms":421}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:11 GMT + - Tue, 23 Apr 2024 11:19:50 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 4f2f7788-7139-4924-b357-4daa3a479fa8 + - 3ee07a73-455d-4ad7-a528-350f2e02aeaa Original-Request: - - req_pv5d4X4q5cn45x + - req_WSjjJfvrG3kK4c Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_pv5d4X4q5cn45x + - req_WSjjJfvrG3kK4c Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8EKuuB1fWySn2pZzJXzz", + "id": "pi_3P8hO6KuuB1fWySn1IwrPXzP", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393550, + "created": 1713871190, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8EKuuB1fWySnyWld9oNi", + "payment_method": "pm_1P8hO5KuuB1fWySnqHXCiMaz", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:11 GMT + recorded_at: Tue, 23 Apr 2024 11:19:50 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8EKuuB1fWySn2pZzJXzz/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hO6KuuB1fWySn1IwrPXzP/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_pv5d4X4q5cn45x","request_duration_ms":578}}' + - '{"last_request_metrics":{"request_id":"req_WSjjJfvrG3kK4c","request_duration_ms":423}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:12 GMT + - Tue, 23 Apr 2024 11:19:51 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - fee95263-7a25-4762-8fe4-86e1a87bbfe9 + - d02cccc9-34d6-4c71-a4a6-b0bd477f1ba7 Original-Request: - - req_YP4sNK7buFgJiP + - req_MO4YL2nMwG7MXK Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_YP4sNK7buFgJiP + - req_MO4YL2nMwG7MXK Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8EKuuB1fWySn2pZzJXzz", + "id": "pi_3P8hO6KuuB1fWySn1IwrPXzP", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393550, + "created": 1713871190, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8EKuuB1fWySn24dbBR1i", + "latest_charge": "ch_3P8hO6KuuB1fWySn1ig8dB77", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8EKuuB1fWySnyWld9oNi", + "payment_method": "pm_1P8hO5KuuB1fWySnqHXCiMaz", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,10 +398,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:12 GMT + recorded_at: Tue, 23 Apr 2024 11:19:51 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8EKuuB1fWySn2pZzJXzz + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hO6KuuB1fWySn1IwrPXzP body: encoding: US-ASCII string: '' @@ -413,7 +413,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_YP4sNK7buFgJiP","request_duration_ms":1226}}' + - '{"last_request_metrics":{"request_id":"req_MO4YL2nMwG7MXK","request_duration_ms":919}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -430,7 +430,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:12 GMT + - Tue, 23 Apr 2024 11:19:51 GMT Content-Type: - application/json Content-Length: @@ -462,7 +462,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_tM97ZW0ucJ8jxO + - req_g7XHae1FaSx5Ba Stripe-Version: - '2024-04-10' Vary: @@ -475,7 +475,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8EKuuB1fWySn2pZzJXzz", + "id": "pi_3P8hO6KuuB1fWySn1IwrPXzP", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -491,18 +491,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393550, + "created": 1713871190, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8EKuuB1fWySn24dbBR1i", + "latest_charge": "ch_3P8hO6KuuB1fWySn1ig8dB77", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8EKuuB1fWySnyWld9oNi", + "payment_method": "pm_1P8hO5KuuB1fWySnqHXCiMaz", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -527,10 +527,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:12 GMT + recorded_at: Tue, 23 Apr 2024 11:19:51 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8EKuuB1fWySn2pZzJXzz/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hO6KuuB1fWySn1IwrPXzP/capture body: encoding: US-ASCII string: '' @@ -542,7 +542,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_tM97ZW0ucJ8jxO","request_duration_ms":407}}' + - '{"last_request_metrics":{"request_id":"req_g7XHae1FaSx5Ba","request_duration_ms":407}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -559,7 +559,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:14 GMT + - Tue, 23 Apr 2024 11:19:52 GMT Content-Type: - application/json Content-Length: @@ -587,15 +587,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - a04cd255-ba11-4624-a52a-555c3b4fc020 + - 0c4e5c8b-a2b5-47ba-836b-ed85e2cf82a7 Original-Request: - - req_Sy7n2RgT7nbSAm + - req_cCJKr1t50pPyIF Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_Sy7n2RgT7nbSAm + - req_cCJKr1t50pPyIF Stripe-Should-Retry: - 'false' Stripe-Version: @@ -610,7 +610,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8EKuuB1fWySn2pZzJXzz", + "id": "pi_3P8hO6KuuB1fWySn1IwrPXzP", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -626,18 +626,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393550, + "created": 1713871190, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8EKuuB1fWySn24dbBR1i", + "latest_charge": "ch_3P8hO6KuuB1fWySn1ig8dB77", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8EKuuB1fWySnyWld9oNi", + "payment_method": "pm_1P8hO5KuuB1fWySnqHXCiMaz", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -662,10 +662,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:14 GMT + recorded_at: Tue, 23 Apr 2024 11:19:53 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8EKuuB1fWySn2pZzJXzz + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hO6KuuB1fWySn1IwrPXzP body: encoding: US-ASCII string: '' @@ -677,7 +677,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_Sy7n2RgT7nbSAm","request_duration_ms":1168}}' + - '{"last_request_metrics":{"request_id":"req_cCJKr1t50pPyIF","request_duration_ms":1224}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -694,7 +694,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:14 GMT + - Tue, 23 Apr 2024 11:19:53 GMT Content-Type: - application/json Content-Length: @@ -726,7 +726,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_51gEEe58VXMvAb + - req_QpAFzYIN9Npz9E Stripe-Version: - '2024-04-10' Vary: @@ -739,7 +739,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8EKuuB1fWySn2pZzJXzz", + "id": "pi_3P8hO6KuuB1fWySn1IwrPXzP", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -755,18 +755,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393550, + "created": 1713871190, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8EKuuB1fWySn24dbBR1i", + "latest_charge": "ch_3P8hO6KuuB1fWySn1ig8dB77", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8EKuuB1fWySnyWld9oNi", + "payment_method": "pm_1P8hO5KuuB1fWySnqHXCiMaz", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -791,5 +791,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:14 GMT + recorded_at: Tue, 23 Apr 2024 11:19:53 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml index 19a441486e..7ec3b2a5e7 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_Ig3AJuIzfGoNOE","request_duration_ms":0}}' + - '{"last_request_metrics":{"request_id":"req_RgFOb6snLO0WMi","request_duration_ms":2}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:08 GMT + - Tue, 23 Apr 2024 11:19:47 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - a3d1e9b9-1762-4194-aa0f-bcfa32002963 + - 9e2abb26-3297-4c73-990f-757e2674d462 Original-Request: - - req_JiR92vYhr5TM50 + - req_tf2Rs1eihoUNxK Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_JiR92vYhr5TM50 + - req_tf2Rs1eihoUNxK Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8CKuuB1fWySnn2XdeHK9", + "id": "pm_1P8hO3KuuB1fWySnY7BZKiff", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393548, + "created": 1713871187, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:08 GMT + recorded_at: Tue, 23 Apr 2024 11:19:47 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8CKuuB1fWySnn2XdeHK9&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hO3KuuB1fWySnY7BZKiff&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_JiR92vYhr5TM50","request_duration_ms":649}}' + - '{"last_request_metrics":{"request_id":"req_tf2Rs1eihoUNxK","request_duration_ms":611}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:08 GMT + - Tue, 23 Apr 2024 11:19:48 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 9853ac76-700d-4823-90b5-5d52fc9d8635 + - 368b0e6c-ff08-450c-a7e2-c4c66563bb17 Original-Request: - - req_8jGk89mm1ODvyk + - req_3p5Z7xay6hP4RH Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_8jGk89mm1ODvyk + - req_3p5Z7xay6hP4RH Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8CKuuB1fWySn10MMn2hm", + "id": "pi_3P8hO3KuuB1fWySn1HOnd9p1", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393548, + "created": 1713871187, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8CKuuB1fWySnn2XdeHK9", + "payment_method": "pm_1P8hO3KuuB1fWySnY7BZKiff", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:09 GMT + recorded_at: Tue, 23 Apr 2024 11:19:48 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8CKuuB1fWySn10MMn2hm/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hO3KuuB1fWySn1HOnd9p1/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_8jGk89mm1ODvyk","request_duration_ms":511}}' + - '{"last_request_metrics":{"request_id":"req_3p5Z7xay6hP4RH","request_duration_ms":406}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:10 GMT + - Tue, 23 Apr 2024 11:19:49 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 6a66637e-54e0-4fc5-ac45-3720f80d9700 + - 5e3cd5fe-4bc1-478c-ad1b-24eb5f4be301 Original-Request: - - req_wY4B9jGNDMtMfn + - req_fAlf1ANzZpDMNt Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_wY4B9jGNDMtMfn + - req_fAlf1ANzZpDMNt Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8CKuuB1fWySn10MMn2hm", + "id": "pi_3P8hO3KuuB1fWySn1HOnd9p1", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393548, + "created": 1713871187, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8CKuuB1fWySn129qcNTE", + "latest_charge": "ch_3P8hO3KuuB1fWySn1899AcR4", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8CKuuB1fWySnn2XdeHK9", + "payment_method": "pm_1P8hO3KuuB1fWySnY7BZKiff", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,5 +398,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:10 GMT + recorded_at: Tue, 23 Apr 2024 11:19:49 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml index 2796157516..885412ee9f 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_XU3WFVYNTliEXC","request_duration_ms":1021}}' + - '{"last_request_metrics":{"request_id":"req_kl1l8tZ8m0kbDf","request_duration_ms":1002}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:35 GMT + - Tue, 23 Apr 2024 11:20:13 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 357da29a-e2b7-43cc-bd9e-161b9d520bdc + - a40dc133-7ca3-4b09-8e6f-e8c61d370584 Original-Request: - - req_7UNFeEXr46vI6L + - req_mUyu5seUEEfMGE Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_7UNFeEXr46vI6L + - req_mUyu5seUEEfMGE Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8dKuuB1fWySnhCOEVBGj", + "id": "pm_1P8hOTKuuB1fWySnkItqUgEU", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393575, + "created": 1713871213, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:35 GMT + recorded_at: Tue, 23 Apr 2024 11:20:14 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8dKuuB1fWySnhCOEVBGj&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hOTKuuB1fWySnkItqUgEU&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_7UNFeEXr46vI6L","request_duration_ms":548}}' + - '{"last_request_metrics":{"request_id":"req_mUyu5seUEEfMGE","request_duration_ms":455}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:36 GMT + - Tue, 23 Apr 2024 11:20:14 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 4bdc362a-568f-46e0-8bf5-ead8998c4194 + - 1cb2b91a-4dc4-4046-93fa-8c875120ee62 Original-Request: - - req_rRa1jvM4JlQWMg + - req_axYjMwHkPhMAM7 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_rRa1jvM4JlQWMg + - req_axYjMwHkPhMAM7 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8eKuuB1fWySn1b9CxAKe", + "id": "pi_3P8hOUKuuB1fWySn0OCzn8IF", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393576, + "created": 1713871214, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8dKuuB1fWySnhCOEVBGj", + "payment_method": "pm_1P8hOTKuuB1fWySnkItqUgEU", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:36 GMT + recorded_at: Tue, 23 Apr 2024 11:20:14 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8eKuuB1fWySn1b9CxAKe/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOUKuuB1fWySn0OCzn8IF/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_rRa1jvM4JlQWMg","request_duration_ms":510}}' + - '{"last_request_metrics":{"request_id":"req_axYjMwHkPhMAM7","request_duration_ms":388}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:37 GMT + - Tue, 23 Apr 2024 11:20:15 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - a9d0ea38-5bed-4c67-a252-966681874216 + - ac7c0a58-37d5-425c-8b04-b043f2855864 Original-Request: - - req_ENWSMHqZcGMWpK + - req_TuBek7AQPiM0nt Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_ENWSMHqZcGMWpK + - req_TuBek7AQPiM0nt Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8eKuuB1fWySn1b9CxAKe", + "id": "pi_3P8hOUKuuB1fWySn0OCzn8IF", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393576, + "created": 1713871214, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8eKuuB1fWySn1YNttyDS", + "latest_charge": "ch_3P8hOUKuuB1fWySn0xp8MWNk", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8dKuuB1fWySnhCOEVBGj", + "payment_method": "pm_1P8hOTKuuB1fWySnkItqUgEU", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,10 +398,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:37 GMT + recorded_at: Tue, 23 Apr 2024 11:20:15 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8eKuuB1fWySn1b9CxAKe + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOUKuuB1fWySn0OCzn8IF body: encoding: US-ASCII string: '' @@ -413,7 +413,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_ENWSMHqZcGMWpK","request_duration_ms":1021}}' + - '{"last_request_metrics":{"request_id":"req_TuBek7AQPiM0nt","request_duration_ms":976}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -430,7 +430,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:37 GMT + - Tue, 23 Apr 2024 11:20:15 GMT Content-Type: - application/json Content-Length: @@ -462,7 +462,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_gZ7FYVaBhGNqpm + - req_kdelbdfbggTPaa Stripe-Version: - '2024-04-10' Vary: @@ -475,7 +475,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8eKuuB1fWySn1b9CxAKe", + "id": "pi_3P8hOUKuuB1fWySn0OCzn8IF", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -491,18 +491,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393576, + "created": 1713871214, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8eKuuB1fWySn1YNttyDS", + "latest_charge": "ch_3P8hOUKuuB1fWySn0xp8MWNk", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8dKuuB1fWySnhCOEVBGj", + "payment_method": "pm_1P8hOTKuuB1fWySnkItqUgEU", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -527,10 +527,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:37 GMT + recorded_at: Tue, 23 Apr 2024 11:20:15 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8eKuuB1fWySn1b9CxAKe/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOUKuuB1fWySn0OCzn8IF/capture body: encoding: US-ASCII string: '' @@ -542,7 +542,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_gZ7FYVaBhGNqpm","request_duration_ms":406}}' + - '{"last_request_metrics":{"request_id":"req_kdelbdfbggTPaa","request_duration_ms":407}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -559,7 +559,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:38 GMT + - Tue, 23 Apr 2024 11:20:16 GMT Content-Type: - application/json Content-Length: @@ -587,15 +587,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 285699b9-4dbc-4957-9c63-1e566b6cc8ee + - 0673b866-665c-491c-bc27-21aa00e8f09d Original-Request: - - req_x019kO3n2Z4x3w + - req_GpEipF4MI3yx0T Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_x019kO3n2Z4x3w + - req_GpEipF4MI3yx0T Stripe-Should-Retry: - 'false' Stripe-Version: @@ -610,7 +610,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8eKuuB1fWySn1b9CxAKe", + "id": "pi_3P8hOUKuuB1fWySn0OCzn8IF", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -626,18 +626,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393576, + "created": 1713871214, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8eKuuB1fWySn1YNttyDS", + "latest_charge": "ch_3P8hOUKuuB1fWySn0xp8MWNk", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8dKuuB1fWySnhCOEVBGj", + "payment_method": "pm_1P8hOTKuuB1fWySnkItqUgEU", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -662,10 +662,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:38 GMT + recorded_at: Tue, 23 Apr 2024 11:20:16 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8eKuuB1fWySn1b9CxAKe + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOUKuuB1fWySn0OCzn8IF body: encoding: US-ASCII string: '' @@ -677,7 +677,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_x019kO3n2Z4x3w","request_duration_ms":1021}}' + - '{"last_request_metrics":{"request_id":"req_GpEipF4MI3yx0T","request_duration_ms":1009}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -694,7 +694,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:39 GMT + - Tue, 23 Apr 2024 11:20:17 GMT Content-Type: - application/json Content-Length: @@ -726,7 +726,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_e3is6LFByX27Sh + - req_aZYwq636amcQQc Stripe-Version: - '2024-04-10' Vary: @@ -739,7 +739,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8eKuuB1fWySn1b9CxAKe", + "id": "pi_3P8hOUKuuB1fWySn0OCzn8IF", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -755,18 +755,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393576, + "created": 1713871214, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8eKuuB1fWySn1YNttyDS", + "latest_charge": "ch_3P8hOUKuuB1fWySn0xp8MWNk", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8dKuuB1fWySnhCOEVBGj", + "payment_method": "pm_1P8hOTKuuB1fWySnkItqUgEU", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -791,5 +791,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:39 GMT + recorded_at: Tue, 23 Apr 2024 11:20:17 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml index a8f2b95f22..41e3981b40 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_hfwFTTxVfnyp1F","request_duration_ms":407}}' + - '{"last_request_metrics":{"request_id":"req_JAV7p6VHbcflfL","request_duration_ms":363}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:33 GMT + - Tue, 23 Apr 2024 11:20:11 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - ec6ae87e-5372-4823-a3c1-048be735cbe9 + - 96c811e1-f032-4603-83f7-ddfe1ba57f16 Original-Request: - - req_o3NQREyRyHqUeQ + - req_gN71qbyBhbSCaV Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_o3NQREyRyHqUeQ + - req_gN71qbyBhbSCaV Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8bKuuB1fWySnV3EVs9rr", + "id": "pm_1P8hORKuuB1fWySnpgvVFNXR", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393573, + "created": 1713871211, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:33 GMT + recorded_at: Tue, 23 Apr 2024 11:20:11 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8bKuuB1fWySnV3EVs9rr&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hORKuuB1fWySnpgvVFNXR&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_o3NQREyRyHqUeQ","request_duration_ms":470}}' + - '{"last_request_metrics":{"request_id":"req_gN71qbyBhbSCaV","request_duration_ms":460}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:33 GMT + - Tue, 23 Apr 2024 11:20:12 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 7d15d187-e69f-4492-a8e7-5ab0af825e8f + - dbb3f060-b47b-40c3-9f4b-110c01f5dd82 Original-Request: - - req_5XJ8dCbnt9VCWt + - req_l0GRMW8ha1y6ZY Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_5XJ8dCbnt9VCWt + - req_l0GRMW8ha1y6ZY Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8bKuuB1fWySn2iWXlsFV", + "id": "pi_3P8hOSKuuB1fWySn0jMpjzSN", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393573, + "created": 1713871212, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8bKuuB1fWySnV3EVs9rr", + "payment_method": "pm_1P8hORKuuB1fWySnpgvVFNXR", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:34 GMT + recorded_at: Tue, 23 Apr 2024 11:20:12 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8bKuuB1fWySn2iWXlsFV/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOSKuuB1fWySn0jMpjzSN/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_5XJ8dCbnt9VCWt","request_duration_ms":510}}' + - '{"last_request_metrics":{"request_id":"req_l0GRMW8ha1y6ZY","request_duration_ms":409}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:34 GMT + - Tue, 23 Apr 2024 11:20:13 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - b3de6aaa-c28c-4574-bed6-bf885213bcc1 + - 35a65fd7-95f6-4d2b-a295-4b3a9e2c0881 Original-Request: - - req_XU3WFVYNTliEXC + - req_kl1l8tZ8m0kbDf Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_XU3WFVYNTliEXC + - req_kl1l8tZ8m0kbDf Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8bKuuB1fWySn2iWXlsFV", + "id": "pi_3P8hOSKuuB1fWySn0jMpjzSN", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393573, + "created": 1713871212, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8bKuuB1fWySn2ZYaHWqC", + "latest_charge": "ch_3P8hOSKuuB1fWySn0eEJgg3W", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8bKuuB1fWySnV3EVs9rr", + "payment_method": "pm_1P8hORKuuB1fWySnpgvVFNXR", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,5 +398,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:35 GMT + recorded_at: Tue, 23 Apr 2024 11:20:13 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml index f815907d41..432ee72102 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_g8fpJ3tSDgxYPQ","request_duration_ms":1020}}' + - '{"last_request_metrics":{"request_id":"req_eIInMRZ1eXZU41","request_duration_ms":1016}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:31 GMT + - Tue, 23 Apr 2024 11:19:13 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - e21b93d0-027e-44c7-98c8-ea1baa84af7f + - 5ceec80c-a100-460a-8a03-84ed8bb7f5c0 Original-Request: - - req_OzvqmGMnvaWaBl + - req_jqcXi4NJ8WV0n4 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_OzvqmGMnvaWaBl + - req_jqcXi4NJ8WV0n4 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h7bKuuB1fWySnmKTufvU0", + "id": "pm_1P8hNVKuuB1fWySnVxlVNCjV", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393511, + "created": 1713871153, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:38:32 GMT + recorded_at: Tue, 23 Apr 2024 11:19:13 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h7bKuuB1fWySnmKTufvU0&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hNVKuuB1fWySnVxlVNCjV&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_OzvqmGMnvaWaBl","request_duration_ms":560}}' + - '{"last_request_metrics":{"request_id":"req_jqcXi4NJ8WV0n4","request_duration_ms":479}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:32 GMT + - Tue, 23 Apr 2024 11:19:13 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 4a1f364f-085d-4591-8d13-696b5b052464 + - 220209d4-9049-4517-af7c-08490432ee4d Original-Request: - - req_5I1uIn6AbfwyeA + - req_sPHq2BjlP1unjJ Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_5I1uIn6AbfwyeA + - req_sPHq2BjlP1unjJ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7cKuuB1fWySn2TjKl4Mh", + "id": "pi_3P8hNVKuuB1fWySn1DL7rhUi", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393512, + "created": 1713871153, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7bKuuB1fWySnmKTufvU0", + "payment_method": "pm_1P8hNVKuuB1fWySnVxlVNCjV", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:32 GMT + recorded_at: Tue, 23 Apr 2024 11:19:14 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7cKuuB1fWySn2TjKl4Mh/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNVKuuB1fWySn1DL7rhUi/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_5I1uIn6AbfwyeA","request_duration_ms":508}}' + - '{"last_request_metrics":{"request_id":"req_sPHq2BjlP1unjJ","request_duration_ms":383}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:33 GMT + - Tue, 23 Apr 2024 11:19:14 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 6711bdc3-7014-4a10-92c5-4e6297b59d90 + - 71122f42-4394-4b01-8772-9969cdbed905 Original-Request: - - req_qGBXUK9Cyg5bMl + - req_QOY3UnPSJbztPn Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_qGBXUK9Cyg5bMl + - req_QOY3UnPSJbztPn Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7cKuuB1fWySn2TjKl4Mh", + "id": "pi_3P8hNVKuuB1fWySn1DL7rhUi", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393512, + "created": 1713871153, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7cKuuB1fWySn2UMZdoWi", + "latest_charge": "ch_3P8hNVKuuB1fWySn1qxnZG1M", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7bKuuB1fWySnmKTufvU0", + "payment_method": "pm_1P8hNVKuuB1fWySnVxlVNCjV", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,10 +398,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:33 GMT + recorded_at: Tue, 23 Apr 2024 11:19:15 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7cKuuB1fWySn2TjKl4Mh + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNVKuuB1fWySn1DL7rhUi body: encoding: US-ASCII string: '' @@ -413,7 +413,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_qGBXUK9Cyg5bMl","request_duration_ms":1021}}' + - '{"last_request_metrics":{"request_id":"req_QOY3UnPSJbztPn","request_duration_ms":1039}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -430,7 +430,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:33 GMT + - Tue, 23 Apr 2024 11:19:15 GMT Content-Type: - application/json Content-Length: @@ -462,7 +462,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_c0GSQTvUz0RucZ + - req_wl40jfIqsJltcH Stripe-Version: - '2024-04-10' Vary: @@ -475,7 +475,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7cKuuB1fWySn2TjKl4Mh", + "id": "pi_3P8hNVKuuB1fWySn1DL7rhUi", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -491,18 +491,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393512, + "created": 1713871153, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7cKuuB1fWySn2UMZdoWi", + "latest_charge": "ch_3P8hNVKuuB1fWySn1qxnZG1M", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7bKuuB1fWySnmKTufvU0", + "payment_method": "pm_1P8hNVKuuB1fWySnVxlVNCjV", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -527,10 +527,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:33 GMT + recorded_at: Tue, 23 Apr 2024 11:19:15 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7cKuuB1fWySn2TjKl4Mh/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNVKuuB1fWySn1DL7rhUi/capture body: encoding: US-ASCII string: '' @@ -542,7 +542,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_c0GSQTvUz0RucZ","request_duration_ms":406}}' + - '{"last_request_metrics":{"request_id":"req_wl40jfIqsJltcH","request_duration_ms":406}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -559,7 +559,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:34 GMT + - Tue, 23 Apr 2024 11:19:16 GMT Content-Type: - application/json Content-Length: @@ -587,15 +587,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 199b836c-b997-4ce4-a40d-41f209ab3e9b + - 83d55169-9ec4-41ae-8f7d-5a54fea71870 Original-Request: - - req_qxbgYtm9mjH1jt + - req_wB5IUmdP1EYXMA Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_qxbgYtm9mjH1jt + - req_wB5IUmdP1EYXMA Stripe-Should-Retry: - 'false' Stripe-Version: @@ -610,7 +610,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7cKuuB1fWySn2TjKl4Mh", + "id": "pi_3P8hNVKuuB1fWySn1DL7rhUi", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -626,18 +626,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393512, + "created": 1713871153, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7cKuuB1fWySn2UMZdoWi", + "latest_charge": "ch_3P8hNVKuuB1fWySn1qxnZG1M", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7bKuuB1fWySnmKTufvU0", + "payment_method": "pm_1P8hNVKuuB1fWySnVxlVNCjV", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -662,10 +662,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:35 GMT + recorded_at: Tue, 23 Apr 2024 11:19:16 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7cKuuB1fWySn2TjKl4Mh + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNVKuuB1fWySn1DL7rhUi body: encoding: US-ASCII string: '' @@ -677,7 +677,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_qxbgYtm9mjH1jt","request_duration_ms":1056}}' + - '{"last_request_metrics":{"request_id":"req_wB5IUmdP1EYXMA","request_duration_ms":1020}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -694,7 +694,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:35 GMT + - Tue, 23 Apr 2024 11:19:16 GMT Content-Type: - application/json Content-Length: @@ -726,7 +726,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_1TBVTn0lfprC7a + - req_SSRtzR6wWky9D6 Stripe-Version: - '2024-04-10' Vary: @@ -739,7 +739,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7cKuuB1fWySn2TjKl4Mh", + "id": "pi_3P8hNVKuuB1fWySn1DL7rhUi", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -755,18 +755,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393512, + "created": 1713871153, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7cKuuB1fWySn2UMZdoWi", + "latest_charge": "ch_3P8hNVKuuB1fWySn1qxnZG1M", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7bKuuB1fWySnmKTufvU0", + "payment_method": "pm_1P8hNVKuuB1fWySnVxlVNCjV", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -791,5 +791,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:35 GMT + recorded_at: Tue, 23 Apr 2024 11:19:16 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml index 956a3491aa..b2dbf14ea2 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_VCkHzjjHMXrfND","request_duration_ms":405}}' + - '{"last_request_metrics":{"request_id":"req_nTq52MOanuOx3G","request_duration_ms":414}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:29 GMT + - Tue, 23 Apr 2024 11:19:11 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 637171ff-19eb-48b9-8401-d23a8f9e5214 + - 7976a805-223e-4e5b-a59c-55d0a6fc3e75 Original-Request: - - req_McZwC6YjxsbAEP + - req_Ca4xWT8rQNwZH1 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_McZwC6YjxsbAEP + - req_Ca4xWT8rQNwZH1 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h7ZKuuB1fWySnxHBASqdf", + "id": "pm_1P8hNSKuuB1fWySn4dpMW2My", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393509, + "created": 1713871151, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:38:29 GMT + recorded_at: Tue, 23 Apr 2024 11:19:11 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h7ZKuuB1fWySnxHBASqdf&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hNSKuuB1fWySn4dpMW2My&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_McZwC6YjxsbAEP","request_duration_ms":493}}' + - '{"last_request_metrics":{"request_id":"req_Ca4xWT8rQNwZH1","request_duration_ms":467}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:30 GMT + - Tue, 23 Apr 2024 11:19:11 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 5a404a67-bdd7-4648-bbf3-e6fa3647c924 + - 4acd1a5c-2904-4cef-a24c-df22988652af Original-Request: - - req_NgaDMPUptcH1lw + - req_wv6lC78dnzLGrQ Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_NgaDMPUptcH1lw + - req_wv6lC78dnzLGrQ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7ZKuuB1fWySn0Epjo3Ys", + "id": "pi_3P8hNTKuuB1fWySn19SCwgTp", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393509, + "created": 1713871151, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7ZKuuB1fWySnxHBASqdf", + "payment_method": "pm_1P8hNSKuuB1fWySn4dpMW2My", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:30 GMT + recorded_at: Tue, 23 Apr 2024 11:19:11 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7ZKuuB1fWySn0Epjo3Ys/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNTKuuB1fWySn19SCwgTp/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_NgaDMPUptcH1lw","request_duration_ms":509}}' + - '{"last_request_metrics":{"request_id":"req_wv6lC78dnzLGrQ","request_duration_ms":412}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:31 GMT + - Tue, 23 Apr 2024 11:19:12 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - ddbf9dc3-4691-49dd-82d6-15ce020d7ac7 + - b6253b97-24c3-4f95-9d90-8448b0354929 Original-Request: - - req_g8fpJ3tSDgxYPQ + - req_eIInMRZ1eXZU41 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_g8fpJ3tSDgxYPQ + - req_eIInMRZ1eXZU41 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7ZKuuB1fWySn0Epjo3Ys", + "id": "pi_3P8hNTKuuB1fWySn19SCwgTp", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393509, + "created": 1713871151, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7ZKuuB1fWySn09Ti3WUV", + "latest_charge": "ch_3P8hNTKuuB1fWySn1Lmu3kRA", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7ZKuuB1fWySnxHBASqdf", + "payment_method": "pm_1P8hNSKuuB1fWySn4dpMW2My", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,5 +398,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:31 GMT + recorded_at: Tue, 23 Apr 2024 11:19:12 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml index 90cd0b7c64..56990a5012 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_Baoct8gPfc5IXe","request_duration_ms":1124}}' + - '{"last_request_metrics":{"request_id":"req_ygkJQozQtkURDT","request_duration_ms":1018}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:38 GMT + - Tue, 23 Apr 2024 11:19:19 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 155ba9ef-7af4-4b55-a1b0-b28a42a43a4a + - cb6e26f7-2bd0-4ccf-9375-bbb5ad649a41 Original-Request: - - req_aitA9tdDrHSICN + - req_IPdDMbOxGLlNqg Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_aitA9tdDrHSICN + - req_IPdDMbOxGLlNqg Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h7iKuuB1fWySnJyTtWbWH", + "id": "pm_1P8hNbKuuB1fWySnuDwN50nq", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393518, + "created": 1713871159, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:38:38 GMT + recorded_at: Tue, 23 Apr 2024 11:19:19 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h7iKuuB1fWySnJyTtWbWH&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hNbKuuB1fWySnuDwN50nq&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_aitA9tdDrHSICN","request_duration_ms":460}}' + - '{"last_request_metrics":{"request_id":"req_IPdDMbOxGLlNqg","request_duration_ms":474}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:38 GMT + - Tue, 23 Apr 2024 11:19:20 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 5984f7d2-a8b3-4223-86db-64603fb29ca5 + - 3ec55a49-5395-43d0-bc83-7227bba04153 Original-Request: - - req_AYqcfGX1gF01Lp + - req_c9usRMhk51o6Ac Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_AYqcfGX1gF01Lp + - req_c9usRMhk51o6Ac Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7iKuuB1fWySn085HPtaw", + "id": "pi_3P8hNbKuuB1fWySn16kVbAJ6", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393518, + "created": 1713871159, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7iKuuB1fWySnJyTtWbWH", + "payment_method": "pm_1P8hNbKuuB1fWySnuDwN50nq", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:39 GMT + recorded_at: Tue, 23 Apr 2024 11:19:20 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7iKuuB1fWySn085HPtaw/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNbKuuB1fWySn16kVbAJ6/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_AYqcfGX1gF01Lp","request_duration_ms":508}}' + - '{"last_request_metrics":{"request_id":"req_c9usRMhk51o6Ac","request_duration_ms":413}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:40 GMT + - Tue, 23 Apr 2024 11:19:20 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - c4e41b64-9dbb-4b18-9126-05c223d27f1b + - 21e61612-80e3-4284-b8a5-acd4ab9d3441 Original-Request: - - req_tN8OhC5SoBlYkK + - req_DbJHhKNFUljKyc Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_tN8OhC5SoBlYkK + - req_DbJHhKNFUljKyc Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7iKuuB1fWySn085HPtaw", + "id": "pi_3P8hNbKuuB1fWySn16kVbAJ6", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393518, + "created": 1713871159, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7iKuuB1fWySn0z4PW3rG", + "latest_charge": "ch_3P8hNbKuuB1fWySn1BvV6OsL", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7iKuuB1fWySnJyTtWbWH", + "payment_method": "pm_1P8hNbKuuB1fWySnuDwN50nq", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,10 +398,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:40 GMT + recorded_at: Tue, 23 Apr 2024 11:19:21 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7iKuuB1fWySn085HPtaw + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNbKuuB1fWySn16kVbAJ6 body: encoding: US-ASCII string: '' @@ -413,7 +413,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_tN8OhC5SoBlYkK","request_duration_ms":996}}' + - '{"last_request_metrics":{"request_id":"req_DbJHhKNFUljKyc","request_duration_ms":1013}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -430,7 +430,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:40 GMT + - Tue, 23 Apr 2024 11:19:21 GMT Content-Type: - application/json Content-Length: @@ -462,7 +462,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_hYHnMmN9ZeEqzM + - req_gWXHq55AgDqueS Stripe-Version: - '2024-04-10' Vary: @@ -475,7 +475,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7iKuuB1fWySn085HPtaw", + "id": "pi_3P8hNbKuuB1fWySn16kVbAJ6", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -491,18 +491,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393518, + "created": 1713871159, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7iKuuB1fWySn0z4PW3rG", + "latest_charge": "ch_3P8hNbKuuB1fWySn1BvV6OsL", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7iKuuB1fWySnJyTtWbWH", + "payment_method": "pm_1P8hNbKuuB1fWySnuDwN50nq", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -527,10 +527,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:40 GMT + recorded_at: Tue, 23 Apr 2024 11:19:21 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7iKuuB1fWySn085HPtaw/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNbKuuB1fWySn16kVbAJ6/capture body: encoding: US-ASCII string: '' @@ -542,7 +542,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_hYHnMmN9ZeEqzM","request_duration_ms":433}}' + - '{"last_request_metrics":{"request_id":"req_gWXHq55AgDqueS","request_duration_ms":305}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -559,7 +559,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:41 GMT + - Tue, 23 Apr 2024 11:19:22 GMT Content-Type: - application/json Content-Length: @@ -587,15 +587,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - fae3960c-ce41-4337-ba82-f2c6b537376d + - e7389e27-8f99-48f2-9032-e4c8d02fe66d Original-Request: - - req_fjJzgMgYlPR4DL + - req_6CfV62JgOuhgli Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_fjJzgMgYlPR4DL + - req_6CfV62JgOuhgli Stripe-Should-Retry: - 'false' Stripe-Version: @@ -610,7 +610,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7iKuuB1fWySn085HPtaw", + "id": "pi_3P8hNbKuuB1fWySn16kVbAJ6", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -626,18 +626,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393518, + "created": 1713871159, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7iKuuB1fWySn0z4PW3rG", + "latest_charge": "ch_3P8hNbKuuB1fWySn1BvV6OsL", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7iKuuB1fWySnJyTtWbWH", + "payment_method": "pm_1P8hNbKuuB1fWySnuDwN50nq", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -662,10 +662,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:41 GMT + recorded_at: Tue, 23 Apr 2024 11:19:22 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7iKuuB1fWySn085HPtaw + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNbKuuB1fWySn16kVbAJ6 body: encoding: US-ASCII string: '' @@ -677,7 +677,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_fjJzgMgYlPR4DL","request_duration_ms":1022}}' + - '{"last_request_metrics":{"request_id":"req_6CfV62JgOuhgli","request_duration_ms":1020}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -694,7 +694,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:41 GMT + - Tue, 23 Apr 2024 11:19:22 GMT Content-Type: - application/json Content-Length: @@ -726,7 +726,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_0gpLm2PRfuTefq + - req_mRbMJOdTu3yIY8 Stripe-Version: - '2024-04-10' Vary: @@ -739,7 +739,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7iKuuB1fWySn085HPtaw", + "id": "pi_3P8hNbKuuB1fWySn16kVbAJ6", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -755,18 +755,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393518, + "created": 1713871159, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7iKuuB1fWySn0z4PW3rG", + "latest_charge": "ch_3P8hNbKuuB1fWySn1BvV6OsL", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7iKuuB1fWySnJyTtWbWH", + "payment_method": "pm_1P8hNbKuuB1fWySnuDwN50nq", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -791,5 +791,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:41 GMT + recorded_at: Tue, 23 Apr 2024 11:19:22 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml index 5f0eba6cd9..8e1542d600 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_1TBVTn0lfprC7a","request_duration_ms":372}}' + - '{"last_request_metrics":{"request_id":"req_SSRtzR6wWky9D6","request_duration_ms":304}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:35 GMT + - Tue, 23 Apr 2024 11:19:17 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 58b3dc0d-d859-4aec-ad64-81fd829057f5 + - 8b37c4cf-b4a8-43dc-ac9b-324061ceaa48 Original-Request: - - req_TVHZ0jBYHD52eU + - req_cW83qnxUvfANtm Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_TVHZ0jBYHD52eU + - req_cW83qnxUvfANtm Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h7fKuuB1fWySnznMVKuJP", + "id": "pm_1P8hNZKuuB1fWySnl5x9fTeS", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393515, + "created": 1713871157, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:38:35 GMT + recorded_at: Tue, 23 Apr 2024 11:19:17 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h7fKuuB1fWySnznMVKuJP&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hNZKuuB1fWySnl5x9fTeS&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_TVHZ0jBYHD52eU","request_duration_ms":573}}' + - '{"last_request_metrics":{"request_id":"req_cW83qnxUvfANtm","request_duration_ms":413}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:36 GMT + - Tue, 23 Apr 2024 11:19:17 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 88b2ff41-8267-4e23-976e-14bef7f4dec3 + - 24dae735-2012-459e-bade-fc441ffb277f Original-Request: - - req_9lxpOGazNVrrTb + - req_Gtx8Vh5lqpsfIB Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_9lxpOGazNVrrTb + - req_Gtx8Vh5lqpsfIB Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7gKuuB1fWySn1X1xIIbG", + "id": "pi_3P8hNZKuuB1fWySn0YrMo2ze", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393516, + "created": 1713871157, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7fKuuB1fWySnznMVKuJP", + "payment_method": "pm_1P8hNZKuuB1fWySnl5x9fTeS", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:36 GMT + recorded_at: Tue, 23 Apr 2024 11:19:17 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7gKuuB1fWySn1X1xIIbG/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNZKuuB1fWySn0YrMo2ze/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_9lxpOGazNVrrTb","request_duration_ms":815}}' + - '{"last_request_metrics":{"request_id":"req_Gtx8Vh5lqpsfIB","request_duration_ms":454}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:37 GMT + - Tue, 23 Apr 2024 11:19:18 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - a577ba88-3c2d-4ba6-8a69-812963a05746 + - c38a9c4c-a01d-4e8f-b1d8-95861b8b364a Original-Request: - - req_Baoct8gPfc5IXe + - req_ygkJQozQtkURDT Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_Baoct8gPfc5IXe + - req_ygkJQozQtkURDT Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7gKuuB1fWySn1X1xIIbG", + "id": "pi_3P8hNZKuuB1fWySn0YrMo2ze", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393516, + "created": 1713871157, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7gKuuB1fWySn1yt01OWS", + "latest_charge": "ch_3P8hNZKuuB1fWySn0gAo8fu2", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7fKuuB1fWySnznMVKuJP", + "payment_method": "pm_1P8hNZKuuB1fWySnl5x9fTeS", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,5 +398,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:37 GMT + recorded_at: Tue, 23 Apr 2024 11:19:18 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml index 41427c758b..52d93bbd9c 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_u0ATTx9OcSqYEk","request_duration_ms":1023}}' + - '{"last_request_metrics":{"request_id":"req_vGSuRwCcR1RyAj","request_duration_ms":1021}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:44 GMT + - Tue, 23 Apr 2024 11:19:25 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - ea370f42-3dc3-4315-af92-6232ea741f11 + - 82d1cd6f-2d19-4acd-9459-53e42b796785 Original-Request: - - req_z2IxgLmQP4XsOi + - req_v9WiVetN61i25Q Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_z2IxgLmQP4XsOi + - req_v9WiVetN61i25Q Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h7oKuuB1fWySnyFTNOWm1", + "id": "pm_1P8hNhKuuB1fWySn8sb4JhFU", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393524, + "created": 1713871165, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:38:44 GMT + recorded_at: Tue, 23 Apr 2024 11:19:25 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h7oKuuB1fWySnyFTNOWm1&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hNhKuuB1fWySn8sb4JhFU&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_z2IxgLmQP4XsOi","request_duration_ms":509}}' + - '{"last_request_metrics":{"request_id":"req_v9WiVetN61i25Q","request_duration_ms":434}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:45 GMT + - Tue, 23 Apr 2024 11:19:26 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - c43a598b-483e-40fb-9c30-350c1995da11 + - e2ac6842-4c60-4343-b7e2-b8c0da78f857 Original-Request: - - req_KaAaukm0qPOKiL + - req_j8reuQxyiungfx Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_KaAaukm0qPOKiL + - req_j8reuQxyiungfx Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7oKuuB1fWySn1is54UOr", + "id": "pi_3P8hNhKuuB1fWySn2qjDLIwr", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393524, + "created": 1713871165, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7oKuuB1fWySnyFTNOWm1", + "payment_method": "pm_1P8hNhKuuB1fWySn8sb4JhFU", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:45 GMT + recorded_at: Tue, 23 Apr 2024 11:19:26 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7oKuuB1fWySn1is54UOr/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNhKuuB1fWySn2qjDLIwr/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_KaAaukm0qPOKiL","request_duration_ms":508}}' + - '{"last_request_metrics":{"request_id":"req_j8reuQxyiungfx","request_duration_ms":508}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:46 GMT + - Tue, 23 Apr 2024 11:19:26 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 20e1d8fd-31b7-4db5-b920-727c6ec8e1a5 + - d701ad83-98d7-469d-b63d-2433a0e37d76 Original-Request: - - req_4fRJWIkacIhtYr + - req_E8zwsU76kNilMK Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_4fRJWIkacIhtYr + - req_E8zwsU76kNilMK Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7oKuuB1fWySn1is54UOr", + "id": "pi_3P8hNhKuuB1fWySn2qjDLIwr", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393524, + "created": 1713871165, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7oKuuB1fWySn1Lmj8fEo", + "latest_charge": "ch_3P8hNhKuuB1fWySn2p3hpQaM", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7oKuuB1fWySnyFTNOWm1", + "payment_method": "pm_1P8hNhKuuB1fWySn8sb4JhFU", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,10 +398,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:46 GMT + recorded_at: Tue, 23 Apr 2024 11:19:27 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7oKuuB1fWySn1is54UOr + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNhKuuB1fWySn2qjDLIwr body: encoding: US-ASCII string: '' @@ -413,7 +413,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_4fRJWIkacIhtYr","request_duration_ms":1023}}' + - '{"last_request_metrics":{"request_id":"req_E8zwsU76kNilMK","request_duration_ms":919}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -430,7 +430,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:46 GMT + - Tue, 23 Apr 2024 11:19:27 GMT Content-Type: - application/json Content-Length: @@ -462,7 +462,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_lRsRRyRRsiSjey + - req_TK5D8Co2zE26qf Stripe-Version: - '2024-04-10' Vary: @@ -475,7 +475,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7oKuuB1fWySn1is54UOr", + "id": "pi_3P8hNhKuuB1fWySn2qjDLIwr", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -491,18 +491,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393524, + "created": 1713871165, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7oKuuB1fWySn1Lmj8fEo", + "latest_charge": "ch_3P8hNhKuuB1fWySn2p3hpQaM", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7oKuuB1fWySnyFTNOWm1", + "payment_method": "pm_1P8hNhKuuB1fWySn8sb4JhFU", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -527,10 +527,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:46 GMT + recorded_at: Tue, 23 Apr 2024 11:19:27 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7oKuuB1fWySn1is54UOr/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNhKuuB1fWySn2qjDLIwr/capture body: encoding: US-ASCII string: '' @@ -542,7 +542,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_lRsRRyRRsiSjey","request_duration_ms":408}}' + - '{"last_request_metrics":{"request_id":"req_TK5D8Co2zE26qf","request_duration_ms":323}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -559,7 +559,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:47 GMT + - Tue, 23 Apr 2024 11:19:28 GMT Content-Type: - application/json Content-Length: @@ -587,15 +587,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 15695f82-de91-43c9-9f1b-3f2df3c316e3 + - 10dad9b1-2c30-48db-97a5-c36c7a03b59c Original-Request: - - req_xMpudJ6IknmEGY + - req_HXV8nXhQy2SJn4 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_xMpudJ6IknmEGY + - req_HXV8nXhQy2SJn4 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -610,7 +610,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7oKuuB1fWySn1is54UOr", + "id": "pi_3P8hNhKuuB1fWySn2qjDLIwr", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -626,18 +626,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393524, + "created": 1713871165, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7oKuuB1fWySn1Lmj8fEo", + "latest_charge": "ch_3P8hNhKuuB1fWySn2p3hpQaM", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7oKuuB1fWySnyFTNOWm1", + "payment_method": "pm_1P8hNhKuuB1fWySn8sb4JhFU", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -662,10 +662,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:47 GMT + recorded_at: Tue, 23 Apr 2024 11:19:28 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7oKuuB1fWySn1is54UOr + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNhKuuB1fWySn2qjDLIwr body: encoding: US-ASCII string: '' @@ -677,7 +677,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_xMpudJ6IknmEGY","request_duration_ms":1125}}' + - '{"last_request_metrics":{"request_id":"req_HXV8nXhQy2SJn4","request_duration_ms":1103}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -694,7 +694,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:48 GMT + - Tue, 23 Apr 2024 11:19:28 GMT Content-Type: - application/json Content-Length: @@ -726,7 +726,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_v6DoSIIwC27Nmc + - req_wvPt0Yl7w6VCqT Stripe-Version: - '2024-04-10' Vary: @@ -739,7 +739,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7oKuuB1fWySn1is54UOr", + "id": "pi_3P8hNhKuuB1fWySn2qjDLIwr", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -755,18 +755,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393524, + "created": 1713871165, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7oKuuB1fWySn1Lmj8fEo", + "latest_charge": "ch_3P8hNhKuuB1fWySn2p3hpQaM", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7oKuuB1fWySnyFTNOWm1", + "payment_method": "pm_1P8hNhKuuB1fWySn8sb4JhFU", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -791,5 +791,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:48 GMT + recorded_at: Tue, 23 Apr 2024 11:19:28 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml index ce059551c7..17252e7ba6 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_0gpLm2PRfuTefq","request_duration_ms":408}}' + - '{"last_request_metrics":{"request_id":"req_mRbMJOdTu3yIY8","request_duration_ms":309}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:42 GMT + - Tue, 23 Apr 2024 11:19:23 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - e64e2cc4-76f2-4cd4-9918-a015bd58e3a9 + - '039a00fd-e5dd-40ad-b793-9628bd52a735' Original-Request: - - req_Ol9XydrU5YLSvA + - req_UyvUYS7xGrZret Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_Ol9XydrU5YLSvA + - req_UyvUYS7xGrZret Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h7mKuuB1fWySndBLUaRTW", + "id": "pm_1P8hNeKuuB1fWySnHp3wAfDo", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393522, + "created": 1713871163, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:38:42 GMT + recorded_at: Tue, 23 Apr 2024 11:19:23 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h7mKuuB1fWySndBLUaRTW&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hNeKuuB1fWySnHp3wAfDo&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_Ol9XydrU5YLSvA","request_duration_ms":491}}' + - '{"last_request_metrics":{"request_id":"req_UyvUYS7xGrZret","request_duration_ms":440}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:42 GMT + - Tue, 23 Apr 2024 11:19:23 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - a4e96058-ee65-4eb9-a91c-13b93abb4871 + - 481dfc12-44b8-4d0f-b2f3-ae50c65b78c6 Original-Request: - - req_za8Lt2fdNu3nL4 + - req_YGKSqZMtxwJgiA Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_za8Lt2fdNu3nL4 + - req_YGKSqZMtxwJgiA Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7mKuuB1fWySn0LrIvmS2", + "id": "pi_3P8hNfKuuB1fWySn2Yk2egJU", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393522, + "created": 1713871163, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7mKuuB1fWySndBLUaRTW", + "payment_method": "pm_1P8hNeKuuB1fWySnHp3wAfDo", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:42 GMT + recorded_at: Tue, 23 Apr 2024 11:19:23 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7mKuuB1fWySn0LrIvmS2/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNfKuuB1fWySn2Yk2egJU/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_za8Lt2fdNu3nL4","request_duration_ms":507}}' + - '{"last_request_metrics":{"request_id":"req_YGKSqZMtxwJgiA","request_duration_ms":507}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:43 GMT + - Tue, 23 Apr 2024 11:19:24 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - bf9ffa33-9c08-43b9-ac00-94b218b14498 + - e95f9c8b-1133-4b97-aa86-56c1f07da7d7 Original-Request: - - req_u0ATTx9OcSqYEk + - req_vGSuRwCcR1RyAj Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_u0ATTx9OcSqYEk + - req_vGSuRwCcR1RyAj Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7mKuuB1fWySn0LrIvmS2", + "id": "pi_3P8hNfKuuB1fWySn2Yk2egJU", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393522, + "created": 1713871163, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7mKuuB1fWySn0hGVmP6d", + "latest_charge": "ch_3P8hNfKuuB1fWySn2KRq6wRh", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7mKuuB1fWySndBLUaRTW", + "payment_method": "pm_1P8hNeKuuB1fWySnHp3wAfDo", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,5 +398,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:43 GMT + recorded_at: Tue, 23 Apr 2024 11:19:24 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml index e4ef2a590f..e9aa5d1a4c 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_HOGc3LwxQ8bbGA","request_duration_ms":1148}}' + - '{"last_request_metrics":{"request_id":"req_EZhonT4B1HHjbS","request_duration_ms":885}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:50 GMT + - Tue, 23 Apr 2024 11:19:31 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 1fe1438c-841f-4f5e-a299-2fabc1d46ecf + - df315c23-b165-4b1d-b420-435681f9ed8e Original-Request: - - req_1vVVBpVly5LReT + - req_fmRH5Y0cHaybeg Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_1vVVBpVly5LReT + - req_fmRH5Y0cHaybeg Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h7uKuuB1fWySnWpeF7LMi", + "id": "pm_1P8hNnKuuB1fWySnmPDg77iE", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393530, + "created": 1713871171, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:38:51 GMT + recorded_at: Tue, 23 Apr 2024 11:19:31 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h7uKuuB1fWySnWpeF7LMi&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hNnKuuB1fWySnmPDg77iE&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_1vVVBpVly5LReT","request_duration_ms":550}}' + - '{"last_request_metrics":{"request_id":"req_fmRH5Y0cHaybeg","request_duration_ms":444}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:51 GMT + - Tue, 23 Apr 2024 11:19:31 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 94e711e6-c607-4fc1-9392-21269895f6be + - 5d75f5ab-15ab-4c78-900a-68b4c33a470d Original-Request: - - req_TpAtg2osej6eim + - req_Vh4PEBHZLLpESl Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_TpAtg2osej6eim + - req_Vh4PEBHZLLpESl Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7vKuuB1fWySn18JZEKhK", + "id": "pi_3P8hNnKuuB1fWySn2FRVl7Gc", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393531, + "created": 1713871171, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7uKuuB1fWySnWpeF7LMi", + "payment_method": "pm_1P8hNnKuuB1fWySnmPDg77iE", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:51 GMT + recorded_at: Tue, 23 Apr 2024 11:19:31 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7vKuuB1fWySn18JZEKhK/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNnKuuB1fWySn2FRVl7Gc/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_TpAtg2osej6eim","request_duration_ms":508}}' + - '{"last_request_metrics":{"request_id":"req_Vh4PEBHZLLpESl","request_duration_ms":384}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:52 GMT + - Tue, 23 Apr 2024 11:19:32 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - e452b479-3f40-4c93-a412-0030ea9331a4 + - 6a9dc13d-6e93-48db-a5b3-98ff10f174c0 Original-Request: - - req_9qMGS66xdSElVa + - req_RFa6ZTWEZIs069 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_9qMGS66xdSElVa + - req_RFa6ZTWEZIs069 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7vKuuB1fWySn18JZEKhK", + "id": "pi_3P8hNnKuuB1fWySn2FRVl7Gc", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393531, + "created": 1713871171, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7vKuuB1fWySn17xjSwFI", + "latest_charge": "ch_3P8hNnKuuB1fWySn2qm1d1OQ", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7uKuuB1fWySnWpeF7LMi", + "payment_method": "pm_1P8hNnKuuB1fWySnmPDg77iE", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,10 +398,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:52 GMT + recorded_at: Tue, 23 Apr 2024 11:19:32 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7vKuuB1fWySn18JZEKhK + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNnKuuB1fWySn2FRVl7Gc body: encoding: US-ASCII string: '' @@ -413,7 +413,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_9qMGS66xdSElVa","request_duration_ms":922}}' + - '{"last_request_metrics":{"request_id":"req_RFa6ZTWEZIs069","request_duration_ms":943}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -430,7 +430,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:52 GMT + - Tue, 23 Apr 2024 11:19:33 GMT Content-Type: - application/json Content-Length: @@ -462,7 +462,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_SiW8OzK5f1KQ8y + - req_sr4TlLw3DLOUtd Stripe-Version: - '2024-04-10' Vary: @@ -475,7 +475,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7vKuuB1fWySn18JZEKhK", + "id": "pi_3P8hNnKuuB1fWySn2FRVl7Gc", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -491,18 +491,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393531, + "created": 1713871171, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7vKuuB1fWySn17xjSwFI", + "latest_charge": "ch_3P8hNnKuuB1fWySn2qm1d1OQ", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7uKuuB1fWySnWpeF7LMi", + "payment_method": "pm_1P8hNnKuuB1fWySnmPDg77iE", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -527,10 +527,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:52 GMT + recorded_at: Tue, 23 Apr 2024 11:19:33 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7vKuuB1fWySn18JZEKhK/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNnKuuB1fWySn2FRVl7Gc/capture body: encoding: US-ASCII string: '' @@ -542,7 +542,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_SiW8OzK5f1KQ8y","request_duration_ms":407}}' + - '{"last_request_metrics":{"request_id":"req_sr4TlLw3DLOUtd","request_duration_ms":314}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -559,7 +559,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:53 GMT + - Tue, 23 Apr 2024 11:19:34 GMT Content-Type: - application/json Content-Length: @@ -587,15 +587,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 6f7efa79-439f-4d6c-9dce-28aa175753a2 + - 330ea30b-03fa-41c7-8902-e0b00cf174c4 Original-Request: - - req_inyBfL3HezoHfX + - req_XVXG040I2GPJwr Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_inyBfL3HezoHfX + - req_XVXG040I2GPJwr Stripe-Should-Retry: - 'false' Stripe-Version: @@ -610,7 +610,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7vKuuB1fWySn18JZEKhK", + "id": "pi_3P8hNnKuuB1fWySn2FRVl7Gc", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -626,18 +626,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393531, + "created": 1713871171, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7vKuuB1fWySn17xjSwFI", + "latest_charge": "ch_3P8hNnKuuB1fWySn2qm1d1OQ", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7uKuuB1fWySnWpeF7LMi", + "payment_method": "pm_1P8hNnKuuB1fWySnmPDg77iE", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -662,10 +662,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:53 GMT + recorded_at: Tue, 23 Apr 2024 11:19:34 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7vKuuB1fWySn18JZEKhK + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNnKuuB1fWySn2FRVl7Gc body: encoding: US-ASCII string: '' @@ -677,7 +677,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_inyBfL3HezoHfX","request_duration_ms":1022}}' + - '{"last_request_metrics":{"request_id":"req_XVXG040I2GPJwr","request_duration_ms":1007}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -694,7 +694,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:54 GMT + - Tue, 23 Apr 2024 11:19:34 GMT Content-Type: - application/json Content-Length: @@ -726,7 +726,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_Op5E047dEuFump + - req_azV3R41xItqtxT Stripe-Version: - '2024-04-10' Vary: @@ -739,7 +739,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7vKuuB1fWySn18JZEKhK", + "id": "pi_3P8hNnKuuB1fWySn2FRVl7Gc", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -755,18 +755,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393531, + "created": 1713871171, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7vKuuB1fWySn17xjSwFI", + "latest_charge": "ch_3P8hNnKuuB1fWySn2qm1d1OQ", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7uKuuB1fWySnWpeF7LMi", + "payment_method": "pm_1P8hNnKuuB1fWySnmPDg77iE", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -791,5 +791,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:54 GMT + recorded_at: Tue, 23 Apr 2024 11:19:34 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml index 9eecdc19bd..5f305bde57 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_v6DoSIIwC27Nmc","request_duration_ms":353}}' + - '{"last_request_metrics":{"request_id":"req_wvPt0Yl7w6VCqT","request_duration_ms":296}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:48 GMT + - Tue, 23 Apr 2024 11:19:29 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 9c7f88f2-e81c-413f-bce1-341de7cf7292 + - 3a49e803-5cf9-48e2-ade1-97c65e3e422a Original-Request: - - req_UdvCKCkgZIuBiZ + - req_N9tbjVepiS2OV1 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_UdvCKCkgZIuBiZ + - req_N9tbjVepiS2OV1 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h7sKuuB1fWySnWFyGsEIQ", + "id": "pm_1P8hNkKuuB1fWySnFdjTt6h1", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393528, + "created": 1713871169, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:38:48 GMT + recorded_at: Tue, 23 Apr 2024 11:19:29 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h7sKuuB1fWySnWFyGsEIQ&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hNkKuuB1fWySnFdjTt6h1&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_UdvCKCkgZIuBiZ","request_duration_ms":551}}' + - '{"last_request_metrics":{"request_id":"req_N9tbjVepiS2OV1","request_duration_ms":476}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:49 GMT + - Tue, 23 Apr 2024 11:19:29 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 1fcf81b3-f980-4602-9b72-85370ab4d77a + - 4563e951-b286-4fc8-89cd-4d84d7ec04de Original-Request: - - req_vtUgVf43aiVJ8f + - req_7BkHqxN6YUu4fr Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_vtUgVf43aiVJ8f + - req_7BkHqxN6YUu4fr Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7sKuuB1fWySn0BTYrhF6", + "id": "pi_3P8hNlKuuB1fWySn0ZdGMla3", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393528, + "created": 1713871169, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7sKuuB1fWySnWFyGsEIQ", + "payment_method": "pm_1P8hNkKuuB1fWySnFdjTt6h1", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:49 GMT + recorded_at: Tue, 23 Apr 2024 11:19:29 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7sKuuB1fWySn0BTYrhF6/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNlKuuB1fWySn0ZdGMla3/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_vtUgVf43aiVJ8f","request_duration_ms":512}}' + - '{"last_request_metrics":{"request_id":"req_7BkHqxN6YUu4fr","request_duration_ms":406}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:50 GMT + - Tue, 23 Apr 2024 11:19:30 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - b8ea7e88-797c-4cdb-aa85-3b48de057a7e + - cdd14215-b031-4a61-bc4b-92da40a0841c Original-Request: - - req_HOGc3LwxQ8bbGA + - req_EZhonT4B1HHjbS Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_HOGc3LwxQ8bbGA + - req_EZhonT4B1HHjbS Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7sKuuB1fWySn0BTYrhF6", + "id": "pi_3P8hNlKuuB1fWySn0ZdGMla3", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393528, + "created": 1713871169, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7sKuuB1fWySn0vJDrxH0", + "latest_charge": "ch_3P8hNlKuuB1fWySn0ITByrSy", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7sKuuB1fWySnWFyGsEIQ", + "payment_method": "pm_1P8hNkKuuB1fWySnFdjTt6h1", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,5 +398,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:50 GMT + recorded_at: Tue, 23 Apr 2024 11:19:30 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml index dbb80c2b06..582d364258 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_JvAWETBQMvlvuD","request_duration_ms":908}}' + - '{"last_request_metrics":{"request_id":"req_bP4NkTLpFzZbuW","request_duration_ms":1027}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:41 GMT + - Tue, 23 Apr 2024 11:20:19 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - a1bbde01-ca0d-4c26-93cd-1e4f1954f573 + - bb3b4158-6c85-4c9b-a25f-f8748203051f Original-Request: - - req_WbHGXVY9PjhJVD + - req_EVB9gawZ0NO0cM Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_WbHGXVY9PjhJVD + - req_EVB9gawZ0NO0cM Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8jKuuB1fWySn9AdWGLTZ", + "id": "pm_1P8hOZKuuB1fWySncTeaMaWz", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393581, + "created": 1713871219, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:41 GMT + recorded_at: Tue, 23 Apr 2024 11:20:20 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8jKuuB1fWySn9AdWGLTZ&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hOZKuuB1fWySncTeaMaWz&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_WbHGXVY9PjhJVD","request_duration_ms":471}}' + - '{"last_request_metrics":{"request_id":"req_EVB9gawZ0NO0cM","request_duration_ms":418}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:42 GMT + - Tue, 23 Apr 2024 11:20:20 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 944e09dd-006c-422b-b5bb-eb6c77469cdd + - 0a313119-e25a-41cb-bbd3-b93289bb6178 Original-Request: - - req_kSQNmUwiVuPkG4 + - req_SJ5xytVAZIFOgh Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_kSQNmUwiVuPkG4 + - req_SJ5xytVAZIFOgh Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8jKuuB1fWySn250YdCNa", + "id": "pi_3P8hOaKuuB1fWySn1Yu4g8ob", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393581, + "created": 1713871220, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8jKuuB1fWySn9AdWGLTZ", + "payment_method": "pm_1P8hOZKuuB1fWySncTeaMaWz", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:42 GMT + recorded_at: Tue, 23 Apr 2024 11:20:20 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8jKuuB1fWySn250YdCNa/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOaKuuB1fWySn1Yu4g8ob/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_kSQNmUwiVuPkG4","request_duration_ms":512}}' + - '{"last_request_metrics":{"request_id":"req_SJ5xytVAZIFOgh","request_duration_ms":425}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:43 GMT + - Tue, 23 Apr 2024 11:20:21 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 7bef0dec-19ab-4366-9d74-eb26636d7431 + - 5ad3574a-b45c-429c-9de6-e7de7f9481c1 Original-Request: - - req_GIYOLCt5eqstCR + - req_rozwNpdZfaAWUK Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_GIYOLCt5eqstCR + - req_rozwNpdZfaAWUK Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8jKuuB1fWySn250YdCNa", + "id": "pi_3P8hOaKuuB1fWySn1Yu4g8ob", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393581, + "created": 1713871220, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8jKuuB1fWySn2qTroa6X", + "latest_charge": "ch_3P8hOaKuuB1fWySn1YRaPZ42", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8jKuuB1fWySn9AdWGLTZ", + "payment_method": "pm_1P8hOZKuuB1fWySncTeaMaWz", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,10 +398,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:43 GMT + recorded_at: Tue, 23 Apr 2024 11:20:21 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8jKuuB1fWySn250YdCNa + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOaKuuB1fWySn1Yu4g8ob body: encoding: US-ASCII string: '' @@ -413,7 +413,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_GIYOLCt5eqstCR","request_duration_ms":918}}' + - '{"last_request_metrics":{"request_id":"req_rozwNpdZfaAWUK","request_duration_ms":1019}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -430,7 +430,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:43 GMT + - Tue, 23 Apr 2024 11:20:21 GMT Content-Type: - application/json Content-Length: @@ -462,7 +462,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_R7dwVAyi9FFDep + - req_RuVKIBS7HioGF9 Stripe-Version: - '2024-04-10' Vary: @@ -475,7 +475,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8jKuuB1fWySn250YdCNa", + "id": "pi_3P8hOaKuuB1fWySn1Yu4g8ob", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -491,18 +491,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393581, + "created": 1713871220, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8jKuuB1fWySn2qTroa6X", + "latest_charge": "ch_3P8hOaKuuB1fWySn1YRaPZ42", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8jKuuB1fWySn9AdWGLTZ", + "payment_method": "pm_1P8hOZKuuB1fWySncTeaMaWz", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -527,10 +527,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:43 GMT + recorded_at: Tue, 23 Apr 2024 11:20:21 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8jKuuB1fWySn250YdCNa/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOaKuuB1fWySn1Yu4g8ob/capture body: encoding: US-ASCII string: '' @@ -542,7 +542,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_R7dwVAyi9FFDep","request_duration_ms":406}}' + - '{"last_request_metrics":{"request_id":"req_RuVKIBS7HioGF9","request_duration_ms":324}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -559,7 +559,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:44 GMT + - Tue, 23 Apr 2024 11:20:22 GMT Content-Type: - application/json Content-Length: @@ -587,15 +587,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 2b32b0fd-f726-4792-9a3c-55a372de1cf8 + - 4bb9f1bc-2642-4e97-afcf-91bc470e4bba Original-Request: - - req_y6Fs9bKxfUuhaR + - req_IofHT9JafBnq1r Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_y6Fs9bKxfUuhaR + - req_IofHT9JafBnq1r Stripe-Should-Retry: - 'false' Stripe-Version: @@ -610,7 +610,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8jKuuB1fWySn250YdCNa", + "id": "pi_3P8hOaKuuB1fWySn1Yu4g8ob", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -626,18 +626,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393581, + "created": 1713871220, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8jKuuB1fWySn2qTroa6X", + "latest_charge": "ch_3P8hOaKuuB1fWySn1YRaPZ42", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8jKuuB1fWySn9AdWGLTZ", + "payment_method": "pm_1P8hOZKuuB1fWySncTeaMaWz", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -662,10 +662,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:44 GMT + recorded_at: Tue, 23 Apr 2024 11:20:22 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8jKuuB1fWySn250YdCNa + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOaKuuB1fWySn1Yu4g8ob body: encoding: US-ASCII string: '' @@ -677,7 +677,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_y6Fs9bKxfUuhaR","request_duration_ms":1127}}' + - '{"last_request_metrics":{"request_id":"req_IofHT9JafBnq1r","request_duration_ms":1033}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -694,7 +694,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:44 GMT + - Tue, 23 Apr 2024 11:20:23 GMT Content-Type: - application/json Content-Length: @@ -726,7 +726,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_orhSEXIZyv0Rt7 + - req_v1hTds2XBdLNE0 Stripe-Version: - '2024-04-10' Vary: @@ -739,7 +739,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8jKuuB1fWySn250YdCNa", + "id": "pi_3P8hOaKuuB1fWySn1Yu4g8ob", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -755,18 +755,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393581, + "created": 1713871220, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8jKuuB1fWySn2qTroa6X", + "latest_charge": "ch_3P8hOaKuuB1fWySn1YRaPZ42", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8jKuuB1fWySn9AdWGLTZ", + "payment_method": "pm_1P8hOZKuuB1fWySncTeaMaWz", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -791,5 +791,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:45 GMT + recorded_at: Tue, 23 Apr 2024 11:20:23 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml index 08838a6fd3..51ab244735 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_e3is6LFByX27Sh","request_duration_ms":407}}' + - '{"last_request_metrics":{"request_id":"req_aZYwq636amcQQc","request_duration_ms":318}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:39 GMT + - Tue, 23 Apr 2024 11:20:17 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 237c6bea-9582-4bb5-a913-6ba1de54b654 + - f6ae69fe-caa2-4776-ba8b-5a209fba4053 Original-Request: - - req_tWpGVf0e6fNmZ5 + - req_ZY80R85ZYCz9YZ Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_tWpGVf0e6fNmZ5 + - req_ZY80R85ZYCz9YZ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8hKuuB1fWySnpRASYAEC", + "id": "pm_1P8hOXKuuB1fWySnGH4SNW9J", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393579, + "created": 1713871217, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:39 GMT + recorded_at: Tue, 23 Apr 2024 11:20:17 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8hKuuB1fWySnpRASYAEC&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hOXKuuB1fWySnGH4SNW9J&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_tWpGVf0e6fNmZ5","request_duration_ms":492}}' + - '{"last_request_metrics":{"request_id":"req_ZY80R85ZYCz9YZ","request_duration_ms":457}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:40 GMT + - Tue, 23 Apr 2024 11:20:18 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - c7e3db0b-4311-4082-8945-e83d7b4d10bd + - 5cea98bf-f945-47b1-900a-3bfa2fa00381 Original-Request: - - req_8x2G5HfJxK0KO5 + - req_dHOX5pEyy1Rwqg Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_8x2G5HfJxK0KO5 + - req_dHOX5pEyy1Rwqg Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8hKuuB1fWySn2vEX8YKz", + "id": "pi_3P8hOXKuuB1fWySn204Us72T", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393579, + "created": 1713871217, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8hKuuB1fWySnpRASYAEC", + "payment_method": "pm_1P8hOXKuuB1fWySnGH4SNW9J", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:40 GMT + recorded_at: Tue, 23 Apr 2024 11:20:18 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8hKuuB1fWySn2vEX8YKz/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOXKuuB1fWySn204Us72T/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_8x2G5HfJxK0KO5","request_duration_ms":417}}' + - '{"last_request_metrics":{"request_id":"req_dHOX5pEyy1Rwqg","request_duration_ms":401}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:41 GMT + - Tue, 23 Apr 2024 11:20:18 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 2d04eaf5-4e5b-400b-81fd-5bc46e1c6c7e + - 1e8391df-7965-48f2-834e-c9e5255856c1 Original-Request: - - req_JvAWETBQMvlvuD + - req_bP4NkTLpFzZbuW Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_JvAWETBQMvlvuD + - req_bP4NkTLpFzZbuW Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8hKuuB1fWySn2vEX8YKz", + "id": "pi_3P8hOXKuuB1fWySn204Us72T", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393579, + "created": 1713871217, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8hKuuB1fWySn2fdTCbTk", + "latest_charge": "ch_3P8hOXKuuB1fWySn2ofgtnCQ", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8hKuuB1fWySnpRASYAEC", + "payment_method": "pm_1P8hOXKuuB1fWySnGH4SNW9J", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,5 +398,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:41 GMT + recorded_at: Tue, 23 Apr 2024 11:20:19 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml index cb383e17ac..68b4007571 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_5M6BDrkfp88ITK","request_duration_ms":1021}}' + - '{"last_request_metrics":{"request_id":"req_RnxUf0JS1gq5pi","request_duration_ms":880}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:47 GMT + - Tue, 23 Apr 2024 11:20:25 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - b8f13c2d-6b72-4bf4-9d1e-6f438a65694d + - e4ed1efc-2736-49c3-8081-dd0dee73bf6f Original-Request: - - req_6KKK2rncrBEXzj + - req_TkgKKJnnyw8IgZ Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_6KKK2rncrBEXzj + - req_TkgKKJnnyw8IgZ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8pKuuB1fWySnMcLJE9qc", + "id": "pm_1P8hOfKuuB1fWySnHIvCaKdC", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393587, + "created": 1713871225, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:47 GMT + recorded_at: Tue, 23 Apr 2024 11:20:25 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8pKuuB1fWySnMcLJE9qc&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hOfKuuB1fWySnHIvCaKdC&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_6KKK2rncrBEXzj","request_duration_ms":477}}' + - '{"last_request_metrics":{"request_id":"req_TkgKKJnnyw8IgZ","request_duration_ms":440}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:48 GMT + - Tue, 23 Apr 2024 11:20:26 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 86675ad2-e66f-4fb8-a0ca-2cad53fcd12f + - 3b5b4fe7-0202-49d9-ae13-9e4b8f80da27 Original-Request: - - req_LTpYcCoJAvnCaa + - req_Rs0q7kmXwtQZr4 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_LTpYcCoJAvnCaa + - req_Rs0q7kmXwtQZr4 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8pKuuB1fWySn0p9t3Nhi", + "id": "pi_3P8hOgKuuB1fWySn0NecCO37", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393587, + "created": 1713871226, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8pKuuB1fWySnMcLJE9qc", + "payment_method": "pm_1P8hOfKuuB1fWySnHIvCaKdC", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:48 GMT + recorded_at: Tue, 23 Apr 2024 11:20:26 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8pKuuB1fWySn0p9t3Nhi/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOgKuuB1fWySn0NecCO37/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_LTpYcCoJAvnCaa","request_duration_ms":511}}' + - '{"last_request_metrics":{"request_id":"req_Rs0q7kmXwtQZr4","request_duration_ms":408}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:49 GMT + - Tue, 23 Apr 2024 11:20:27 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - ec353a06-e37e-4ea6-b2a9-5e54bd365115 + - f51c7265-9f17-4b42-b6c4-50dd4ecf8a56 Original-Request: - - req_DJRhc7k9YcN7Gv + - req_vcysvYlLEhNqwl Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_DJRhc7k9YcN7Gv + - req_vcysvYlLEhNqwl Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8pKuuB1fWySn0p9t3Nhi", + "id": "pi_3P8hOgKuuB1fWySn0NecCO37", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393587, + "created": 1713871226, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8pKuuB1fWySn0cAJ3Nx0", + "latest_charge": "ch_3P8hOgKuuB1fWySn0xd3l2WL", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8pKuuB1fWySnMcLJE9qc", + "payment_method": "pm_1P8hOfKuuB1fWySnHIvCaKdC", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,10 +398,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:49 GMT + recorded_at: Tue, 23 Apr 2024 11:20:27 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8pKuuB1fWySn0p9t3Nhi + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOgKuuB1fWySn0NecCO37 body: encoding: US-ASCII string: '' @@ -413,7 +413,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_DJRhc7k9YcN7Gv","request_duration_ms":966}}' + - '{"last_request_metrics":{"request_id":"req_vcysvYlLEhNqwl","request_duration_ms":1018}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -430,7 +430,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:49 GMT + - Tue, 23 Apr 2024 11:20:27 GMT Content-Type: - application/json Content-Length: @@ -462,7 +462,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_es3p52W7zr7ZNm + - req_2bALfgDj6AgBdB Stripe-Version: - '2024-04-10' Vary: @@ -475,7 +475,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8pKuuB1fWySn0p9t3Nhi", + "id": "pi_3P8hOgKuuB1fWySn0NecCO37", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -491,18 +491,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393587, + "created": 1713871226, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8pKuuB1fWySn0cAJ3Nx0", + "latest_charge": "ch_3P8hOgKuuB1fWySn0xd3l2WL", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8pKuuB1fWySnMcLJE9qc", + "payment_method": "pm_1P8hOfKuuB1fWySnHIvCaKdC", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -527,10 +527,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:49 GMT + recorded_at: Tue, 23 Apr 2024 11:20:27 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8pKuuB1fWySn0p9t3Nhi/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOgKuuB1fWySn0NecCO37/capture body: encoding: US-ASCII string: '' @@ -542,7 +542,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_es3p52W7zr7ZNm","request_duration_ms":364}}' + - '{"last_request_metrics":{"request_id":"req_2bALfgDj6AgBdB","request_duration_ms":406}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -559,7 +559,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:50 GMT + - Tue, 23 Apr 2024 11:20:28 GMT Content-Type: - application/json Content-Length: @@ -587,15 +587,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 165ad06c-1c87-478e-be81-8de26316faea + - 9f32e62f-cfcb-476d-befa-a4632c831673 Original-Request: - - req_taD54UO4v1MIBe + - req_Q1bpHGCcGlxb5Z Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_taD54UO4v1MIBe + - req_Q1bpHGCcGlxb5Z Stripe-Should-Retry: - 'false' Stripe-Version: @@ -610,7 +610,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8pKuuB1fWySn0p9t3Nhi", + "id": "pi_3P8hOgKuuB1fWySn0NecCO37", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -626,18 +626,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393587, + "created": 1713871226, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8pKuuB1fWySn0cAJ3Nx0", + "latest_charge": "ch_3P8hOgKuuB1fWySn0xd3l2WL", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8pKuuB1fWySnMcLJE9qc", + "payment_method": "pm_1P8hOfKuuB1fWySnHIvCaKdC", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -662,10 +662,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:50 GMT + recorded_at: Tue, 23 Apr 2024 11:20:28 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8pKuuB1fWySn0p9t3Nhi + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOgKuuB1fWySn0NecCO37 body: encoding: US-ASCII string: '' @@ -677,7 +677,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_taD54UO4v1MIBe","request_duration_ms":1021}}' + - '{"last_request_metrics":{"request_id":"req_Q1bpHGCcGlxb5Z","request_duration_ms":1018}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -694,7 +694,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:50 GMT + - Tue, 23 Apr 2024 11:20:28 GMT Content-Type: - application/json Content-Length: @@ -726,7 +726,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_zvf4CAVwSgnYlD + - req_CLAQeFdk7h5EGj Stripe-Version: - '2024-04-10' Vary: @@ -739,7 +739,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8pKuuB1fWySn0p9t3Nhi", + "id": "pi_3P8hOgKuuB1fWySn0NecCO37", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -755,18 +755,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393587, + "created": 1713871226, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8pKuuB1fWySn0cAJ3Nx0", + "latest_charge": "ch_3P8hOgKuuB1fWySn0xd3l2WL", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8pKuuB1fWySnMcLJE9qc", + "payment_method": "pm_1P8hOfKuuB1fWySnHIvCaKdC", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -791,5 +791,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:50 GMT + recorded_at: Tue, 23 Apr 2024 11:20:29 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml index 47a2a5b85c..de46a20720 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_orhSEXIZyv0Rt7","request_duration_ms":405}}' + - '{"last_request_metrics":{"request_id":"req_v1hTds2XBdLNE0","request_duration_ms":326}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:45 GMT + - Tue, 23 Apr 2024 11:20:23 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - ad63d10c-cb0a-4eb7-8845-89cffbb4a46c + - 538cc1fe-9589-4272-be89-1e21c4a7ca96 Original-Request: - - req_5scTfSWgF8tVBm + - req_0WBclh6fOiomtq Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_5scTfSWgF8tVBm + - req_0WBclh6fOiomtq Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h8nKuuB1fWySn8lYg1dY8", + "id": "pm_1P8hOdKuuB1fWySnaS7LWBFU", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393585, + "created": 1713871223, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:39:45 GMT + recorded_at: Tue, 23 Apr 2024 11:20:23 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h8nKuuB1fWySn8lYg1dY8&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hOdKuuB1fWySnaS7LWBFU&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_5scTfSWgF8tVBm","request_duration_ms":496}}' + - '{"last_request_metrics":{"request_id":"req_0WBclh6fOiomtq","request_duration_ms":425}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:45 GMT + - Tue, 23 Apr 2024 11:20:24 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 92c73f49-fb31-44e6-aa4e-6da9225452ac + - d9e0c093-a716-488d-a7ac-ce6ee9a6b173 Original-Request: - - req_U0ctc0agMjXrZh + - req_aXWW7zXQO3wrcm Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_U0ctc0agMjXrZh + - req_aXWW7zXQO3wrcm Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8nKuuB1fWySn2N7eDEQt", + "id": "pi_3P8hOdKuuB1fWySn2eWYNwxe", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393585, + "created": 1713871223, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8nKuuB1fWySn8lYg1dY8", + "payment_method": "pm_1P8hOdKuuB1fWySnaS7LWBFU", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:46 GMT + recorded_at: Tue, 23 Apr 2024 11:20:24 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h8nKuuB1fWySn2N7eDEQt/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hOdKuuB1fWySn2eWYNwxe/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_U0ctc0agMjXrZh","request_duration_ms":510}}' + - '{"last_request_metrics":{"request_id":"req_aXWW7zXQO3wrcm","request_duration_ms":427}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:39:46 GMT + - Tue, 23 Apr 2024 11:20:24 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - b3a27f7f-5c71-42c5-b19d-11fd62e44765 + - 5ce32ea5-c223-4268-b7bb-bc30816cd714 Original-Request: - - req_5M6BDrkfp88ITK + - req_RnxUf0JS1gq5pi Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_5M6BDrkfp88ITK + - req_RnxUf0JS1gq5pi Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h8nKuuB1fWySn2N7eDEQt", + "id": "pi_3P8hOdKuuB1fWySn2eWYNwxe", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393585, + "created": 1713871223, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h8nKuuB1fWySn2N5ABsKa", + "latest_charge": "ch_3P8hOdKuuB1fWySn2ILu0oRo", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h8nKuuB1fWySn8lYg1dY8", + "payment_method": "pm_1P8hOdKuuB1fWySnaS7LWBFU", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,5 +398,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:39:47 GMT + recorded_at: Tue, 23 Apr 2024 11:20:25 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml index 58a5662db9..96d4fd499c 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_GinJvOrjI3jPoK","request_duration_ms":1124}}' + - '{"last_request_metrics":{"request_id":"req_d5uyFrP9kkS6B8","request_duration_ms":950}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:19 GMT + - Tue, 23 Apr 2024 11:19:01 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 64910d91-161c-4a0a-a7b1-027463f9f932 + - 528b7f7b-a6cf-4405-8092-7d33c26055d2 Original-Request: - - req_EfwFVjR7SzuG4N + - req_dDrPytC5ffagfe Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_EfwFVjR7SzuG4N + - req_dDrPytC5ffagfe Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h7PKuuB1fWySnpJPlGzBx", + "id": "pm_1P8hNIKuuB1fWySn5cotK7tE", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393499, + "created": 1713871141, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:38:19 GMT + recorded_at: Tue, 23 Apr 2024 11:19:01 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h7PKuuB1fWySnpJPlGzBx&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hNIKuuB1fWySn5cotK7tE&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_EfwFVjR7SzuG4N","request_duration_ms":470}}' + - '{"last_request_metrics":{"request_id":"req_dDrPytC5ffagfe","request_duration_ms":541}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:19 GMT + - Tue, 23 Apr 2024 11:19:01 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - c28f48c9-e737-4e5f-a96b-4162ca0d54e5 + - 01a65e32-cad1-4bcf-bc88-d124a4a3d3fd Original-Request: - - req_okNPf46lsUW0NZ + - req_79a299jxBJw8dW Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_okNPf46lsUW0NZ + - req_79a299jxBJw8dW Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7PKuuB1fWySn2KfYVSKl", + "id": "pi_3P8hNJKuuB1fWySn2dkxDwHa", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393499, + "created": 1713871141, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7PKuuB1fWySnpJPlGzBx", + "payment_method": "pm_1P8hNIKuuB1fWySn5cotK7tE", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:19 GMT + recorded_at: Tue, 23 Apr 2024 11:19:01 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7PKuuB1fWySn2KfYVSKl/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNJKuuB1fWySn2dkxDwHa/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_okNPf46lsUW0NZ","request_duration_ms":583}}' + - '{"last_request_metrics":{"request_id":"req_79a299jxBJw8dW","request_duration_ms":422}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:21 GMT + - Tue, 23 Apr 2024 11:19:02 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 60f1d6ad-7f81-4d2a-9ef1-41f19f44e4cc + - 330b9db2-d4d4-48d6-a673-53a39613ffec Original-Request: - - req_4sYqtfUeHgBS1h + - req_UhNEuuDoi3tbC4 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_4sYqtfUeHgBS1h + - req_UhNEuuDoi3tbC4 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7PKuuB1fWySn2KfYVSKl", + "id": "pi_3P8hNJKuuB1fWySn2dkxDwHa", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393499, + "created": 1713871141, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7PKuuB1fWySn2L8Ip9bg", + "latest_charge": "ch_3P8hNJKuuB1fWySn2CWq8PDc", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7PKuuB1fWySnpJPlGzBx", + "payment_method": "pm_1P8hNIKuuB1fWySn5cotK7tE", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,10 +398,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:21 GMT + recorded_at: Tue, 23 Apr 2024 11:19:02 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7PKuuB1fWySn2KfYVSKl + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNJKuuB1fWySn2dkxDwHa body: encoding: US-ASCII string: '' @@ -413,7 +413,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_4sYqtfUeHgBS1h","request_duration_ms":1052}}' + - '{"last_request_metrics":{"request_id":"req_UhNEuuDoi3tbC4","request_duration_ms":1102}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -430,7 +430,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:21 GMT + - Tue, 23 Apr 2024 11:19:03 GMT Content-Type: - application/json Content-Length: @@ -462,7 +462,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_InA4UXgP7ovZil + - req_KvOZhpfMTPf3Dh Stripe-Version: - '2024-04-10' Vary: @@ -475,7 +475,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7PKuuB1fWySn2KfYVSKl", + "id": "pi_3P8hNJKuuB1fWySn2dkxDwHa", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -491,18 +491,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393499, + "created": 1713871141, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7PKuuB1fWySn2L8Ip9bg", + "latest_charge": "ch_3P8hNJKuuB1fWySn2CWq8PDc", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7PKuuB1fWySnpJPlGzBx", + "payment_method": "pm_1P8hNIKuuB1fWySn5cotK7tE", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -527,10 +527,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:21 GMT + recorded_at: Tue, 23 Apr 2024 11:19:03 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7PKuuB1fWySn2KfYVSKl/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNJKuuB1fWySn2dkxDwHa/capture body: encoding: US-ASCII string: '' @@ -542,7 +542,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_InA4UXgP7ovZil","request_duration_ms":408}}' + - '{"last_request_metrics":{"request_id":"req_KvOZhpfMTPf3Dh","request_duration_ms":407}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -559,7 +559,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:22 GMT + - Tue, 23 Apr 2024 11:19:04 GMT Content-Type: - application/json Content-Length: @@ -587,15 +587,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 211c48d0-f153-469b-a5f7-bc0ec77f4820 + - af9eb1dd-fe0b-43f7-b9c3-56645d113af2 Original-Request: - - req_3pEsevymAurQCW + - req_WH8VJK1GQ8VwJ6 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_3pEsevymAurQCW + - req_WH8VJK1GQ8VwJ6 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -610,7 +610,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7PKuuB1fWySn2KfYVSKl", + "id": "pi_3P8hNJKuuB1fWySn2dkxDwHa", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -626,18 +626,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393499, + "created": 1713871141, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7PKuuB1fWySn2L8Ip9bg", + "latest_charge": "ch_3P8hNJKuuB1fWySn2CWq8PDc", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7PKuuB1fWySnpJPlGzBx", + "payment_method": "pm_1P8hNIKuuB1fWySn5cotK7tE", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -662,10 +662,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:22 GMT + recorded_at: Tue, 23 Apr 2024 11:19:04 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7PKuuB1fWySn2KfYVSKl + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNJKuuB1fWySn2dkxDwHa body: encoding: US-ASCII string: '' @@ -677,7 +677,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_3pEsevymAurQCW","request_duration_ms":1126}}' + - '{"last_request_metrics":{"request_id":"req_WH8VJK1GQ8VwJ6","request_duration_ms":1123}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -694,7 +694,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:22 GMT + - Tue, 23 Apr 2024 11:19:04 GMT Content-Type: - application/json Content-Length: @@ -726,7 +726,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_tfIcynbnVwUvuZ + - req_xP6oHQTgDjlOHG Stripe-Version: - '2024-04-10' Vary: @@ -739,7 +739,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7PKuuB1fWySn2KfYVSKl", + "id": "pi_3P8hNJKuuB1fWySn2dkxDwHa", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -755,18 +755,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393499, + "created": 1713871141, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7PKuuB1fWySn2L8Ip9bg", + "latest_charge": "ch_3P8hNJKuuB1fWySn2CWq8PDc", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7PKuuB1fWySnpJPlGzBx", + "payment_method": "pm_1P8hNIKuuB1fWySn5cotK7tE", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -791,5 +791,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:22 GMT + recorded_at: Tue, 23 Apr 2024 11:19:04 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml index 324b84463d..06aff811cc 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml @@ -13,8 +13,6 @@ http_interactions: - "" Content-Type: - application/x-www-form-urlencoded - X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_6erFBt8I8770U0","request_duration_ms":1019}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +29,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:16 GMT + - Tue, 23 Apr 2024 11:18:58 GMT Content-Type: - application/json Content-Length: @@ -58,15 +56,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - d437847d-b101-4d30-85e5-ade1f734a58c + - 29eca7b2-af0e-4828-a9a0-896d5ceb00aa Original-Request: - - req_ML8x0xRXjzSwUg + - req_srfnyp4Vm6VFzI Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_ML8x0xRXjzSwUg + - req_srfnyp4Vm6VFzI Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +79,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h7MKuuB1fWySnC2fh20kl", + "id": "pm_1P8hNFKuuB1fWySntyz6ny7q", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +121,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393496, + "created": 1713871138, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:38:17 GMT + recorded_at: Tue, 23 Apr 2024 11:18:58 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h7MKuuB1fWySnC2fh20kl&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hNFKuuB1fWySntyz6ny7q&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +142,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_ML8x0xRXjzSwUg","request_duration_ms":498}}' + - '{"last_request_metrics":{"request_id":"req_srfnyp4Vm6VFzI","request_duration_ms":669}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:17 GMT + - Tue, 23 Apr 2024 11:18:58 GMT Content-Type: - application/json Content-Length: @@ -188,15 +186,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 1c64ce4f-10a5-4d25-b4a3-0770f59fe416 + - 9f47d039-c6ff-454b-b4fe-f984ac0ff197 Original-Request: - - req_byoPGN1UVs38aW + - req_6QkVOZPnSbKaAI Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_byoPGN1UVs38aW + - req_6QkVOZPnSbKaAI Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +209,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7NKuuB1fWySn04AMksxW", + "id": "pi_3P8hNGKuuB1fWySn0dvhu9lG", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +225,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393497, + "created": 1713871138, "currency": "eur", "customer": null, "description": null, @@ -238,7 +236,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7MKuuB1fWySnC2fh20kl", + "payment_method": "pm_1P8hNFKuuB1fWySntyz6ny7q", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +261,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:17 GMT + recorded_at: Tue, 23 Apr 2024 11:18:58 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7NKuuB1fWySn04AMksxW/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNGKuuB1fWySn0dvhu9lG/confirm body: encoding: US-ASCII string: '' @@ -278,7 +276,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_byoPGN1UVs38aW","request_duration_ms":508}}' + - '{"last_request_metrics":{"request_id":"req_6QkVOZPnSbKaAI","request_duration_ms":681}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +293,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:18 GMT + - Tue, 23 Apr 2024 11:18:59 GMT Content-Type: - application/json Content-Length: @@ -323,15 +321,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 71a3372c-0bae-4c21-b1d3-3f15c6395ab5 + - f481e055-83bb-47db-a795-9fe3411f9bb5 Original-Request: - - req_GinJvOrjI3jPoK + - req_d5uyFrP9kkS6B8 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_GinJvOrjI3jPoK + - req_d5uyFrP9kkS6B8 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +344,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7NKuuB1fWySn04AMksxW", + "id": "pi_3P8hNGKuuB1fWySn0dvhu9lG", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +360,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393497, + "created": 1713871138, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7NKuuB1fWySn0YW3AXzB", + "latest_charge": "ch_3P8hNGKuuB1fWySn0zASG84d", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7MKuuB1fWySnC2fh20kl", + "payment_method": "pm_1P8hNFKuuB1fWySntyz6ny7q", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,5 +396,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:18 GMT + recorded_at: Tue, 23 Apr 2024 11:18:59 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml index 63a1b68cf1..be1da39841 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_pXfL18SxvJbCBU","request_duration_ms":1010}}' + - '{"last_request_metrics":{"request_id":"req_qzjFSWd3iBDt8c","request_duration_ms":1037}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:25 GMT + - Tue, 23 Apr 2024 11:19:07 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - bd815d42-e8c8-4979-b188-e0c462044392 + - e99d6578-ea57-4440-8973-a36e96b2cd95 Original-Request: - - req_219VLTcIujaPsx + - req_n9cAIF63Vn9pzi Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_219VLTcIujaPsx + - req_n9cAIF63Vn9pzi Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h7VKuuB1fWySnsX7ucKLX", + "id": "pm_1P8hNPKuuB1fWySnDHy6ZIyV", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393505, + "created": 1713871147, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:38:25 GMT + recorded_at: Tue, 23 Apr 2024 11:19:07 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h7VKuuB1fWySnsX7ucKLX&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hNPKuuB1fWySnDHy6ZIyV&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_219VLTcIujaPsx","request_duration_ms":458}}' + - '{"last_request_metrics":{"request_id":"req_n9cAIF63Vn9pzi","request_duration_ms":515}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:26 GMT + - Tue, 23 Apr 2024 11:19:07 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 98fe770f-204b-4bf3-ba9c-2a26562a7e09 + - cc5554c9-962a-49b0-a9c6-0ff4a8a161db Original-Request: - - req_QTyZoiVYbbIw5w + - req_FO5ZkOTZ1eJ487 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_QTyZoiVYbbIw5w + - req_FO5ZkOTZ1eJ487 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7VKuuB1fWySn2XHLMoF9", + "id": "pi_3P8hNPKuuB1fWySn1YmwOcGM", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393505, + "created": 1713871147, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7VKuuB1fWySnsX7ucKLX", + "payment_method": "pm_1P8hNPKuuB1fWySnDHy6ZIyV", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:26 GMT + recorded_at: Tue, 23 Apr 2024 11:19:08 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7VKuuB1fWySn2XHLMoF9/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNPKuuB1fWySn1YmwOcGM/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_QTyZoiVYbbIw5w","request_duration_ms":437}}' + - '{"last_request_metrics":{"request_id":"req_FO5ZkOTZ1eJ487","request_duration_ms":510}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:27 GMT + - Tue, 23 Apr 2024 11:19:09 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - c754d625-abdc-429c-b974-e066f6a364d9 + - be137c15-af71-411d-aecb-81c5d20d0724 Original-Request: - - req_42Ejxtw3ANOc7Z + - req_D4cdH7OWLVrSRp Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_42Ejxtw3ANOc7Z + - req_D4cdH7OWLVrSRp Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7VKuuB1fWySn2XHLMoF9", + "id": "pi_3P8hNPKuuB1fWySn1YmwOcGM", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393505, + "created": 1713871147, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7VKuuB1fWySn28tKnIYE", + "latest_charge": "ch_3P8hNPKuuB1fWySn186LYHZO", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7VKuuB1fWySnsX7ucKLX", + "payment_method": "pm_1P8hNPKuuB1fWySnDHy6ZIyV", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,10 +398,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:27 GMT + recorded_at: Tue, 23 Apr 2024 11:19:09 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7VKuuB1fWySn2XHLMoF9 + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNPKuuB1fWySn1YmwOcGM body: encoding: US-ASCII string: '' @@ -413,7 +413,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_42Ejxtw3ANOc7Z","request_duration_ms":1127}}' + - '{"last_request_metrics":{"request_id":"req_D4cdH7OWLVrSRp","request_duration_ms":1023}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -430,7 +430,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:27 GMT + - Tue, 23 Apr 2024 11:19:09 GMT Content-Type: - application/json Content-Length: @@ -462,7 +462,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_GwCDbtlfFx98Ca + - req_7fET0Vsy8rlAB3 Stripe-Version: - '2024-04-10' Vary: @@ -475,7 +475,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7VKuuB1fWySn2XHLMoF9", + "id": "pi_3P8hNPKuuB1fWySn1YmwOcGM", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -491,18 +491,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393505, + "created": 1713871147, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7VKuuB1fWySn28tKnIYE", + "latest_charge": "ch_3P8hNPKuuB1fWySn186LYHZO", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7VKuuB1fWySnsX7ucKLX", + "payment_method": "pm_1P8hNPKuuB1fWySnDHy6ZIyV", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -527,10 +527,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:27 GMT + recorded_at: Tue, 23 Apr 2024 11:19:09 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7VKuuB1fWySn2XHLMoF9/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNPKuuB1fWySn1YmwOcGM/capture body: encoding: US-ASCII string: '' @@ -542,7 +542,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_GwCDbtlfFx98Ca","request_duration_ms":406}}' + - '{"last_request_metrics":{"request_id":"req_7fET0Vsy8rlAB3","request_duration_ms":300}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -559,7 +559,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:28 GMT + - Tue, 23 Apr 2024 11:19:10 GMT Content-Type: - application/json Content-Length: @@ -587,15 +587,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - e31e1c73-e6ea-4709-aac2-6b25bfbd32bd + - d06e3f1f-3dd3-4e42-9b79-adc58e38f5bd Original-Request: - - req_FFdCC8GBHe6yzl + - req_nd5bj5GUQrrWz3 Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_FFdCC8GBHe6yzl + - req_nd5bj5GUQrrWz3 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -610,7 +610,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7VKuuB1fWySn2XHLMoF9", + "id": "pi_3P8hNPKuuB1fWySn1YmwOcGM", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -626,18 +626,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393505, + "created": 1713871147, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7VKuuB1fWySn28tKnIYE", + "latest_charge": "ch_3P8hNPKuuB1fWySn186LYHZO", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7VKuuB1fWySnsX7ucKLX", + "payment_method": "pm_1P8hNPKuuB1fWySnDHy6ZIyV", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -662,10 +662,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:28 GMT + recorded_at: Tue, 23 Apr 2024 11:19:10 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7VKuuB1fWySn2XHLMoF9 + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNPKuuB1fWySn1YmwOcGM body: encoding: US-ASCII string: '' @@ -677,7 +677,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_FFdCC8GBHe6yzl","request_duration_ms":1124}}' + - '{"last_request_metrics":{"request_id":"req_nd5bj5GUQrrWz3","request_duration_ms":910}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -694,7 +694,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:29 GMT + - Tue, 23 Apr 2024 11:19:10 GMT Content-Type: - application/json Content-Length: @@ -726,7 +726,7 @@ http_interactions: Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_VCkHzjjHMXrfND + - req_nTq52MOanuOx3G Stripe-Version: - '2024-04-10' Vary: @@ -739,7 +739,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7VKuuB1fWySn2XHLMoF9", + "id": "pi_3P8hNPKuuB1fWySn1YmwOcGM", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -755,18 +755,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393505, + "created": 1713871147, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7VKuuB1fWySn28tKnIYE", + "latest_charge": "ch_3P8hNPKuuB1fWySn186LYHZO", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7VKuuB1fWySnsX7ucKLX", + "payment_method": "pm_1P8hNPKuuB1fWySnDHy6ZIyV", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -791,5 +791,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:29 GMT + recorded_at: Tue, 23 Apr 2024 11:19:10 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml similarity index 88% rename from spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml index 0ed7d06d49..0492deb9ff 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v11.1.0/Stripe_PaymentIntentValidator/_call/as_a_guest/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml @@ -14,7 +14,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_tfIcynbnVwUvuZ","request_duration_ms":406}}' + - '{"last_request_metrics":{"request_id":"req_xP6oHQTgDjlOHG","request_duration_ms":406}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -31,7 +31,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:23 GMT + - Tue, 23 Apr 2024 11:19:05 GMT Content-Type: - application/json Content-Length: @@ -58,15 +58,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - a7b996f1-a409-4a18-aa1b-1880b0a5034e + - 7f78fc1e-c46a-4874-a1f6-16c601cbf2b3 Original-Request: - - req_bkXwpvWqb1uGih + - req_yHsbyvzodoQCdC Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_bkXwpvWqb1uGih + - req_yHsbyvzodoQCdC Stripe-Should-Retry: - 'false' Stripe-Version: @@ -81,7 +81,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1P6h7TKuuB1fWySnjAMDCuUb", + "id": "pm_1P8hNMKuuB1fWySnJvGqdDRh", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { @@ -123,19 +123,19 @@ http_interactions: }, "wallet": null }, - "created": 1713393503, + "created": 1713871145, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Wed, 17 Apr 2024 22:38:23 GMT + recorded_at: Tue, 23 Apr 2024 11:19:05 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1P6h7TKuuB1fWySnjAMDCuUb&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1P8hNMKuuB1fWySnJvGqdDRh&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - Stripe/v1 RubyBindings/11.1.0 @@ -144,7 +144,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_bkXwpvWqb1uGih","request_duration_ms":573}}' + - '{"last_request_metrics":{"request_id":"req_yHsbyvzodoQCdC","request_duration_ms":470}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -161,7 +161,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:24 GMT + - Tue, 23 Apr 2024 11:19:05 GMT Content-Type: - application/json Content-Length: @@ -188,15 +188,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - 554816c3-59e5-4e14-ae85-c157106cfeb6 + - d1d3e86b-bd89-40f7-bc01-f7970fe43035 Original-Request: - - req_F5w6Gb6QlfUAzd + - req_57mU7XA1FJSVyr Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_F5w6Gb6QlfUAzd + - req_57mU7XA1FJSVyr Stripe-Should-Retry: - 'false' Stripe-Version: @@ -211,7 +211,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7TKuuB1fWySn2fA3dJIq", + "id": "pi_3P8hNNKuuB1fWySn2R30XK1N", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -227,7 +227,7 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393503, + "created": 1713871145, "currency": "eur", "customer": null, "description": null, @@ -238,7 +238,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7TKuuB1fWySnjAMDCuUb", + "payment_method": "pm_1P8hNMKuuB1fWySnJvGqdDRh", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -263,10 +263,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:24 GMT + recorded_at: Tue, 23 Apr 2024 11:19:05 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3P6h7TKuuB1fWySn2fA3dJIq/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3P8hNNKuuB1fWySn2R30XK1N/confirm body: encoding: US-ASCII string: '' @@ -278,7 +278,7 @@ http_interactions: Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_F5w6Gb6QlfUAzd","request_duration_ms":507}}' + - '{"last_request_metrics":{"request_id":"req_57mU7XA1FJSVyr","request_duration_ms":384}}' Stripe-Version: - '2024-04-10' X-Stripe-Client-User-Agent: @@ -295,7 +295,7 @@ http_interactions: Server: - nginx Date: - - Wed, 17 Apr 2024 22:38:25 GMT + - Tue, 23 Apr 2024 11:19:06 GMT Content-Type: - application/json Content-Length: @@ -323,15 +323,15 @@ http_interactions: Cross-Origin-Opener-Policy-Report-Only: - same-origin; report-to="coop" Idempotency-Key: - - '089dc653-e311-418b-a775-17489143e1dd' + - 0d1579d0-f113-42f9-9f65-5445ea4ec037 Original-Request: - - req_pXfL18SxvJbCBU + - req_qzjFSWd3iBDt8c Report-To: - '{"group":"coop","max_age":8640,"endpoints":[{"url":"https://q.stripe.com/coop-report"}],"include_subdomains":true}' Reporting-Endpoints: - coop="https://q.stripe.com/coop-report" Request-Id: - - req_pXfL18SxvJbCBU + - req_qzjFSWd3iBDt8c Stripe-Should-Retry: - 'false' Stripe-Version: @@ -346,7 +346,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3P6h7TKuuB1fWySn2fA3dJIq", + "id": "pi_3P8hNNKuuB1fWySn2R30XK1N", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -362,18 +362,18 @@ http_interactions: "capture_method": "manual", "client_secret": "", "confirmation_method": "automatic", - "created": 1713393503, + "created": 1713871145, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3P6h7TKuuB1fWySn2rsh6FhI", + "latest_charge": "ch_3P8hNNKuuB1fWySn2UVLjbTL", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1P6h7TKuuB1fWySnjAMDCuUb", + "payment_method": "pm_1P8hNMKuuB1fWySnJvGqdDRh", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -398,5 +398,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Wed, 17 Apr 2024 22:38:25 GMT + recorded_at: Tue, 23 Apr 2024 11:19:06 GMT recorded_with: VCR 6.2.0 diff --git a/spec/lib/stripe/payment_intent_validator_spec.rb b/spec/lib/stripe/payment_intent_validator_spec.rb index d4d37afa2b..64713217fa 100644 --- a/spec/lib/stripe/payment_intent_validator_spec.rb +++ b/spec/lib/stripe/payment_intent_validator_spec.rb @@ -18,131 +18,290 @@ describe Stripe::PaymentIntentValidator do } let(:validator) { Stripe::PaymentIntentValidator.new(payment) } - context "when payment intent is valid" do - shared_examples "payments intents" do |card_type, card_number| - context "from #{card_type}" do - let!(:pm_card) do - Stripe::PaymentMethod.create({ - type: 'card', - card: { - number: card_number, - exp_month: 12, - exp_year: year_valid, - cvc: '314', - }, - }) - end - let!(:payment_intent) do - Stripe::PaymentIntent.create({ - amount: 100, - currency: 'eur', - payment_method: pm_card, - payment_method_types: ['card'], - capture_method: 'manual', - }) - end - let(:payment_intent_response_body) { - [id: payment_intent.id, status: payment_intent.status] - } + describe "as a guest" do + context "when payment intent is valid" do + shared_examples "payments intents" do |card_type, card_number| + context "from #{card_type}" do + let!(:pm_card) do + Stripe::PaymentMethod.create({ + type: 'card', + card: { + number: card_number, + exp_month: 12, + exp_year: year_valid, + cvc: '314', + }, + }) + end + let!(:payment_intent) do + Stripe::PaymentIntent.create({ + amount: 100, + currency: 'eur', + payment_method: pm_card, + payment_method_types: ['card'], + capture_method: 'manual', + }) + end + let(:payment_intent_response_body) { + [id: payment_intent.id, status: payment_intent.status] + } - before do - Stripe::PaymentIntent.confirm(payment_intent.id) - end - it "returns payment intent id and does not raise" do - expect { - result = validator.call - expect(result).to eq payment_intent_response_body - }.not_to raise_error Stripe::StripeError - end + before do + Stripe::PaymentIntent.confirm(payment_intent.id) + end + it "returns payment intent id and does not raise" do + expect { + result = validator.call + expect(result).to eq payment_intent_response_body + }.not_to raise_error Stripe::StripeError + end - it "captures the payment" do - expect(Stripe::PaymentIntent.retrieve( - payment_intent.id - ).status).to eq("requires_capture") + it "captures the payment" do + expect(Stripe::PaymentIntent.retrieve( + payment_intent.id + ).status).to eq("requires_capture") - Stripe::PaymentIntent.capture(payment_intent.id) + Stripe::PaymentIntent.capture(payment_intent.id) - expect(Stripe::PaymentIntent.retrieve( - payment_intent.id - ).status).to eq("succeeded") + expect(Stripe::PaymentIntent.retrieve( + payment_intent.id + ).status).to eq("succeeded") + end end end - end - context "valid non-3D credit cards are correctly handled" do - it_behaves_like "payments intents", "Visa", 4_242_424_242_424_242 - it_behaves_like "payments intents", "Visa (debit)", 4_000_056_655_665_556 - it_behaves_like "payments intents", "Mastercard", 5_555_555_555_554_444 - it_behaves_like "payments intents", "Mastercard (2-series)", 2_223_003_122_003_222 - it_behaves_like "payments intents", "Mastercard (debit)", 5_200_828_282_828_210 - it_behaves_like "payments intents", "Mastercard (prepaid)", 5_105_105_105_105_100 - it_behaves_like "payments intents", "American Express", 378_282_246_310_005 - it_behaves_like "payments intents", "American Express", 371_449_635_398_431 - it_behaves_like "payments intents", "Discover", 6_011_111_111_111_117 - it_behaves_like "payments intents", "Discover", 6_011_000_990_139_424 - it_behaves_like "payments intents", "Discover (debit)", 6_011_981_111_111_113 - it_behaves_like "payments intents", "Diners Club", 3_056_930_009_020_004 - it_behaves_like "payments intents", "Diners Club (14-digit card)", 36_227_206_271_667 - it_behaves_like "payments intents", "BCcard and DinaCard", 6_555_900_000_604_105 - it_behaves_like "payments intents", "JCB", 3_566_002_020_360_505 - it_behaves_like "payments intents", "UnionPay", 6_200_000_000_000_005 - it_behaves_like "payments intents", "UnionPay (19-digit card)", 6_205_500_000_000_000_004 - end + context "valid non-3D credit cards are correctly handled" do + it_behaves_like "payments intents", "Visa", 4_242_424_242_424_242 + it_behaves_like "payments intents", "Visa (debit)", 4_000_056_655_665_556 + it_behaves_like "payments intents", "Mastercard", 5_555_555_555_554_444 + it_behaves_like "payments intents", "Mastercard (2-series)", 2_223_003_122_003_222 + it_behaves_like "payments intents", "Mastercard (debit)", 5_200_828_282_828_210 + it_behaves_like "payments intents", "Mastercard (prepaid)", 5_105_105_105_105_100 + it_behaves_like "payments intents", "American Express", 378_282_246_310_005 + it_behaves_like "payments intents", "American Express", 371_449_635_398_431 + it_behaves_like "payments intents", "Discover", 6_011_111_111_111_117 + it_behaves_like "payments intents", "Discover", 6_011_000_990_139_424 + it_behaves_like "payments intents", "Discover (debit)", 6_011_981_111_111_113 + it_behaves_like "payments intents", "Diners Club", 3_056_930_009_020_004 + it_behaves_like "payments intents", "Diners Club (14-digit card)", 36_227_206_271_667 + it_behaves_like "payments intents", "BCcard and DinaCard", 6_555_900_000_604_105 + it_behaves_like "payments intents", "JCB", 3_566_002_020_360_505 + it_behaves_like "payments intents", "UnionPay", 6_200_000_000_000_005 + it_behaves_like "payments intents", "UnionPay (19-digit card)", 6_205_500_000_000_000_004 + end - xcontext "valid 3D cards are correctly handled" do - pending("updating spec to handle 3D2S cards") - it_behaves_like "payments intents", "UnionPay (debit)", 6_200_000_000_000_047 + xcontext "valid 3D cards are correctly handled" do + pending("updating spec to handle 3D2S cards") + it_behaves_like "payments intents", "UnionPay (debit)", 6_200_000_000_000_047 + end + end + context "when payment intent is invalid" do + shared_examples "payments intents" do |card_type, card_number, error_message| + context "from #{card_type}" do + let!(:pm_card) do + Stripe::PaymentMethod.create({ + type: 'card', + card: { + number: card_number, + exp_month: 12, + exp_year: year_valid, + cvc: '314', + }, + }) + end + let(:payment_intent) do + Stripe::PaymentIntent.create({ + amount: 100, + currency: 'eur', + payment_method: pm_card, + payment_method_types: ['card'], + capture_method: 'manual', + }) + end + it "raises Stripe error with payment intent last_payment_error as message" do + expect { + Stripe::PaymentIntent.confirm(payment_intent.id) + }.to raise_error Stripe::StripeError, error_message + end + end + end + context "invalid credit cards are correctly handled" do + it_behaves_like "payments intents", "Generic decline", 4_000_000_000_000_002, + "Your card was declined." + it_behaves_like "payments intents", "Insufficient funds decline", 4_000_000_000_009_995, + "Your card has insufficient funds." + it_behaves_like "payments intents", "Lost card decline", 4_000_000_000_009_987, + "Your card was declined." + it_behaves_like "payments intents", "Stolen card decline", 4_000_000_000_009_979, + "Your card was declined." + it_behaves_like "payments intents", "Expired card decline", 4_000_000_000_000_069, + "Your card has expired." + it_behaves_like "payments intents", "Incorrect CVC decline", 4_000_000_000_000_127, + "Your card's security code is incorrect." + it_behaves_like "payments intents", "Processing error decline", 4_000_000_000_000_119, + "An error occurred while processing your card. Try again in a little bit." + it_behaves_like "payments intents", "Exceeding velocity limit decline", + 4_000_000_000_006_975, + %(Your card was declined for making repeated attempts too frequently + or exceeding its amount limit.).squish + end end end - context "when payment intent is invalid" do - shared_examples "payments intents" do |card_type, card_number, error_message| - context "from #{card_type}" do - let!(:pm_card) do - Stripe::PaymentMethod.create({ - type: 'card', - card: { - number: card_number, - exp_month: 12, - exp_year: year_valid, - cvc: '314', - }, - }) - end - let(:payment_intent) do - Stripe::PaymentIntent.create({ - amount: 100, - currency: 'eur', - payment_method: pm_card, - payment_method_types: ['card'], - capture_method: 'manual', - }) - end - it "raises Stripe error with payment intent last_payment_error as message" do - expect { + + describe "as a Stripe customer" do + context "when payment intent is valid" do + let(:payment_method_id) { pm_card.id } + let(:customer_id) { customer.id } + let!(:user) { create(:user, email: "apple.customer@example.com") } + let(:credit_card) { create(:credit_card, gateway_payment_profile_id: pm_card.id, user:) } + let(:customer) do + Stripe::Customer.create({ + name: 'Apple Customer', + email: 'applecustomer@example.com', + }) + end + + shared_examples "payments intents" do |card_type, card_number| + context "from #{card_type}" do + let!(:pm_card) do + Stripe::PaymentMethod.create({ + type: 'card', + card: { + number: card_number, + exp_month: 12, + exp_year: year_valid, + cvc: '314', + }, + }) + end + let!(:payment_intent) do + Stripe::PaymentIntent.create({ + amount: 100, + currency: 'eur', + payment_method: pm_card, + payment_method_types: ['card'], + capture_method: 'manual', + customer: customer.id, + setup_future_usage: "off_session" + }) + end + let(:payment_intent_response_body) { + [id: payment_intent.id, status: payment_intent.status] + } + + before do + credit_card.update_attribute :gateway_customer_profile_id, customer_id Stripe::PaymentIntent.confirm(payment_intent.id) - }.to raise_error Stripe::StripeError, error_message + end + it "returns payment intent id and does not raise" do + expect { + result = validator.call + expect(result).to eq payment_intent_response_body + }.not_to raise_error Stripe::StripeError + end + + it "captures the payment" do + expect(Stripe::PaymentIntent.retrieve( + payment_intent.id + ).status).to eq("requires_capture") + + Stripe::PaymentIntent.capture(payment_intent.id) + + expect(Stripe::PaymentIntent.retrieve( + payment_intent.id + ).status).to eq("succeeded") + end end end + + context "valid non-3D credit cards are correctly handled" do + it_behaves_like "payments intents", "Visa", 4_242_424_242_424_242 + it_behaves_like "payments intents", "Visa (debit)", 4_000_056_655_665_556 + it_behaves_like "payments intents", "Mastercard", 5_555_555_555_554_444 + it_behaves_like "payments intents", "Mastercard (2-series)", 2_223_003_122_003_222 + it_behaves_like "payments intents", "Mastercard (debit)", 5_200_828_282_828_210 + it_behaves_like "payments intents", "Mastercard (prepaid)", 5_105_105_105_105_100 + it_behaves_like "payments intents", "American Express", 378_282_246_310_005 + it_behaves_like "payments intents", "American Express", 371_449_635_398_431 + it_behaves_like "payments intents", "Discover", 6_011_111_111_111_117 + it_behaves_like "payments intents", "Discover", 6_011_000_990_139_424 + it_behaves_like "payments intents", "Discover (debit)", 6_011_981_111_111_113 + it_behaves_like "payments intents", "Diners Club", 3_056_930_009_020_004 + it_behaves_like "payments intents", "Diners Club (14-digit card)", 36_227_206_271_667 + it_behaves_like "payments intents", "BCcard and DinaCard", 6_555_900_000_604_105 + it_behaves_like "payments intents", "JCB", 3_566_002_020_360_505 + it_behaves_like "payments intents", "UnionPay", 6_200_000_000_000_005 + it_behaves_like "payments intents", "UnionPay (19-digit card)", 6_205_500_000_000_000_004 + end + + xcontext "valid 3D cards are correctly handled" do + pending("updating spec to handle 3D2S cards") + it_behaves_like "payments intents", "UnionPay (debit)", 6_200_000_000_000_047 + end end - context "invalid credit cards are correctly handled" do - it_behaves_like "payments intents", "Generic decline", 4_000_000_000_000_002, - "Your card was declined." - it_behaves_like "payments intents", "Insufficient funds decline", 4_000_000_000_009_995, - "Your card has insufficient funds." - it_behaves_like "payments intents", "Lost card decline", 4_000_000_000_009_987, - "Your card was declined." - it_behaves_like "payments intents", "Stolen card decline", 4_000_000_000_009_979, - "Your card was declined." - it_behaves_like "payments intents", "Expired card decline", 4_000_000_000_000_069, - "Your card has expired." - it_behaves_like "payments intents", "Incorrect CVC decline", 4_000_000_000_000_127, - "Your card's security code is incorrect." - it_behaves_like "payments intents", "Processing error decline", 4_000_000_000_000_119, - "An error occurred while processing your card. Try again in a little bit." - it_behaves_like "payments intents", "Exceeding velocity limit decline", - 4_000_000_000_006_975, - %(Your card was declined for making repeated attempts too frequently - or exceeding its amount limit.).squish + context "when payment intent is invalid" do + let(:payment_method_id) { pm_card.id } + let(:customer_id) { customer.id } + let!(:user) { create(:user, email: "apple.customer@example.com") } + let(:credit_card) { create(:credit_card, gateway_payment_profile_id: pm_card.id, user:) } + let(:customer) do + Stripe::Customer.create({ + name: 'Apple Customer', + email: 'applecustomer@example.com', + }) + end + + shared_examples "payments intents" do |card_type, card_number, error_message| + context "from #{card_type}" do + let!(:pm_card) do + Stripe::PaymentMethod.create({ + type: 'card', + card: { + number: card_number, + exp_month: 12, + exp_year: year_valid, + cvc: '314', + }, + }) + end + let(:payment_intent) do + Stripe::PaymentIntent.create({ + amount: 100, + currency: 'eur', + payment_method: pm_card, + payment_method_types: ['card'], + capture_method: 'manual', + customer: customer.id, + setup_future_usage: "off_session" + }) + end + it "raises Stripe error with payment intent last_payment_error as message" do + expect { + Stripe::PaymentIntent.confirm(payment_intent.id) + }.to raise_error Stripe::StripeError, error_message + end + end + end + context "invalid credit cards are correctly handled" do + it_behaves_like "payments intents", "Generic decline", 4_000_000_000_000_002, + "Your card was declined." + it_behaves_like "payments intents", "Insufficient funds decline", 4_000_000_000_009_995, + "Your card has insufficient funds." + it_behaves_like "payments intents", "Lost card decline", 4_000_000_000_009_987, + "Your card was declined." + it_behaves_like "payments intents", "Stolen card decline", 4_000_000_000_009_979, + "Your card was declined." + it_behaves_like "payments intents", "Expired card decline", 4_000_000_000_000_069, + "Your card has expired." + it_behaves_like "payments intents", "Incorrect CVC decline", 4_000_000_000_000_127, + "Your card's security code is incorrect." + it_behaves_like "payments intents", "Processing error decline", 4_000_000_000_000_119, + "An error occurred while processing your card. Try again in a little bit." + it_behaves_like "payments intents", "Exceeding velocity limit decline", + 4_000_000_000_006_975, + %(Your card was declined for making repeated attempts too frequently + or exceeding its amount limit.).squish + end end end end From c64519ae2fb35992c318080a1bbffe35a17d4124 Mon Sep 17 00:00:00 2001 From: Kelly Date: Tue, 23 Apr 2024 12:02:32 -0400 Subject: [PATCH 023/319] rewrote payments_controller_spec to be of request spec format --- config/routes.rb | 7 +++ spec/controllers/payments_controller_spec.rb | 53 +++++++++----------- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index ba182c9607..5a5441f3b3 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -54,6 +54,13 @@ Openfoodnetwork::Application.routes.draw do end end + # used for payments_controller_spec.rb + resources :payments do + member do + get :redirect_to_authorize + end + end + resources :line_items, only: [:destroy] do get :bought, on: :collection end diff --git a/spec/controllers/payments_controller_spec.rb b/spec/controllers/payments_controller_spec.rb index 2af4e7a481..a1e919ee88 100644 --- a/spec/controllers/payments_controller_spec.rb +++ b/spec/controllers/payments_controller_spec.rb @@ -2,42 +2,37 @@ require 'spec_helper' -describe PaymentsController, type: :controller do +describe "/payments/redirect_to_authorize", type: :request do let!(:user) { create(:user) } let!(:order) { create(:order, user:) } let!(:payment) { create(:payment, order:) } - describe "testing redirect_to_authorize" do - context "when user isn't logged in" do - it "redirects to the login page and set error flash msg" do - get :redirect_to_authorize, params: { id: payment.id } - expect(response).to redirect_to(root_path(anchor: "/login", - after_login: request.original_fullpath)) - expect(flash[:error]).to eq I18n.t("spree.orders.edit.login_to_view_order") + describe "when user isn't logged in" do + it "redirects to the login page and set error flash msg" do + get redirect_to_authorize_payment_path(payment) + expect(response).to redirect_to(root_path(anchor: "/login", after_login: request.fullpath)) + expect(flash[:error]).to eq I18n.t("spree.orders.edit.login_to_view_order") + end + end + + describe "when user is logged in" do + before { sign_in user } + + context "has cvv response message" do + before do + allow_any_instance_of(Spree::Payment).to receive(:cvv_response_message).and_return('http://example.com') + end + + it "redirects to the CVV response URL" do + get redirect_to_authorize_payment_path(payment) + expect(response).to redirect_to('http://example.com') end end - context "when user is logged in" do - before do - allow(controller).to receive(:spree_current_user).and_return(user) - end - - context "has cvv response message" do - before do - allow_any_instance_of(Spree::Payment).to receive(:cvv_response_message).and_return('http://example.com') - end - - it "redirects to the CVV response URL" do - get :redirect_to_authorize, params: { id: payment.id } - expect(response).to redirect_to('http://example.com') - end - end - - context "doesn't have cvv response message" do - it "redirect to order URL" do - get :redirect_to_authorize, params: { id: payment.id } - expect(response).to redirect_to(order_url(order)) - end + context "doesn't have cvv response message" do + it "redirect to order URL" do + get redirect_to_authorize_payment_path(payment) + expect(response).to redirect_to(order_url(order)) end end end From 2acda6af7441232009fbfa03189ec638a498eb71 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 24 Apr 2024 09:19:11 +1000 Subject: [PATCH 024/319] Ignore empty string websites on DFC API --- engines/dfc_provider/app/services/enterprise_builder.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/dfc_provider/app/services/enterprise_builder.rb b/engines/dfc_provider/app/services/enterprise_builder.rb index 0d61c1735d..f29f79fca9 100644 --- a/engines/dfc_provider/app/services/enterprise_builder.rb +++ b/engines/dfc_provider/app/services/enterprise_builder.rb @@ -23,7 +23,7 @@ class EnterpriseBuilder < DfcBuilder socialMedias: SocialMediaBuilder.social_medias(enterprise), # The model strips the protocol and we need to add it: - websites: [enterprise.website].compact.map { |url| "https://#{url}" }, + websites: [enterprise.website].compact_blank.map { |url| "https://#{url}" }, ).tap do |e| add_ofn_property(e, "ofn:long_description", enterprise.long_description) From b846d0f517f1508ea98e144ddb71ab539cef608e Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 23 Apr 2024 13:11:39 +1000 Subject: [PATCH 025/319] Add ability to bulk update products for product managers I forgot to do this in #12328 [BUU] Remove Stimulus Reflex from Products screen --- app/models/spree/ability.rb | 2 +- spec/system/admin/products_v3/products_spec.rb | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/app/models/spree/ability.rb b/app/models/spree/ability.rb index 037bfecdb6..e95d73b5fc 100644 --- a/app/models/spree/ability.rb +++ b/app/models/spree/ability.rb @@ -192,7 +192,7 @@ module Spree OpenFoodNetwork::Permissions.new(user).managed_product_enterprises.include? product.supplier end - can [:admin, :index], :products_v3 + can [:admin, :index, :bulk_update], :products_v3 can [:create], Spree::Variant can [:admin, :index, :read, :edit, diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index a4f2a3b139..5d69b524cc 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -150,7 +150,6 @@ describe 'As an enterprise user, I can manage my products', feature: :admin_styl fill_in "Name", with: "Pommes" end - pending "#12403" expect { click_button "Save changes" @@ -179,14 +178,14 @@ describe 'As an enterprise user, I can manage my products', feature: :admin_styl search_by_category "Category 1" # expect(page).to have_content "1 product found for your search criteria." - expect(page).to have_select "category_id", selected: "Category 1" + expect(page).to have_select "category_id", selected: "Category 1" # fails in dev but not CI expect_products_count_to_be 1 expect(page).to have_field "Name", with: product_by_category.name end end end - xdescribe "updating" do # pending #12403 + describe "updating" do let!(:variant_a1) { product_a.variants.first.tap{ |v| v.update! display_name: "Medium box", sku: "APL-01", price: 5.25, on_hand: 5, From 64a1fd927003d24bf5d09a7835da76be3cde852a Mon Sep 17 00:00:00 2001 From: Kelly Date: Tue, 23 Apr 2024 22:15:43 -0400 Subject: [PATCH 026/319] removed changes to routes.rb --- config/routes.rb | 7 ------- spec/controllers/payments_controller_spec.rb | 6 +++--- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index 5a5441f3b3..ba182c9607 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -54,13 +54,6 @@ Openfoodnetwork::Application.routes.draw do end end - # used for payments_controller_spec.rb - resources :payments do - member do - get :redirect_to_authorize - end - end - resources :line_items, only: [:destroy] do get :bought, on: :collection end diff --git a/spec/controllers/payments_controller_spec.rb b/spec/controllers/payments_controller_spec.rb index a1e919ee88..f678e7de86 100644 --- a/spec/controllers/payments_controller_spec.rb +++ b/spec/controllers/payments_controller_spec.rb @@ -9,7 +9,7 @@ describe "/payments/redirect_to_authorize", type: :request do describe "when user isn't logged in" do it "redirects to the login page and set error flash msg" do - get redirect_to_authorize_payment_path(payment) + get authorize_payment_path(payment) expect(response).to redirect_to(root_path(anchor: "/login", after_login: request.fullpath)) expect(flash[:error]).to eq I18n.t("spree.orders.edit.login_to_view_order") end @@ -24,14 +24,14 @@ describe "/payments/redirect_to_authorize", type: :request do end it "redirects to the CVV response URL" do - get redirect_to_authorize_payment_path(payment) + get authorize_payment_path(payment) expect(response).to redirect_to('http://example.com') end end context "doesn't have cvv response message" do it "redirect to order URL" do - get redirect_to_authorize_payment_path(payment) + get authorize_payment_path(payment) expect(response).to redirect_to(order_url(order)) end end From eda97ef3f7d109e700689116d0b3a3fa8f9c1649 Mon Sep 17 00:00:00 2001 From: Kelly Date: Tue, 23 Apr 2024 22:17:08 -0400 Subject: [PATCH 027/319] fixed path --- spec/controllers/payments_controller_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/controllers/payments_controller_spec.rb b/spec/controllers/payments_controller_spec.rb index f678e7de86..11cb19fd8c 100644 --- a/spec/controllers/payments_controller_spec.rb +++ b/spec/controllers/payments_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe "/payments/redirect_to_authorize", type: :request do +describe "/payments/:id/authorize", type: :request do let!(:user) { create(:user) } let!(:order) { create(:order, user:) } let!(:payment) { create(:payment, order:) } From 040e09414bf8546fbd6c23b90ccd74e8f551590f Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Wed, 24 Apr 2024 15:34:33 +1000 Subject: [PATCH 028/319] Add ofn:data:check_invalid_address_used task It checks for invalid addresses, ie address with address1, city, phone or country_id set to null. It will return: - a list of invalid address in use (associated to another model) - a list of invalid address not in use, ie that we can delete --- lib/tasks/check_invalid_address_used.rake | 106 ++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 lib/tasks/check_invalid_address_used.rake diff --git a/lib/tasks/check_invalid_address_used.rake b/lib/tasks/check_invalid_address_used.rake new file mode 100644 index 0000000000..7ec96e6c65 --- /dev/null +++ b/lib/tasks/check_invalid_address_used.rake @@ -0,0 +1,106 @@ +# frozen_string_literal: true + +require 'csv' + +namespace :ofn do + namespace :data do + # Invalid address are define by having: address1, city, phone, or country_id set to null + desc 'Check if any invalid address are in use' + task check_invalid_address_used: :environment do # rubocop:disable Metrics/BlockLength + puts "Checking for invalid address" + invalid_addresses = Spree::Address + .where("address1 IS NULL OR city IS NULL OR phone IS NULL OR country_id IS NULL") + .pluck(:id) + + if invalid_addresses.empty? + puts "No invalid address found" + next + end + + puts "Checking if any of #{invalid_addresses.length} invalid addresses are in use" + + # Customer : + # - bill_address + # - ship_address + customer_used_address = check_bill_ship_address(Customer, invalid_addresses) + p "Customers #{customer_used_address}" + + # Subscription : + # - bill_address + # - ship_address + subscriptions_used_address = check_bill_ship_address(Subscription, invalid_addresses) + p "Subscriptions #{subscriptions_used_address}" + + # EnterpriseGroup : + # - enterprise_group address + enterprise_group_used_address = check_address(EnterpriseGroup, invalid_addresses) + p "EnterpriseGroup #{enterprise_group_used_address}" + + # User : + # - bill_address + # - ship_address + users_used_address = check_bill_ship_address(Spree::User, invalid_addresses) + p "User #{users_used_address}" + + # Order : + # - bill_address + # - ship_address + orders_used_address = check_bill_ship_address(Spree::Order, invalid_addresses) + p "Order #{orders_used_address}" + + # Shipment : + # - address + shipments_used_address = check_address(Spree::Shipment, invalid_addresses) + p "Shipments #{shipments_used_address}" + + # Enterprise : + # - address + # - business_address + enterprises = Enterprise + .left_joins(:address, :business_address) + .where( + "address_id IN(?) OR business_address_id IN(?)", invalid_addresses, invalid_addresses + ) + enterprise_used_address = enterprises.map do |e| + next e.address_id if check_correct_address_id(e.address_id, invalid_addresses) + + e.business_address_id if check_correct_address_id(e.business_address_id, invalid_addresses) + end + p "Enterprises #{enterprise_used_address}" + + address_to_be_fixed = customer_used_address.union( + subscriptions_used_address, users_used_address, orders_used_address, shipments_used_address, + enterprise_used_address + ) + address_to_be_deleted = invalid_addresses - address_to_be_fixed + + p "#{address_to_be_deleted.length} addresses can be deleted:" + p address_to_be_deleted + + p "#{address_to_be_fixed.length} addresses need to be fixed:" + p address_to_be_fixed + end + + private + + def check_bill_ship_address(klass, addresses) + objects = klass + .left_joins(:bill_address, :ship_address) + .where("bill_address_id in(?) OR ship_address_id in(?)", addresses, addresses) + + objects.map do |o| + next o.ship_address_id if check_correct_address_id(o.ship_address_id, addresses) + + o.bill_address_id if check_correct_address_id(o.bill_address_id, addresses) + end + end + + def check_address(klass, addresses) + klass.joins(:address).where(address: addresses).pluck(:address_id) + end + + def check_correct_address_id(id, missing_ids) + !id.nil? && missing_ids.include?(id) + end + end +end From 9583bef0d8ea3102babc485336b51c646ad200ca Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Wed, 24 Apr 2024 16:42:13 +1000 Subject: [PATCH 029/319] Per review, handle case where a model can be linked to invalid addresses --- lib/tasks/check_invalid_address_used.rake | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/tasks/check_invalid_address_used.rake b/lib/tasks/check_invalid_address_used.rake index 7ec96e6c65..912bb423ef 100644 --- a/lib/tasks/check_invalid_address_used.rake +++ b/lib/tasks/check_invalid_address_used.rake @@ -62,10 +62,13 @@ namespace :ofn do "address_id IN(?) OR business_address_id IN(?)", invalid_addresses, invalid_addresses ) enterprise_used_address = enterprises.map do |e| - next e.address_id if check_correct_address_id(e.address_id, invalid_addresses) - - e.business_address_id if check_correct_address_id(e.business_address_id, invalid_addresses) - end + res = [] + res << e.address_id if check_correct_address_id(e.address_id, invalid_addresses) + res << e.business_address_id if check_correct_address_id( + e.business_address_id, invalid_addresses + ) + res + end.flatten p "Enterprises #{enterprise_used_address}" address_to_be_fixed = customer_used_address.union( @@ -89,10 +92,11 @@ namespace :ofn do .where("bill_address_id in(?) OR ship_address_id in(?)", addresses, addresses) objects.map do |o| - next o.ship_address_id if check_correct_address_id(o.ship_address_id, addresses) - - o.bill_address_id if check_correct_address_id(o.bill_address_id, addresses) - end + res = [] + res << o.ship_address_id if check_correct_address_id(o.ship_address_id, addresses) + res << o.bill_address_id if check_correct_address_id(o.bill_address_id, addresses) + res + end.flatten end def check_address(klass, addresses) From 77a8e4d29a098031921a5dbd9887790ef8ae8a02 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Wed, 24 Apr 2024 16:49:47 +1000 Subject: [PATCH 030/319] Print code to run to delete address if needed --- lib/tasks/check_invalid_address_used.rake | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/tasks/check_invalid_address_used.rake b/lib/tasks/check_invalid_address_used.rake index 912bb423ef..2d831d265b 100644 --- a/lib/tasks/check_invalid_address_used.rake +++ b/lib/tasks/check_invalid_address_used.rake @@ -77,10 +77,18 @@ namespace :ofn do ) address_to_be_deleted = invalid_addresses - address_to_be_fixed - p "#{address_to_be_deleted.length} addresses can be deleted:" + puts "\n\n" + puts "#{address_to_be_deleted.length} addresses can be deleted:" p address_to_be_deleted - p "#{address_to_be_fixed.length} addresses need to be fixed:" + if address_to_be_deleted.present? + puts "\n\n" + puts "Run the following code to delete the addresses:" + puts "Spree::Address.where(id: #{address_to_be_deleted}).delete_all" + end + + puts "\n\n" + puts "#{address_to_be_fixed.length} addresses need to be fixed:" p address_to_be_fixed end From 43005672a9ab8dbcbbd5ea13632f373254248c6a Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Wed, 24 Apr 2024 15:19:17 +0200 Subject: [PATCH 031/319] Fix RedundantPresenceValidationOnBelongs on other files - presence: true is redundant since Rails 5.0 BUT applies with new default config of belongs_to_required_by_default to true. Lots of files with belongs_to_required_by_default = false (backward compatibility). So: deleting this setting implies to adding optional: true - added 'NOT NULL' constraints so model constraints match with contraints on DB tables. - corresponding migration files to match AR Models & DB tables - rake tasks to check corrupt data (ie: NULL/nil in id fields) - updated the todo --- .rubocop_todo.yml | 5 +---- app/models/spree/product_property.rb | 5 +---- app/models/spree/return_authorization.rb | 3 --- app/models/spree/state.rb | 4 +--- ...646_require_property_on_product_property.rb | 7 +++++++ ...54_require_order_on_return_authorization.rb | 7 +++++++ .../20240424121221_require_country_on_state.rb | 7 +++++++ db/schema.rb | 8 ++++---- .../check_missing_country_id_in_state.rake | 18 ++++++++++++++++++ ...ssing_order_id_in_return_authorization.rake | 18 ++++++++++++++++++ ...operty_in_joint_table_product_property.rake | 18 ++++++++++++++++++ 11 files changed, 82 insertions(+), 18 deletions(-) create mode 100644 db/migrate/20240424075646_require_property_on_product_property.rb create mode 100644 db/migrate/20240424113354_require_order_on_return_authorization.rb create mode 100644 db/migrate/20240424121221_require_country_on_state.rb create mode 100644 lib/tasks/data/check_missing_country_id_in_state.rake create mode 100644 lib/tasks/data/check_missing_order_id_in_return_authorization.rake create mode 100644 lib/tasks/data/check_missing_property_in_joint_table_product_property.rake diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 3092909883..95b4ce01c7 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -660,15 +660,12 @@ Rails/RedundantActiveRecordAllMethod: - 'app/models/spree/variant.rb' - 'spec/system/admin/product_import_spec.rb' -# Offense count: 14 +# Offense count: 11 # This cop supports unsafe autocorrection (--autocorrect-all). Rails/RedundantPresenceValidationOnBelongsTo: Exclude: - 'app/models/spree/line_item.rb' - 'app/models/spree/order.rb' - - 'app/models/spree/product_property.rb' - - 'app/models/spree/return_authorization.rb' - - 'app/models/spree/state.rb' - 'app/models/spree/stock_item.rb' - 'app/models/spree/stock_movement.rb' - 'app/models/spree/tax_rate.rb' diff --git a/app/models/spree/product_property.rb b/app/models/spree/product_property.rb index 653c446464..c14d7f9096 100644 --- a/app/models/spree/product_property.rb +++ b/app/models/spree/product_property.rb @@ -2,12 +2,9 @@ module Spree class ProductProperty < ApplicationRecord - self.belongs_to_required_by_default = false - - belongs_to :product, class_name: "Spree::Product", touch: true + belongs_to :product, class_name: "Spree::Product", touch: true, optional: true belongs_to :property, class_name: 'Spree::Property' - validates :property, presence: true validates :value, length: { maximum: 255 } default_scope -> { order("#{table_name}.position") } diff --git a/app/models/spree/return_authorization.rb b/app/models/spree/return_authorization.rb index 1b18b9ea4f..9d7a7dea2d 100644 --- a/app/models/spree/return_authorization.rb +++ b/app/models/spree/return_authorization.rb @@ -2,8 +2,6 @@ module Spree class ReturnAuthorization < ApplicationRecord - self.belongs_to_required_by_default = false - acts_as_paranoid belongs_to :order, class_name: 'Spree::Order', inverse_of: :return_authorizations @@ -13,7 +11,6 @@ module Spree before_save :force_positive_amount before_create :generate_number - validates :order, presence: true validates :amount, numericality: true validate :must_have_shipped_units diff --git a/app/models/spree/state.rb b/app/models/spree/state.rb index cbbd159a55..1d310636da 100644 --- a/app/models/spree/state.rb +++ b/app/models/spree/state.rb @@ -2,11 +2,9 @@ module Spree class State < ApplicationRecord - self.belongs_to_required_by_default = false - belongs_to :country, class_name: 'Spree::Country' - validates :country, :name, presence: true + validates :name, presence: true def self.find_all_by_name_or_abbr(name_or_abbr) where('name = ? OR abbr = ?', name_or_abbr, name_or_abbr) diff --git a/db/migrate/20240424075646_require_property_on_product_property.rb b/db/migrate/20240424075646_require_property_on_product_property.rb new file mode 100644 index 0000000000..d8f8502e12 --- /dev/null +++ b/db/migrate/20240424075646_require_property_on_product_property.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class RequirePropertyOnProductProperty < ActiveRecord::Migration[7.0] + def change + change_column_null :spree_product_properties, :property_id, false + end +end diff --git a/db/migrate/20240424113354_require_order_on_return_authorization.rb b/db/migrate/20240424113354_require_order_on_return_authorization.rb new file mode 100644 index 0000000000..13aaea40aa --- /dev/null +++ b/db/migrate/20240424113354_require_order_on_return_authorization.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class RequireOrderOnReturnAuthorization < ActiveRecord::Migration[7.0] + def change + change_column_null :spree_return_authorizations, :order_id, false + end +end diff --git a/db/migrate/20240424121221_require_country_on_state.rb b/db/migrate/20240424121221_require_country_on_state.rb new file mode 100644 index 0000000000..b2862c4898 --- /dev/null +++ b/db/migrate/20240424121221_require_country_on_state.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class RequireCountryOnState < ActiveRecord::Migration[7.0] + def change + change_column_null :spree_states, :country_id, false + end +end diff --git a/db/schema.rb b/db/schema.rb index 68d8d5206d..97171b74ef 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_04_22_150502) do +ActiveRecord::Schema[7.0].define(version: 2024_04_24_121221) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" enable_extension "plpgsql" @@ -675,7 +675,7 @@ ActiveRecord::Schema[7.0].define(version: 2024_04_22_150502) do create_table "spree_product_properties", id: :serial, force: :cascade do |t| t.string "value", limit: 255 t.integer "product_id" - t.integer "property_id" + t.integer "property_id", null: false t.datetime "created_at", precision: nil, null: false t.datetime "updated_at", precision: nil, null: false t.integer "position", default: 0 @@ -718,7 +718,7 @@ ActiveRecord::Schema[7.0].define(version: 2024_04_22_150502) do t.string "number", limit: 255 t.string "state", limit: 255 t.decimal "amount", precision: 10, scale: 2, default: "0.0", null: false - t.integer "order_id" + t.integer "order_id", null: false t.text "reason" t.datetime "created_at", precision: nil, null: false t.datetime "updated_at", precision: nil, null: false @@ -814,7 +814,7 @@ ActiveRecord::Schema[7.0].define(version: 2024_04_22_150502) do create_table "spree_states", id: :serial, force: :cascade do |t| t.string "name", limit: 255 t.string "abbr", limit: 255 - t.integer "country_id" + t.integer "country_id", null: false end create_table "spree_stock_items", id: :serial, force: :cascade do |t| diff --git a/lib/tasks/data/check_missing_country_id_in_state.rake b/lib/tasks/data/check_missing_country_id_in_state.rake new file mode 100644 index 0000000000..0b56f49a71 --- /dev/null +++ b/lib/tasks/data/check_missing_country_id_in_state.rake @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +namespace :ofn do + namespace :data do + desc 'Checking missing country_id in Spree::State' + task check_missing_country_id_in_spree_states: :environment do + puts 'Checking for null country_id' + ids = Spree::State.where(country_id: nil).pluck(:id) + + if ids.empty? + puts 'No NULL country_id found in spree_states' + else + puts 'NULL country_ids s have been found in spree_states:' + print ids + end + end + end +end diff --git a/lib/tasks/data/check_missing_order_id_in_return_authorization.rake b/lib/tasks/data/check_missing_order_id_in_return_authorization.rake new file mode 100644 index 0000000000..d69bdb9bff --- /dev/null +++ b/lib/tasks/data/check_missing_order_id_in_return_authorization.rake @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +namespace :ofn do + namespace :data do + desc 'Checking order_id in ReturnAuthorization' + task check_missing_order_id_in_return_authorizations: :environment do + puts 'Checking for null order_id' + ids = Spree::ReturnAuthorization.where(order_id: nil).pluck(:id) + + if ids.empty? + puts 'No NULL order_id found in spree_return_authorizations' + else + puts 'NULL order_id s have been found in spree_return_authorizations:' + print ids + end + end + end +end diff --git a/lib/tasks/data/check_missing_property_in_joint_table_product_property.rake b/lib/tasks/data/check_missing_property_in_joint_table_product_property.rake new file mode 100644 index 0000000000..52949e83c6 --- /dev/null +++ b/lib/tasks/data/check_missing_property_in_joint_table_product_property.rake @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +namespace :ofn do + namespace :data do + desc 'Checking missing property_id in ProductProperty' + task check_missing_property_in_joint_table_product_property: :environment do + puts 'Checking for null property_id' + ids = Spree::ProductProperty.where(property_id: nil).pluck(:id) + + if ids.empty? + puts 'No NULL property_id found in spree_product_properties' + else + puts 'NULL property_ids s have been found in spree_product_properties:' + print ids + end + end + end +end From 57f148564ceeb229acdba43b8049af5be6a97770 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Thu, 25 Apr 2024 16:32:56 +0100 Subject: [PATCH 032/319] Update all locales with the latest Transifex translations --- config/locales/ar.yml | 2 ++ config/locales/ca.yml | 6 +++++- config/locales/cy.yml | 6 +++++- config/locales/de_CH.yml | 2 ++ config/locales/de_DE.yml | 6 +++++- config/locales/el.yml | 2 ++ config/locales/en_AU.yml | 2 ++ config/locales/en_BE.yml | 2 ++ config/locales/en_CA.yml | 12 ++++++++---- config/locales/en_DE.yml | 2 ++ config/locales/en_FR.yml | 6 +++++- config/locales/en_GB.yml | 6 +++++- config/locales/en_IE.yml | 6 +++++- config/locales/en_IN.yml | 2 ++ config/locales/en_NZ.yml | 2 ++ config/locales/en_PH.yml | 2 ++ config/locales/en_US.yml | 2 ++ config/locales/en_ZA.yml | 2 ++ config/locales/es.yml | 3 +++ config/locales/es_CO.yml | 2 ++ config/locales/es_CR.yml | 2 ++ config/locales/es_US.yml | 2 ++ config/locales/fil_PH.yml | 2 ++ config/locales/fr.yml | 6 +++++- config/locales/fr_BE.yml | 23 ++++++++++++++++++----- config/locales/fr_CA.yml | 9 +++++++-- config/locales/fr_CH.yml | 2 ++ config/locales/fr_CM.yml | 2 ++ config/locales/hi.yml | 6 +++++- config/locales/hu.yml | 2 ++ config/locales/it.yml | 2 ++ config/locales/it_CH.yml | 2 ++ config/locales/ko.yml | 2 ++ config/locales/ml.yml | 6 +++++- config/locales/mr.yml | 6 ++++-- config/locales/nb.yml | 6 +++++- config/locales/nl_BE.yml | 2 ++ config/locales/pa.yml | 6 +++++- config/locales/pl.yml | 2 ++ config/locales/pt.yml | 2 ++ config/locales/pt_BR.yml | 2 ++ config/locales/ru.yml | 6 +++++- config/locales/sv.yml | 2 ++ config/locales/tr.yml | 2 ++ config/locales/uk.yml | 2 ++ 45 files changed, 156 insertions(+), 25 deletions(-) diff --git a/config/locales/ar.yml b/config/locales/ar.yml index be4307484d..0c276b3617 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -708,6 +708,8 @@ ar: new_variant: نوع جديد edit_image: close: عودة + variant_row: + none_tax_category: لا شيء product_import: title: استيراد المنتج file_not_found: لم يتم العثور على الملف أو تعذر فتحه diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 1522484fc1..f52b4f50f2 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -108,7 +108,8 @@ ca: message_html: "Si us plau, torna a provar

Pot ser un problema temporal. Si us plau, clica al botó de tornar enrere per a tornar a la pantalla anterior o torna a l'Inici i prova una altra vegada.

Ho estem intentant

Si has vist aquest problema abans, probablement ja estem assabentats i estem treballant per a solucionar-lo. Registrem tots els errors que apareixen.

Contacte de suport

Si el problema persisteix o és urgent, si us plau informa'ns. Busca com fer-ho a la pàgina Open Food Network Local.

Ens ajuda molt que ens proporcionis tants detalls com sigui possible de què estaves fent quan es va aparèixer aquest error.

" unprocessable_entity: message_html: "

El canvi que volies va ser rebutjat. Potser heu intentat canviar alguna cosa a la qual no teniu accés.

Tornar a l'inici

" - stimulus_reflex_error: "Ens sap greu, però alguna cosa ha anat malament.\n\n Pot ser que sigui un problema temporal, així que si us plau, torna-ho a provar o torna a carregar la pàgina.\n Enregistrem tots els errors i és possible que estiguem treballant en una solució.\n Si el problema persisteix o és urgent, poseu-vos en contacte amb nosaltres." + general_error: + message: "Ens sap greu, però alguna cosa ha anat malament.\n\n Pot ser que sigui un problema temporal, així que si us plau, torna-ho a provar o torna a carregar la pàgina.\n Enregistrem tots els errors i és possible que estiguem treballant en una solució.\n Si el problema persisteix o és urgent, poseu-vos en contacte amb nosaltres." stripe: error_code: incorrect_number: "El número de la targeta és incorrecte." @@ -725,6 +726,7 @@ ca: index: header: title: Edició de productes en bloc + content: loading: Carregant els vostres productes delete_modal: delete_product_modal: @@ -772,6 +774,8 @@ ca: success: Canvis guardats edit_image: close: Enrere + variant_row: + none_tax_category: Cap product_import: title: Importació de productes file_not_found: No s'ha trobat el fitxer o no s'ha pogut obrir diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 2d774a500f..436e7013f8 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -137,7 +137,8 @@ cy: unprocessable_entity: title: "Gwrthodwyd y newid roeddech chi am ei wneud (422)" message_html: "

Gwrthodwyd y newid roeddech chi am ei wneud. Hwyrach ichi geisio newid rhywbeth nad oes gennych fynediad ato.

Ewch yn ôl i’r Hafan.

" - stimulus_reflex_error: "Mae’n ddrwg gennym, ond aeth rhywbeth o’i le. \n\nGall fod yn broblem dros dro, felly gofynnir ichi roi cynnig arall neu ail-lwytho’r dudalen.\n Byddwn yn cofnodi pob gwall, a hwyrach ein bod yn gweithio i’w datrys. \nOs bydd y broblem yn parhau, neu os taw mater brys yw, cysylltwch â ni." + general_error: + message: "Mae’n ddrwg gennym, ond aeth rhywbeth o’i le. \n\nGall fod yn broblem dros dro, felly gofynnir ichi roi cynnig arall neu ail-lwytho’r dudalen.\n Byddwn yn cofnodi pob gwall, a hwyrach ein bod yn gweithio i’w datrys. \nOs bydd y broblem yn parhau, neu os taw mater brys yw, cysylltwch â ni." stripe: error_code: incorrect_number: "Mae rhif y cerdyn yn anghywir" @@ -755,6 +756,7 @@ cy: index: header: title: Cynhyrchion Golygu Swmp + content: loading: Yn llwytho eich cynnyrch delete_modal: delete_product_modal: @@ -812,6 +814,8 @@ cy: delete_variant: success: Llwyddwyd i ddileu’r amrywiolyn error: Yn methu dileu’r amrywiolyn + variant_row: + none_tax_category: Dim product_import: title: Mewnforio Cynnyrch file_not_found: Ni ddaethpwyd o hyd i ffeil neu ni ellid ei hagor diff --git a/config/locales/de_CH.yml b/config/locales/de_CH.yml index 64385cd440..e58546e8f7 100644 --- a/config/locales/de_CH.yml +++ b/config/locales/de_CH.yml @@ -699,6 +699,8 @@ de_CH: new_variant: Neue Produktvariante edit_image: close: Zurück + variant_row: + none_tax_category: Keine product_import: title: Produkte importieren file_not_found: Die Datei konnte nicht gefunden oder nicht geöffnet werden. diff --git a/config/locales/de_DE.yml b/config/locales/de_DE.yml index fde7a15eb1..064ddb5d88 100644 --- a/config/locales/de_DE.yml +++ b/config/locales/de_DE.yml @@ -137,7 +137,8 @@ de_DE: unprocessable_entity: title: "Die gewünschte Änderung wurde abgelehnt (422). " message_html: "

Die gewünschte Änderung wurde abgelehnt. Vielleicht haben Sie versucht, etwas zu ändern, auf das Sie keinen Zugriff haben.

Zur Startseite zurückkehren

" - stimulus_reflex_error: "Es tut uns leid, etwas ist schief gelaufen. \n\nDies könnte ein vorübergehendes Problem sein. Bitte versuchen Sie es erneut oder laden Sie die Seite neu. \nWir erfassen alle Fehler und arbeiten möglicherweise bereits an einer Lösung. \nWenn das Problem weiterhin besteht oder Ihr Anliegen dringend ist, kontaktieren Sie uns bitte." + general_error: + message: "Es tut uns leid, etwas ist schief gelaufen. \n\nDies könnte ein vorübergehendes Problem sein. Bitte versuchen Sie es erneut oder laden Sie die Seite neu. \nWir erfassen alle Fehler und arbeiten möglicherweise bereits an einer Lösung. \nWenn das Problem weiterhin besteht oder Ihr Anliegen dringend ist, kontaktieren Sie uns bitte." stripe: error_code: incorrect_number: "Die Kreditkartennummer ist fehlerhaft." @@ -755,6 +756,7 @@ de_DE: index: header: title: Produkte verwalten + content: loading: Produkte werden geladen... filters: search_products: Nach Produkten suchen @@ -794,6 +796,8 @@ de_DE: success: Die Änderungen wurden gespeichert. edit_image: close: Zurück + variant_row: + none_tax_category: Nichts product_import: title: Produkte importieren file_not_found: Die Datei konnte nicht gefunden oder nicht geöffnet werden. diff --git a/config/locales/el.yml b/config/locales/el.yml index f8e2a3864d..a9839113af 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -594,6 +594,8 @@ el: search: Αναζήτηση edit_image: close: Πίσω + variant_row: + none_tax_category: Κανένας product_import: title: Είσαγωγή Προϊόντος file_not_found: Το αρχείο δεν βρέθηκε ή δεν μπόρεσε να φορτωθεί diff --git a/config/locales/en_AU.yml b/config/locales/en_AU.yml index 553225c846..e6628fa412 100644 --- a/config/locales/en_AU.yml +++ b/config/locales/en_AU.yml @@ -558,6 +558,8 @@ en_AU: new_variant: New variant edit_image: close: Back + variant_row: + none_tax_category: None product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_BE.yml b/config/locales/en_BE.yml index 3eedba8b4e..a2f979e1c9 100644 --- a/config/locales/en_BE.yml +++ b/config/locales/en_BE.yml @@ -519,6 +519,8 @@ en_BE: new_variant: New variant edit_image: close: Back + variant_row: + none_tax_category: None product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_CA.yml b/config/locales/en_CA.yml index 29a11fa88f..ab0b04ea2f 100644 --- a/config/locales/en_CA.yml +++ b/config/locales/en_CA.yml @@ -141,7 +141,8 @@ en_CA: unprocessable_entity: title: "The change you wanted was rejected (422)" message_html: "

The change you wanted was rejected. Maybe you tried to change something you don't have access to.

Return home

" - stimulus_reflex_error: "We're sorry, but something went wrong.\n\nThis might be a temporary problem, so please try again or reload the page.\nWe record all erros and may be working on a fix.\nIf the problem persists or is urgent, please contact us." + general_error: + message: "We're sorry, but something went wrong.\n\nThis might be a temporary problem, so please try again or reload the page.\nWe record all erros and may be working on a fix.\nIf the problem persists or is urgent, please contact us." stripe: error_code: incorrect_number: "The card number is incorrect." @@ -227,7 +228,7 @@ en_CA: customer_instructions: "Customer instructions" additional_information: "Additional information" connect_app: - url: "https://n8n.opernfoodnetwork.org/webhook/regen-CAN/connect-enterprise" + url: "https://n8n.opernfoodnetwork.org/webhook-test/regen-CAN/connect-enterprise" devise: passwords: spree_user: @@ -771,6 +772,7 @@ en_CA: index: header: title: Bulk Edit Products + content: loading: Loading your products delete_modal: delete_product_modal: @@ -831,6 +833,8 @@ en_CA: delete_variant: success: Successfully deleted the variant error: Unable to delete the variant + variant_row: + none_tax_category: None product_import: title: Product Import file_not_found: File not found or could not be opened @@ -1269,8 +1273,8 @@ en_CA: custom_tab_content: "Content for custom tab" connected_apps: legend: "Connected apps" - title: "Discover Regenerative" - tagline: "Allow Discover Regenerative to publish your enterprise information." + title: "Discover Food Justice" + tagline: "Allow OFN Canada to publish your enterprise information." enable: "Allow data sharing" disable: "Stop sharing" loading: "Loading" diff --git a/config/locales/en_DE.yml b/config/locales/en_DE.yml index 80ac27c6ed..5e47128d6c 100644 --- a/config/locales/en_DE.yml +++ b/config/locales/en_DE.yml @@ -524,6 +524,8 @@ en_DE: new_variant: New variant edit_image: close: Back + variant_row: + none_tax_category: None product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_FR.yml b/config/locales/en_FR.yml index 1a50fd6267..c25c625256 100644 --- a/config/locales/en_FR.yml +++ b/config/locales/en_FR.yml @@ -141,7 +141,8 @@ en_FR: unprocessable_entity: title: "The change you wanted was rejected (422)" message_html: "

The change you wanted was rejected. Maybe you tried to change something you don't have access to.

Return home

" - stimulus_reflex_error: "We're sorry, but something went wrong.\n\nThis might be a temporary problem, so please try again or reload the page.\nWe record all errors and may be working on a fix.\nIf the problem persists or is urgent, please contact us." + general_error: + message: "We're sorry, but something went wrong.\n\nThis might be a temporary problem, so please try again or reload the page.\nWe record all errors and may be working on a fix.\nIf the problem persists or is urgent, please contact us." stripe: error_code: incorrect_number: "The card number is incorrect." @@ -776,6 +777,7 @@ en_FR: index: header: title: Bulk Edit Products + content: loading: Loading your products delete_modal: delete_product_modal: @@ -836,6 +838,8 @@ en_FR: delete_variant: success: Successfully deleted the variant error: Unable to delete the variant + variant_row: + none_tax_category: None product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_GB.yml b/config/locales/en_GB.yml index 3530fc640f..1aed19905f 100644 --- a/config/locales/en_GB.yml +++ b/config/locales/en_GB.yml @@ -138,7 +138,8 @@ en_GB: unprocessable_entity: title: "The change you wanted was rejected (422)" message_html: "

The change you wanted was rejected. Maybe you tried to change something you don't have access to.

Return home

" - stimulus_reflex_error: "We're sorry, but something went wrong.\n\nThis might be a temporary problem, so please try again or reload the page.\nWe record all errors and may be working on a fix.\nIf the problem persists or is urgent, please contact us." + general_error: + message: "We're sorry, but something went wrong.\n\nThis might be a temporary problem, so please try again or reload the page.\nWe record all errors and may be working on a fix.\nIf the problem persists or is urgent, please contact us." stripe: error_code: incorrect_number: "The card number is incorrect." @@ -762,6 +763,7 @@ en_GB: index: header: title: Bulk Edit Products + content: loading: Loading your products delete_modal: delete_product_modal: @@ -819,6 +821,8 @@ en_GB: delete_variant: success: Successfully deleted the variant error: Unable to delete the variant + variant_row: + none_tax_category: None product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_IE.yml b/config/locales/en_IE.yml index d58402827c..420828cb65 100644 --- a/config/locales/en_IE.yml +++ b/config/locales/en_IE.yml @@ -141,7 +141,8 @@ en_IE: unprocessable_entity: title: "The change you wanted was rejected (422)" message_html: "

The change you wanted was rejected. Maybe you tried to change something you don't have access to.

Return home

" - stimulus_reflex_error: "We're sorry, but something went wrong.\n\nThis might be a temporary problem, so please try again or reload the page.\nWe record all errors and may be working on a fix.\nIf the problem persists or is urgent, please contact us." + general_error: + message: "We're sorry, but something went wrong.\n\nThis might be a temporary problem, so please try again or reload the page.\nWe record all errors and may be working on a fix.\nIf the problem persists or is urgent, please contact us." stripe: error_code: incorrect_number: "The card number is incorrect." @@ -761,6 +762,7 @@ en_IE: index: header: title: Bulk Edit Products + content: loading: Loading your products delete_modal: delete_product_modal: @@ -821,6 +823,8 @@ en_IE: delete_variant: success: Successfully deleted the variant error: Unable to delete the variant + variant_row: + none_tax_category: None product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_IN.yml b/config/locales/en_IN.yml index 64b8d02c11..defbf532a8 100644 --- a/config/locales/en_IN.yml +++ b/config/locales/en_IN.yml @@ -542,6 +542,8 @@ en_IN: new_variant: New variant edit_image: close: Back + variant_row: + none_tax_category: None product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_NZ.yml b/config/locales/en_NZ.yml index 0abd85c023..5bb263a7d7 100644 --- a/config/locales/en_NZ.yml +++ b/config/locales/en_NZ.yml @@ -695,6 +695,8 @@ en_NZ: new_variant: New variant edit_image: close: Back + variant_row: + none_tax_category: None product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_PH.yml b/config/locales/en_PH.yml index c492d71a9f..e68b07cbce 100644 --- a/config/locales/en_PH.yml +++ b/config/locales/en_PH.yml @@ -534,6 +534,8 @@ en_PH: new_variant: New variant edit_image: close: Back + variant_row: + none_tax_category: None product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_US.yml b/config/locales/en_US.yml index 58e3454eba..c142968b87 100644 --- a/config/locales/en_US.yml +++ b/config/locales/en_US.yml @@ -673,6 +673,8 @@ en_US: new_variant: New variant edit_image: close: Back + variant_row: + none_tax_category: None product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_ZA.yml b/config/locales/en_ZA.yml index 0d920527ad..af98a884f4 100644 --- a/config/locales/en_ZA.yml +++ b/config/locales/en_ZA.yml @@ -538,6 +538,8 @@ en_ZA: new_variant: New variant edit_image: close: Back + variant_row: + none_tax_category: None product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/es.yml b/config/locales/es.yml index 7c3473f7c2..186cd6fb59 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -694,6 +694,7 @@ es: index: header: title: Editar varios Productos + content: loading: Cargando tus productos filters: producers: @@ -713,6 +714,8 @@ es: new_variant: Nueva variante edit_image: close: Atrás + variant_row: + none_tax_category: Ninguno product_import: title: Importación de productos file_not_found: Archivo no encontrado o no se pudo abrir diff --git a/config/locales/es_CO.yml b/config/locales/es_CO.yml index 964ea1c945..319a49bdfa 100644 --- a/config/locales/es_CO.yml +++ b/config/locales/es_CO.yml @@ -562,6 +562,8 @@ es_CO: new_variant: Nueva variante edit_image: close: Atrás + variant_row: + none_tax_category: Ninguno product_import: title: Importe de producto file_not_found: Archivo no encontrado o no se pudo abrir diff --git a/config/locales/es_CR.yml b/config/locales/es_CR.yml index 3b903b274c..57853eb640 100644 --- a/config/locales/es_CR.yml +++ b/config/locales/es_CR.yml @@ -699,6 +699,8 @@ es_CR: new_variant: Nueva variante edit_image: close: Atrás + variant_row: + none_tax_category: Ninguno product_import: title: Importe de producto file_not_found: Archivo no encontrado o no se pudo abrir diff --git a/config/locales/es_US.yml b/config/locales/es_US.yml index 35e2dc488b..34c37eb84d 100644 --- a/config/locales/es_US.yml +++ b/config/locales/es_US.yml @@ -671,6 +671,8 @@ es_US: new_variant: Nueva variante edit_image: close: Atrás + variant_row: + none_tax_category: Ninguno product_import: title: Importación de productos file_not_found: Archivo no encontrado o no se pudo abrir diff --git a/config/locales/fil_PH.yml b/config/locales/fil_PH.yml index 13c709fda4..fc3ab8ef4f 100644 --- a/config/locales/fil_PH.yml +++ b/config/locales/fil_PH.yml @@ -535,6 +535,8 @@ fil_PH: new_variant: bagong uri edit_image: close: bumalik + variant_row: + none_tax_category: wala product_import: title: paglipat ng produkto file_not_found: 'ang file ay hindi mahanap o mabuksan ' diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 74a8d86f47..b0b0e28e7f 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -141,7 +141,8 @@ fr: unprocessable_entity: title: "La modification réalisée a été rejetée (erreur 422)" message_html: "

La modification souhaitée a été refusée. Peut-être avez-vous essayé de faire quelque chose sans avoir les droits d'accès suffisants ?

Retourner à l'accueil

" - stimulus_reflex_error: "Nous sommes désolés mais quelque chose s'est mal passé. \n\nC'est un problème temporaire, merci donc de réessayer ou de recharger la page. \nNous enregistrons toutes les erreurs et travaillons sur les améliorations nécessaires.\nSi le problème persiste ou est urgent, merci de nous contacter." + general_error: + message: "Nous sommes désolés mais quelque chose s'est mal passé. \n\nC'est un problème temporaire, merci donc de réessayer ou de recharger la page. \nNous enregistrons toutes les erreurs et travaillons sur les améliorations nécessaires.\nSi le problème persiste ou est urgent, merci de nous contacter." stripe: error_code: incorrect_number: "Le numéro de carte bancaire est incorrect." @@ -775,6 +776,7 @@ fr: index: header: title: Gestion du catalogue produits + content: loading: Vos produits sont en cours de chargement delete_modal: delete_product_modal: @@ -836,6 +838,8 @@ fr: delete_variant: success: La variante a bien été supprimée error: La variante n'a pas pu être supprimée + variant_row: + none_tax_category: Aucun product_import: title: Import liste produits file_not_found: Fichier non trouvé ou impossible à ouvrir diff --git a/config/locales/fr_BE.yml b/config/locales/fr_BE.yml index 4e08d7b657..b500081c9b 100644 --- a/config/locales/fr_BE.yml +++ b/config/locales/fr_BE.yml @@ -127,7 +127,8 @@ fr_BE: unprocessable_entity: title: "Le changement que vous souhaitiez a été rejeté (422)" message_html: "

Le changement que vous souhaitiez a été rejeté. Peut-être avez-vous essayé de modifier quelque chose auquel vous n'avez pas accès.

Retour au précédent

" - stimulus_reflex_error: "Nous sommes désolés, une erreur s'est produite. Il s'agit peut-être d'un problème temporaire, veuillez donc réessayer ou recharger la page. Nous enregistrons toutes les erreurs et travaillons peut-être sur un correctif. Si le problème persiste ou est urgent, veuillez nous contacter." + general_error: + message: "Nous sommes désolés, une erreur s'est produite. Il s'agit peut-être d'un problème temporaire, veuillez donc réessayer ou recharger la page. Nous enregistrons toutes les erreurs et travaillons peut-être sur un correctif. Si le problème persiste ou est urgent, veuillez nous contacter." stripe: error_code: incorrect_number: "Le numéro de carte est incorrect." @@ -245,6 +246,10 @@ fr_BE: integer_array_validator: not_array_error: "doit être un array" invalid_element_error: "doit contenir uniquement des nombres entiers" + report_job: + report_failed: | + Ce rapport a échoué. C'est peut-être trop lourd à traiter. + Nous allons examiner la question, mais n'hésitez pas à nous faire savoir si le problème persiste. enterprise_mailer: confirmation_instructions: subject: "Confirmez l'adresse email pour %{enterprise}" @@ -695,6 +700,8 @@ fr_BE: new_variant: Nouvelle variante edit_image: close: Retour + variant_row: + none_tax_category: Aucun product_import: title: Import liste produits file_not_found: Fichier non trouvé ou impossible à ouvrir @@ -1114,7 +1121,7 @@ fr_BE: white_label_logo_link_label: "Lien pour le logo utilisé en vitrine" hide_groups_tab: "Masquer l'onglet des groupes dans la vitrine" create_custom_tab: "Créer un onglet personnalisé dans la vitrine" - custom_tab_title: "Titre de l'onglet personnalisé" + custom_tab_title: "Titre de l'onglet personnalisé (max. 20 caractères)" custom_tab_content: "Contenu de l'onglet personnalisé" connected_apps: loading: "Chargement en cours" @@ -1587,7 +1594,7 @@ fr_BE: enterprise_terms_and_conditions: destroy_attachment_does_not_exist: "Le fichier des termes et conditions n'existe pas" orders: - failed_to_update: "Annulation de la mise à jour la commande" + failed_to_update: "Annulation de la mise à jour de la commande" checkout: failed: "La vente a échouée. Veuillez nous le faire savoir afin que nous puissions traiter votre commande." payment_cancelled_due_to_stock: "Paiement annulé : la commande n'a pas pu être finalisée en raison d'un problème de stock." @@ -3238,7 +3245,7 @@ fr_BE: order_cycles: create_failure: "La création du cycle de vente a échoué" update_success: 'Votre cycle de vente a été mis à jour.' - update_failure: "La mise à jour du cycle de vente à échoué" + update_failure: "La mise à jour du cycle de vente a échoué" no_distributors: Il n'y a pas de distributeur·trice pour ce cycle de vente. Il ne sera pas visible aux acheteur·euse·s tant qu'il n'y aura pas de distributeur·trice. Voulez-vous tout de même sauvegarder ce cycle de vente ? enterprises: producer: "Producteur·trice" @@ -3405,6 +3412,7 @@ fr_BE: no_tracking_present: "Pas de traçage des données fournies." order_total: "Total commande " customer_details: "Données client·e" + customer_details_updated: "Détails du client mis à jour" customer_search: "Recherche client" choose_a_customer: "Choisir un client" account: "Compte" @@ -3553,7 +3561,12 @@ fr_BE: cancel: "Annuler" shared: error_messages: - there_were_problems_with_the_following_fields: "Il y a u des erreur avec les champs suivant" + errors_prohibited_this_record_from_being_saved: + one: "1 erreur a empêché la sauvegarde de cet enregistrement :" + few: "Les %{count} erreurs ont empêché la sauvegarde de cet enregistrement :" + many: "Les %{count} erreurs ont empêché la sauvegarde de cet enregistrement :" + other: "Les %{count} erreurs ont empêché la sauvegarde de cet enregistrement :" + there_were_problems_with_the_following_fields: "Il y a eu des erreurs concernant les champs suivants" payments_list: date_time: "Date/Temps" amount: "Quantité" diff --git a/config/locales/fr_CA.yml b/config/locales/fr_CA.yml index 7f9b2fe62c..b738838b16 100644 --- a/config/locales/fr_CA.yml +++ b/config/locales/fr_CA.yml @@ -141,7 +141,8 @@ fr_CA: unprocessable_entity: title: "La modification réalisée a été rejetée (erreur 422)" message_html: "

La modification souhaitée a été refusée. Peut-être avez-vous essayé de faire quelque chose sans avoir les droits d'accès suffisants ?

Retourner à l'accueil

" - stimulus_reflex_error: "Nous sommes désolés mais quelque chose s'est mal passé.\n\n C'est un problème temporaire, merci donc de réessayer ou de recharger la page. \nNous enregistrons toutes les erreurs et travaillons sur les améliorations nécessaires.\nSi le problème persiste ou est urgent, merci de nous contacter.\n " + general_error: + message: "Nous sommes désolés mais quelque chose s'est mal passé.\n\n C'est un problème temporaire, merci donc de réessayer ou de recharger la page. \nNous enregistrons toutes les erreurs et travaillons sur les améliorations nécessaires.\nSi le problème persiste ou est urgent, merci de nous contacter.\n " stripe: error_code: incorrect_number: "e numéro de carte bancaire est incorrect." @@ -222,12 +223,13 @@ fr_CA: not_available_to_shop: "n'est pas disponible pour %{shop}" card_details: "Détalis de la carte" card_type: "Type de carte" + unrecognized_card_type: "Type de carte non reconnu" cardholder_name: "Titulaire de la carte" community_forum_url: "Lien vers le forum" customer_instructions: "Précisions pour l'acheteur" additional_information: "Informations additionnelles" connect_app: - url: "https://n8n.openfoodnetwork.org/webhook/regen-CAN/connect-enterprise" + url: "https://n8n.openfoodnetwork.org/webhook-test/food-justice/connect-enterprise" devise: passwords: spree_user: @@ -771,6 +773,7 @@ fr_CA: index: header: title: Gestion du catalogue produits + content: loading: Vos produits sont en cours de chargement delete_modal: delete_product_modal: @@ -832,6 +835,8 @@ fr_CA: delete_variant: success: La variante a bien été supprimée error: La variante n'a pas pu être supprimée + variant_row: + none_tax_category: Aucun product_import: title: import produit file_not_found: Fichier non trouvé ou impossible à ouvrir diff --git a/config/locales/fr_CH.yml b/config/locales/fr_CH.yml index f89193fb84..a5045c145b 100644 --- a/config/locales/fr_CH.yml +++ b/config/locales/fr_CH.yml @@ -693,6 +693,8 @@ fr_CH: new_variant: Nouvelle variante edit_image: close: Retour + variant_row: + none_tax_category: Aucun product_import: title: Import liste produits file_not_found: Fichier non trouvé ou impossible à ouvrir diff --git a/config/locales/fr_CM.yml b/config/locales/fr_CM.yml index 981cbe5f31..90fa1e0e5d 100644 --- a/config/locales/fr_CM.yml +++ b/config/locales/fr_CM.yml @@ -630,6 +630,8 @@ fr_CM: new_variant: Nouvelle variante edit_image: close: Retour + variant_row: + none_tax_category: Aucun product_import: title: Import liste produits file_not_found: Fichier non trouvé ou impossible à ouvrir diff --git a/config/locales/hi.yml b/config/locales/hi.yml index 182872feb8..ea85491012 100644 --- a/config/locales/hi.yml +++ b/config/locales/hi.yml @@ -137,7 +137,8 @@ hi: unprocessable_entity: title: "जो परिवर्तन आप चाहते थे वह नामंजूर कर दिया गया था (422)" message_html: "

जो परिवर्तन आप चाहते थे वह नामंजूर कर दिया गया था। शायद आपने ऐसा परिवर्तित करने की कोशिश की हो, जिस तक आपका एक्सेस नहीं है।

होम पर वापस जाएं

" - stimulus_reflex_error: "हमें माफ करें, लेकिन कुछ गलत हो गया।\n\nयह एक अस्थायी समस्या हो सकती है, इसलिए कृपया फिर से कोशिश करें या पेज को फिर से लोड करें।\nहम सभी त्रुटियों को रिकॉर्ड करते हैं और सम्भावित है की हम इसे ठीक करने पर काम कर रहे हों।\nयदि समस्या बनी रहती है या अत्यावश्यक है, तो कृपया हमसे संपर्क करें।" + general_error: + message: "हमें माफ करें, लेकिन कुछ गलत हो गया।\n\nयह एक अस्थायी समस्या हो सकती है, इसलिए कृपया फिर से कोशिश करें या पेज को फिर से लोड करें।\nहम सभी त्रुटियों को रिकॉर्ड करते हैं और सम्भावित है की हम इसे ठीक करने पर काम कर रहे हों।\nयदि समस्या बनी रहती है या अत्यावश्यक है, तो कृपया हमसे संपर्क करें।" stripe: error_code: incorrect_number: "कार्ड नंबर गलत है।" @@ -752,6 +753,7 @@ hi: index: header: title: बल्क उत्पाद एडिट करें + content: loading: अपने उत्पादों को लोड कर रहा है filters: search_products: उत्पादों के लिए सर्च करें @@ -789,6 +791,8 @@ hi: new_variant: नया वैरिएंट edit_image: close: वापस जाएं + variant_row: + none_tax_category: कोई नहीं product_import: title: उत्पाद इम्पोर्ट करें file_not_found: फ़ाइल नहीं मिली या खोली नहीं जा सकी diff --git a/config/locales/hu.yml b/config/locales/hu.yml index a1a84a4054..33f3c16a2a 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -725,6 +725,8 @@ hu: delete_variant: success: Sikeresen törölte a terméket error: A változatot nem lehet törölni + variant_row: + none_tax_category: Egyik sem product_import: title: Termék importálása file_not_found: A fájl nem található vagy nem nyitható meg diff --git a/config/locales/it.yml b/config/locales/it.yml index c5ad8a82e2..636e775a4c 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -729,6 +729,8 @@ it: new_variant: Nuova variante edit_image: close: Indietro + variant_row: + none_tax_category: Nessuno product_import: title: Importa prodotto file_not_found: Documento non trovato o non disponibile diff --git a/config/locales/it_CH.yml b/config/locales/it_CH.yml index ea951827a5..863660181e 100644 --- a/config/locales/it_CH.yml +++ b/config/locales/it_CH.yml @@ -671,6 +671,8 @@ it_CH: new_variant: Nuova variante edit_image: close: Indietro + variant_row: + none_tax_category: Nessuno product_import: title: Importa prodotto file_not_found: Documento non trovato o non disponibile diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 2484c4f61f..b72bbf167a 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -694,6 +694,8 @@ ko: new_variant: 새로운 변경사항 edit_image: close: 뒤로 + variant_row: + none_tax_category: None product_import: title: 제품 가져오기 file_not_found: 파일을 찾을 수 없거나 열 수 없습니다. diff --git a/config/locales/ml.yml b/config/locales/ml.yml index 7126238da9..bfae0e5e74 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -137,7 +137,8 @@ ml: unprocessable_entity: title: "നിങ്ങൾ ആഗ്രഹിച്ച മാറ്റം നിരസിക്കപ്പെട്ടു (422)" message_html: "

നിങ്ങൾ ആഗ്രഹിച്ച മാറ്റം നിരസിക്കപ്പെട്ടു. നിങ്ങൾക്ക് അനുമതി ഇല്ലാത്ത എന്തെങ്കിലും മാറ്റാൻ നിങ്ങൾ ശ്രമിച്ചിരിക്കാം.

ഹോം പേജിലേക്ക് തിരിച്ചുപോകുക

" - stimulus_reflex_error: "ക്ഷമിക്കണം, എന്തോ കുഴപ്പം സംഭവിച്ചു.\n\n ഇതൊരു താൽക്കാലിക പ്രശ്നമായിരിക്കാം, അതിനാൽ ദയവായി വീണ്ടും ശ്രമിക്കുക അല്ലെങ്കിൽ പേജ് റീലോഡ് ചെയ്യുക.\n ഞങ്ങൾ എല്ലാ പ്രശ്നങ്ങളും രേഖപ്പെടുത്തുന്നുണ്ട്, ചിലപ്പോൾ ഒരു പരിഹാരത്തിനായി പ്രവർത്തിച്ചുകൊണ്ടിരിക്കുകയും ആകാം\n പ്രശ്നം നിലനിൽക്കുന്നുവെങ്കിലോ അല്ലെങ്കിൽ ആത്യാവശ്യമോ ആണെങ്കിൽ, ദയവായി ഞങ്ങളുമായി ബന്ധപ്പെടുക. " + general_error: + message: "ക്ഷമിക്കണം, എന്തോ കുഴപ്പം സംഭവിച്ചു.\n\n ഇതൊരു താൽക്കാലിക പ്രശ്നമായിരിക്കാം, അതിനാൽ ദയവായി വീണ്ടും ശ്രമിക്കുക അല്ലെങ്കിൽ പേജ് റീലോഡ് ചെയ്യുക.\n ഞങ്ങൾ എല്ലാ പ്രശ്നങ്ങളും രേഖപ്പെടുത്തുന്നുണ്ട്, ചിലപ്പോൾ ഒരു പരിഹാരത്തിനായി പ്രവർത്തിച്ചുകൊണ്ടിരിക്കുകയും ആകാം\n പ്രശ്നം നിലനിൽക്കുന്നുവെങ്കിലോ അല്ലെങ്കിൽ ആത്യാവശ്യമോ ആണെങ്കിൽ, ദയവായി ഞങ്ങളുമായി ബന്ധപ്പെടുക. " stripe: error_code: incorrect_number: "കാർഡ് നമ്പർ തെറ്റാണ്." @@ -755,6 +756,7 @@ ml: index: header: title: ഉൽപ്പന്നങ്ങൾ മൊത്തമായി തിരുത്തുക + content: loading: നിങ്ങളുടെ ഉൽപ്പന്നങ്ങൾ ലോഡ് ചെയ്യുന്നു filters: search_products: ഉൽപ്പന്നങ്ങൾക്കായി തിരയുക @@ -794,6 +796,8 @@ ml: success: മാറ്റങ്ങൾ സേവ് ചെയ്തു. edit_image: close: തിരികെ + variant_row: + none_tax_category: ഒന്നുമില്ല product_import: title: ഉൽപ്പന്ന ഇറക്കുമതി file_not_found: ഫയൽ കണ്ടെത്തിയില്ല അല്ലെങ്കിൽ തുറക്കാൻ കഴിഞ്ഞില്ല diff --git a/config/locales/mr.yml b/config/locales/mr.yml index df80ca985c..ab91bad32e 100644 --- a/config/locales/mr.yml +++ b/config/locales/mr.yml @@ -137,7 +137,8 @@ mr: unprocessable_entity: title: "तुम्हाला हवा असलेला बदल नाकारण्यात आला (422)" message_html: "

तुम्हाला हवा असलेला बदल नाकारण्यात आला. कदाचित तुम्ही असे काहीतरी बदलण्याचा प्रयत्न केला आहे ज्यामध्ये तुम्हाला प्रवेश नाही.

होम मध्ये परता

" - stimulus_reflex_error: "क्षमस्व, पण काहीतरी चुकले आहे.\n\n ही एक तात्पुरती समस्या असू शकते, म्हणून कृपया पुन्हा प्रयत्न करा किंवा पृष्ठ रीलोड करा.\n आम्ही सर्व एरर रेकॉर्ड करतो आणि कदाचित निराकरण करण्यासाठी कार्य करत आहोत.\n समस्या कायम राहिल्यास किंवा तातडीची असल्यास, कृपया आमच्याशी संपर्क साधा." + general_error: + message: "क्षमस्व, पण काहीतरी चुकले आहे.\n\n ही एक तात्पुरती समस्या असू शकते, म्हणून कृपया पुन्हा प्रयत्न करा किंवा पृष्ठ रीलोड करा.\n आम्ही सर्व एरर रेकॉर्ड करतो आणि कदाचित निराकरण करण्यासाठी कार्य करत आहोत.\n समस्या कायम राहिल्यास किंवा तातडीची असल्यास, कृपया आमच्याशी संपर्क साधा." stripe: error_code: incorrect_number: "कार्ड क्रमांक चुकीचा आहे." @@ -751,7 +752,6 @@ mr: index: header: title: मोठ्या प्रमाणात उत्पादने संपादित करा - loading: तुमची उत्पादने लोड करत आहे filters: search_products: उत्पादने शोधा all_producers: सर्व उत्पादक @@ -785,6 +785,8 @@ mr: other: "%{count} उत्पादने जतन करणे शक्य नाही. कृपया एरर्सचे पुनरावलोकन करा आणि पुन्हा प्रयत्न करा." reset: बदल जतन करू नका save: बदल जतन करा + variant_row: + none_tax_category: कोणतेही नाही product_import: title: उत्पादन आयात file_not_found: फाइल सापडली नाही किंवा उघडता आली नाही diff --git a/config/locales/nb.yml b/config/locales/nb.yml index 3fe54ffd61..b48fef1648 100644 --- a/config/locales/nb.yml +++ b/config/locales/nb.yml @@ -141,7 +141,8 @@ nb: unprocessable_entity: title: "Endringen du ønsket ble avvist (422)" message_html: "

Endringen du ønsket ble avvist. Kanskje du prøvde å endre noe du ikke har tilgang til.

Vend hjem

" - stimulus_reflex_error: "Vi beklager, men noe gikk galt.\n\nDette kan være et midlertidig problem, så prøv igjen eller last inn siden på nytt.\nVi registrerer alle feil og jobber kanskje med å fikse.\nHvis problemet vedvarer eller haster, vennligst kontakt oss." + general_error: + message: "Vi beklager, men noe gikk galt.\n\nDette kan være et midlertidig problem, så prøv igjen eller last inn siden på nytt.\nVi registrerer alle feil og jobber kanskje med å fikse.\nHvis problemet vedvarer eller haster, vennligst kontakt oss." stripe: error_code: incorrect_number: "Kortnummeret er feil." @@ -760,6 +761,7 @@ nb: index: header: title: Endre produkter i bulk + content: loading: Laster inn produktene dine delete_modal: delete_product_modal: @@ -820,6 +822,8 @@ nb: delete_variant: success: Varianten ble slettet error: Kan ikke slette varianten + variant_row: + none_tax_category: Ingen product_import: title: Produktimport file_not_found: Filen ble ikke funnet eller kunne ikke åpnes diff --git a/config/locales/nl_BE.yml b/config/locales/nl_BE.yml index df9de41f92..3408ce4fcf 100644 --- a/config/locales/nl_BE.yml +++ b/config/locales/nl_BE.yml @@ -551,6 +551,8 @@ nl_BE: new_variant: Nieuw variant edit_image: close: achterstevoren + variant_row: + none_tax_category: Geen enkele product_import: title: Importeren van producten file_not_found: Bestand niet gevonden of kon niet worden geopend diff --git a/config/locales/pa.yml b/config/locales/pa.yml index 426a227655..17c475a09c 100644 --- a/config/locales/pa.yml +++ b/config/locales/pa.yml @@ -134,7 +134,8 @@ pa: unprocessable_entity: title: "ਜੋ ਬਦਲਾਅ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਸੀ ਉਹ ਰੱਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਸੀ (422)" message_html: "

ਜੋ ਬਦਲਾਅ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਸੀ ਉਹ ਰੱਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਸੀ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਕਿਸੇ ਅਜਿਹੀ ਚੀਜ਼ ਨੂੰ ਬਦਲਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਹੋਵੇ ਜਿਸ ਤੱਕ ਤੁਹਾਡੀ ਪਹੁੰਚ ਨਹੀਂ ਹੈ।

ਹੋਮ ਤੇ ਵਾਪਸ ਜਾਓ

" - stimulus_reflex_error: "ਸਾਨੂੰ ਅਫਸੋਸ ਹੈ, ਪਰ ਕੁਝ ਗਲਤ ਹੋਇਆ ਹੈ।\\n\\nਇਹ ਇੱਕ ਅਸਥਾਈ ਸਮੱਸਿਆ ਹੋ ਸਕਦੀ ਹੈ, ਇਸ ਲਈ ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਪੰਨੇ ਨੂੰ ਦੋਬਾਰਾ ਲੋਡ ਕਰੋ।\\nਅਸੀਂ ਸਾਰੀਆਂ ਤਰੁੱਟੀਆਂ ਨੂੰ ਰਿਕਾਰਡ ਕਰਦੇ ਹਾਂ ਅਤੇ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਅਸੀਂ ਉਨਾਂ ਨੂੰ ਠੀਕ ਕਰਨ ਤੇ ਕੰਮ ਰਹੇ ਹੋਈਏ।\\nਜੇਕਰ ਸਮੱਸਿਆ ਬਣੀ ਰਹਿੰਦੀ ਹੈ ਜਾਂ ਜ਼ਰੂਰੀ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ ਸਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰੋ।" + general_error: + message: "ਸਾਨੂੰ ਅਫਸੋਸ ਹੈ, ਪਰ ਕੁਝ ਗਲਤ ਹੋਇਆ ਹੈ।\\n\\nਇਹ ਇੱਕ ਅਸਥਾਈ ਸਮੱਸਿਆ ਹੋ ਸਕਦੀ ਹੈ, ਇਸ ਲਈ ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਪੰਨੇ ਨੂੰ ਦੋਬਾਰਾ ਲੋਡ ਕਰੋ।\\nਅਸੀਂ ਸਾਰੀਆਂ ਤਰੁੱਟੀਆਂ ਨੂੰ ਰਿਕਾਰਡ ਕਰਦੇ ਹਾਂ ਅਤੇ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਅਸੀਂ ਉਨਾਂ ਨੂੰ ਠੀਕ ਕਰਨ ਤੇ ਕੰਮ ਰਹੇ ਹੋਈਏ।\\nਜੇਕਰ ਸਮੱਸਿਆ ਬਣੀ ਰਹਿੰਦੀ ਹੈ ਜਾਂ ਜ਼ਰੂਰੀ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ ਸਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰੋ।" stripe: error_code: incorrect_number: "ਕਾਰਡ ਨੰਬਰ ਗਲਤ ਹੈ।" @@ -744,6 +745,7 @@ pa: index: header: title: ਥੋਕ ਸੰਪਾਦਿਤ ਉਤਪਾਦ + content: loading: ਤੁਹਾਡੇ ਉਤਪਾਦ ਲੋਡ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ filters: search_products: ਉਤਪਾਦਾਂ ਦੀ ਖੋਜ ਕਰੋ @@ -773,6 +775,8 @@ pa: success: ਬਦਲਾਵ ਸੇਵ ਕੀਤੇ ਗਏ।' edit_image: close: ਵਾਪਸ + variant_row: + none_tax_category: ਕੋਈ ਨਹੀਂ product_import: title: ਉਤਪਾਦ ਦਾ ਇਮਪੋਰਟ file_not_found: ਫ਼ਾਈਲ ਨਹੀਂ ਮਿਲੀ ਜਾਂ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 8348a75138..27b3f86862 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -525,6 +525,8 @@ pl: search: Szukaj edit_image: close: Wstecz + variant_row: + none_tax_category: Nic product_import: title: Import produktów file_not_found: Nie znaleziono pliku lub nie można go otworzyć diff --git a/config/locales/pt.yml b/config/locales/pt.yml index 00ab7fc455..b455e6b372 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -587,6 +587,8 @@ pt: new_variant: Nova variante edit_image: close: Voltar + variant_row: + none_tax_category: Nenhum product_import: title: Importação de Produtos file_not_found: O ficheiro não foi encontrado ou não pôde ser aberto diff --git a/config/locales/pt_BR.yml b/config/locales/pt_BR.yml index 01c66c961e..f131cd74f3 100644 --- a/config/locales/pt_BR.yml +++ b/config/locales/pt_BR.yml @@ -628,6 +628,8 @@ pt_BR: clear_search: Nova busca edit_image: close: Voltar + variant_row: + none_tax_category: Nenhum product_import: title: Importação de produtos file_not_found: O arquivo não foi encontrado ou não pôde ser aberto diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 76076fc356..7ea1f277c9 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -141,7 +141,8 @@ ru: unprocessable_entity: title: "Требуемое изменение было отклонено (422)" message_html: "

Требуемое изменение было отклонено. Возможно, вы пытались изменить что-то, к чему у вас нет доступа.

Вернуться домой

" - stimulus_reflex_error: "Нам очень жаль, но что-то пошло не так.\n\n Возможно, это временная проблема, поэтому повторите попытку или перезагрузите страницу.\n Мы записываем все ошибки и возможно уже работаем над их исправлением.\n Если проблема не устранена или срочная, пожалуйста, свяжитесь с нами." + general_error: + message: "Нам очень жаль, но что-то пошло не так.\n\n Возможно, это временная проблема, поэтому повторите попытку или перезагрузите страницу.\n Мы записываем все ошибки и возможно уже работаем над их исправлением.\n Если проблема не устранена или срочная, пожалуйста, свяжитесь с нами." stripe: error_code: incorrect_number: "Номер карты неверный." @@ -767,6 +768,7 @@ ru: index: header: title: Массовое редактирование товаров + content: loading: Загрузка ваших товаров delete_modal: delete_product_modal: @@ -829,6 +831,8 @@ ru: delete_variant: success: Вариант успешно удален. error: Невозможно удалить вариант + variant_row: + none_tax_category: Нет product_import: title: Импорт Товара file_not_found: Файл не найден или не может быть открыт diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 78f53f39ab..3998252c9c 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -327,6 +327,8 @@ sv: search: Sök edit_image: close: Backa + variant_row: + none_tax_category: Ingen product_import: file_not_found: Filen hittades inte eller kunde inte öppnas no_data: Ingen data hittades i kalkylbladet diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 121265018a..7b5641182c 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -612,6 +612,8 @@ tr: new_variant: Yeni Çeşit edit_image: close: Geri + variant_row: + none_tax_category: SATIŞ YAPMIYOR product_import: title: Ürün Aktarımı file_not_found: Dosya bulunamadı veya açılamadı diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 210e77f134..25145f6e86 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -697,6 +697,8 @@ uk: new_variant: Новий варіант edit_image: close: Назад + variant_row: + none_tax_category: Жодного product_import: title: Імпорт продукту file_not_found: Файл не знайдено або не вдалося відкрити From 6b5be213a333177b5ab1b84bd2291961d0e36b40 Mon Sep 17 00:00:00 2001 From: Kelly Date: Thu, 25 Apr 2024 12:10:32 -0400 Subject: [PATCH 033/319] changed location - now in requests folder --- spec/{controllers => requests}/payments_controller_spec.rb | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename spec/{controllers => requests}/payments_controller_spec.rb (100%) diff --git a/spec/controllers/payments_controller_spec.rb b/spec/requests/payments_controller_spec.rb similarity index 100% rename from spec/controllers/payments_controller_spec.rb rename to spec/requests/payments_controller_spec.rb From ccf3d5873a0d1406f29a11e9e01bf789e36f45f0 Mon Sep 17 00:00:00 2001 From: Kelly Date: Thu, 25 Apr 2024 12:24:19 -0400 Subject: [PATCH 034/319] style fix - remove type --- spec/requests/payments_controller_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/requests/payments_controller_spec.rb b/spec/requests/payments_controller_spec.rb index 11cb19fd8c..5201b53b86 100644 --- a/spec/requests/payments_controller_spec.rb +++ b/spec/requests/payments_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe "/payments/:id/authorize", type: :request do +describe "/payments/:id/authorize" do let!(:user) { create(:user) } let!(:order) { create(:order, user:) } let!(:payment) { create(:payment, order:) } From b0011caafa62691cba5846e348476a8af45a3f11 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 Apr 2024 22:22:35 +0000 Subject: [PATCH 035/319] chore(deps): bump sidekiq from 7.2.2 to 7.2.4 Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 7.2.2 to 7.2.4. - [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md) - [Commits](https://github.com/sidekiq/sidekiq/compare/v7.2.2...v7.2.4) --- updated-dependencies: - dependency-name: sidekiq dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index d9269bc1a4..b7aae1b197 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -584,7 +584,7 @@ GEM redcarpet (3.6.0) redis (5.2.0) redis-client (>= 0.22.0) - redis-client (0.22.0) + redis-client (0.22.1) connection_pool regexp_parser (2.9.0) reline (0.5.0) @@ -700,7 +700,7 @@ GEM semantic_range (3.0.0) shoulda-matchers (6.2.0) activesupport (>= 5.2.0) - sidekiq (7.2.2) + sidekiq (7.2.4) concurrent-ruby (< 2) connection_pool (>= 2.3.0) rack (>= 2.2.4) From a977bd633bb7c5b9b8c5c87b0d34ef6011f5d04d Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Mon, 29 Apr 2024 09:58:13 +1000 Subject: [PATCH 036/319] Move rake file to the correct folder --- lib/tasks/{ => data}/check_invalid_address_used.rake | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lib/tasks/{ => data}/check_invalid_address_used.rake (100%) diff --git a/lib/tasks/check_invalid_address_used.rake b/lib/tasks/data/check_invalid_address_used.rake similarity index 100% rename from lib/tasks/check_invalid_address_used.rake rename to lib/tasks/data/check_invalid_address_used.rake From 7c53c25aaf6492c1bfa258bedd25e0a8511fb5d9 Mon Sep 17 00:00:00 2001 From: David Cook Date: Mon, 29 Apr 2024 16:10:48 +1000 Subject: [PATCH 037/319] Skip Ruby setup for non-Ruby tests Conversely, these tests are JS-only. --- .github/workflows/build.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 846f781c71..242efd2540 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -476,16 +476,6 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Setup redis - uses: supercharge/redis-github-action@1.4.0 - with: - redis-version: 6 - - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - bundler-cache: true # runs 'bundle install' and caches installed gems automatically - - uses: actions/setup-node@v3 with: node-version-file: .node-version @@ -493,10 +483,6 @@ jobs: - name: Install JS dependencies run: yarn install --frozen-lockfile - - name: Set up database - run: | - bundle exec rake db:create - bundle exec rake db:schema:load - name: Run JS tests run: bundle exec rake karma:run From 6eaf0a00a0d77fea7635ce58a85c89e58b654f88 Mon Sep 17 00:00:00 2001 From: David Cook Date: Mon, 29 Apr 2024 16:25:57 +1000 Subject: [PATCH 038/319] Revert. Rails is required for the Karma rake script But surely we could convert it to a shell or node script. Maybe next time.. --- .github/workflows/build.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 242efd2540..d8f8a348f0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -476,6 +476,12 @@ jobs: steps: - uses: actions/checkout@v3 + # Rails is required for the Karma rake script + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + - uses: actions/setup-node@v3 with: node-version-file: .node-version From ce36b81f15d8f6c3ee2b0998ee1f3f495afd6b33 Mon Sep 17 00:00:00 2001 From: David Cook Date: Mon, 29 Apr 2024 16:14:55 +1000 Subject: [PATCH 039/319] Run multiple rake tasks in one process It saves the second unnecessary Rails boot-up (multiple seconds). --- .github/workflows/build.yml | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d8f8a348f0..a378ce53ca 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -64,8 +64,7 @@ jobs: - name: Set up database run: | - bundle exec rake db:create - bundle exec rake db:schema:load + bundle exec rake db:create db:schema:load - name: Run tests env: @@ -132,8 +131,7 @@ jobs: - name: Set up database run: | - bundle exec rake db:create - bundle exec rake db:schema:load + bundle exec rake db:create db:schema:load - name: Run tests @@ -201,8 +199,7 @@ jobs: - name: Set up database run: | - bundle exec rake db:create - bundle exec rake db:schema:load + bundle exec rake db:create db:schema:load - name: Run tests @@ -279,8 +276,7 @@ jobs: - name: Set up database run: | - bundle exec rake db:create - bundle exec rake db:schema:load + bundle exec rake db:create db:schema:load - name: Run tests @@ -357,8 +353,7 @@ jobs: - name: Set up database run: | - bundle exec rake db:create - bundle exec rake db:schema:load + bundle exec rake db:create db:schema:load - name: Run tests @@ -435,8 +430,7 @@ jobs: - name: Set up database run: | - bundle exec rake db:create - bundle exec rake db:schema:load + bundle exec rake db:create db:schema:load - name: Run tests From 1a55ae2035717f52c2b1c88e25b6a2cee2c46655 Mon Sep 17 00:00:00 2001 From: David Cook Date: Mon, 29 Apr 2024 16:08:40 +1000 Subject: [PATCH 040/319] Skip JS setup for non-JS tests These tests don't run in the browser, therefore shouldn't need JavaScript at all. --- .github/workflows/build.yml | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a378ce53ca..8227c72557 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -55,13 +55,6 @@ jobs: with: bundler-cache: true # runs 'bundle install' and caches installed gems automatically - - uses: actions/setup-node@v3 - with: - node-version-file: .node-version - - - name: Install JS dependencies - run: yarn install --frozen-lockfile - - name: Set up database run: | bundle exec rake db:create db:schema:load @@ -122,19 +115,11 @@ jobs: with: bundler-cache: true # runs 'bundle install' and caches installed gems automatically - - uses: actions/setup-node@v3 - with: - node-version-file: .node-version - - - name: Install JS dependencies - run: yarn install --frozen-lockfile - - name: Set up database run: | bundle exec rake db:create db:schema:load - name: Run tests - env: KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC: 09476e2ce491c12083df62768667c674 KNAPSACK_PRO_CI_NODE_TOTAL: ${{ matrix.ci_node_total }} @@ -148,7 +133,6 @@ jobs: # https://knapsackpro.com/faq/question/how-to-split-slow-rspec-test-files-by-test-examples-by-individual-it #KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES: true KNAPSACK_PRO_TEST_FILE_PATTERN: "{spec/models/**/*_spec.rb}" - run: | bundle exec rake knapsack_pro:rspec @@ -344,13 +328,6 @@ jobs: with: bundler-cache: true # runs 'bundle install' and caches installed gems automatically - - uses: actions/setup-node@v3 - with: - node-version-file: .node-version - - - name: Install JS dependencies - run: yarn install --frozen-lockfile - - name: Set up database run: | bundle exec rake db:create db:schema:load @@ -421,19 +398,11 @@ jobs: with: bundler-cache: true # runs 'bundle install' and caches installed gems automatically - - uses: actions/setup-node@v3 - with: - node-version-file: .node-version - - - name: Install JS dependencies - run: yarn install --frozen-lockfile - - name: Set up database run: | bundle exec rake db:create db:schema:load - name: Run tests - env: KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC: e3b8800198d2d89b70c7edbdd85f8fd8 KNAPSACK_PRO_CI_NODE_TOTAL: ${{ matrix.ci_node_total }} @@ -447,8 +416,6 @@ jobs: # https://knapsackpro.com/faq/question/how-to-split-slow-rspec-test-files-by-test-examples-by-individual-it #KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES: true KNAPSACK_PRO_TEST_FILE_EXCLUDE_PATTERN: "{engines/**/*_spec.rb,spec/models/**/*_spec.rb,spec/controllers/**/*_spec.rb,spec/serializers/**/*_spec.rb,spec/lib/**/*_spec.rb,spec/migrations/**/*_spec.rb,spec/system/**/*_spec.rb}" - - run: | bundle exec rake knapsack_pro:rspec From 55ece0553c0f8466e86a16efcbd02a6beb005bb0 Mon Sep 17 00:00:00 2001 From: David Cook Date: Mon, 29 Apr 2024 16:24:58 +1000 Subject: [PATCH 041/319] Revert. JS is still required for most specs But models can still run without. Half of the controller runs also succeeded, so we could potentially separate those ones out. Hmm, yes only 7 of them. It would save 20s, or 16% of controller CI runtimesi which are 2min. let's try.. --- .github/workflows/build.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8227c72557..1b553c7b74 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -55,6 +55,14 @@ jobs: with: bundler-cache: true # runs 'bundle install' and caches installed gems automatically + # JS is required in order for webpacker to compile, in order to render templates containing image urls + - uses: actions/setup-node@v3 + with: + node-version-file: .node-version + + - name: Install JS dependencies + run: yarn install --frozen-lockfile + - name: Set up database run: | bundle exec rake db:create db:schema:load @@ -328,6 +336,14 @@ jobs: with: bundler-cache: true # runs 'bundle install' and caches installed gems automatically + # JS is required in order for webpacker to compile, in order to render templates linking to mail.css + - uses: actions/setup-node@v3 + with: + node-version-file: .node-version + + - name: Install JS dependencies + run: yarn install --frozen-lockfile + - name: Set up database run: | bundle exec rake db:create db:schema:load @@ -398,6 +414,14 @@ jobs: with: bundler-cache: true # runs 'bundle install' and caches installed gems automatically + # JS is required in order for webpacker to compile, in order to render templates linking to mail.css + - uses: actions/setup-node@v3 + with: + node-version-file: .node-version + + - name: Install JS dependencies + run: yarn install --frozen-lockfile + - name: Set up database run: | bundle exec rake db:create db:schema:load From aeae16a1b438cbf1ddd7220511629fc2cc2d4ed7 Mon Sep 17 00:00:00 2001 From: David Cook Date: Mon, 29 Apr 2024 16:47:10 +1000 Subject: [PATCH 042/319] Separate controllers requiring webpack for testing --- .github/workflows/build.yml | 61 +++++++++++++++++++++++++++++++------ 1 file changed, 51 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1b553c7b74..95f9178b80 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,10 +38,10 @@ jobs: # [n] - where the n is a number of parallel jobs you want to run your tests on. # Use a higher number if you have slow tests to split them between more parallel jobs. # Remember to update the value of the `ci_node_index` below to (0..n-1). - ci_node_total: [8] + ci_node_total: [7] # Indexes for parallel jobs (starting from zero). # E.g. use [0, 1] for 2 parallel jobs, [0, 1, 2] for 3 parallel jobs, etc. - ci_node_index: [0, 1, 2, 3, 4, 5, 6, 7] + ci_node_index: [0, 1, 2, 3, 4, 5, 6] steps: - uses: actions/checkout@v3 @@ -55,14 +55,6 @@ jobs: with: bundler-cache: true # runs 'bundle install' and caches installed gems automatically - # JS is required in order for webpacker to compile, in order to render templates containing image urls - - uses: actions/setup-node@v3 - with: - node-version-file: .node-version - - - name: Install JS dependencies - run: yarn install --frozen-lockfile - - name: Set up database run: | bundle exec rake db:create db:schema:load @@ -81,10 +73,59 @@ jobs: # https://knapsackpro.com/faq/question/how-to-split-slow-rspec-test-files-by-test-examples-by-individual-it #KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES: true KNAPSACK_PRO_TEST_FILE_PATTERN: "{spec/controllers/**/*_spec.rb}" + KNAPSACK_PRO_TEST_FILE_EXCLUDE_PATTERN: "user_passwords_controller_spec|orders_controller_spec|mail_methods_controller_spec|groups_controller_spec|shops_controller_spec|payments_controller_spec" run: | git show --no-patch # the commit being tested (which is often a merge due to actions/checkout@v3) bundle exec rake knapsack_pro:rspec + # Controllers that render views with css or image links will need webpack + controllers_incl_webpack: + runs-on: ubuntu-22.04 + services: + postgres: + image: postgres:10 + ports: ["5432:5432"] + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + env: + POSTGRES_DB: open_food_network_test + POSTGRES_USER: ofn + POSTGRES_PASSWORD: f00d + steps: + - uses: actions/checkout@v3 + + - name: Setup redis + uses: supercharge/redis-github-action@1.4.0 + with: + redis-version: 6 + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + + - uses: actions/setup-node@v3 + with: + node-version-file: .node-version + + - name: Install JS dependencies + run: yarn install --frozen-lockfile + + - name: Set up database + run: | + bundle exec rake db:create db:schema:load + + - name: Run tests + env: + # Copied from KNAPSACK_PRO_TEST_FILE_EXCLUDE_PATTERN above + INCLUDE_PATTERN: "user_passwords_controller_spec|orders_controller_spec|mail_methods_controller_spec|groups_controller_spec|shops_controller_spec|payments_controller_spec" + run: | + git show --no-patch # the commit being tested (which is often a merge due to actions/checkout@v3) + bundle exec rspec spec/controllers/**/*_spec.rb --pattern="$INCLUDE_PATTERN" + models: runs-on: ubuntu-22.04 services: From 7e951d4af22ebfc18f72f8c3b0d971e105cb8633 Mon Sep 17 00:00:00 2001 From: David Cook Date: Mon, 29 Apr 2024 17:12:38 +1000 Subject: [PATCH 043/319] Revert "Separate controllers requiring webpack for testing" Arrgh it's not so simple. It looks like both rspec and knapsack use glob for the pattern, so the pattern needs updating. Hmm that might not be too bad, but it makes it even less manageable. Considering the system specs are a much bigger bottleneck, I'm going to avoid spending more time here. --- .github/workflows/build.yml | 61 ++++++------------------------------- 1 file changed, 10 insertions(+), 51 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 95f9178b80..1b553c7b74 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,10 +38,10 @@ jobs: # [n] - where the n is a number of parallel jobs you want to run your tests on. # Use a higher number if you have slow tests to split them between more parallel jobs. # Remember to update the value of the `ci_node_index` below to (0..n-1). - ci_node_total: [7] + ci_node_total: [8] # Indexes for parallel jobs (starting from zero). # E.g. use [0, 1] for 2 parallel jobs, [0, 1, 2] for 3 parallel jobs, etc. - ci_node_index: [0, 1, 2, 3, 4, 5, 6] + ci_node_index: [0, 1, 2, 3, 4, 5, 6, 7] steps: - uses: actions/checkout@v3 @@ -55,6 +55,14 @@ jobs: with: bundler-cache: true # runs 'bundle install' and caches installed gems automatically + # JS is required in order for webpacker to compile, in order to render templates containing image urls + - uses: actions/setup-node@v3 + with: + node-version-file: .node-version + + - name: Install JS dependencies + run: yarn install --frozen-lockfile + - name: Set up database run: | bundle exec rake db:create db:schema:load @@ -73,59 +81,10 @@ jobs: # https://knapsackpro.com/faq/question/how-to-split-slow-rspec-test-files-by-test-examples-by-individual-it #KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES: true KNAPSACK_PRO_TEST_FILE_PATTERN: "{spec/controllers/**/*_spec.rb}" - KNAPSACK_PRO_TEST_FILE_EXCLUDE_PATTERN: "user_passwords_controller_spec|orders_controller_spec|mail_methods_controller_spec|groups_controller_spec|shops_controller_spec|payments_controller_spec" run: | git show --no-patch # the commit being tested (which is often a merge due to actions/checkout@v3) bundle exec rake knapsack_pro:rspec - # Controllers that render views with css or image links will need webpack - controllers_incl_webpack: - runs-on: ubuntu-22.04 - services: - postgres: - image: postgres:10 - ports: ["5432:5432"] - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - env: - POSTGRES_DB: open_food_network_test - POSTGRES_USER: ofn - POSTGRES_PASSWORD: f00d - steps: - - uses: actions/checkout@v3 - - - name: Setup redis - uses: supercharge/redis-github-action@1.4.0 - with: - redis-version: 6 - - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - bundler-cache: true # runs 'bundle install' and caches installed gems automatically - - - uses: actions/setup-node@v3 - with: - node-version-file: .node-version - - - name: Install JS dependencies - run: yarn install --frozen-lockfile - - - name: Set up database - run: | - bundle exec rake db:create db:schema:load - - - name: Run tests - env: - # Copied from KNAPSACK_PRO_TEST_FILE_EXCLUDE_PATTERN above - INCLUDE_PATTERN: "user_passwords_controller_spec|orders_controller_spec|mail_methods_controller_spec|groups_controller_spec|shops_controller_spec|payments_controller_spec" - run: | - git show --no-patch # the commit being tested (which is often a merge due to actions/checkout@v3) - bundle exec rspec spec/controllers/**/*_spec.rb --pattern="$INCLUDE_PATTERN" - models: runs-on: ubuntu-22.04 services: From e674a66bcfb54f2f041c95288481b668749e1a11 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 09:31:21 +0000 Subject: [PATCH 044/319] chore(deps): bump @floating-ui/dom from 1.6.3 to 1.6.4 Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.6.3 to 1.6.4. - [Release notes](https://github.com/floating-ui/floating-ui/releases) - [Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md) - [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.6.4/packages/dom) --- updated-dependencies: - dependency-name: "@floating-ui/dom" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 888b14112c..d4eaa64361 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "pretty-quick": "pretty-quick" }, "dependencies": { - "@floating-ui/dom": "^1.6.3", + "@floating-ui/dom": "^1.6.4", "@hotwired/turbo": "^8.0.4", "@rails/webpacker": "5.4.4", "@stimulus-components/rails-nested-form": "^5.0.0", diff --git a/yarn.lock b/yarn.lock index d84ee5e204..c1e74b4043 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1099,10 +1099,10 @@ dependencies: "@floating-ui/utils" "^0.2.1" -"@floating-ui/dom@^1.6.3": - version "1.6.3" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.3.tgz#954e46c1dd3ad48e49db9ada7218b0985cee75ef" - integrity sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw== +"@floating-ui/dom@^1.6.4": + version "1.6.4" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.4.tgz#3a9d1f3b7ccdab89a4ca05713acc6204b1f67a29" + integrity sha512-0G8R+zOvQsAG1pg2Q99P21jiqxqGBW1iRe/iXHsBRBxnpXKFI8QwbB4x5KmYLggNO5m34IQgOIu9SCRfR/WWiQ== dependencies: "@floating-ui/core" "^1.0.0" "@floating-ui/utils" "^0.2.0" From 2eebb1153b0a260a8b5d33c1e91a21b6cf28e32a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 09:31:41 +0000 Subject: [PATCH 045/319] chore(deps): bump jquery-ui from 1.13.2 to 1.13.3 Bumps [jquery-ui](https://github.com/jquery/jquery-ui) from 1.13.2 to 1.13.3. - [Release notes](https://github.com/jquery/jquery-ui/releases) - [Commits](https://github.com/jquery/jquery-ui/compare/1.13.2...1.13.3) --- updated-dependencies: - dependency-name: jquery-ui dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 888b14112c..33ed383c5f 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "flatpickr": "^4.6.9", "foundation-sites": "^5.5.3", "hotkeys-js": "^3.13.7", - "jquery-ui": "1.13.2", + "jquery-ui": "1.13.3", "js-big-decimal": "^2.0.7", "moment": "^2.30.1", "mrujs": "^1.0.0", diff --git a/yarn.lock b/yarn.lock index d84ee5e204..92f87dd0ad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5501,10 +5501,10 @@ jest@^27.4.7: import-local "^3.0.2" jest-cli "^27.5.1" -jquery-ui@1.13.2: - version "1.13.2" - resolved "https://registry.yarnpkg.com/jquery-ui/-/jquery-ui-1.13.2.tgz#de03580ae6604773602f8d786ad1abfb75232034" - integrity sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q== +jquery-ui@1.13.3: + version "1.13.3" + resolved "https://registry.yarnpkg.com/jquery-ui/-/jquery-ui-1.13.3.tgz#d9f5292b2857fa1f2fdbbe8f2e66081664eb9bc5" + integrity sha512-D2YJfswSJRh/B8M/zCowDpNFfwsDmtfnMPwjJTyvl+CBqzpYwQ+gFYIbUUlzijy/Qvoy30H1YhoSui4MNYpRwA== dependencies: jquery ">=1.8.0 <4.0.0" From 1763c516ecded9107e926ef5bcfdd4da764ea24b Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 29 Apr 2024 17:44:42 +0100 Subject: [PATCH 046/319] Adds localization test for checkout as a guest --- spec/system/consumer/multilingual_spec.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/spec/system/consumer/multilingual_spec.rb b/spec/system/consumer/multilingual_spec.rb index 48edc6e685..eaf4364a73 100644 --- a/spec/system/consumer/multilingual_spec.rb +++ b/spec/system/consumer/multilingual_spec.rb @@ -61,6 +61,13 @@ describe 'Multilingual' do expect_menu_and_cookie_in_es expect(page).to have_content 'Precio' end + + it "visiting checkout as a guest user" do + visit checkout_path(locale: 'es') + + expect_menu_and_cookie_in_es + expect(page).to have_content 'Iniciar sesión' + end end end From fb5f31375ae2df8c27a53627e0f4090e16b9e83b Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 29 Apr 2024 19:28:21 +0100 Subject: [PATCH 047/319] Adds localization test for checkout steps As a logged user --- spec/system/consumer/multilingual_spec.rb | 52 +++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/spec/system/consumer/multilingual_spec.rb b/spec/system/consumer/multilingual_spec.rb index eaf4364a73..b50b51f77d 100644 --- a/spec/system/consumer/multilingual_spec.rb +++ b/spec/system/consumer/multilingual_spec.rb @@ -87,6 +87,7 @@ describe 'Multilingual' do it 'updates user locale and stays in cookie after logout' do login_as user + visit root_path(locale: 'es') user.reload @@ -97,6 +98,57 @@ describe 'Multilingual' do expect_menu_and_cookie_in_es expect(page).to have_content '¿Estás interesada en entrar en Open Food Network?' end + + context "visiting checkout as logged user" do + let!(:zone) { create(:zone_with_member) } + let(:supplier) { create(:supplier_enterprise) } + let(:distributor) { create(:distributor_enterprise, charges_sales_tax: true) } + let(:product) { + create(:taxed_product, supplier:, price: 10, zone:) + } + let(:variant) { product.variants.first } + let!(:order_cycle) { + create(:simple_order_cycle, suppliers: [supplier], distributors: [distributor], + coordinator: create(:distributor_enterprise), + variants: [variant]) + } + + let(:free_shipping) { + create(:shipping_method, require_ship_address: false) + } + let!(:payment) { + create(:payment_method, distributors: [distributor], + name: "Payment") + } + let(:order) { + create(:order_ready_for_confirmation, distributor:) + } + before do + set_order order + login_as user + end + + it "on the details step" do + visit checkout_step_path(:details, locale: 'es') + + expect_menu_and_cookie_in_es + expect(page).to have_content "Sus detalles" + end + + it "on the payment step" do + visit checkout_step_path(:payment, locale: 'es') + + expect_menu_and_cookie_in_es + expect(page).to have_content "Puede revisar y confirmar su pedido" + end + + it "on the summary step" do + visit checkout_step_path(:summary, locale: 'es') + + expect_menu_and_cookie_in_es + expect(page).to have_content "Detalles de entrega" + end + end end describe "using the language switcher UI" do From 521e24d7a62569958f9b2c57c50722829119a174 Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Tue, 30 Apr 2024 09:58:24 +0200 Subject: [PATCH 048/319] Requested changes on Fix RedundantPresenceValidationOnBelongs II - product id required - DB + AR model --- app/models/spree/product_property.rb | 2 +- .../20240430075133_require_product_on_product_property.rb | 5 +++++ db/schema.rb | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 db/migrate/20240430075133_require_product_on_product_property.rb diff --git a/app/models/spree/product_property.rb b/app/models/spree/product_property.rb index c14d7f9096..64736a4c39 100644 --- a/app/models/spree/product_property.rb +++ b/app/models/spree/product_property.rb @@ -2,7 +2,7 @@ module Spree class ProductProperty < ApplicationRecord - belongs_to :product, class_name: "Spree::Product", touch: true, optional: true + belongs_to :product, class_name: "Spree::Product", touch: true belongs_to :property, class_name: 'Spree::Property' validates :value, length: { maximum: 255 } diff --git a/db/migrate/20240430075133_require_product_on_product_property.rb b/db/migrate/20240430075133_require_product_on_product_property.rb new file mode 100644 index 0000000000..4dd309ce0a --- /dev/null +++ b/db/migrate/20240430075133_require_product_on_product_property.rb @@ -0,0 +1,5 @@ +class RequireProductOnProductProperty < ActiveRecord::Migration[7.0] + def change + change_column_null :spree_product_properties, :product_id, false + end +end diff --git a/db/schema.rb b/db/schema.rb index 97171b74ef..42e4b6ac40 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_04_24_121221) do +ActiveRecord::Schema[7.0].define(version: 2024_04_30_075133) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" enable_extension "plpgsql" @@ -674,7 +674,7 @@ ActiveRecord::Schema[7.0].define(version: 2024_04_24_121221) do create_table "spree_product_properties", id: :serial, force: :cascade do |t| t.string "value", limit: 255 - t.integer "product_id" + t.integer "product_id", null: false t.integer "property_id", null: false t.datetime "created_at", precision: nil, null: false t.datetime "updated_at", precision: nil, null: false From 0f80aca6757ebebce6311f5eb9b20b82782799a6 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 30 Apr 2024 12:23:39 +0100 Subject: [PATCH 049/319] Updates checkout tests Adds out of stock check as helper --- spec/support/checkout_helper.rb | 8 ++++++++ spec/system/consumer/checkout/details_spec.rb | 12 ++++++++++++ spec/system/consumer/checkout/payment_spec.rb | 13 ++++++++++++- spec/system/consumer/checkout/summary_spec.rb | 17 +++++++++++++++++ 4 files changed, 49 insertions(+), 1 deletion(-) diff --git a/spec/support/checkout_helper.rb b/spec/support/checkout_helper.rb index fd85d4a779..6fa1bbd6aa 100644 --- a/spec/support/checkout_helper.rb +++ b/spec/support/checkout_helper.rb @@ -66,4 +66,12 @@ module CheckoutHelper click_on "Complete order" expect(page).to have_content "Back To Store" end + + def out_of_stock_check(step) + visit checkout_step_path(step) + + expect(page).not_to have_selector 'closing', text: "Checkout now" + expect(page).to have_selector 'closing', text: "Your shopping cart" + expect(page).to have_content "An item in your cart has become unavailable" + end end diff --git a/spec/system/consumer/checkout/details_spec.rb b/spec/system/consumer/checkout/details_spec.rb index 6f83576155..060c5a4476 100644 --- a/spec/system/consumer/checkout/details_spec.rb +++ b/spec/system/consumer/checkout/details_spec.rb @@ -82,6 +82,18 @@ describe "As a consumer, I want to checkout my order" do visit checkout_path end + context "when a line item is out of stock" do + before do + variant.on_demand = false + variant.on_hand = 0 + variant.save! + end + + it "returns me to the cart with an error message" do + out_of_stock_check(:details) + end + end + context "when no selecting a shipping method" do before do fill_out_details diff --git a/spec/system/consumer/checkout/payment_spec.rb b/spec/system/consumer/checkout/payment_spec.rb index 0646e40185..d6f0df0c33 100644 --- a/spec/system/consumer/checkout/payment_spec.rb +++ b/spec/system/consumer/checkout/payment_spec.rb @@ -27,7 +27,6 @@ describe "As a consumer, I want to checkout my order" do ship_address_id: nil, state: "cart", line_items: [create(:line_item, variant:)]) } - let(:fee_tax_rate) { create(:tax_rate, amount: 0.10, zone:, included_in_price: true) } let(:fee_tax_category) { create(:tax_category, tax_rates: [fee_tax_rate]) } let(:enterprise_fee) { create(:enterprise_fee, amount: 1.23, tax_category: fee_tax_category) } @@ -58,6 +57,18 @@ describe "As a consumer, I want to checkout my order" do visit checkout_path end + context "when a line item is out of stock" do + before do + variant.on_demand = false + variant.on_hand = 0 + variant.save! + end + + it "returns me to the cart with an error message" do + out_of_stock_check(:payment) + end + end + context "payment step" do let(:order) { create(:order_ready_for_payment, distributor:) } diff --git a/spec/system/consumer/checkout/summary_spec.rb b/spec/system/consumer/checkout/summary_spec.rb index 1b27719717..a1c8a393ce 100644 --- a/spec/system/consumer/checkout/summary_spec.rb +++ b/spec/system/consumer/checkout/summary_spec.rb @@ -35,6 +35,11 @@ describe "As a consumer, I want to checkout my order" do create(:shipping_method, require_ship_address: true, name: "A Free Shipping with required address") } + let!(:payment_with_fee) { + create(:payment_method, distributors: [distributor], + name: "Payment with Fee", description: "Payment with fee", + calculator: Calculator::FlatRate.new(preferred_amount: 1.23)) + } before do add_enterprise_fee enterprise_fee @@ -51,6 +56,18 @@ describe "As a consumer, I want to checkout my order" do visit checkout_path end + context "when a line item is out of stock" do + before do + variant.on_demand = false + variant.on_hand = 0 + variant.save! + end + + it "returns me to the cart with an error message" do + out_of_stock_check(:summary) + end + end + context "summary step" do let(:order) { create(:order_ready_for_confirmation, distributor:) From 729c5f01d4d5f9b5b9d18fe27decb10056849a2d Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 30 Apr 2024 13:49:34 +0100 Subject: [PATCH 050/319] Adds out of stock check as helper As shared examoples, in guest_spec.rb --- spec/system/consumer/checkout/guest_spec.rb | 26 +++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/spec/system/consumer/checkout/guest_spec.rb b/spec/system/consumer/checkout/guest_spec.rb index 9b5687ef08..303d10c7fc 100644 --- a/spec/system/consumer/checkout/guest_spec.rb +++ b/spec/system/consumer/checkout/guest_spec.rb @@ -292,4 +292,30 @@ describe "As a consumer, I want to checkout my order" do end end end + + shared_examples "when a line item is out of stock" do |session, step| + context "as a #{session} user" do + let(:user) { create(:user) } + before do + variant.on_demand = false + variant.on_hand = 0 + variant.save! + + if session == "logged" + login_as(user) + end + end + it "returns me to the cart with an error message" do + out_of_stock_check(step) + end + end + end + + it_behaves_like "when a line item is out of stock", "guest", "details" + it_behaves_like "when a line item is out of stock", "guest", "payment" + it_behaves_like "when a line item is out of stock", "guest", "summary" + + it_behaves_like "when a line item is out of stock", "logged", "details" + it_behaves_like "when a line item is out of stock", "logged", "payment" + it_behaves_like "when a line item is out of stock", "logged", "summary" end From 34bde1caa92fb622eb5c39c4f251354f000df19d Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 30 Apr 2024 14:22:30 +0100 Subject: [PATCH 051/319] Reverts changes on checkout steps specs This can be squashed with the first commit of this PR --- spec/system/consumer/checkout/details_spec.rb | 12 ------------ spec/system/consumer/checkout/payment_spec.rb | 13 +------------ spec/system/consumer/checkout/summary_spec.rb | 17 ----------------- 3 files changed, 1 insertion(+), 41 deletions(-) diff --git a/spec/system/consumer/checkout/details_spec.rb b/spec/system/consumer/checkout/details_spec.rb index 060c5a4476..6f83576155 100644 --- a/spec/system/consumer/checkout/details_spec.rb +++ b/spec/system/consumer/checkout/details_spec.rb @@ -82,18 +82,6 @@ describe "As a consumer, I want to checkout my order" do visit checkout_path end - context "when a line item is out of stock" do - before do - variant.on_demand = false - variant.on_hand = 0 - variant.save! - end - - it "returns me to the cart with an error message" do - out_of_stock_check(:details) - end - end - context "when no selecting a shipping method" do before do fill_out_details diff --git a/spec/system/consumer/checkout/payment_spec.rb b/spec/system/consumer/checkout/payment_spec.rb index d6f0df0c33..0646e40185 100644 --- a/spec/system/consumer/checkout/payment_spec.rb +++ b/spec/system/consumer/checkout/payment_spec.rb @@ -27,6 +27,7 @@ describe "As a consumer, I want to checkout my order" do ship_address_id: nil, state: "cart", line_items: [create(:line_item, variant:)]) } + let(:fee_tax_rate) { create(:tax_rate, amount: 0.10, zone:, included_in_price: true) } let(:fee_tax_category) { create(:tax_category, tax_rates: [fee_tax_rate]) } let(:enterprise_fee) { create(:enterprise_fee, amount: 1.23, tax_category: fee_tax_category) } @@ -57,18 +58,6 @@ describe "As a consumer, I want to checkout my order" do visit checkout_path end - context "when a line item is out of stock" do - before do - variant.on_demand = false - variant.on_hand = 0 - variant.save! - end - - it "returns me to the cart with an error message" do - out_of_stock_check(:payment) - end - end - context "payment step" do let(:order) { create(:order_ready_for_payment, distributor:) } diff --git a/spec/system/consumer/checkout/summary_spec.rb b/spec/system/consumer/checkout/summary_spec.rb index a1c8a393ce..1b27719717 100644 --- a/spec/system/consumer/checkout/summary_spec.rb +++ b/spec/system/consumer/checkout/summary_spec.rb @@ -35,11 +35,6 @@ describe "As a consumer, I want to checkout my order" do create(:shipping_method, require_ship_address: true, name: "A Free Shipping with required address") } - let!(:payment_with_fee) { - create(:payment_method, distributors: [distributor], - name: "Payment with Fee", description: "Payment with fee", - calculator: Calculator::FlatRate.new(preferred_amount: 1.23)) - } before do add_enterprise_fee enterprise_fee @@ -56,18 +51,6 @@ describe "As a consumer, I want to checkout my order" do visit checkout_path end - context "when a line item is out of stock" do - before do - variant.on_demand = false - variant.on_hand = 0 - variant.save! - end - - it "returns me to the cart with an error message" do - out_of_stock_check(:summary) - end - end - context "summary step" do let(:order) { create(:order_ready_for_confirmation, distributor:) From 05838889636f153f64eee68753083207e6d03cd4 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 30 Apr 2024 14:23:33 +0100 Subject: [PATCH 052/319] Removes legacy checkout spec All test cases are covered within the respective checkout step specs --- .../system/consumer/shopping/checkout_spec.rb | 598 ------------------ 1 file changed, 598 deletions(-) delete mode 100644 spec/system/consumer/shopping/checkout_spec.rb diff --git a/spec/system/consumer/shopping/checkout_spec.rb b/spec/system/consumer/shopping/checkout_spec.rb deleted file mode 100644 index 8c12d8c91c..0000000000 --- a/spec/system/consumer/shopping/checkout_spec.rb +++ /dev/null @@ -1,598 +0,0 @@ -# frozen_string_literal: true - -require 'system_helper' - -describe "As a consumer I want to check out my cart" do - include AuthenticationHelper - include ShopWorkflow - include CheckoutRequestsHelper - include FileHelper - include WebHelper - include UIComponentHelper - - let!(:zone) { create(:zone_with_member) } - let(:distributor) { create(:distributor_enterprise, charges_sales_tax: true) } - let(:supplier) { create(:supplier_enterprise) } - let!(:order_cycle) { - create(:simple_order_cycle, suppliers: [supplier], distributors: [distributor], - coordinator: create(:distributor_enterprise), variants: [variant]) - } - let(:enterprise_fee) { create(:enterprise_fee, amount: 1.23, tax_category: fee_tax_category) } - let(:fee_tax_rate) { create(:tax_rate, amount: 0.10, zone:, included_in_price: true) } - let(:fee_tax_category) { create(:tax_category, tax_rates: [fee_tax_rate]) } - let(:product) { - create(:taxed_product, supplier:, price: 10, zone:, tax_rate_amount: 0.1, - included_in_price: true) - } - let(:variant) { product.variants.first } - let(:order) { - create(:order, order_cycle:, distributor:, bill_address_id: nil, - ship_address_id: nil) - } - let(:shipping_tax_rate) { create(:tax_rate, amount: 0.25, zone:, included_in_price: true) } - let(:shipping_tax_category) { create(:tax_category, tax_rates: [shipping_tax_rate]) } - - let(:free_shipping) { - create(:shipping_method, require_ship_address: true, name: "Frogs", description: "yellow", - calculator: Calculator::FlatRate.new(preferred_amount: 0.00)) - } - let(:shipping_with_fee) { - create(:shipping_method, require_ship_address: false, tax_category: shipping_tax_category, - name: "Donkeys", description: "blue", - calculator: Calculator::FlatRate.new(preferred_amount: 4.56)) - } - let(:tagged_shipping) { - create(:shipping_method, require_ship_address: false, name: "Local", tag_list: "local") - } - let!(:check_without_fee) { - create(:payment_method, distributors: [distributor], name: "Roger rabbit", - type: "Spree::PaymentMethod::Check") - } - let!(:check_with_fee) { - create(:payment_method, distributors: [distributor], - calculator: Calculator::FlatRate.new(preferred_amount: 5.67)) - } - let!(:paypal) do - Spree::Gateway::PayPalExpress.create!(name: "Paypal", environment: 'test', - distributor_ids: [distributor.id]).tap do |pm| - pm.preferred_login = 'devnull-facilitator_api1.rohanmitchell.com' - pm.preferred_password = '1406163716' - pm.preferred_signature = 'AFcWxV21C7fd0v3bYYYRCpSSRl31AaTntNJ-AjvUJkWf4dgJIvcLsf1V' - end - end - - before do - add_enterprise_fee enterprise_fee - set_order order - add_product_to_cart order, product - - distributor.shipping_methods << free_shipping - distributor.shipping_methods << shipping_with_fee - distributor.shipping_methods << tagged_shipping - end - - pending "when I have an out of stock product in my cart" do - before do - variant.on_demand = false - variant.on_hand = 0 - variant.save! - end - - it "returns me to the cart with an error message" do - visit checkout_path - - expect(page).not_to have_selector 'closing', text: "Checkout now" - expect(page).to have_selector 'closing', text: "Your shopping cart" - expect(page).to have_content "An item in your cart has become unavailable" - end - end - - pending 'login in as user' do - let(:user) { create(:user) } - let(:pdf_upload) { terms_pdf_file } - - before do - login_as(user) - end - - context "with details filled out" do - before do - visit checkout_path - fill_out_form(free_shipping.name, check_without_fee.name) - end - - it "creates a new default billing address and shipping address" do - expect(user.bill_address).to be_nil - expect(user.ship_address).to be_nil - - expect(order.bill_address).to be_nil - expect(order.ship_address).to be_nil - - place_order - expect(page).to have_content "Your order has been processed successfully" - - expect(order.reload.bill_address.address1).to eq '123 Your Head' - expect(order.reload.ship_address.address1).to eq '123 Your Head' - - expect(order.customer.bill_address.address1).to eq '123 Your Head' - expect(order.customer.ship_address.address1).to eq '123 Your Head' - - expect(user.reload.bill_address.address1).to eq '123 Your Head' - expect(user.reload.ship_address.address1).to eq '123 Your Head' - end - - context "when the user and customer have existing default addresses" do - let(:existing_address) { create(:address) } - - before do - user.bill_address = existing_address - user.ship_address = existing_address - end - - it "updates billing address and shipping address" do - expect(order.bill_address).to be_nil - expect(order.ship_address).to be_nil - - place_order - expect(page).to have_content "Your order has been processed successfully" - - expect(order.reload.bill_address.address1).to eq '123 Your Head' - expect(order.reload.ship_address.address1).to eq '123 Your Head' - - expect(order.customer.bill_address.address1).to eq '123 Your Head' - expect(order.customer.ship_address.address1).to eq '123 Your Head' - - expect(user.reload.bill_address.address1).to eq '123 Your Head' - expect(user.reload.ship_address.address1).to eq '123 Your Head' - end - end - - it "shows only applicable content" do - expect(page).not_to have_content("You have an order for this order cycle already.") - - expect(page).not_to have_link("Terms and Conditions") - - # We always have this link in the footer. - within "#checkout_form" do - expect(page).not_to have_link("Terms of service") - end - end - end - - context "when distributor has T&Cs" do - before do - order.distributor.terms_and_conditions = pdf_upload - order.distributor.save! - end - - describe "when customer has not accepted T&Cs before" do - it "shows a link to the T&Cs and disables checkout button until terms are accepted" do - visit checkout_path - - expect(page).to have_link("Terms and Conditions") - - expect(page).to have_button("Place order now", disabled: true) - - check "accept_terms" - expect(page).to have_button("Place order now", disabled: false) - end - end - - describe "when customer has already accepted T&Cs before" do - before do - customer = create(:customer, enterprise: order.distributor, user:) - customer.update terms_and_conditions_accepted_at: Time.zone.now - end - - it "enables checkout button (because T&Cs are accepted by default)" do - visit checkout_path - expect(page).to have_button("Place order now", disabled: false) - end - - describe "but afterwards the enterprise has uploaded a new T&Cs file" do - before { order.distributor.terms_and_conditions.attach(pdf_upload) } - - it "disables checkout button until terms are accepted" do - visit checkout_path - expect(page).to have_button("Place order now", disabled: true) - end - end - end - end - - context "when the platform's terms of service have to be accepted" do - let(:tos_url) { "https://example.org/tos" } - - before do - allow(Spree::Config).to receive(:shoppers_require_tos).and_return(true) - allow(Spree::Config).to receive(:footer_tos_url).and_return(tos_url) - end - - it "shows the terms which need to be accepted" do - visit checkout_path - - within "#checkout_form" do - expect(page).to have_link("Terms of service", href: tos_url) - expect(find_link("Terms of service")[:target]).to eq "_blank" - expect(page).to have_button("Place order now", disabled: true) - end - - check "accept_terms" - expect(page).to have_button("Place order now", disabled: false) - - uncheck "accept_terms" - expect(page).to have_button("Place order now", disabled: true) - end - - context "when the terms have been accepted in the past" do - before do - TermsOfServiceFile.create!( - attachment: pdf_upload, - updated_at: 1.day.ago, - ) - customer = create(:customer, enterprise: order.distributor, user:) - customer.update(terms_and_conditions_accepted_at: Time.zone.now) - end - - it "remembers the acceptance" do - visit checkout_path - - within "#checkout_form" do - expect(page).to have_link("Terms of service") - expect(page).to have_button("Place order now", disabled: false) - end - - uncheck "accept_terms" - expect(page).to have_button("Place order now", disabled: true) - - check "accept_terms" - expect(page).to have_button("Place order now", disabled: false) - end - end - end - - context "when the seller's terms and the platform's terms have to be accepted" do - let(:tos_url) { "https://example.org/tos" } - - before do - order.distributor.terms_and_conditions = pdf_upload - order.distributor.save! - - allow(Spree::Config).to receive(:shoppers_require_tos).and_return(true) - allow(Spree::Config).to receive(:footer_tos_url).and_return(tos_url) - end - - it "shows links to both terms and all need accepting" do - visit checkout_path - - within "#checkout_form" do - expect(page).to have_link("Terms and Conditions") - expect(page).to have_link("Terms of service", href: tos_url) - expect(page).to have_button("Place order now", disabled: true) - end - - # Both Ts&Cs and TOS appear in the one label for the one checkbox. - check "accept_terms" - expect(page).to have_button("Place order now", disabled: false) - - uncheck "accept_terms" - expect(page).to have_button("Place order now", disabled: true) - end - end - - context "with previous orders" do - let!(:prev_order) { - create(:completed_order_with_totals, order_cycle:, distributor:, - user: order.user) - } - - before do - order.distributor.allow_order_changes = true - order.distributor.save - visit checkout_path - end - - it "informs about previous orders" do - expect(page).to have_content("You have an order for this order cycle already.") - end - end - - context "when the user has a preset shipping and billing address" do - before do - user.bill_address = build(:address) - user.ship_address = build(:address) - user.save! - end - - it "checks out successfully" do - visit checkout_path - - expect(page).to have_content "Shipping info" - find(:xpath, '//*[@id="shipping"]/ng-form/dd').click - find("input[value='#{shipping_with_fee.id}'").click - click_button "Next" - expect(page).to have_content "Payment" - find("input[value='#{check_without_fee.id}'").click - - perform_enqueued_jobs do - place_order - - expect(page).to have_content "Your order has been processed successfully" - - expect(ActionMailer::Base.deliveries.first.subject).to match(/Order Confirmation/) - expect(ActionMailer::Base.deliveries.second.subject).to match(/Order Confirmation/) - end - - order = Spree::Order.complete.last - expect(order.payment_state).to eq "balance_due" - expect(order.shipment_state).to eq "pending" - end - end - end - - pending "guest checkout" do - before do - visit checkout_path - checkout_as_guest - end - - it "shows the current distributor" do - visit checkout_path - expect(page).to have_content distributor.name - end - - it 'does not show the save as default address checkbox' do - expect(page).not_to have_content "Save as default billing address" - expect(page).not_to have_content "Save as default shipping address" - end - - it "shows a breakdown of the order price" do - choose shipping_with_fee.name - - expect(page).to have_selector 'orderdetails .cart-total', text: with_currency(11.23) - expect(page).to have_selector 'orderdetails .shipping', text: with_currency(4.56) - expect(page).to have_selector 'orderdetails .total', text: with_currency(15.79) - - # Tax should not be displayed in checkout, as the customer's choice of shipping method - # affects the tax and we haven't written code to live-update the tax amount when they - # make a change. - expect(page).not_to have_content product.tax_category.name - end - - it "shows all shipping methods in order by name" do - within '#shipping' do - # Three shipping methods + instructions label - expect(page).to have_selector "label", count: 4 - labels = page.all('label').map(&:text) - expect(labels[0]).to start_with("Donkeys") # shipping_with_fee - expect(labels[1]).to start_with("Frogs") # free_shipping - expect(labels[2]).to start_with("Local") # tagged_shipping - end - end - - context "when shipping method requires an address" do - before do - choose free_shipping.name - end - it "shows ship address forms when 'same as billing address' is unchecked" do - uncheck "Shipping address same as billing address?" - expect(find("#ship_address > div.visible").visible?).to be true - end - end - - it "filters out 'Back office only' shipping methods" do - expect(page).to have_content shipping_with_fee.name - shipping_with_fee.update_attribute :display_on, 'back_end' # Back office only - - visit checkout_path - checkout_as_guest - expect(page).not_to have_content shipping_with_fee.name - end - - context "using FilterShippingMethods" do - let(:user) { create(:user) } - let(:customer) { create(:customer, user:, enterprise: distributor) } - - it "shows shipping methods allowed by the rule" do - # No rules in effect - expect(page).to have_content "Frogs" - expect(page).to have_content "Donkeys" - expect(page).to have_content "Local" - - create(:filter_shipping_methods_tag_rule, - enterprise: distributor, - preferred_customer_tags: "local", - preferred_shipping_method_tags: "local", - preferred_matched_shipping_methods_visibility: 'visible') - create(:filter_shipping_methods_tag_rule, - enterprise: distributor, - is_default: true, - preferred_shipping_method_tags: "local", - preferred_matched_shipping_methods_visibility: 'hidden') - visit checkout_path - checkout_as_guest - - # Default rule in effect, disallows access to 'Local' - expect(page).to have_content "Frogs" - expect(page).to have_content "Donkeys" - expect(page).not_to have_content "Local" - - login_as(user) - visit checkout_path - - # Default rule in still effect, disallows access to 'Local' - expect(page).to have_content "Frogs" - expect(page).to have_content "Donkeys" - expect(page).not_to have_content "Local" - - customer.update_attribute(:tag_list, "local") - visit checkout_path - - # #local Customer can access 'Local' shipping method - expect(page).to have_content "Frogs" - expect(page).to have_content "Donkeys" - expect(page).to have_content "Local" - end - end - - it "shows all available payment methods" do - expect(page).to have_content check_without_fee.name - expect(page).to have_content check_with_fee.name - expect(page).to have_content paypal.name - end - - describe "purchasing" do - it "takes us to the order confirmation page when we submit a complete form" do - fill_out_details - fill_out_billing_address - - within "#shipping" do - choose shipping_with_fee.name - fill_in 'Any comments or special instructions?', with: "SpEcIaL NoTeS" - end - - within "#payment" do - choose check_without_fee.name - end - - expect do - place_order - expect(page).to have_content "Your order has been processed successfully" - end.to have_enqueued_mail(Spree::OrderMailer, :confirm_email_for_customer) - - # And the order's special instructions should be set - order = Spree::Order.complete.last - expect(order.special_instructions).to eq "SpEcIaL NoTeS" - - # Shipment and payments states should be set - expect(order.payment_state).to eq "balance_due" - expect(order.shipment_state).to eq "pending" - - # And the Spree tax summary should not be displayed - expect(page).not_to have_content product.tax_category.name - - # And the total tax for the order, including shipping and fee tax, should be displayed - # product tax ($10.00 @ 10% = $0.91) - # + fee tax ($ 1.23 @ 10% = $0.11) - # + shipping tax ($ 4.56 @ 25% = $0.91) - # = $1.93 - expect(page).to have_content '(includes tax)' - expect(page).to have_content with_currency(1.93) - expect(page).to have_content 'Back To Store' - end - - context "with basic details filled" do - before do - choose free_shipping.name - choose check_without_fee.name - fill_out_details - fill_out_billing_address - check "Shipping address same as billing address?" - end - - it "takes us to the order confirmation page when submitted with " \ - "'same as billing address' checked" do - place_order - expect(page).to have_content "Your order has been processed successfully" - - order = Spree::Order.complete.last - expect(order.payment_state).to eq "balance_due" - expect(order.shipment_state).to eq "pending" - end - - it "takes us to the cart page with an error when a product becomes out of stock just " \ - "before we purchase" do - variant.on_demand = false - variant.on_hand = 0 - variant.save! - - place_order - - expect(page).not_to have_content "Your order has been processed successfully" - expect(page).to have_selector 'closing', text: "Your shopping cart" - expect(page).to have_content "An item in your cart has become unavailable." - end - - context "when we are charged a shipping fee" do - before { choose shipping_with_fee.name } - - it "creates a payment for the full amount inclusive of shipping" do - place_order - expect(page).to have_content "Your order has been processed successfully" - - # There are two orders - our order and our new cart - order = Spree::Order.complete.last - expect(order.shipment_adjustments.first.amount).to eq(4.56) - expect(order.payments.first.amount).to eq(10 + 1.23 + 4.56) # items + fees + shipping - expect(order.payment_state).to eq "balance_due" - expect(order.shipment_state).to eq "pending" - end - end - - context "when we are charged a payment method fee (transaction fee)" do - it "creates a payment including the transaction fee" do - # Selecting the transaction fee, it is displayed - expect(page).to have_selector ".transaction-fee td", text: with_currency(0.00) - expect(page).to have_selector ".total", text: with_currency(11.23) - - choose "#{check_with_fee.name} (#{with_currency(5.67)})" - - expect(page).to have_selector ".transaction-fee td", text: with_currency(5.67) - expect(page).to have_selector ".total", text: with_currency(16.90) - - place_order - expect(page).to have_content "Your order has been processed successfully" - - # There are two orders - our order and our new cart - order = Spree::Order.complete.last - expect(order.all_adjustments.payment_fee.first.amount).to eq 5.67 - expect(order.payments.first.amount).to eq(10 + 1.23 + 5.67) # items + fees + transaction - expect(order.payment_state).to eq "balance_due" - expect(order.shipment_state).to eq "pending" - end - end - - describe "credit card payments" do - context "with a credit card payment method using Stripe" do - let!(:check_without_fee) { - create(:payment_method, distributors: [distributor], name: "Roger Rabbit", - type: "Spree::Gateway::StripeSCA") - } - - it "takes us to the order confirmation page when submitted " \ - "with a valid credit card" do - fill_in 'Card Number', with: "4111111111111111" - select 'February', from: 'secrets.card_month' - select (Date.current.year + 1).to_s, from: 'secrets.card_year' - fill_in 'Security Code', with: '123' - - place_order - expect(page).to have_content "Your order has been processed successfully" - - # Order should have a payment with the correct amount - order = Spree::Order.complete.last - expect(order.payments.first.amount).to eq(11.23) - expect(order.payment_state).to eq "paid" - expect(order.shipment_state).to eq "ready" - end - - it "shows the payment processing failed message when submitted " \ - "with an invalid credit card" do - fill_in 'Card Number', with: "9999999988887777" - select 'February', from: 'secrets.card_month' - select (Date.current.year + 1).to_s, from: 'secrets.card_year' - fill_in 'Security Code', with: '123' - - place_order - expect(page).to have_content 'Bogus Gateway: Forced failure' - - # Does not show duplicate shipping fee - visit checkout_path - expect(page).to have_selector "th", text: "Shipping", count: 1 - end - end - end - end - end - end -end From 94e3eee793ff1fbb6282094b4beb9cbfb7e36c95 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Wed, 1 May 2024 14:44:57 +1000 Subject: [PATCH 053/319] Update all locales with the latest Transifex translations --- config/locales/fr_BE.yml | 57 +++++++++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/config/locales/fr_BE.yml b/config/locales/fr_BE.yml index b500081c9b..69bded03f7 100644 --- a/config/locales/fr_BE.yml +++ b/config/locales/fr_BE.yml @@ -114,7 +114,7 @@ fr_BE: dimension_height_equal_to: "la hauteur doit être égale au pixel %{length} ." aspect_ratio_not_square: "doit être une image carrée" aspect_ratio_not_portrait: "doit être une image de portrait" - aspect_ratio_not_landscape: "doit être une image de paysage" + aspect_ratio_not_landscape: "doit être une image en format paysage" aspect_ratio_is_not: "doit avoir un rapport hauteur / largeur de %{aspect_ratio}" aspect_ratio_unknown: "a un rapport hauteur/largeur inconnu" image_not_processable: "n'est pas une image valide" @@ -337,6 +337,7 @@ fr_BE: confirm_resend_order_confirmation: "Etes-vous sûr de vouloir renvoyer le mail de confirmation de commande ?" invoice: "Facture" active: "Actif" + download: "Télécharger" cancelled: "Annulée" more: "Plus" say_no: "Non" @@ -552,6 +553,7 @@ fr_BE: terms_of_service: "Conditions d'utilisation" delete: "Supprimer le fichier" confirm_delete: "Voulez-vous vraiment supprimer le fichier actuel des conditions d'utilisation ?" + attachment: "Pièce jointe" create_terms_of_service: "Créer un fichier de conditions d'utilisation" number_localization: number_localization_settings: "Gestion localisation des nombres" @@ -676,7 +678,7 @@ fr_BE: infinity: "Infinité" to_order_tip: "Les articles fabriqués sur commande n'ont pas un niveau de stock défini, comme des pains faits à la main." back_to_products_list: "Retour à la liste produits" - editing_product: "Edition de produits" + editing_product: "Éditer le produit" tabs: product_details: "Détails du produit" group_buy_options: "Options d'achat par lot" @@ -857,6 +859,7 @@ fr_BE: order_date: "Complété à " max: "Max" product_unit: "Produit: Unité" + weight_volume: "Poids/Volume (g)" ask: "Demander?" page_title: "Gestion des commandes" actions_delete: "Supprimer la sélection" @@ -1272,9 +1275,9 @@ fr_BE: add_distributor: 'Ajouter un distributeur' advanced_settings: automatic_notifications: Notifications automatiques - automatic_notifications_tip: Envoi un email automatiquement à tous les producteurs lorsque le cycle de vente ferme. + automatic_notifications_tip: Envoie un email automatiquement à tous les producteurs lorsque le cycle de vente ferme. title: Paramétrages avancés - choose_product_tip: Vous pouvez limiter les produits entrants et sortants à l'inventaire uniquement%{inventory}. + choose_product_tip: Vous pouvez limiter les produits entrants et sortants uniquement à ceux sélectionnés dans le catalogue du comptoir "%{inventory} ". preferred_product_selection_from_coordinator_inventory_only_here: Uniquement les produits du catalogue magasin preferred_product_selection_from_coordinator_inventory_only_all: Tous les produits disponibles dans les catalogues producteurs save_reload: Sauvegarder et rafraichir la page @@ -1405,11 +1408,14 @@ fr_BE: pack_by_customer: Préparation des commandes par Acheteur·euse pack_by_supplier: Préparation des commandes par Producteur·trice pack_by_product: Préparation des commandes par produit + download: + button: "Télécharger le rapport" show: report_taking_longer: > Désolé, ce rapport a pris trop de temps à traiter. Il peut contenir beaucoup de données ou nous sommes occupés par d'autres rapports. Vous pouvez réessayer plus tard. + report_link_label: Télécharger le rapport (si disponible) revenues_by_hub: name: CA par comptoir description: CA par comptoir @@ -1474,7 +1480,7 @@ fr_BE: name: "Rapports de préparation des paniers" subscriptions: index: - title: "commandes récurrantes" + title: "Commandes récurrentes" new: "Nouvel abonnement" new: title: "Nouvel abonnement" @@ -1488,7 +1494,7 @@ fr_BE: filters: query_placeholder: "Recherche par email ..." setup_explanation: - title: "commandes récurrantes" + title: "Commandes récurrentes" just_a_few_more_steps: 'Encore quelques étapes avant de pouvoir commencer:' enable_subscriptions: "Activez la fonction abonnements pour au moins une de vos comptoirs" enable_subscriptions_step_1_html: 1. Allez à %{enterprises_link}, trouvez votre comptoir, et cliquez sur "Gérer" @@ -1680,9 +1686,10 @@ fr_BE: submit: Finaliser la commande cancel: Retour à Mode de paiement errors: + saving_failed: "L'enregistrement a échoué, veuillez mettre à jour les champs en surbrillance." terms_not_accepted: Veuillez accepter les termes et conditions required: Le champ ne peut pas être vide - invalid_number: "s'il vous plaît entrer un numéro de téléphone valide" + invalid_number: "S'il vous plaît, entrez un numéro de téléphone valide" invalid_email: "Veuillez entrer un email valide" select_a_shipping_method: Sélectionnez une méthode d'expédition ou de retrait select_a_payment_method: Choisissez une méthode de paiement @@ -1753,6 +1760,7 @@ fr_BE: invoice_column_price: "Prix" invoice_column_item: "Produit" invoice_column_qty: "Qté" + invoice_column_weight_volume: "Poids / Vol." invoice_column_unit_price_with_taxes: "Prix unitaire TTC" invoice_column_unit_price_without_taxes: "Prix unitaire HT" invoice_column_price_with_taxes: "Prix total TTC" @@ -2449,6 +2457,7 @@ fr_BE: shipping_method_destroy_error: "Cette méthode de livraison ne peut pas être supprimée car elle est référencée dans une commande : %{number}." fees: "Frais" fee_name: "Nom de la commission " + fee_owner: "Propriétaire de la commission" item_cost: "Coût du produit" bulk: "Vrac" shop_variant_quantity_min: "min" @@ -2492,7 +2501,7 @@ fr_BE: admin_enterprise_relationships_button_create: "Créer" admin_enterprise_relationships_to: "vers" admin_enterprise_groups: "Groupes d'entreprises" - admin_enterprise_groups_name: "Produit/Variante" + admin_enterprise_groups_name: "NOM DU GROUPE" admin_enterprise_groups_owner: "Manager principal" admin_enterprise_groups_on_front_page: "Sur la page d'accueil?" admin_enterprise_groups_enterprise: "Entreprises" @@ -2517,7 +2526,7 @@ fr_BE: supplier: "Fournisseurs" product_name: "Nom du Produit" product_description: "Description du Produit" - permalink: "permalien" + permalink: "Permalien : Nom pour URL (sans espace)" shipping_categories: "Condition de transport" units: "Unité de mesure" coordinator: "Coordinateur" @@ -2770,6 +2779,7 @@ fr_BE: report_header_delivery_postcode: Code Postal Livraison report_header_bulk_unit_size: Quantité totale du lot report_header_weight: Poids + report_header_final_weight_volume: Final (Poids/Volume) report_header_height: Taille report_header_width: largeur report_header_depth: profondeur @@ -2824,6 +2834,11 @@ fr_BE: report_header_total_untaxable_admin: Total ajustements non taxables report_header_total_taxable_admin: Total ajustments soumis à TVA (inclut TVA) report_line_line_items: Ces articles + report_header_last_completed_order_date: Date de la dernière commande terminée + initial_invoice_number: "Numéro de facture initial" + invoice_date: "Date de facture" + due_date: "Date d'échéance" + account_code: "Code du compte" equals: "Egal" contains: "contient" discount: "Réduction" @@ -3372,8 +3387,10 @@ fr_BE: category: "Catégorie" created_successfully: "Créé avec succès" credit: "Crédit" - editing_tax_category: "Modification de la catégorie de taxe" - editing_tax_rate: "Modification du taux de taxe" + editing_tax_category: "Éditer la catégorie de taxe" + editing_tax_rate: "Éditer le taux de taxe" + editing_zone: "Éditer la zone" + editing_state: "Éditer la province" expiration: "Expiration" invalid_payment_provider: "Fournisseur de paiement invalide" items_cannot_be_shipped: "Les articles ne peuvent pas être expédiés" @@ -3387,12 +3404,14 @@ fr_BE: notice_messages: variant_deleted: "Variante supprimée" start_date: "Date de début" + taxonomy_tree_instruction: "Faites un clic droit sur un élément pour ajouter, renommer, supprimer ou modifier." updating: "Mettre à jour" your_order_is_empty_add_product: "Votre commande est vide, merci de chercher et d'ajouter un des produits ci-dessus" add_product: "Ajoutez un produit" name_or_sku: "Nom ou N° d'article (entrer au moins 4 lettres du nom du produit) " resend: "Renvoyer" back_to_orders_list: "Retour vers la liste des commandes " + back_to_states_list: "Retour à la liste des provinces" return_authorizations: "Autorisations de retour" cannot_create_returns: "Impossible de créer des retours car cette commande n'a pas d'unités expédiées." select_stock: "Selectionner stock" @@ -3464,7 +3483,7 @@ fr_BE: send_mails_as: "Envoyer les mails comme " smtp_send_all_emails_as_from_following_address: "Envoyer tous les mails comme de l'adresse suivante." send_copy_of_all_mails_to: "Envoyez une copie de tous les mails à " - smtp_send_copy_to_this_addresses: "Envoit une copie de tous les mails sortants vers cette adresse. En cas de plusieurs adresses, séparer par une virgule." + smtp_send_copy_to_this_addresses: "Envoie une copie de tous les mails sortants vers cette adresse. En cas de plusieurs adresses, séparer par une virgule." tax_categories: "TVA applicable" listing_tax_categories: "Liste catégories TVA" back_to_tax_categories_list: "Retour à la liste des catégories de TVA" @@ -3488,7 +3507,7 @@ fr_BE: listing_countries: "Liste des pays" iso_name: "Nom ISO" states_required: "Provinces requises" - editing_country: "Pays d'édition" + editing_country: "Éditer le pays" back_to_countries_list: "Retouner vers la liste des pays" states: "Provinces" abbreviation: "Abréviation" @@ -3505,6 +3524,7 @@ fr_BE: shipping_categories: "Condition de transport" new_shipping_category: "Nouvelle catégorie d'expédition " back_to_shipping_categories: "Retour vers les catégories d'expédition" + editing_shipping_category: "Éditer la catégorie d'expédition" name: "Nom" description: "Description" type: "Catégorie" @@ -3581,6 +3601,10 @@ fr_BE: header: store: Aperçu admin: + mail_methods: + send_testmail: "Envoyer un e-mail de test" + testmail: + error: "Une erreur s'est produite lors de la tentative d'envoi de l'e-mail de test." unit_price_tooltip: "Le prix unitaire permet aux acheteurs de comparer les prix entre les produits et/ou les conditionnements. Attention, le prix final observé par l'acheteur peut être différent si des marges et/ou commissions sont appliquées." subscriptions: number: "N° commande" @@ -3779,7 +3803,7 @@ fr_BE: back_to_payment_methods_list: "Retour à la liste des paiements" edit: new: "Nouveau" - editing_payment_method: "Modification des méthodes de paiement en cours" + editing_payment_method: "Éditer les méthodes de paiement" back_to_payment_methods_list: "Retour à la liste des paiements" stripe_connect: enterprise_select_placeholder: Choisir... @@ -3818,6 +3842,7 @@ fr_BE: no_payment_via_admin_backend: Les payement paypal ne savent pas etre prit dans le Backoffice products: image_upload_error: "Veuillez télécharger l'image au format JPG, PNG, GIF, SVG ou WEBP." + image_not_processable: "L’image jointe n’est pas une image valide." new: title: "Nouveau Produit" new_product: "Nouveau Produit" @@ -3879,7 +3904,7 @@ fr_BE: search: "Rechercher" email: "Email" edit: - editing_user: "Utilisateur·trice d'édition" + editing_user: "Éditer l'utilisateur.rice" back_to_users_list: "Retour vers la liste des utilisateur·trice·s" general_settings: "Réglages Généraux" form: @@ -3933,7 +3958,7 @@ fr_BE: taxons: form: name: Nom - permalink: permalien + permalink: 'Permalien : Nom pour URL (sans espace)' description: Description general_settings: edit: From 5e18038a68c2b19d1dff01a820f9c321cd8bc04c Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Wed, 1 May 2024 13:31:49 +0200 Subject: [PATCH 054/319] Fix RedundantPresenceValidationOnBelongs on two files - presence: true is redundant since Rails 5.0 BUT applies with new default config of belongs_to_required_by_default to true. Lots of files with belongs_to_required_by_default = false (backward compatibility). So: deleting this setting implies to adding optional: true - added 'NOT NULL' constraints so model constraints match with contraints on DB tables. - corresponding migration files to match AR Models & DB tables - rake tasks to check corrupt data (ie: NULL/nil in id fields) - updated the todo --- .rubocop_todo.yml | 4 +-- app/models/spree/stock_item.rb | 3 -- app/models/spree/stock_movement.rb | 5 +--- ...ariant_and_stock_location_on_stock_item.rb | 6 ++++ ...ock_item_and_quantity_on_stock_movement.rb | 6 ++++ db/schema.rb | 10 +++---- ...k_missing_required_ids_in_stock_items.rake | 28 +++++++++++++++++++ ...ssing_required_ids_in_stock_movements.rake | 28 +++++++++++++++++++ 8 files changed, 75 insertions(+), 15 deletions(-) create mode 100644 db/migrate/20240501072547_require_variant_and_stock_location_on_stock_item.rb create mode 100644 db/migrate/20240501075735_require_stock_item_and_quantity_on_stock_movement.rb create mode 100644 lib/tasks/data/check_missing_required_ids_in_stock_items.rake create mode 100644 lib/tasks/data/check_missing_required_ids_in_stock_movements.rake diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 7f40f94d2b..6eb925adc6 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -649,14 +649,12 @@ Rails/RedundantActiveRecordAllMethod: - 'app/models/spree/variant.rb' - 'spec/system/admin/product_import_spec.rb' -# Offense count: 11 +# Offense count: 9 # This cop supports unsafe autocorrection (--autocorrect-all). Rails/RedundantPresenceValidationOnBelongsTo: Exclude: - 'app/models/spree/line_item.rb' - 'app/models/spree/order.rb' - - 'app/models/spree/stock_item.rb' - - 'app/models/spree/stock_movement.rb' - 'app/models/spree/tax_rate.rb' - 'app/models/subscription_line_item.rb' - 'app/models/tag_rule.rb' diff --git a/app/models/spree/stock_item.rb b/app/models/spree/stock_item.rb index 565a165e6f..a89a44975e 100644 --- a/app/models/spree/stock_item.rb +++ b/app/models/spree/stock_item.rb @@ -2,15 +2,12 @@ module Spree class StockItem < ApplicationRecord - self.belongs_to_required_by_default = false - acts_as_paranoid belongs_to :stock_location, class_name: 'Spree::StockLocation', inverse_of: :stock_items belongs_to :variant, -> { with_deleted }, class_name: 'Spree::Variant' has_many :stock_movements, dependent: :destroy - validates :stock_location, :variant, presence: true validates :variant_id, uniqueness: { scope: [:stock_location_id, :deleted_at] } validates :count_on_hand, numericality: { greater_than_or_equal_to: 0, unless: :backorderable? } diff --git a/app/models/spree/stock_movement.rb b/app/models/spree/stock_movement.rb index 02352588e2..4de0dea3a0 100644 --- a/app/models/spree/stock_movement.rb +++ b/app/models/spree/stock_movement.rb @@ -2,14 +2,11 @@ module Spree class StockMovement < ApplicationRecord - self.belongs_to_required_by_default = false - belongs_to :stock_item, class_name: 'Spree::StockItem' - belongs_to :originator, polymorphic: true + belongs_to :originator, polymorphic: true, optional: true after_create :update_stock_item_quantity - validates :stock_item, presence: true validates :quantity, presence: true scope :recent, -> { order('created_at DESC') } diff --git a/db/migrate/20240501072547_require_variant_and_stock_location_on_stock_item.rb b/db/migrate/20240501072547_require_variant_and_stock_location_on_stock_item.rb new file mode 100644 index 0000000000..c68cd74d0d --- /dev/null +++ b/db/migrate/20240501072547_require_variant_and_stock_location_on_stock_item.rb @@ -0,0 +1,6 @@ +class RequireVariantAndStockLocationOnStockItem < ActiveRecord::Migration[7.0] + def change + change_column_null :spree_stock_items, :stock_location_id, false + change_column_null :spree_stock_items, :variant_id, false + end +end diff --git a/db/migrate/20240501075735_require_stock_item_and_quantity_on_stock_movement.rb b/db/migrate/20240501075735_require_stock_item_and_quantity_on_stock_movement.rb new file mode 100644 index 0000000000..52d21d7f6d --- /dev/null +++ b/db/migrate/20240501075735_require_stock_item_and_quantity_on_stock_movement.rb @@ -0,0 +1,6 @@ +class RequireStockItemAndQuantityOnStockMovement < ActiveRecord::Migration[7.0] + def change + change_column_null :spree_stock_movements, :stock_item_id, false + change_column_null :spree_stock_movements, :quantity, false + end +end diff --git a/db/schema.rb b/db/schema.rb index 42e4b6ac40..122771b30f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_04_30_075133) do +ActiveRecord::Schema[7.0].define(version: 2024_05_01_075735) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" enable_extension "plpgsql" @@ -818,8 +818,8 @@ ActiveRecord::Schema[7.0].define(version: 2024_04_30_075133) do end create_table "spree_stock_items", id: :serial, force: :cascade do |t| - t.integer "stock_location_id" - t.integer "variant_id" + t.integer "stock_location_id", null: false + t.integer "variant_id", null: false t.integer "count_on_hand", default: 0, null: false t.datetime "created_at", precision: nil, null: false t.datetime "updated_at", precision: nil, null: false @@ -849,8 +849,8 @@ ActiveRecord::Schema[7.0].define(version: 2024_04_30_075133) do end create_table "spree_stock_movements", id: :serial, force: :cascade do |t| - t.integer "stock_item_id" - t.integer "quantity", default: 0 + t.integer "stock_item_id", null: false + t.integer "quantity", default: 0, null: false t.string "action", limit: 255 t.datetime "created_at", precision: nil, null: false t.datetime "updated_at", precision: nil, null: false diff --git a/lib/tasks/data/check_missing_required_ids_in_stock_items.rake b/lib/tasks/data/check_missing_required_ids_in_stock_items.rake new file mode 100644 index 0000000000..e265a012b4 --- /dev/null +++ b/lib/tasks/data/check_missing_required_ids_in_stock_items.rake @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +namespace :ofn do + namespace :data do + desc 'Checking missing required ids in Spree::StockItem' + task check_missing_required_missing_ids_in_spree_stock_items: :environment do + puts 'Checking for null stock_location_id' + ids = Spree::StockItem.where(stock_location_id: nil).pluck(:id) + + if ids.empty? + puts 'No NULL stock_location_id found in spree_stock_items' + else + puts 'NULL stock_location_ids s have been found in spree_stock_items:' + print ids + end + + puts 'Checking for null variant_id' + ids = Spree::StockItem.where(variant_id: nil).pluck(:id) + + if ids.empty? + puts 'No NULL variant_id found in spree_stock_items' + else + puts 'NULL variant_ids s have been found in spree_stock_items:' + print ids + end + end + end +end diff --git a/lib/tasks/data/check_missing_required_ids_in_stock_movements.rake b/lib/tasks/data/check_missing_required_ids_in_stock_movements.rake new file mode 100644 index 0000000000..56442255aa --- /dev/null +++ b/lib/tasks/data/check_missing_required_ids_in_stock_movements.rake @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +namespace :ofn do + namespace :data do + desc 'Checking missing required ids in Spree::StockMovement' + task check_missing_required_missing_ids_in_spree_stock_movements: :environment do + puts 'Checking for null stock_item_id' + ids = Spree::StockMovement.where(stock_item_id: nil).pluck(:id) + + if ids.empty? + puts 'No NULL stock_item_id found in spree_stock_movements' + else + puts 'NULL stock_item_ids s have been found in spree_stock_movements:' + print ids + end + + puts 'Checking for null quantity' + ids = Spree::StockMovement.where(quantity: nil).pluck(:id) + + if ids.empty? + puts 'No NULL quantity found in spree_stock_movements' + else + puts 'NULL quantity s have been found in spree_stock_movements:' + print ids + end + end + end +end From 6b0de6e9e4ff84cc84e5b7637c09d0291ec26017 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 09:51:59 +0000 Subject: [PATCH 055/319] chore(deps): bump flipper, flipper-active_record and flipper-ui Bumps [flipper](https://github.com/flippercloud/flipper), [flipper-active_record](https://github.com/flippercloud/flipper) and [flipper-ui](https://github.com/flippercloud/flipper). These dependencies needed to be updated together. Updates `flipper` from 0.26.2 to 1.2.2 - [Release notes](https://github.com/flippercloud/flipper/releases) - [Changelog](https://github.com/flippercloud/flipper/blob/main/Changelog.md) - [Commits](https://github.com/flippercloud/flipper/compare/v0.26.2...v1.2.2) Updates `flipper-active_record` from 0.26.2 to 1.2.2 - [Release notes](https://github.com/flippercloud/flipper/releases) - [Changelog](https://github.com/flippercloud/flipper/blob/main/Changelog.md) - [Commits](https://github.com/flippercloud/flipper/compare/v0.26.2...v1.2.2) Updates `flipper-ui` from 0.26.2 to 1.2.2 - [Release notes](https://github.com/flippercloud/flipper/releases) - [Changelog](https://github.com/flippercloud/flipper/blob/main/Changelog.md) - [Commits](https://github.com/flippercloud/flipper/compare/v0.26.2...v1.2.2) --- updated-dependencies: - dependency-name: flipper dependency-type: direct:production update-type: version-update:semver-major - dependency-name: flipper-active_record dependency-type: direct:production update-type: version-update:semver-major - dependency-name: flipper-ui dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index b7aae1b197..233b372b94 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -286,15 +286,15 @@ GEM websocket-driver (>= 0.6, < 0.8) ffaker (2.23.0) ffi (1.16.3) - flipper (0.26.2) + flipper (1.2.2) concurrent-ruby (< 2) - flipper-active_record (0.26.2) + flipper-active_record (1.2.2) activerecord (>= 4.2, < 8) - flipper (~> 0.26.2) - flipper-ui (0.26.2) + flipper (~> 1.2.2) + flipper-ui (1.2.2) erubi (>= 1.0.0, < 2.0.0) - flipper (~> 0.26.2) - rack (>= 1.4, < 3) + flipper (~> 1.2.2) + rack (>= 1.4, < 4) rack-protection (>= 1.5.3, <= 4.0.0) sanitize (< 7) fog-aws (2.0.1) @@ -686,7 +686,7 @@ GEM rubyzip (2.3.2) rufus-scheduler (3.8.2) fugit (~> 1.1, >= 1.1.6) - sanitize (6.0.2) + sanitize (6.1.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) sass (3.4.25) From 75f343b42f78863db31afd7399614d91aaf019b1 Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Thu, 22 Feb 2024 20:24:35 +0100 Subject: [PATCH 056/319] Run `rails generate flipper:update` and `rails db:migrate` --- ...92158_change_flipper_gates_value_to_text.rb | 18 ++++++++++++++++++ db/schema.rb | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20240222192158_change_flipper_gates_value_to_text.rb diff --git a/db/migrate/20240222192158_change_flipper_gates_value_to_text.rb b/db/migrate/20240222192158_change_flipper_gates_value_to_text.rb new file mode 100644 index 0000000000..67fabe7d4e --- /dev/null +++ b/db/migrate/20240222192158_change_flipper_gates_value_to_text.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class ChangeFlipperGatesValueToText < ActiveRecord::Migration[7.0] + def up + # Ensure this incremental update migration is idempotent + return unless connection.column_exists? :flipper_gates, :value, :string + + if index_exists? :flipper_gates, [:feature_key, :key, :value] + remove_index :flipper_gates, [:feature_key, :key, :value] + end + change_column :flipper_gates, :value, :text + add_index :flipper_gates, [:feature_key, :key, :value], unique: true, length: { value: 255 } + end + + def down + change_column :flipper_gates, :value, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index 42e4b6ac40..e212860c24 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -282,7 +282,7 @@ ActiveRecord::Schema[7.0].define(version: 2024_04_30_075133) do create_table "flipper_gates", id: :serial, force: :cascade do |t| t.string "feature_key", null: false t.string "key", null: false - t.string "value" + t.text "value" t.datetime "created_at", precision: nil, null: false t.datetime "updated_at", precision: nil, null: false t.index ["feature_key", "key", "value"], name: "index_flipper_gates_on_feature_key_and_key_and_value", unique: true From ea0558c70e11f031baa4f67dc3cc9c79dc33e127 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 23 Apr 2024 15:02:45 +1000 Subject: [PATCH 057/319] Replace Flipper's built-in test helper It fails in CI and features are not seen as enabled. So we copy the important part of the test helper into our code, which works. It's probably about the point in time when the adapter is instantiated. --- config/initializers/flipper.rb | 17 ++++++++++++++++- spec/base_spec_helper.rb | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/config/initializers/flipper.rb b/config/initializers/flipper.rb index 4a4aecaf25..446ac3ee70 100644 --- a/config/initializers/flipper.rb +++ b/config/initializers/flipper.rb @@ -2,8 +2,23 @@ require "flipper" require "flipper/adapters/active_record" require "open_food_network/feature_toggle" -Flipper.register(:admins) { |actor| actor.respond_to?(:admin?) && actor.admin? } +Rails.application.configure do + # Disable Flipper's built-in test helper. + # It fails in CI and feature don't get activated. + config.flipper.test_help = false +end +Flipper.configure do |flipper| + # Still use recommended test setup with faster memory adapter: + if Rails.env.test? + # Use a shared Memory adapter for all tests. The adapter is instantiated + # outside of the block so the same instance is returned in new threads. + adapter = Flipper::Adapters::Memory.new + flipper.adapter { adapter } + end +end + +Flipper.register(:admins) { |actor| actor.respond_to?(:admin?) && actor.admin? } Flipper::UI.configure do |config| config.descriptions_source = ->(_keys) do # return has to be hash of {String key => String description} diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb index 1238281f00..42ce4e6ad6 100644 --- a/spec/base_spec_helper.rb +++ b/spec/base_spec_helper.rb @@ -102,7 +102,7 @@ RSpec.configure do |config| end # Reset all feature toggles to prevent leaking. - config.before(:suite) do + config.before(:each) do Flipper.features.each(&:remove) OpenFoodNetwork::FeatureToggle.setup! end From 2e004a026b8be846d12075382b201ab56b0df8c7 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 2 May 2024 11:54:34 +1000 Subject: [PATCH 058/319] Update all locales with the latest Transifex translations --- config/locales/ar.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 0c276b3617..9f2d3b657d 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -1129,7 +1129,16 @@ ar: add_new: اضف جديد no_voucher_yet: لا قسائم حتى الآن connected_apps: + tagline: "By clicking ‘Allow data sharing’, you are sharing data between Open Food Network and the Discover Regenerative Portal, and agreeing to make specific data public on the Portal, which will also be publicly available on the API.\nIMPORTANT: Before you stop sharing and remove your listing, please first contact hello@regenerative.org.au to request a copy of your Discover Regenerative data." loading: "جار التحميل" + description_html: | +

+ Discover Regenerative is a showcase of Australia’s Regenerative Farmers, their produce/products, outcomes and achievements. It simplifies how business-to-business (B2B) / wholesale buyers can find regenerative produce and directly connect with Producers. +

+

+ Visit Discover Regenerative + +

actions: edit_profile: الإعدادات properties: الخصائص From 03c35aaeaf7db2700fd80a08952012d2416d8c99 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 2 May 2024 11:59:43 +1000 Subject: [PATCH 059/319] Remove tag template from link to draft release The release tag was pre-filled with `v` which was meant to help you type the release number. But I observed multiple times now that an actual tag named `v` was created. That tag can be quite annoying in the history. So let's remove this tiny help to avoid mistakes. I personally use `script/release/tag` which pre-fills the next tag already. [skip ci] --- .github/ISSUE_TEMPLATE/release.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/release.md b/.github/ISSUE_TEMPLATE/release.md index caf9fb39b8..7ff900d243 100644 --- a/.github/ISSUE_TEMPLATE/release.md +++ b/.github/ISSUE_TEMPLATE/release.md @@ -45,7 +45,7 @@ The full process is described at https://github.com/openfoodfoundation/openfoodn [Ready To Go]: https://github.com/orgs/openfoodfoundation/projects/8?filterQuery=status%3A%22Ready+to+go+%F0%9F%9A%80%22 [Transifex pull request]: https://github.com/openfoodfoundation/openfoodnetwork/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+head%3Atransifex -[Draft new release]: https://github.com/openfoodfoundation/openfoodnetwork/releases/new?tag=v&title=v+Code+Name&body=Congrats%0A%0ADescription%0A%0A +[Draft new release]: https://github.com/openfoodfoundation/openfoodnetwork/releases/new?title=v+Code+Name&body=Congrats%0A%0ADescription%0A%0A [releases]: https://github.com/openfoodfoundation/openfoodnetwork/releases [#instance-managers]: https://app.slack.com/client/T02G54U79/CG7NJ966B [#testing]: https://openfoodnetwork.slack.com/app_redirect?channel=C02TZ6X00 From b0a89372abec8d16e657327c796e596b33aa554e Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 2 May 2024 15:55:16 +1000 Subject: [PATCH 060/319] Update links to n8n server --- db/migrate/20240502035220_update_n8n_url.rb | 17 +++++++ .../20240502035220_update_n8n_url_spec.rb | 50 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 db/migrate/20240502035220_update_n8n_url.rb create mode 100644 spec/migrations/20240502035220_update_n8n_url_spec.rb diff --git a/db/migrate/20240502035220_update_n8n_url.rb b/db/migrate/20240502035220_update_n8n_url.rb new file mode 100644 index 0000000000..df2aaf16e7 --- /dev/null +++ b/db/migrate/20240502035220_update_n8n_url.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +# We got a new n8n server. +# But we still have some database rows with a URL to the old server. +class UpdateN8nUrl < ActiveRecord::Migration[7.0] + def up + execute <<~SQL.squish + UPDATE connected_apps + SET data = replace( + data::text, + 'n8n.openfoodnetwork.org.uk', + 'n8n.openfoodnetwork.org' + )::jsonb + WHERE data IS NOT NULL; + SQL + end +end diff --git a/spec/migrations/20240502035220_update_n8n_url_spec.rb b/spec/migrations/20240502035220_update_n8n_url_spec.rb new file mode 100644 index 0000000000..9735f1126d --- /dev/null +++ b/spec/migrations/20240502035220_update_n8n_url_spec.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true + +require 'spec_helper' +require_relative '../../db/migrate/20240502035220_update_n8n_url' + +describe UpdateN8nUrl do + # We may want to move this to a support file if this syntax is useful in + # other places. Reference: + # - https://stackoverflow.com/a/34969429/3377535 + RSpec::Matchers.define_negated_matcher :not_change, :change + + let(:enterprise) { create(:enterprise) } + let(:old_data) { + { + link: "https://link-to-form", + destroy: "https://n8n.openfoodnetwork.org.uk/webhook/remove-enterprise?key=abc&id=123", + } + } + let(:new_data) { + { + link: "https://link-to-form", + destroy: "https://n8n.openfoodnetwork.org/webhook/remove-enterprise?key=abc&id=123", + } + } + + it "updates old connected app links" do + app = ConnectedApp.create!(enterprise:, data: old_data,) + + expect { + subject.up + app.reload + }.to change { + app.data["destroy"] + }.to("https://n8n.openfoodnetwork.org/webhook/remove-enterprise?key=abc&id=123") + .and not_change { + app.data["link"] + } + end + + it "keeps new connected app links" do + app = ConnectedApp.create!(enterprise:, data: new_data,) + + expect { + subject.up + app.reload + }.not_to change { + app.data + } + end +end From 409492ce33e9abc69e4f8c4a8cefa5cc05f220c3 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 2 May 2024 16:34:11 +1000 Subject: [PATCH 061/319] Explicitely require all rubocop extensions I think that rspec-rails loaded the other extensions already but Rubocop was suggesting these extensions to be loaded as well. The alternative is to disable suggestions of new extensions but that could hide new shiny tools when they become available. --- .rubocop.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.rubocop.yml b/.rubocop.yml index 937a2acf17..93d9f9bd81 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -5,8 +5,12 @@ # The configuration is split into three files. Look into those files for more details. # require: + - rubocop-capybara + - rubocop-factory_bot - rubocop-rails - rubocop-rspec + - rubocop-rspec_rails + inherit_from: # The automatically generated todo list to ignore all current violations. From a75f3245a048176b162b9408505ef2b44f3ef9bc Mon Sep 17 00:00:00 2001 From: Maikel Date: Fri, 3 May 2024 15:07:47 +1000 Subject: [PATCH 062/319] Revert "Fix Duplicate Language Display on New User Creation" --- lib/open_food_network/i18n_config.rb | 2 +- spec/lib/open_food_network/i18n_config_spec.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/open_food_network/i18n_config.rb b/lib/open_food_network/i18n_config.rb index 838a4308cb..d0d71d0450 100644 --- a/lib/open_food_network/i18n_config.rb +++ b/lib/open_food_network/i18n_config.rb @@ -17,7 +17,7 @@ module OpenFoodNetwork # All locales that can be accessed by the application, including fallbacks. def self.available_locales - (selectable_locales + [default_locale]).uniq + (selectable_locales + [default_locale, source_locale]).uniq end # The default locale that is used when the user doesn't have a preference. diff --git a/spec/lib/open_food_network/i18n_config_spec.rb b/spec/lib/open_food_network/i18n_config_spec.rb index 457ce35a49..b69aa8b745 100644 --- a/spec/lib/open_food_network/i18n_config_spec.rb +++ b/spec/lib/open_food_network/i18n_config_spec.rb @@ -77,7 +77,7 @@ module OpenFoodNetwork end it "provides the default available locales" do - expect(I18nConfig.available_locales).to eq ["en_GB"] + expect(I18nConfig.available_locales).to eq ["en_GB", "en"] end end @@ -92,7 +92,7 @@ module OpenFoodNetwork end it "provides the default available locales" do - expect(I18nConfig.available_locales).to eq ["es", "fr", "de"] + expect(I18nConfig.available_locales).to eq ["es", "fr", "de", "en"] end end end From 30f9f265c352096dea02a328f2a0f629d8ff0bf0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 May 2024 09:53:27 +0000 Subject: [PATCH 063/319] chore(deps): bump trix from 2.1.0 to 2.1.1 Bumps [trix](https://github.com/basecamp/trix) from 2.1.0 to 2.1.1. - [Release notes](https://github.com/basecamp/trix/releases) - [Commits](https://github.com/basecamp/trix/compare/v2.1.0...v2.1.1) --- updated-dependencies: - dependency-name: trix dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 7fd986452a..dbe3b2a654 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "stimulus-flatpickr": "^1.4.0", "stimulus_reflex": "3.5.0-rc3", "tom-select": "^2.3.1", - "trix": "^2.1.0", + "trix": "^2.1.1", "webpack": "~4" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index fae60f63a2..a523b9b54a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8803,10 +8803,10 @@ tr46@^2.1.0: dependencies: punycode "^2.1.1" -trix@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/trix/-/trix-2.1.0.tgz#da9daddded6ee0cb2ba5676246bb343e1d45eaab" - integrity sha512-TPhgGvIjM1VqcfoR/OQQERRlMDuEw7UBIoGroJGuiTmu5yqk5KqR29ZzPgGIoOJgsqoAgxGUCK92+CRJLoO43Q== +trix@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/trix/-/trix-2.1.1.tgz#688f1213601316cf8b92c5e625d2f562c118c780" + integrity sha512-IljOMGOlRUPg1i5Pk/+x/Ia65ZY7Gw5JxxKCh/4caxG5ZaKuFJCKdn1+TF0efUYfdg+bqWenB/mAYCHjZu0zpQ== ts-pnp@^1.1.6: version "1.2.0" From ca5f1964477f63034c4233e4ec5fd3aabe25e50a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 09:08:35 +0000 Subject: [PATCH 064/319] chore(deps-dev): bump spring from 4.2.0 to 4.2.1 Bumps [spring](https://github.com/rails/spring) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/rails/spring/releases) - [Changelog](https://github.com/rails/spring/blob/main/CHANGELOG.md) - [Commits](https://github.com/rails/spring/compare/v4.2.0...v4.2.1) --- updated-dependencies: - dependency-name: spring dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 233b372b94..8ed6b51c08 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -718,7 +718,7 @@ GEM spreadsheet_architect (5.0.0) caxlsx (>= 3.3.0, < 4) rodf (>= 1.0.0, < 2) - spring (4.2.0) + spring (4.2.1) spring-commands-rspec (1.0.4) spring (>= 0.9.1) spring-commands-rubocop (0.4.0) From b7b8efbc69d21798c58c9cf71aa9599dc3d8d915 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 09:50:09 +0000 Subject: [PATCH 065/319] chore(deps): bump @floating-ui/dom from 1.6.4 to 1.6.5 Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.6.4 to 1.6.5. - [Release notes](https://github.com/floating-ui/floating-ui/releases) - [Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md) - [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.6.5/packages/dom) --- updated-dependencies: - dependency-name: "@floating-ui/dom" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index dbe3b2a654..11d984c172 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "pretty-quick": "pretty-quick" }, "dependencies": { - "@floating-ui/dom": "^1.6.4", + "@floating-ui/dom": "^1.6.5", "@hotwired/turbo": "^8.0.4", "@rails/webpacker": "5.4.4", "@stimulus-components/rails-nested-form": "^5.0.0", diff --git a/yarn.lock b/yarn.lock index a523b9b54a..ec2125d824 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1099,10 +1099,10 @@ dependencies: "@floating-ui/utils" "^0.2.1" -"@floating-ui/dom@^1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.4.tgz#3a9d1f3b7ccdab89a4ca05713acc6204b1f67a29" - integrity sha512-0G8R+zOvQsAG1pg2Q99P21jiqxqGBW1iRe/iXHsBRBxnpXKFI8QwbB4x5KmYLggNO5m34IQgOIu9SCRfR/WWiQ== +"@floating-ui/dom@^1.6.5": + version "1.6.5" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.5.tgz#323f065c003f1d3ecf0ff16d2c2c4d38979f4cb9" + integrity sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw== dependencies: "@floating-ui/core" "^1.0.0" "@floating-ui/utils" "^0.2.0" From 8be8518bc4a729ebcfa2694d0191911dde695e28 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 May 2024 09:59:45 +0000 Subject: [PATCH 066/319] chore(deps): bump flipper, flipper-active_record and flipper-ui Bumps [flipper](https://github.com/flippercloud/flipper), [flipper-active_record](https://github.com/flippercloud/flipper) and [flipper-ui](https://github.com/flippercloud/flipper). These dependencies needed to be updated together. Updates `flipper` from 1.2.2 to 1.3.0 - [Release notes](https://github.com/flippercloud/flipper/releases) - [Changelog](https://github.com/flippercloud/flipper/blob/main/Changelog.md) - [Commits](https://github.com/flippercloud/flipper/compare/v1.2.2...v1.3.0) Updates `flipper-active_record` from 1.2.2 to 1.3.0 - [Release notes](https://github.com/flippercloud/flipper/releases) - [Changelog](https://github.com/flippercloud/flipper/blob/main/Changelog.md) - [Commits](https://github.com/flippercloud/flipper/compare/v1.2.2...v1.3.0) Updates `flipper-ui` from 1.2.2 to 1.3.0 - [Release notes](https://github.com/flippercloud/flipper/releases) - [Changelog](https://github.com/flippercloud/flipper/blob/main/Changelog.md) - [Commits](https://github.com/flippercloud/flipper/compare/v1.2.2...v1.3.0) --- updated-dependencies: - dependency-name: flipper dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: flipper-active_record dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: flipper-ui dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 8ed6b51c08..0b6053caa1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -286,16 +286,17 @@ GEM websocket-driver (>= 0.6, < 0.8) ffaker (2.23.0) ffi (1.16.3) - flipper (1.2.2) + flipper (1.3.0) concurrent-ruby (< 2) - flipper-active_record (1.2.2) + flipper-active_record (1.3.0) activerecord (>= 4.2, < 8) - flipper (~> 1.2.2) - flipper-ui (1.2.2) + flipper (~> 1.3.0) + flipper-ui (1.3.0) erubi (>= 1.0.0, < 2.0.0) - flipper (~> 1.2.2) + flipper (~> 1.3.0) rack (>= 1.4, < 4) - rack-protection (>= 1.5.3, <= 4.0.0) + rack-protection (>= 1.5.3, < 5.0.0) + rack-session (>= 1.0.2, < 3.0.0) sanitize (< 7) fog-aws (2.0.1) fog-core (~> 1.38) @@ -523,6 +524,8 @@ GEM rack-proxy (0.7.6) rack rack-rewrite (1.5.1) + rack-session (1.0.2) + rack (< 3) rack-test (2.1.0) rack (>= 1.3) rack-timeout (0.6.3) From 2fdaa8b9ec37fceb2e1647864a9f694ce73fbe66 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 19 Apr 2024 02:05:46 +0500 Subject: [PATCH 067/319] 11060 - implement the scenario 2 and 3 --- app/services/permitted_attributes/product.rb | 1 + app/views/admin/products_v3/_content.html.haml | 2 +- app/views/admin/products_v3/_product_row.html.haml | 7 ++++--- app/views/admin/products_v3/_table.html.haml | 2 +- app/webpacker/css/admin/products_v3.scss | 6 ------ 5 files changed, 7 insertions(+), 11 deletions(-) diff --git a/app/services/permitted_attributes/product.rb b/app/services/permitted_attributes/product.rb index 1adc8ff7d9..fdb82d6421 100644 --- a/app/services/permitted_attributes/product.rb +++ b/app/services/permitted_attributes/product.rb @@ -10,6 +10,7 @@ module PermittedAttributes :display_as, :sku, :group_buy, :group_buy_unit_size, :taxon_ids, :primary_taxon_id, :tax_category_id, :meta_keywords, :notes, :inherits_properties, + :supplier_id, { product_properties_attributes: [:id, :property_name, :value], variants_attributes: [PermittedAttributes::Variant.attributes], image_attributes: [:attachment] } diff --git a/app/views/admin/products_v3/_content.html.haml b/app/views/admin/products_v3/_content.html.haml index dcb29e945f..df6860f6ba 100644 --- a/app/views/admin/products_v3/_content.html.haml +++ b/app/views/admin/products_v3/_content.html.haml @@ -15,7 +15,7 @@ .container.results .sixteen.columns = render partial: 'sort', locals: { pagy: pagy, search_term: search_term, producer_id: producer_id, category_id: category_id } - = render partial: 'table', locals: { products: products } + = render partial: 'table', locals: { products:, producer_options: } - if pagy.present? && pagy.pages > 1 = render partial: 'admin/shared/stimulus_pagination', locals: { pagy: pagy } - else diff --git a/app/views/admin/products_v3/_product_row.html.haml b/app/views/admin/products_v3/_product_row.html.haml index 5e11301a5e..a251f8d4f5 100644 --- a/app/views/admin/products_v3/_product_row.html.haml +++ b/app/views/admin/products_v3/_product_row.html.haml @@ -9,7 +9,7 @@ %td.field.naked_inputs = f.text_field :sku, 'aria-label': t('admin.products_page.columns.sku') = error_message_on product, :sku -%td.multi-field.naked_inputs{ 'data-controller': 'toggle-control', 'data-toggle-control-match-value': 'items' } +%td.field.naked_inputs{ 'data-controller': 'toggle-control', 'data-toggle-control-match-value': 'items' } = f.hidden_field :variant_unit = f.hidden_field :variant_unit_scale = f.select :variant_unit_with_scale, @@ -27,8 +27,9 @@ -# empty %td.align-right -# empty -%td.align-left - .content= product.supplier&.name +%td.naked_inputs.align-left + = f.select :supplier_id, options_for_select(producer_options, product.supplier&.id), {}, + data: { "controller": "tom-select", 'tom-select-placeholder-value': t('admin.products_v3.filters.search_for_producers')} %td.align-left -# empty %td.align-left diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 78d32be8b2..0c755b5aaa 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -66,7 +66,7 @@ controller: "nested-form product", action: 'rails-nested-form:add->bulk-form#registerElements' } } %tr - = render partial: 'product_row', locals: { product:, f: product_form } + = render partial: 'product_row', locals: { f: product_form, product:, producer_options: } - product.variants.each_with_index do |variant, variant_index| = form.fields_for("products][#{product_index}][variants_attributes][", variant, index: variant_index) do |variant_form| diff --git a/app/webpacker/css/admin/products_v3.scss b/app/webpacker/css/admin/products_v3.scss index 8cb8ccbce2..115512ce36 100644 --- a/app/webpacker/css/admin/products_v3.scss +++ b/app/webpacker/css/admin/products_v3.scss @@ -170,12 +170,6 @@ .field { padding: 0; } - .multi-field { - // Allow wrap with small gap - display: flex; - flex-wrap: wrap; - gap: 3px; - } .ts-control { z-index: 0; // Avoid hovering over thead From ec4b920f8bb6b7e4f3de876d9645c9dc3eee336e Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 19 Apr 2024 02:09:29 +0500 Subject: [PATCH 068/319] 11060 - implement scenario 1 --- app/views/admin/products_v3/_product_row.html.haml | 7 ++++--- app/views/admin/products_v3/_table.html.haml | 9 +++++---- app/views/admin/products_v3/_variant_row.html.haml | 5 +++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/app/views/admin/products_v3/_product_row.html.haml b/app/views/admin/products_v3/_product_row.html.haml index a251f8d4f5..889b95fd43 100644 --- a/app/views/admin/products_v3/_product_row.html.haml +++ b/app/views/admin/products_v3/_product_row.html.haml @@ -27,9 +27,10 @@ -# empty %td.align-right -# empty -%td.naked_inputs.align-left - = f.select :supplier_id, options_for_select(producer_options, product.supplier&.id), {}, - data: { "controller": "tom-select", 'tom-select-placeholder-value': t('admin.products_v3.filters.search_for_producers')} +- if producer_options.many? + %td.naked_inputs.align-left + = f.select :supplier_id, options_for_select(producer_options, product.supplier&.id), {}, + data: { "controller": "tom-select", 'tom-select-placeholder-value': t('admin.products_v3.filters.search_for_producers')} %td.align-left -# empty %td.align-left diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 0c755b5aaa..47fc94fd72 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -55,7 +55,8 @@ %th.align-left.with-input= t('admin.products_page.columns.unit') %th.align-left.with-input= t('admin.products_page.columns.price') %th.align-left.with-input= t('admin.products_page.columns.on_hand') - %th.align-left= t('admin.products_page.columns.producer') + - if producer_options.many? + %th.align-left= t('admin.products_page.columns.producer') %th.align-left= t('admin.products_page.columns.category') %th.align-left= t('admin.products_page.columns.tax_category') %th.align-left= t('admin.products_page.columns.inherits_properties') @@ -71,17 +72,17 @@ - product.variants.each_with_index do |variant, variant_index| = form.fields_for("products][#{product_index}][variants_attributes][", variant, index: variant_index) do |variant_form| %tr.condensed{ 'data-controller': "variant" } - = render partial: 'variant_row', locals: { variant:, f: variant_form } + = render partial: 'variant_row', locals: { variant:, f: variant_form, producer_options: } = form.fields_for("products][#{product_index}][variants_attributes][NEW_RECORD", product.variants.build) do |new_variant_form| %template{ 'data-nested-form-target': "template" } %tr.condensed{ 'data-controller': "variant" } - = render partial: 'variant_row', locals: { variant: new_variant_form.object, f: new_variant_form } + = render partial: 'variant_row', locals: { variant: new_variant_form.object, f: new_variant_form, producer_options: } %tr{ 'data-nested-form-target': "target" } %tr.condensed %td - %td{ colspan: 11 } + %td{ colspan: producer_options.many? ? 11 : 10 } %button.secondary.condensed.naked.icon-plus{ 'data-action': "nested-form#add", 'aria-label': t('.new_variant') } =t('.new_variant') diff --git a/app/views/admin/products_v3/_variant_row.html.haml b/app/views/admin/products_v3/_variant_row.html.haml index 97646ec1ba..a99badd55a 100644 --- a/app/views/admin/products_v3/_variant_row.html.haml +++ b/app/views/admin/products_v3/_variant_row.html.haml @@ -39,8 +39,9 @@ = f.label :on_demand do = f.check_box :on_demand, 'data-action': 'change->toggle-control#disableIfPresent change->popout#closeIfChecked' = t(:on_demand) -%td.align-left - .content= variant.product.supplier&.name # same as product +- if producer_options.many? + %td.align-left + .content= variant.product.supplier&.name # same as product %td.align-left .content= variant.primary_taxon&.name %td.align-left From 4360ddde036f648a66a2004dcb1e51ed8f103fd3 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 19 Apr 2024 13:20:03 +0500 Subject: [PATCH 069/319] 11060 - add variant categories dropdown --- app/views/admin/products_v3/_content.html.haml | 2 +- app/views/admin/products_v3/_table.html.haml | 4 ++-- app/views/admin/products_v3/_variant_row.html.haml | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/views/admin/products_v3/_content.html.haml b/app/views/admin/products_v3/_content.html.haml index df6860f6ba..1b50fa3f10 100644 --- a/app/views/admin/products_v3/_content.html.haml +++ b/app/views/admin/products_v3/_content.html.haml @@ -15,7 +15,7 @@ .container.results .sixteen.columns = render partial: 'sort', locals: { pagy: pagy, search_term: search_term, producer_id: producer_id, category_id: category_id } - = render partial: 'table', locals: { products:, producer_options: } + = render partial: 'table', locals: { products:, producer_options:, category_options: } - if pagy.present? && pagy.pages > 1 = render partial: 'admin/shared/stimulus_pagination', locals: { pagy: pagy } - else diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 47fc94fd72..b95c9f5187 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -72,12 +72,12 @@ - product.variants.each_with_index do |variant, variant_index| = form.fields_for("products][#{product_index}][variants_attributes][", variant, index: variant_index) do |variant_form| %tr.condensed{ 'data-controller': "variant" } - = render partial: 'variant_row', locals: { variant:, f: variant_form, producer_options: } + = render partial: 'variant_row', locals: { variant:, f: variant_form, producer_options:, category_options: } = form.fields_for("products][#{product_index}][variants_attributes][NEW_RECORD", product.variants.build) do |new_variant_form| %template{ 'data-nested-form-target': "template" } %tr.condensed{ 'data-controller': "variant" } - = render partial: 'variant_row', locals: { variant: new_variant_form.object, f: new_variant_form, producer_options: } + = render partial: 'variant_row', locals: { variant: new_variant_form.object, f: new_variant_form, producer_options:, category_options: } %tr{ 'data-nested-form-target': "target" } %tr.condensed diff --git a/app/views/admin/products_v3/_variant_row.html.haml b/app/views/admin/products_v3/_variant_row.html.haml index a99badd55a..8ea77ca01f 100644 --- a/app/views/admin/products_v3/_variant_row.html.haml +++ b/app/views/admin/products_v3/_variant_row.html.haml @@ -43,7 +43,8 @@ %td.align-left .content= variant.product.supplier&.name # same as product %td.align-left - .content= variant.primary_taxon&.name + = f.select :primary_taxon_id, options_for_select(category_options, variant.primary_taxon_id), {}, + data: { "controller": "tom-select", 'tom-select-placeholder-value': t('admin.products_v3.filters.search_for_categories')} %td.align-left .content= (variant.tax_category_id ? variant.tax_category&.name : t('.none_tax_category')) # TODO: convert to dropdown %td.align-left From 5050c2e02bafacffc7ef5560159090754a769379 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 19 Apr 2024 13:27:39 +0500 Subject: [PATCH 070/319] 11060 - remove producer name from variant --- app/views/admin/products_v3/_variant_row.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/products_v3/_variant_row.html.haml b/app/views/admin/products_v3/_variant_row.html.haml index 8ea77ca01f..9e19c693ed 100644 --- a/app/views/admin/products_v3/_variant_row.html.haml +++ b/app/views/admin/products_v3/_variant_row.html.haml @@ -41,7 +41,7 @@ = t(:on_demand) - if producer_options.many? %td.align-left - .content= variant.product.supplier&.name # same as product + -# empty producer name %td.align-left = f.select :primary_taxon_id, options_for_select(category_options, variant.primary_taxon_id), {}, data: { "controller": "tom-select", 'tom-select-placeholder-value': t('admin.products_v3.filters.search_for_categories')} From b577a81f48334393f672a30141a6b7d6e388b464 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 19 Apr 2024 17:54:14 +0500 Subject: [PATCH 071/319] 11060 - add tax category field --- app/controllers/admin/products_v3_controller.rb | 6 +++++- app/views/admin/products_v3/_content.html.haml | 2 +- app/views/admin/products_v3/_table.html.haml | 4 ++-- app/views/admin/products_v3/_variant_row.html.haml | 7 ++++--- app/views/admin/products_v3/index.html.haml | 2 +- app/webpacker/controllers/bulk_form_controller.js | 9 ++++++++- config/locales/en.yml | 1 + 7 files changed, 22 insertions(+), 9 deletions(-) diff --git a/app/controllers/admin/products_v3_controller.rb b/app/controllers/admin/products_v3_controller.rb index 667706aeba..168fa001d0 100644 --- a/app/controllers/admin/products_v3_controller.rb +++ b/app/controllers/admin/products_v3_controller.rb @@ -7,7 +7,7 @@ module Admin def index fetch_products - render "index", locals: { producers:, categories:, flash: } + render "index", locals: { producers:, categories:, tax_category_options:, flash: } end def bulk_update @@ -59,6 +59,10 @@ module Admin Spree::Taxon.order(:name).map { |c| [c.name, c.id] } end + def tax_category_options + Spree::TaxCategory.order(:name).pluck(:name, :id) + end + def fetch_products product_query = OpenFoodNetwork::Permissions.new(spree_current_user) .editable_products.merge(product_scope).ransack(ransack_query).result diff --git a/app/views/admin/products_v3/_content.html.haml b/app/views/admin/products_v3/_content.html.haml index 1b50fa3f10..0a9459abae 100644 --- a/app/views/admin/products_v3/_content.html.haml +++ b/app/views/admin/products_v3/_content.html.haml @@ -15,7 +15,7 @@ .container.results .sixteen.columns = render partial: 'sort', locals: { pagy: pagy, search_term: search_term, producer_id: producer_id, category_id: category_id } - = render partial: 'table', locals: { products:, producer_options:, category_options: } + = render partial: 'table', locals: { products:, producer_options:, category_options:, tax_category_options: } - if pagy.present? && pagy.pages > 1 = render partial: 'admin/shared/stimulus_pagination', locals: { pagy: pagy } - else diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index b95c9f5187..4c0538e43c 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -72,12 +72,12 @@ - product.variants.each_with_index do |variant, variant_index| = form.fields_for("products][#{product_index}][variants_attributes][", variant, index: variant_index) do |variant_form| %tr.condensed{ 'data-controller': "variant" } - = render partial: 'variant_row', locals: { variant:, f: variant_form, producer_options:, category_options: } + = render partial: 'variant_row', locals: { variant:, f: variant_form, producer_options:, category_options:, tax_category_options: } = form.fields_for("products][#{product_index}][variants_attributes][NEW_RECORD", product.variants.build) do |new_variant_form| %template{ 'data-nested-form-target': "template" } %tr.condensed{ 'data-controller': "variant" } - = render partial: 'variant_row', locals: { variant: new_variant_form.object, f: new_variant_form, producer_options:, category_options: } + = render partial: 'variant_row', locals: { variant: new_variant_form.object, f: new_variant_form, producer_options:, category_options:, tax_category_options: } %tr{ 'data-nested-form-target': "target" } %tr.condensed diff --git a/app/views/admin/products_v3/_variant_row.html.haml b/app/views/admin/products_v3/_variant_row.html.haml index 9e19c693ed..2a243025ee 100644 --- a/app/views/admin/products_v3/_variant_row.html.haml +++ b/app/views/admin/products_v3/_variant_row.html.haml @@ -42,11 +42,12 @@ - if producer_options.many? %td.align-left -# empty producer name -%td.align-left +%td.field.naked_inputs = f.select :primary_taxon_id, options_for_select(category_options, variant.primary_taxon_id), {}, data: { "controller": "tom-select", 'tom-select-placeholder-value': t('admin.products_v3.filters.search_for_categories')} -%td.align-left - .content= (variant.tax_category_id ? variant.tax_category&.name : t('.none_tax_category')) # TODO: convert to dropdown +%td.field.naked_inputs + = f.select :tax_category_id, options_for_select(tax_category_options, variant.tax_category_id), {include_blank: t('.none_tax_category')}, + data: { "controller": "tom-select", 'tom-select-placeholder-value': t('.search_for_tax_categories')} %td.align-left -# empty %td.align-right diff --git a/app/views/admin/products_v3/index.html.haml b/app/views/admin/products_v3/index.html.haml index 4200cd0176..5087feddc2 100644 --- a/app/views/admin/products_v3/index.html.haml +++ b/app/views/admin/products_v3/index.html.haml @@ -15,7 +15,7 @@ = render partial: "content", locals: { products: @products, pagy: @pagy, search_term: @search_term, producer_options: producers, producer_id: @producer_id, category_options: categories, category_id: @category_id, - flashes: flash } + tax_category_options:, flashes: flash } - %w[product variant].each do |object_type| = render partial: 'delete_modal', locals: { object_type: } #modal-component diff --git a/app/webpacker/controllers/bulk_form_controller.js b/app/webpacker/controllers/bulk_form_controller.js index 602f7c0127..54a8a812df 100644 --- a/app/webpacker/controllers/bulk_form_controller.js +++ b/app/webpacker/controllers/bulk_form_controller.js @@ -135,10 +135,17 @@ export default class BulkFormController extends Controller { if (element.type == "checkbox") { return element.defaultChecked !== undefined && element.checked != element.defaultChecked; } else if (element.type == "select-one") { + // (weird) Behavior of select element's include_blank option in Rails: + // If a select field has include_blank option selected (its value will be ''), + // its respective option doesn't have the selected attribute + // but selectedOptions have that option present const defaultSelected = Array.from(element.options).find((opt) => opt.hasAttribute("selected"), ); - return element.selectedOptions[0] != defaultSelected; + const selectedOption = element.selectedOptions[0]; + const areBothBlank = selectedOption.value === '' && defaultSelected === undefined + + return !areBothBlank && selectedOption !== defaultSelected; } else { return element.defaultValue !== undefined && element.value != element.defaultValue; } diff --git a/config/locales/en.yml b/config/locales/en.yml index 1fe516fee8..f17baa2601 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -910,6 +910,7 @@ en: error: Unable to delete the variant variant_row: none_tax_category: None + search_for_tax_categories: "Search for tax categories" product_import: title: Product Import file_not_found: File not found or could not be opened From c153ff75f38fd8657436f9b9ad4cb6217d8f3759 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 19 Apr 2024 20:50:22 +0500 Subject: [PATCH 072/319] 11060 - add searchable dropdown component --- .../searchable_dropdown_component.rb | 41 +++++++++++++++++++ .../searchable_dropdown_component.html.haml | 1 + 2 files changed, 42 insertions(+) create mode 100644 app/components/searchable_dropdown_component.rb create mode 100644 app/components/searchable_dropdown_component/searchable_dropdown_component.html.haml diff --git a/app/components/searchable_dropdown_component.rb b/app/components/searchable_dropdown_component.rb new file mode 100644 index 0000000000..7a6992504e --- /dev/null +++ b/app/components/searchable_dropdown_component.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +class SearchableDropdownComponent < ViewComponent::Base + REMOVED_SEARCH_PLUGIN = {"tom-select-options-value": '{ "plugins": [] }'}.freeze + MINIMUM_OPTIONS_FOR_SEARCH_FILED = 11.freeze # at least 11 options are required for the search field + + def initialize( + form:, + name:, + options:, + selected_option:, + placeholder_value:, + include_blank: false + ) + @f = form + @name = name + @options = options + @selected_option = selected_option + @placeholder_value = placeholder_value + @include_blank = include_blank + end + + private + + attr_reader :f, :name, :options, :selected_option, :placeholder_value, :include_blank + + def classes + "fullwidth #{remove_search_plugin? ? 'no-input' : ''}" + end + + def data + { + "controller": "tom-select", + 'tom-select-placeholder-value': placeholder_value + }.merge(remove_search_plugin? ? REMOVED_SEARCH_PLUGIN : {}) + end + + def remove_search_plugin? + @should_remove_search_plugin ||= options.count < MINIMUM_OPTIONS_FOR_SEARCH_FILED + end +end diff --git a/app/components/searchable_dropdown_component/searchable_dropdown_component.html.haml b/app/components/searchable_dropdown_component/searchable_dropdown_component.html.haml new file mode 100644 index 0000000000..fbff09f1bf --- /dev/null +++ b/app/components/searchable_dropdown_component/searchable_dropdown_component.html.haml @@ -0,0 +1 @@ += f.select name, options_for_select(options, selected_option), { include_blank: }, class: classes, data: From f6efd47af2984d09426abf0b7e3e0d0759ca7755 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 19 Apr 2024 20:53:08 +0500 Subject: [PATCH 073/319] 11060 - use SearchableDropdownComponent for producer names --- app/views/admin/products_v3/_product_row.html.haml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/views/admin/products_v3/_product_row.html.haml b/app/views/admin/products_v3/_product_row.html.haml index 889b95fd43..eae60c0d9e 100644 --- a/app/views/admin/products_v3/_product_row.html.haml +++ b/app/views/admin/products_v3/_product_row.html.haml @@ -29,8 +29,11 @@ -# empty - if producer_options.many? %td.naked_inputs.align-left - = f.select :supplier_id, options_for_select(producer_options, product.supplier&.id), {}, - data: { "controller": "tom-select", 'tom-select-placeholder-value': t('admin.products_v3.filters.search_for_producers')} + = render(SearchableDropdownComponent.new(form: f, + name: :supplier_id, + options: producer_options, + selected_option: product.supplier_id, + placeholder_value: t('admin.products_v3.filters.search_for_producers'))) %td.align-left -# empty %td.align-left From aad48b4670079ea931432f85bf622ff38791c2cf Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sat, 20 Apr 2024 00:20:58 +0500 Subject: [PATCH 074/319] 11060 - use SearchableDropdownComponent for categories or tax categories --- .../admin/products_v3/_variant_row.html.haml | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/app/views/admin/products_v3/_variant_row.html.haml b/app/views/admin/products_v3/_variant_row.html.haml index 2a243025ee..47117fa3cb 100644 --- a/app/views/admin/products_v3/_variant_row.html.haml +++ b/app/views/admin/products_v3/_variant_row.html.haml @@ -43,11 +43,18 @@ %td.align-left -# empty producer name %td.field.naked_inputs - = f.select :primary_taxon_id, options_for_select(category_options, variant.primary_taxon_id), {}, - data: { "controller": "tom-select", 'tom-select-placeholder-value': t('admin.products_v3.filters.search_for_categories')} + = render(SearchableDropdownComponent.new(form: f, + name: :primary_taxon_id, + options: category_options, + selected_option: variant.primary_taxon_id, + placeholder_value: t('admin.products_v3.filters.search_for_categories'))) %td.field.naked_inputs - = f.select :tax_category_id, options_for_select(tax_category_options, variant.tax_category_id), {include_blank: t('.none_tax_category')}, - data: { "controller": "tom-select", 'tom-select-placeholder-value': t('.search_for_tax_categories')} + = render(SearchableDropdownComponent.new(form: f, + name: :tax_category_id, + options: tax_category_options, + selected_option: variant.tax_category_id, + include_blank: t('.none_tax_category'), + placeholder_value: t('.search_for_tax_categories'))) %td.align-left -# empty %td.align-right From da34e7b780cc26c598166e06da60fc3608b59a0c Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Mon, 22 Apr 2024 01:35:28 +0500 Subject: [PATCH 075/319] 11060 - fix undefined method tax_category_options error in specs --- app/controllers/admin/products_v3_controller.rb | 3 ++- app/reflexes/products_reflex.rb | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/controllers/admin/products_v3_controller.rb b/app/controllers/admin/products_v3_controller.rb index 168fa001d0..92386e1231 100644 --- a/app/controllers/admin/products_v3_controller.rb +++ b/app/controllers/admin/products_v3_controller.rb @@ -24,7 +24,8 @@ module Admin elsif product_set.errors.present? @error_counts = { saved: product_set.saved_count, invalid: product_set.invalid.count } - render "index", status: :unprocessable_entity, locals: { producers:, categories:, flash: } + render "index", status: :unprocessable_entity, + locals: { producers:, categories:, tax_category_options:, flash: } end end diff --git a/app/reflexes/products_reflex.rb b/app/reflexes/products_reflex.rb index 9cad290331..a2800c83e4 100644 --- a/app/reflexes/products_reflex.rb +++ b/app/reflexes/products_reflex.rb @@ -89,7 +89,7 @@ class ProductsReflex < ApplicationReflex html: render(partial: "admin/products_v3/content", locals: { products: @products, pagy: @pagy, search_term: @search_term, producer_options: producers, producer_id: @producer_id, - category_options: categories, category_id: @category_id, + category_options: categories, tax_category_options:, category_id: @category_id, flashes: flash }) ) @@ -125,6 +125,10 @@ class ProductsReflex < ApplicationReflex Spree::Taxon.order(:name).map { |c| [c.name, c.id] } end + def tax_category_options + Spree::TaxCategory.order(:name).pluck(:name, :id) + end + def fetch_products product_query = OpenFoodNetwork::Permissions.new(current_user) .editable_products.merge(product_scope).ransack(ransack_query).result(distinct: true) From c12d6ab7f0769b1d893a4b4cdef91ed5455d7653 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Wed, 24 Apr 2024 02:44:32 +0500 Subject: [PATCH 076/319] 11060: revert 33b947be00563b67ca36475f277ceceaf8c68378 --- app/views/admin/products_v3/_product_row.html.haml | 13 ++++++------- app/views/admin/products_v3/_table.html.haml | 9 ++++----- app/views/admin/products_v3/_variant_row.html.haml | 5 ++--- spec/system/admin/products_v3/products_spec.rb | 2 +- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/app/views/admin/products_v3/_product_row.html.haml b/app/views/admin/products_v3/_product_row.html.haml index eae60c0d9e..06483a93df 100644 --- a/app/views/admin/products_v3/_product_row.html.haml +++ b/app/views/admin/products_v3/_product_row.html.haml @@ -27,13 +27,12 @@ -# empty %td.align-right -# empty -- if producer_options.many? - %td.naked_inputs.align-left - = render(SearchableDropdownComponent.new(form: f, - name: :supplier_id, - options: producer_options, - selected_option: product.supplier_id, - placeholder_value: t('admin.products_v3.filters.search_for_producers'))) +%td.naked_inputs.align-left + = render(SearchableDropdownComponent.new(form: f, + name: :supplier_id, + options: producer_options, + selected_option: product.supplier_id, + placeholder_value: t('admin.products_v3.filters.search_for_producers'))) %td.align-left -# empty %td.align-left diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 4c0538e43c..10b62f911e 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -55,8 +55,7 @@ %th.align-left.with-input= t('admin.products_page.columns.unit') %th.align-left.with-input= t('admin.products_page.columns.price') %th.align-left.with-input= t('admin.products_page.columns.on_hand') - - if producer_options.many? - %th.align-left= t('admin.products_page.columns.producer') + %th.align-left= t('admin.products_page.columns.producer') %th.align-left= t('admin.products_page.columns.category') %th.align-left= t('admin.products_page.columns.tax_category') %th.align-left= t('admin.products_page.columns.inherits_properties') @@ -72,17 +71,17 @@ - product.variants.each_with_index do |variant, variant_index| = form.fields_for("products][#{product_index}][variants_attributes][", variant, index: variant_index) do |variant_form| %tr.condensed{ 'data-controller': "variant" } - = render partial: 'variant_row', locals: { variant:, f: variant_form, producer_options:, category_options:, tax_category_options: } + = render partial: 'variant_row', locals: { variant:, f: variant_form, category_options:, tax_category_options: } = form.fields_for("products][#{product_index}][variants_attributes][NEW_RECORD", product.variants.build) do |new_variant_form| %template{ 'data-nested-form-target': "template" } %tr.condensed{ 'data-controller': "variant" } - = render partial: 'variant_row', locals: { variant: new_variant_form.object, f: new_variant_form, producer_options:, category_options:, tax_category_options: } + = render partial: 'variant_row', locals: { variant: new_variant_form.object, f: new_variant_form, category_options:, tax_category_options: } %tr{ 'data-nested-form-target': "target" } %tr.condensed %td - %td{ colspan: producer_options.many? ? 11 : 10 } + %td{ colspan: 11 } %button.secondary.condensed.naked.icon-plus{ 'data-action': "nested-form#add", 'aria-label': t('.new_variant') } =t('.new_variant') diff --git a/app/views/admin/products_v3/_variant_row.html.haml b/app/views/admin/products_v3/_variant_row.html.haml index 47117fa3cb..936ede26a6 100644 --- a/app/views/admin/products_v3/_variant_row.html.haml +++ b/app/views/admin/products_v3/_variant_row.html.haml @@ -39,9 +39,8 @@ = f.label :on_demand do = f.check_box :on_demand, 'data-action': 'change->toggle-control#disableIfPresent change->popout#closeIfChecked' = t(:on_demand) -- if producer_options.many? - %td.align-left - -# empty producer name +%td.align-left + -# empty producer name %td.field.naked_inputs = render(SearchableDropdownComponent.new(form: f, name: :primary_taxon_id, diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 5d69b524cc..aa9cee9512 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -1030,6 +1030,6 @@ describe 'As an enterprise user, I can manage my products', feature: :admin_styl end def tax_category_column - @tax_category_column ||= 'td:nth-child(10)' + @tax_category_column ||= '[data-controller="variant"] > td:nth-child(10)' end end From 15ee4f6619c3666a9436e3ff6295a6b11b567373 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sat, 27 Apr 2024 19:52:49 +0500 Subject: [PATCH 077/319] 11060: add specs --- .../searchable_dropdown_component.rb | 12 +- .../searchable_dropdown_component.html.haml | 2 +- .../admin/products_v3/_product_row.html.haml | 1 + .../admin/products_v3/_variant_row.html.haml | 2 + config/locales/en.yml | 4 + .../system/admin/products_v3/products_spec.rb | 148 ++++++++++++++++++ 6 files changed, 163 insertions(+), 6 deletions(-) diff --git a/app/components/searchable_dropdown_component.rb b/app/components/searchable_dropdown_component.rb index 7a6992504e..98365c4c8b 100644 --- a/app/components/searchable_dropdown_component.rb +++ b/app/components/searchable_dropdown_component.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true class SearchableDropdownComponent < ViewComponent::Base - REMOVED_SEARCH_PLUGIN = {"tom-select-options-value": '{ "plugins": [] }'}.freeze - MINIMUM_OPTIONS_FOR_SEARCH_FILED = 11.freeze # at least 11 options are required for the search field + REMOVED_SEARCH_PLUGIN = { 'tom-select-options-value': '{ "plugins": [] }' }.freeze + MINIMUM_OPTIONS_FOR_SEARCH_FILED = 11 # at least 11 options are required for the search field def initialize( form:, @@ -10,7 +10,8 @@ class SearchableDropdownComponent < ViewComponent::Base options:, selected_option:, placeholder_value:, - include_blank: false + include_blank: false, + aria_label: '' ) @f = form @name = name @@ -18,11 +19,12 @@ class SearchableDropdownComponent < ViewComponent::Base @selected_option = selected_option @placeholder_value = placeholder_value @include_blank = include_blank + @aria_label = aria_label end private - attr_reader :f, :name, :options, :selected_option, :placeholder_value, :include_blank + attr_reader :f, :name, :options, :selected_option, :placeholder_value, :include_blank, :aria_label def classes "fullwidth #{remove_search_plugin? ? 'no-input' : ''}" @@ -30,7 +32,7 @@ class SearchableDropdownComponent < ViewComponent::Base def data { - "controller": "tom-select", + controller: "tom-select", 'tom-select-placeholder-value': placeholder_value }.merge(remove_search_plugin? ? REMOVED_SEARCH_PLUGIN : {}) end diff --git a/app/components/searchable_dropdown_component/searchable_dropdown_component.html.haml b/app/components/searchable_dropdown_component/searchable_dropdown_component.html.haml index fbff09f1bf..10043eaa29 100644 --- a/app/components/searchable_dropdown_component/searchable_dropdown_component.html.haml +++ b/app/components/searchable_dropdown_component/searchable_dropdown_component.html.haml @@ -1 +1 @@ -= f.select name, options_for_select(options, selected_option), { include_blank: }, class: classes, data: += f.select name, options_for_select(options, selected_option), { include_blank: }, class: classes, data:, 'aria-label': aria_label diff --git a/app/views/admin/products_v3/_product_row.html.haml b/app/views/admin/products_v3/_product_row.html.haml index 06483a93df..3c12ac1b1b 100644 --- a/app/views/admin/products_v3/_product_row.html.haml +++ b/app/views/admin/products_v3/_product_row.html.haml @@ -30,6 +30,7 @@ %td.naked_inputs.align-left = render(SearchableDropdownComponent.new(form: f, name: :supplier_id, + aria_label: t('.producer_field_name'), options: producer_options, selected_option: product.supplier_id, placeholder_value: t('admin.products_v3.filters.search_for_producers'))) diff --git a/app/views/admin/products_v3/_variant_row.html.haml b/app/views/admin/products_v3/_variant_row.html.haml index 936ede26a6..53ea27aad5 100644 --- a/app/views/admin/products_v3/_variant_row.html.haml +++ b/app/views/admin/products_v3/_variant_row.html.haml @@ -46,6 +46,7 @@ name: :primary_taxon_id, options: category_options, selected_option: variant.primary_taxon_id, + aria_label: t('.category_field_name'), placeholder_value: t('admin.products_v3.filters.search_for_categories'))) %td.field.naked_inputs = render(SearchableDropdownComponent.new(form: f, @@ -53,6 +54,7 @@ options: tax_category_options, selected_option: variant.tax_category_id, include_blank: t('.none_tax_category'), + aria_label: t('.tax_category_field_name'), placeholder_value: t('.search_for_tax_categories'))) %td.align-left -# empty diff --git a/config/locales/en.yml b/config/locales/en.yml index f17baa2601..46197090c0 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -911,6 +911,10 @@ en: variant_row: none_tax_category: None search_for_tax_categories: "Search for tax categories" + category_field_name: "Category" + tax_category_field_name: "Tax Category" + product_row: + producer_field_name: "Producer" product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index aa9cee9512..a39c1ac753 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -14,6 +14,10 @@ describe 'As an enterprise user, I can manage my products', feature: :admin_styl login_as user end + let(:producer_search_selector) { 'input[placeholder="Search for producers"]' } + let(:categories_search_selector) { 'input[placeholder="Search for categories"]' } + let(:tax_categories_search_selector) { 'input[placeholder="Search for tax categories"]' } + it "can see the new product page" do visit admin_products_url expect(page).to have_content "Bulk Edit Products" @@ -666,6 +670,113 @@ describe 'As an enterprise user, I can manage my products', feature: :admin_styl end end + describe "Changing producers, category and tax category" do + let!(:variant_a1) { + product_a.variants.first.tap{ |v| + v.update! display_name: "Medium box", sku: "APL-01", price: 5.25, on_hand: 5, + on_demand: false + } + } + let!(:product_a) { + create(:simple_product, name: "Apples", sku: "APL-00", + variant_unit: "weight", variant_unit_scale: 1) # Grams + } + + context "when they are under 11" do + before do + create_list(:supplier_enterprise, 9) + create_list(:tax_category, 9) + create_list(:taxon, 2) + + visit admin_products_url + end + + it "should not display search input, change the producers, category and tax category" do + producer_to_select = random_producer(product_a) + category_to_select = random_category(variant_a1) + tax_category_to_select = random_tax_category + + within row_containing_name(product_a.name) do + validate_tomselect_without_search!( + page, "Producer", + producer_to_select, + producer_search_selector + ) + end + + within row_containing_name(variant_a1.display_name) do + validate_tomselect_without_search!( + page, "Category", + category_to_select, + categories_search_selector + ) + validate_tomselect_without_search!( + page, "Tax Category", + tax_category_to_select, + tax_categories_search_selector + ) + end + + click_button "Save changes" + + expect(page).to have_content "Changes saved" + product_a.reload + variant_a1.reload + + expect(product_a.supplier.name).to eq(producer_to_select) + expect(variant_a1.primary_taxon.name).to eq(category_to_select) + expect(variant_a1.tax_category.name).to eq(tax_category_to_select) + end + end + + context "when they are over 11" do + before do + create_list(:supplier_enterprise, 11) + create_list(:tax_category, 11) + create_list(:taxon, 11) + + visit admin_products_url + end + + it "should display search input, change the producer" do + producer_to_select = random_producer(product_a) + category_to_select = random_category(variant_a1) + tax_category_to_select = random_tax_category + + within row_containing_name(product_a.name) do + validate_tomselect_with_search!( + page, "Producer", + producer_to_select, + producer_search_selector + ) + end + + within row_containing_name(variant_a1.display_name) do + validate_tomselect_with_search!( + page, "Category", + category_to_select, + categories_search_selector + ) + validate_tomselect_with_search!( + page, "Tax Category", + tax_category_to_select, + tax_categories_search_selector + ) + end + + click_button "Save changes" + + expect(page).to have_content "Changes saved" + product_a.reload + variant_a1.reload + + expect(product_a.supplier.name).to eq(producer_to_select) + expect(variant_a1.primary_taxon.name).to eq(category_to_select) + expect(variant_a1.tax_category.name).to eq(tax_category_to_select) + end + end + end + describe "edit image" do shared_examples "updating image" do it "saves product image" do @@ -1032,4 +1143,41 @@ describe 'As an enterprise user, I can manage my products', feature: :admin_styl def tax_category_column @tax_category_column ||= '[data-controller="variant"] > td:nth-child(10)' end + + def validate_tomselect_without_search!(page, field_name, value, search_selector) + tomselect_wrapper = page.find_field(field_name).sibling(".ts-wrapper") + tomselect_wrapper.find(".ts-control").click + + expect(page).not_to have_selector(search_selector) + + tomselect_wrapper.find(:css, '.ts-dropdown .ts-dropdown-content .option', + text: value).click + end + + def validate_tomselect_with_search!(page, field_name, value, search_selector) + tomselect_wrapper = page.find_field(field_name).sibling(".ts-wrapper") + tomselect_wrapper.find(".ts-control").click + + expect(page).to have_selector(search_selector) + + tomselect_wrapper.find(:css, '.ts-dropdown input.dropdown-input').send_keys(value) + tomselect_wrapper.find(:css, '.ts-dropdown .ts-dropdown-content .option', text: value).click + end + + def random_producer(product) + Enterprise.is_primary_producer + .where.not(id: product.supplier.id) + .pluck(:name).sample + end + + def random_category(variant) + Spree::Taxon + .where.not(id: variant.primary_taxon.id) + .pluck(:name).sample + end + + def random_tax_category + Spree::TaxCategory + .pluck(:name).sample + end end From f386202ec22c4e38bc33be00cd5f6c6c14dd57d2 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sun, 28 Apr 2024 00:57:54 +0500 Subject: [PATCH 078/319] 11060: fix lint issues --- app/components/searchable_dropdown_component.rb | 2 +- app/reflexes/products_reflex.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/components/searchable_dropdown_component.rb b/app/components/searchable_dropdown_component.rb index 98365c4c8b..03ad6ea313 100644 --- a/app/components/searchable_dropdown_component.rb +++ b/app/components/searchable_dropdown_component.rb @@ -38,6 +38,6 @@ class SearchableDropdownComponent < ViewComponent::Base end def remove_search_plugin? - @should_remove_search_plugin ||= options.count < MINIMUM_OPTIONS_FOR_SEARCH_FILED + @remove_search_plugin ||= options.count < MINIMUM_OPTIONS_FOR_SEARCH_FILED end end diff --git a/app/reflexes/products_reflex.rb b/app/reflexes/products_reflex.rb index a2800c83e4..74a0b49873 100644 --- a/app/reflexes/products_reflex.rb +++ b/app/reflexes/products_reflex.rb @@ -89,8 +89,8 @@ class ProductsReflex < ApplicationReflex html: render(partial: "admin/products_v3/content", locals: { products: @products, pagy: @pagy, search_term: @search_term, producer_options: producers, producer_id: @producer_id, - category_options: categories, tax_category_options:, category_id: @category_id, - flashes: flash }) + category_options: categories, tax_category_options:, + category_id: @category_id, flashes: flash }) ) cable_ready.replace_state( From 227b677e4d7c71ad39333cd289b1697841f62afc Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sun, 28 Apr 2024 03:38:53 +0500 Subject: [PATCH 079/319] 11060: fix specs --- spec/system/admin/products_v3/products_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index a39c1ac753..f4d77fa45f 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -684,7 +684,7 @@ describe 'As an enterprise user, I can manage my products', feature: :admin_styl context "when they are under 11" do before do - create_list(:supplier_enterprise, 9) + create_list(:supplier_enterprise, 9, users: [user]) create_list(:tax_category, 9) create_list(:taxon, 2) @@ -731,7 +731,7 @@ describe 'As an enterprise user, I can manage my products', feature: :admin_styl context "when they are over 11" do before do - create_list(:supplier_enterprise, 11) + create_list(:supplier_enterprise, 11, users: [user]) create_list(:tax_category, 11) create_list(:taxon, 11) From 3d60d84fc7cd8619fec5dd1f91a1688593194776 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sun, 28 Apr 2024 16:19:22 +0500 Subject: [PATCH 080/319] add wait for flaky specs --- spec/system/admin/products_v3/products_spec.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index f4d77fa45f..2f4dde4718 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -752,11 +752,13 @@ describe 'As an enterprise user, I can manage my products', feature: :admin_styl end within row_containing_name(variant_a1.display_name) do + sleep(0.1) validate_tomselect_with_search!( page, "Category", category_to_select, categories_search_selector ) + sleep(0.1) validate_tomselect_with_search!( page, "Tax Category", tax_category_to_select, From 7e555b4fcb7ef0e0fa43f6985589fba09695f2f5 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Tue, 30 Apr 2024 13:18:58 +0500 Subject: [PATCH 081/319] Update app/views/admin/products_v3/_product_row.html.haml Co-authored-by: David Cook --- app/views/admin/products_v3/_product_row.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/products_v3/_product_row.html.haml b/app/views/admin/products_v3/_product_row.html.haml index 3c12ac1b1b..f82ef26933 100644 --- a/app/views/admin/products_v3/_product_row.html.haml +++ b/app/views/admin/products_v3/_product_row.html.haml @@ -27,7 +27,7 @@ -# empty %td.align-right -# empty -%td.naked_inputs.align-left +%td.naked_inputs = render(SearchableDropdownComponent.new(form: f, name: :supplier_id, aria_label: t('.producer_field_name'), From c291ff88ffe1b2ad430e157d540c5b9d0c844784 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Tue, 30 Apr 2024 13:23:39 +0500 Subject: [PATCH 082/319] 11060: remove duplicated supplier_id --- app/services/permitted_attributes/product.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/services/permitted_attributes/product.rb b/app/services/permitted_attributes/product.rb index fdb82d6421..1adc8ff7d9 100644 --- a/app/services/permitted_attributes/product.rb +++ b/app/services/permitted_attributes/product.rb @@ -10,7 +10,6 @@ module PermittedAttributes :display_as, :sku, :group_buy, :group_buy_unit_size, :taxon_ids, :primary_taxon_id, :tax_category_id, :meta_keywords, :notes, :inherits_properties, - :supplier_id, { product_properties_attributes: [:id, :property_name, :value], variants_attributes: [PermittedAttributes::Variant.attributes], image_attributes: [:attachment] } From 269e69852c1c39c358e528e63da6020584605a2e Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Tue, 30 Apr 2024 13:24:21 +0500 Subject: [PATCH 083/319] 11060: add style rule for the small gap --- app/webpacker/css/admin/products_v3.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/webpacker/css/admin/products_v3.scss b/app/webpacker/css/admin/products_v3.scss index 115512ce36..a06019bebb 100644 --- a/app/webpacker/css/admin/products_v3.scss +++ b/app/webpacker/css/admin/products_v3.scss @@ -171,6 +171,11 @@ padding: 0; } + .fullwidth + .field { + // Assume wrap, so add small gap + margin-top: 3px; + } + .ts-control { z-index: 0; // Avoid hovering over thead } From f07900ca4a46e435d6706d171562355ab097c862 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Tue, 30 Apr 2024 14:08:30 +0500 Subject: [PATCH 084/319] 11060: refactor specs to have better separation of concerns --- spec/support/request/web_helper.rb | 14 +++++++ .../system/admin/products_v3/products_spec.rb | 38 ++++++++----------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/spec/support/request/web_helper.rb b/spec/support/request/web_helper.rb index 42d7cb65b6..71799e4030 100644 --- a/spec/support/request/web_helper.rb +++ b/spec/support/request/web_helper.rb @@ -112,6 +112,20 @@ module WebHelper tomselect_wrapper.find(:css, '.ts-dropdown .ts-dropdown-content .option', text: value).click end + def open_tomselect_to_validate!(page, field_name) + tomselect_wrapper = page.find_field(field_name).sibling(".ts-wrapper") + tomselect_wrapper.find(".ts-control").click # open the dropdown + + raise 'Please pass the block for expectations' unless block_given? + + # execute block containing expectations + yield + + tomselect_wrapper.find( + '.ts-dropdown .ts-dropdown-content .option.active', + ).click # close the dropdown by selecting the already selected value + end + def request_monitor_finished(controller = nil) page.evaluate_script("#{angular_scope(controller)}.scope().RequestMonitor.loading == false") end diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 2f4dde4718..0eff69cde8 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -699,22 +699,23 @@ describe 'As an enterprise user, I can manage my products', feature: :admin_styl within row_containing_name(product_a.name) do validate_tomselect_without_search!( page, "Producer", - producer_to_select, producer_search_selector ) + tomselect_select(producer_to_select, from: "Producer") end within row_containing_name(variant_a1.display_name) do validate_tomselect_without_search!( page, "Category", - category_to_select, categories_search_selector ) + tomselect_select(category_to_select, from: "Category") + validate_tomselect_without_search!( page, "Tax Category", - tax_category_to_select, tax_categories_search_selector ) + tomselect_select(tax_category_to_select, from: "Tax Category") end click_button "Save changes" @@ -746,24 +747,25 @@ describe 'As an enterprise user, I can manage my products', feature: :admin_styl within row_containing_name(product_a.name) do validate_tomselect_with_search!( page, "Producer", - producer_to_select, producer_search_selector ) + tomselect_search_and_select(producer_to_select, from: "Producer") end within row_containing_name(variant_a1.display_name) do sleep(0.1) validate_tomselect_with_search!( page, "Category", - category_to_select, categories_search_selector ) + tomselect_search_and_select(category_to_select, from: "Category") + sleep(0.1) validate_tomselect_with_search!( page, "Tax Category", - tax_category_to_select, tax_categories_search_selector ) + tomselect_search_and_select(tax_category_to_select, from: "Tax Category") end click_button "Save changes" @@ -1146,24 +1148,16 @@ describe 'As an enterprise user, I can manage my products', feature: :admin_styl @tax_category_column ||= '[data-controller="variant"] > td:nth-child(10)' end - def validate_tomselect_without_search!(page, field_name, value, search_selector) - tomselect_wrapper = page.find_field(field_name).sibling(".ts-wrapper") - tomselect_wrapper.find(".ts-control").click - - expect(page).not_to have_selector(search_selector) - - tomselect_wrapper.find(:css, '.ts-dropdown .ts-dropdown-content .option', - text: value).click + def validate_tomselect_without_search!(page, field_name, search_selector) + open_tomselect_to_validate!(page, field_name) do + expect(page).not_to have_selector(search_selector) + end end - def validate_tomselect_with_search!(page, field_name, value, search_selector) - tomselect_wrapper = page.find_field(field_name).sibling(".ts-wrapper") - tomselect_wrapper.find(".ts-control").click - - expect(page).to have_selector(search_selector) - - tomselect_wrapper.find(:css, '.ts-dropdown input.dropdown-input').send_keys(value) - tomselect_wrapper.find(:css, '.ts-dropdown .ts-dropdown-content .option', text: value).click + def validate_tomselect_with_search!(page, field_name, search_selector) + open_tomselect_to_validate!(page, field_name) do + expect(page).to have_selector(search_selector) + end end def random_producer(product) From b1f20ffc14b8d676d719a5458d8ea316b426dd5a Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Tue, 30 Apr 2024 14:40:59 +0500 Subject: [PATCH 085/319] 11060: create tomselect helper module --- spec/support/request/tomselect_helper.rb | 43 ++++++++++++++++++++++++ spec/support/request/web_helper.rb | 42 ++--------------------- 2 files changed, 45 insertions(+), 40 deletions(-) create mode 100644 spec/support/request/tomselect_helper.rb diff --git a/spec/support/request/tomselect_helper.rb b/spec/support/request/tomselect_helper.rb new file mode 100644 index 0000000000..7cce8cbe9e --- /dev/null +++ b/spec/support/request/tomselect_helper.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +module TomselectHelper + def tomselect_open(field_name) + page.find("##{field_name}-ts-control").click + end + + def tomselect_multiselect(value, options) + tomselect_wrapper = page.find_field(options[:from]).sibling(".ts-wrapper") + tomselect_wrapper.find(".ts-control").click + tomselect_wrapper.find(:css, '.ts-dropdown.multi .ts-dropdown-content .option', + text: value).click + end + + def tomselect_search_and_select(value, options) + tomselect_wrapper = page.find_field(options[:from]).sibling(".ts-wrapper") + tomselect_wrapper.find(".ts-control").click + # Use send_keys as setting the value directly doesn't trigger the search + tomselect_wrapper.find(:css, '.ts-dropdown input.dropdown-input').send_keys(value) + tomselect_wrapper.find(:css, '.ts-dropdown .ts-dropdown-content .option', text: value).click + end + + def tomselect_select(value, options) + tomselect_wrapper = page.find_field(options[:from]).sibling(".ts-wrapper") + tomselect_wrapper.find(".ts-control").click + + tomselect_wrapper.find(:css, '.ts-dropdown .ts-dropdown-content .option', text: value).click + end + + def open_tomselect_to_validate!(page, field_name) + tomselect_wrapper = page.find_field(field_name).sibling(".ts-wrapper") + tomselect_wrapper.find(".ts-control").click # open the dropdown + + raise 'Please pass the block for expectations' unless block_given? + + # execute block containing expectations + yield + + tomselect_wrapper.find( + '.ts-dropdown .ts-dropdown-content .option.active', + ).click # close the dropdown by selecting the already selected value + end +end diff --git a/spec/support/request/web_helper.rb b/spec/support/request/web_helper.rb index 71799e4030..a5c4924a83 100644 --- a/spec/support/request/web_helper.rb +++ b/spec/support/request/web_helper.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true module WebHelper + include TomselectHelper + def have_input(name, opts = {}) selector = "[name='#{name}']" selector += "[placeholder='#{opts[:placeholder]}']" if opts.key? :placeholder @@ -86,46 +88,6 @@ module WebHelper find(:css, ".select2-result-label", text: options[:select_text] || value).click end - def tomselect_open(field_name) - page.find("##{field_name}-ts-control").click - end - - def tomselect_multiselect(value, options) - tomselect_wrapper = page.find_field(options[:from]).sibling(".ts-wrapper") - tomselect_wrapper.find(".ts-control").click - tomselect_wrapper.find(:css, '.ts-dropdown.multi .ts-dropdown-content .option', - text: value).click - end - - def tomselect_search_and_select(value, options) - tomselect_wrapper = page.find_field(options[:from]).sibling(".ts-wrapper") - tomselect_wrapper.find(".ts-control").click - # Use send_keys as setting the value directly doesn't trigger the search - tomselect_wrapper.find(:css, '.ts-dropdown input.dropdown-input').send_keys(value) - tomselect_wrapper.find(:css, '.ts-dropdown .ts-dropdown-content .option', text: value).click - end - - def tomselect_select(value, options) - tomselect_wrapper = page.find_field(options[:from]).sibling(".ts-wrapper") - tomselect_wrapper.find(".ts-control").click - - tomselect_wrapper.find(:css, '.ts-dropdown .ts-dropdown-content .option', text: value).click - end - - def open_tomselect_to_validate!(page, field_name) - tomselect_wrapper = page.find_field(field_name).sibling(".ts-wrapper") - tomselect_wrapper.find(".ts-control").click # open the dropdown - - raise 'Please pass the block for expectations' unless block_given? - - # execute block containing expectations - yield - - tomselect_wrapper.find( - '.ts-dropdown .ts-dropdown-content .option.active', - ).click # close the dropdown by selecting the already selected value - end - def request_monitor_finished(controller = nil) page.evaluate_script("#{angular_scope(controller)}.scope().RequestMonitor.loading == false") end From 7f40fd7adb358f948f087a7f504f2c6ce7590355 Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 1 May 2024 09:36:57 +1000 Subject: [PATCH 086/319] Fix typo --- app/components/searchable_dropdown_component.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/components/searchable_dropdown_component.rb b/app/components/searchable_dropdown_component.rb index 03ad6ea313..9a53155085 100644 --- a/app/components/searchable_dropdown_component.rb +++ b/app/components/searchable_dropdown_component.rb @@ -2,7 +2,7 @@ class SearchableDropdownComponent < ViewComponent::Base REMOVED_SEARCH_PLUGIN = { 'tom-select-options-value': '{ "plugins": [] }' }.freeze - MINIMUM_OPTIONS_FOR_SEARCH_FILED = 11 # at least 11 options are required for the search field + MINIMUM_OPTIONS_FOR_SEARCH_FIELD = 11 # at least 11 options are required for the search field def initialize( form:, @@ -38,6 +38,6 @@ class SearchableDropdownComponent < ViewComponent::Base end def remove_search_plugin? - @remove_search_plugin ||= options.count < MINIMUM_OPTIONS_FOR_SEARCH_FILED + @remove_search_plugin ||= options.count < MINIMUM_OPTIONS_FOR_SEARCH_FIELD end end From 901c29c97b6b73934696d65d3ee41b929d77bcdb Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Fri, 12 Apr 2024 15:07:00 +0200 Subject: [PATCH 087/319] Fix Ship Order menu choice not working - Front End ShipOrderComponent was missed for the menu to work - updated spec to test for a specific case --- .../spree/admin/shared/_order_links.html.haml | 5 ++++ spec/system/admin/order_spec.rb | 24 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/app/views/spree/admin/shared/_order_links.html.haml b/app/views/spree/admin/shared/_order_links.html.haml index 9af75fffd8..a0643a4146 100644 --- a/app/views/spree/admin/shared/_order_links.html.haml +++ b/app/views/spree/admin/shared/_order_links.html.haml @@ -6,8 +6,10 @@ %i.icon-check = I18n.t 'admin.actions' %div.menu{"data-action": "click->dropdown#closeOnMenu"} + - shipment_ready = false - order_links(@order).each do |link| - if link[:name] == t(:ship_order) + - shipment_ready = true %a.menu_item{ href: link[:url], target: link[:target] || "_self", data: { "modal-link-target-value": dom_id(@order, :ship), "action": "click->modal-link#open", "controller": "modal-link" } } %span %i{ class: link[:icon] } @@ -19,3 +21,6 @@ %span=link[:name] = render 'spree/admin/shared/custom-confirm' +- if shipment_ready + %form + = render ShipOrderComponent.new(order: @order) diff --git a/spec/system/admin/order_spec.rb b/spec/system/admin/order_spec.rb index f6f5f96fe0..410f36bf6f 100644 --- a/spec/system/admin/order_spec.rb +++ b/spec/system/admin/order_spec.rb @@ -1006,6 +1006,30 @@ describe ' it_behaves_like "ship order from dropdown", "Invoices" it_behaves_like "ship order from dropdown", "Return Authorizations" end + + context 'when not on the Order Details sub section' do + before do + click_link 'Customer Details' + end + it 'can ship order too' do + find('.ofn-drop-down').click + click_link 'Ship Order' + + within ".reveal-modal" do + expect(page).to have_checked_field('Send a shipment/pick up ' \ + 'notification email to the customer.') + # no test of enqueued job since it can cause failures + # if the remainder of the spec is too fasr + find_button('Confirm').click + end + + # the best & easiest way to close the modal without calling all the JS + find_button("Cancel").click + expect(order.reload.shipped?).to be true + click_link('Order Details') + expect(page).to have_text 'SHIPPED' + end + end end context "when an included variant has been deleted" do From ba68f4b25243f2a7deab3378561ce402e1ad955a Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Tue, 16 Apr 2024 16:47:38 +0200 Subject: [PATCH 088/319] Fix 'Ship Order': requested changes - deletes local variables in view - factor logic in helper --- app/helpers/spree/admin/orders_helper.rb | 4 ++++ app/views/spree/admin/shared/_order_links.html.haml | 4 +--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/helpers/spree/admin/orders_helper.rb b/app/helpers/spree/admin/orders_helper.rb index 71970c53d3..fc4f21baa8 100644 --- a/app/helpers/spree/admin/orders_helper.rb +++ b/app/helpers/spree/admin/orders_helper.rb @@ -34,6 +34,10 @@ module Spree links end + def order_shipment_ready?(order) + order.ready_to_ship? + end + private def complete_order_links(order) diff --git a/app/views/spree/admin/shared/_order_links.html.haml b/app/views/spree/admin/shared/_order_links.html.haml index a0643a4146..a79cf3b2f5 100644 --- a/app/views/spree/admin/shared/_order_links.html.haml +++ b/app/views/spree/admin/shared/_order_links.html.haml @@ -6,10 +6,8 @@ %i.icon-check = I18n.t 'admin.actions' %div.menu{"data-action": "click->dropdown#closeOnMenu"} - - shipment_ready = false - order_links(@order).each do |link| - if link[:name] == t(:ship_order) - - shipment_ready = true %a.menu_item{ href: link[:url], target: link[:target] || "_self", data: { "modal-link-target-value": dom_id(@order, :ship), "action": "click->modal-link#open", "controller": "modal-link" } } %span %i{ class: link[:icon] } @@ -21,6 +19,6 @@ %span=link[:name] = render 'spree/admin/shared/custom-confirm' -- if shipment_ready +- if order_shipment_ready?(@order) %form = render ShipOrderComponent.new(order: @order) From 34bb05e681ed68c06799f9c302e527e43575a1d3 Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Sun, 21 Apr 2024 10:11:58 +0200 Subject: [PATCH 089/319] Fix 'Ship Order': integrating non regression spec - removes the pending - add the click to go to the 'Order Details' page to check for the 'shipped' status - from enqueued to have_been_enqueued so the spec is flaky-free --- spec/system/admin/order_spec.rb | 58 ++++++++++++--------------------- 1 file changed, 20 insertions(+), 38 deletions(-) diff --git a/spec/system/admin/order_spec.rb b/spec/system/admin/order_spec.rb index 410f36bf6f..aa7d4adfd8 100644 --- a/spec/system/admin/order_spec.rb +++ b/spec/system/admin/order_spec.rb @@ -968,13 +968,19 @@ describe ' within ".reveal-modal" do expect(page).to have_checked_field('Send a shipment/pick up ' \ 'notification email to the customer.') - expect { - find_button("Confirm").click - }.to enqueue_job(ActionMailer::MailDeliveryJob).exactly(:once) + find_button("Confirm").click end + find_button("Cancel").click # closes modal as it is not automatic + expect(page).to have_selector('.reveal-modal', visible: false) + click_link('Order Details') unless subpage == 'Order Details' + expect(order.reload.shipped?).to be true expect(page).to have_text 'SHIPPED' + expect(ActionMailer::MailDeliveryJob).to have_been_enqueued + .exactly(:once) + .with("Spree::ShipmentMailer", "shipped_email", "deliver_now", + { args: [order.shipment.id, { delivery: true }] }) end it "ships the order without sending email" do @@ -986,50 +992,26 @@ describe ' within ".reveal-modal" do uncheck 'Send a shipment/pick up notification email to the customer.' - expect { - find_button("Confirm").click - }.not_to enqueue_job(ActionMailer::MailDeliveryJob) + find_button("Confirm").click end + find_button("Cancel").click # closes modal as it is not automatic + expect(page).to have_selector('.reveal-modal', visible: false) + click_link('Order Details') unless subpage == 'Order Details' expect(order.reload.shipped?).to be true expect(page).to have_text 'SHIPPED' + expect(ActionMailer::MailDeliveryJob).not_to have_been_enqueued + .with(array_including("Spree::ShipmentMailer")) end end end it_behaves_like "ship order from dropdown", "Order Details" - context "pending examples" do - before { pending("#12369") } - it_behaves_like "ship order from dropdown", "Customer Details" - it_behaves_like "ship order from dropdown", "Payments" - it_behaves_like "ship order from dropdown", "Adjustments" - it_behaves_like "ship order from dropdown", "Invoices" - it_behaves_like "ship order from dropdown", "Return Authorizations" - end - - context 'when not on the Order Details sub section' do - before do - click_link 'Customer Details' - end - it 'can ship order too' do - find('.ofn-drop-down').click - click_link 'Ship Order' - - within ".reveal-modal" do - expect(page).to have_checked_field('Send a shipment/pick up ' \ - 'notification email to the customer.') - # no test of enqueued job since it can cause failures - # if the remainder of the spec is too fasr - find_button('Confirm').click - end - - # the best & easiest way to close the modal without calling all the JS - find_button("Cancel").click - expect(order.reload.shipped?).to be true - click_link('Order Details') - expect(page).to have_text 'SHIPPED' - end - end + it_behaves_like "ship order from dropdown", "Customer Details" + it_behaves_like "ship order from dropdown", "Payments" + it_behaves_like "ship order from dropdown", "Adjustments" + it_behaves_like "ship order from dropdown", "Invoices" + it_behaves_like "ship order from dropdown", "Return Authorizations" end context "when an included variant has been deleted" do From 271d50e5aba691d096e23c2b4aa225a9d1a97eb0 Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Wed, 24 Apr 2024 23:16:01 +0200 Subject: [PATCH 090/319] Fix Ship Order Button: modal should close itself - returns to the same processing for customer, invoices etc. that edit - need a bit of sleep in spec bc 2 tasks are asynchroneous --- app/reflexes/admin/orders_reflex.rb | 6 +++++- spec/system/admin/order_spec.rb | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/reflexes/admin/orders_reflex.rb b/app/reflexes/admin/orders_reflex.rb index b52136391e..40369edf19 100644 --- a/app/reflexes/admin/orders_reflex.rb +++ b/app/reflexes/admin/orders_reflex.rb @@ -21,7 +21,7 @@ module Admin def ship @order.send_shipment_email = false unless params[:send_shipment_email] if @order.ship - return set_param_for_controller if request.url.match?('edit') + return set_param_for_controller if Regexp.union(Constants::PATHS).match? request.url morph dom_id(@order), render(partial: "spree/admin/orders/table_row", locals: { order: @order.reload, success: true }) @@ -134,4 +134,8 @@ module Admin morph_admin_flashes end end + + module Constants + PATHS = %w[edit customer payments adjustments invoices return_authorizations].freeze + end end diff --git a/spec/system/admin/order_spec.rb b/spec/system/admin/order_spec.rb index aa7d4adfd8..134ce909d2 100644 --- a/spec/system/admin/order_spec.rb +++ b/spec/system/admin/order_spec.rb @@ -971,10 +971,10 @@ describe ' find_button("Confirm").click end - find_button("Cancel").click # closes modal as it is not automatic expect(page).to have_selector('.reveal-modal', visible: false) click_link('Order Details') unless subpage == 'Order Details' + sleep(0.5) # avoid flakyness expect(order.reload.shipped?).to be true expect(page).to have_text 'SHIPPED' expect(ActionMailer::MailDeliveryJob).to have_been_enqueued @@ -995,9 +995,10 @@ describe ' find_button("Confirm").click end - find_button("Cancel").click # closes modal as it is not automatic expect(page).to have_selector('.reveal-modal', visible: false) click_link('Order Details') unless subpage == 'Order Details' + + sleep(0.5) # avoir flakyness expect(order.reload.shipped?).to be true expect(page).to have_text 'SHIPPED' expect(ActionMailer::MailDeliveryJob).not_to have_been_enqueued From 6575ad738bb2f24cebb08c8d620ee10ce365ee10 Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Tue, 7 May 2024 15:26:52 +0200 Subject: [PATCH 091/319] Fix Ship Order Button: requested changes - bypass rubocop class lines limit --- .rubocop_todo.yml | 1 + app/reflexes/admin/orders_reflex.rb | 7 ++----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 7f40f94d2b..3b11638cb2 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -164,6 +164,7 @@ Metrics/ClassLength: - 'app/models/spree/user.rb' - 'app/models/spree/variant.rb' - 'app/models/spree/zone.rb' + - 'app/reflexes/admin/orders_reflex.rb' - 'app/reflexes/products_reflex.rb' - 'app/serializers/api/cached_enterprise_serializer.rb' - 'app/serializers/api/enterprise_shopfront_serializer.rb' diff --git a/app/reflexes/admin/orders_reflex.rb b/app/reflexes/admin/orders_reflex.rb index 40369edf19..dedf46cdf2 100644 --- a/app/reflexes/admin/orders_reflex.rb +++ b/app/reflexes/admin/orders_reflex.rb @@ -21,7 +21,8 @@ module Admin def ship @order.send_shipment_email = false unless params[:send_shipment_email] if @order.ship - return set_param_for_controller if Regexp.union(Constants::PATHS).match? request.url + paths = %w[edit customer payments adjustments invoices return_authorizations].freeze + return set_param_for_controller if Regexp.union(paths).match? request.url morph dom_id(@order), render(partial: "spree/admin/orders/table_row", locals: { order: @order.reload, success: true }) @@ -134,8 +135,4 @@ module Admin morph_admin_flashes end end - - module Constants - PATHS = %w[edit customer payments adjustments invoices return_authorizations].freeze - end end From 331f9be82a226586a483d95fd418e92ca72babb6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 May 2024 10:05:13 +0000 Subject: [PATCH 092/319] chore(deps-dev): bump knapsack_pro from 6.0.4 to 7.1.0 Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 6.0.4 to 7.1.0. - [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md) - [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v6.0.4...v7.1.0) --- updated-dependencies: - dependency-name: knapsack_pro dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 8ed6b51c08..0ea5cbd11d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -384,7 +384,7 @@ GEM activesupport (>= 4.2) jwt (2.8.1) base64 - knapsack_pro (6.0.4) + knapsack_pro (7.1.0) rake language_server-protocol (3.17.0.3) launchy (3.0.0) From 104357d5b9f1d7817b17b572a906158f2a416fe3 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 8 May 2024 10:54:35 +1000 Subject: [PATCH 093/319] Load spec helper on RSpec boot Knapsack is replacing some of the RSpec logic, like running before-suite and before-all hooks. Loading the spec helper early means that Knapsack knows about the asset compilation hook when it loads the next batch of specs. --- .rspec | 1 + 1 file changed, 1 insertion(+) create mode 100644 .rspec diff --git a/.rspec b/.rspec new file mode 100644 index 0000000000..eb81da86cf --- /dev/null +++ b/.rspec @@ -0,0 +1 @@ +--require base_spec_helper From 5f07a7f3900bbf4dc8cb9c0d9b46db221daebe54 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 8 May 2024 13:15:14 +1000 Subject: [PATCH 094/319] Check for asset compilation before each spec file The KnapsackPro queue mode can't predict which specs it will run. So we need to check on each file (top-level describe block) which type of spec it is and if we need to compile assets for it. Old versions of KnapsackPro would execute the `before(:suite)` hooks on every batch, but now it's only run once. With this change, we do the same as before. --- spec/support/precompile_assets.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/support/precompile_assets.rb b/spec/support/precompile_assets.rb index 762a1c27b7..edab33e902 100644 --- a/spec/support/precompile_assets.rb +++ b/spec/support/precompile_assets.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true RSpec.configure do |config| - config.before(:suite) do + config.before(:all) do # We can use webpack-dev-server for tests, too! # Useful if you working on a frontend code fixes and want to verify them via system tests. next if Webpacker.dev_server.running? From 86f88792c21b474aa313287e2caa9c1b4d50e122 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Wed, 8 May 2024 11:52:02 +0500 Subject: [PATCH 095/319] 11058: add sortable products by name --- app/controllers/admin/products_v3_controller.rb | 3 +++ app/views/admin/products_v3/_content.html.haml | 2 +- app/views/admin/products_v3/_filters.html.haml | 1 + app/views/admin/products_v3/_table.html.haml | 3 ++- .../spree/admin/shared/_stimulus_sortable_header.html.haml | 2 +- 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/controllers/admin/products_v3_controller.rb b/app/controllers/admin/products_v3_controller.rb index 92386e1231..f8cdc339c2 100644 --- a/app/controllers/admin/products_v3_controller.rb +++ b/app/controllers/admin/products_v3_controller.rb @@ -48,6 +48,7 @@ module Admin # prority is given to element dataset (if present) over url params @page = params[:page].presence || 1 @per_page = params[:per_page].presence || 15 + @q = params.permit(q: {})[:q] || { s: 'name asc' } end def producers @@ -89,6 +90,8 @@ module Admin query.merge!(Spree::Variant::SEARCH_KEY => @search_term) end query.merge!(variants_primary_taxon_id_in: @category_id) if @category_id.present? + query.merge!(@q) if @q + query end diff --git a/app/views/admin/products_v3/_content.html.haml b/app/views/admin/products_v3/_content.html.haml index 0a9459abae..e605fdd8b3 100644 --- a/app/views/admin/products_v3/_content.html.haml +++ b/app/views/admin/products_v3/_content.html.haml @@ -1,5 +1,5 @@ %turbo-frame#products-content{ target: "_top", refresh: "morph" } - .spinner-overlay{ "data-controller": "loading", "data-products-target": "loading", class: "hidden" } + .spinner-overlay.hidden .spinner-container .spinner = t('.loading') diff --git a/app/views/admin/products_v3/_filters.html.haml b/app/views/admin/products_v3/_filters.html.haml index 2a0aa55428..4b90628c7c 100644 --- a/app/views/admin/products_v3/_filters.html.haml +++ b/app/views/admin/products_v3/_filters.html.haml @@ -1,6 +1,7 @@ = form_with url: admin_products_path, id: "filters", method: :get, data: { "search-target": "form", 'turbo-frame': "_self" } do = hidden_field_tag :page, nil, class: "page" = hidden_field_tag :per_page, nil, class: "per-page" + = hidden_field_tag '[q][s]', params.dig(:q, :s) || 'name asc', class: 'sort', 'data-default': 'name asc' .query .search-input diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 10b62f911e..23f6fb5fb4 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -49,7 +49,8 @@ = form.submit t('.save'), class: "medium" %tr %th.align-left= # image - %th.align-left.with-input= t('admin.products_page.columns.name') + = render partial: 'spree/admin/shared/stimulus_sortable_header', + locals: { column: :name, sorted: params.dig(:q, :s), default: 'name asc' } %th.align-left.with-input= t('admin.products_page.columns.sku') %th.align-left.with-input= t('admin.products_page.columns.unit_scale') %th.align-left.with-input= t('admin.products_page.columns.unit') diff --git a/app/views/spree/admin/shared/_stimulus_sortable_header.html.haml b/app/views/spree/admin/shared/_stimulus_sortable_header.html.haml index 46443016ce..08db1b6ce9 100644 --- a/app/views/spree/admin/shared/_stimulus_sortable_header.html.haml +++ b/app/views/spree/admin/shared/_stimulus_sortable_header.html.haml @@ -1,5 +1,5 @@ %th - %a{ "data-action": "click->search#changeSorting", "data-column": "#{column}", "data-current": sorted.to_s } + %a{ "data-controller": "search", "data-action": "click->search#changeSorting", "data-column": "#{column}", "data-current": (sorted || default).to_s } = t("spree.admin.shared.sortable_header.#{column.to_s}") - if sorted == "#{column} asc" || sorted.blank? && local_assigns[:default] == "#{column} asc" From 10d0faa05e19cf6f479d3709378f8ce888f3ef79 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 09:36:29 +0000 Subject: [PATCH 096/319] chore(deps-dev): bump rubocop-rspec from 2.29.1 to 2.29.2 Bumps [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) from 2.29.1 to 2.29.2. - [Release notes](https://github.com/rubocop/rubocop-rspec/releases) - [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop-rspec/compare/v2.29.1...v2.29.2) --- updated-dependencies: - dependency-name: rubocop-rspec dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 0b6053caa1..dcbb0d6422 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -479,7 +479,7 @@ GEM parallel (1.24.0) paranoia (2.6.3) activerecord (>= 5.1, < 7.2) - parser (3.3.0.5) + parser (3.3.1.0) ast (~> 2.4.1) racc paypal-sdk-core (0.3.4) @@ -662,8 +662,8 @@ GEM rubocop-ast (>= 1.31.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.31.2) - parser (>= 3.3.0.4) + rubocop-ast (1.31.3) + parser (>= 3.3.1.0) rubocop-capybara (2.20.0) rubocop (~> 1.41) rubocop-factory_bot (2.25.1) @@ -673,12 +673,12 @@ GEM rack (>= 1.1) rubocop (>= 1.33.0, < 2.0) rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rspec (2.29.1) + rubocop-rspec (2.29.2) rubocop (~> 1.40) rubocop-capybara (~> 2.17) rubocop-factory_bot (~> 2.22) rubocop-rspec_rails (~> 2.28) - rubocop-rspec_rails (2.28.2) + rubocop-rspec_rails (2.28.3) rubocop (~> 1.40) ruby-graphviz (1.2.5) rexml From 110eeaf793100905fd56263426810782ceb4df3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Gon=C3=A7alves?= Date: Sun, 5 May 2024 14:11:39 +0100 Subject: [PATCH 097/319] Removed the "ready for" information located in checkout/details This provides the solution wanted and the best way to do it. --- app/views/checkout/_details.html.haml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/views/checkout/_details.html.haml b/app/views/checkout/_details.html.haml index b837e52812..b3df2c94b2 100644 --- a/app/views/checkout/_details.html.haml +++ b/app/views/checkout/_details.html.haml @@ -96,11 +96,6 @@ #distributor_address.panel - if shipping_method.description.present? %span #{shipping_method.description} - %br/ - %br/ - - if @order.order_cycle.pickup_time_for(@order.distributor) - = t :checkout_ready_for - = @order.order_cycle.pickup_time_for(@order.distributor) = f.error_message_on :shipping_method, standalone: true From a65189c43e5bd67e05ede16d37ce79c059359ab2 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 2 May 2024 16:55:19 +1000 Subject: [PATCH 098/319] Improve failure messages of chained expectations --- spec/base_spec_helper.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb index 42ce4e6ad6..aabd97dbdf 100644 --- a/spec/base_spec_helper.rb +++ b/spec/base_spec_helper.rb @@ -94,6 +94,15 @@ RSpec.configure do |config| # Force use of expect (over should) config.expect_with :rspec do |expectations| expectations.syntax = :expect + + # This option will default to `true` in RSpec 4. It makes the `description` + # and `failure_message` of custom matchers include text for helper methods + # defined using `chain`, e.g.: + # be_bigger_than(2).and_smaller_than(4).description + # # => "be bigger than 2 and smaller than 4" + # ...rather than: + # # => "be bigger than 2" + expectations.include_chain_clauses_in_custom_matcher_descriptions = true end # Reset locale for all specs. From 9c402fbdb23da227ca25b79386440e0e3b2b573a Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 2 May 2024 17:00:48 +1000 Subject: [PATCH 099/319] Verify partial doubles And look, we were stubbing deleted code. --- spec/base_spec_helper.rb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb index aabd97dbdf..9d54095759 100644 --- a/spec/base_spec_helper.rb +++ b/spec/base_spec_helper.rb @@ -105,6 +105,15 @@ RSpec.configure do |config| expectations.include_chain_clauses_in_custom_matcher_descriptions = true end + # rspec-mocks config goes here. You can use an alternate test double + # library (such as bogus or mocha) by changing the `mock_with` option here. + config.mock_with :rspec do |mocks| + # Prevents you from mocking or stubbing a method that does not exist on + # a real object. This is generally recommended, and will default to + # `true` in RSpec 4. + mocks.verify_partial_doubles = true + end + # Reset locale for all specs. config.around(:each) do |example| I18n.with_locale(:en) { example.run } @@ -191,11 +200,6 @@ RSpec.configure do |config| end end - # Geocoding - config.before(:each) { - allow_any_instance_of(Spree::Address).to receive(:geocode).and_return([1, 1]) - } - default_country_id = DefaultCountry.id checkout_zone = Spree::Config[:checkout_zone] currency = Spree::Config[:currency] From 9320ed0559927c093f59237d1bd6eb60d480301a Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 7 May 2024 15:58:52 +1000 Subject: [PATCH 100/319] And less stubbing is better. [skip ci] --- spec/models/spree/order_spec.rb | 3 --- 1 file changed, 3 deletions(-) diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb index 3a0dfb7d3c..9d21351f42 100644 --- a/spec/models/spree/order_spec.rb +++ b/spec/models/spree/order_spec.rb @@ -258,7 +258,6 @@ describe Spree::Order do end it "should freeze all adjustments" do - allow(Spree::OrderMailer).to receive_message_chain :confirm_email, :deliver_later adjustments = double allow(order).to receive_messages all_adjustments: adjustments expect(adjustments).to receive(:update_all).with(state: 'closed') @@ -440,8 +439,6 @@ describe Spree::Order do context "empty!" do it "should clear out all line items and adjustments" do order = build(:order) - allow(order).to receive_messages(line_items: line_items = []) - allow(order).to receive_messages(adjustments: adjustments = []) expect(order.line_items).to receive(:destroy_all) expect(order.all_adjustments).to receive(:destroy_all) From d6318b71946f790e5f5063f2e47988e1518afa54 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 9 May 2024 09:51:57 +1000 Subject: [PATCH 101/319] Remove mocking of deleted Order methods --- spec/models/spree/order/state_machine_spec.rb | 74 ++++++------------- 1 file changed, 21 insertions(+), 53 deletions(-) diff --git a/spec/models/spree/order/state_machine_spec.rb b/spec/models/spree/order/state_machine_spec.rb index 80bada4c86..25eea3e212 100644 --- a/spec/models/spree/order/state_machine_spec.rb +++ b/spec/models/spree/order/state_machine_spec.rb @@ -21,13 +21,17 @@ describe Spree::Order do end context "when payment processing succeeds" do - before { allow(order).to receive_messages process_payments!: true } - it "should finalize order when transitioning to complete state" do order.next - expect(order.state).to eq "confirmation" - expect(order).to receive(:finalize!) - order.next! + + expect { + order.next! + }.to change { + order.state + }.from("confirmation").to("complete") + .and change { + order.completed_at + } end context "when credit card processing fails" do @@ -35,9 +39,15 @@ describe Spree::Order do it "should still complete the order" do order.next - expect(order.state).to eq "confirmation" - order.next - expect(order.state).to eq "complete" + + expect { + order.next! + }.to change { + order.state + }.from("confirmation").to("complete") + .and change { + order.completed_at + } end end end @@ -100,9 +110,9 @@ describe Spree::Order do end before do - allow(order).to receive_messages line_items: [build(:line_item, variant:, - quantity: 2)] - allow(order.line_items).to receive_messages find_by_variant_id: order.line_items.first + allow(order).to receive_messages line_items: [ + build(:line_item, variant:, quantity: 2) + ] allow(order).to receive_messages completed?: true allow(order).to receive_messages allow_cancel?: true @@ -111,7 +121,6 @@ describe Spree::Order do it "should send a cancel email" do # Stub methods that cause side-effects in this test allow(shipment).to receive(:cancel!) - allow(order).to receive :restock_items! mail_message = double "Mail::Message" order_id = nil expect(Spree::OrderMailer).to receive(:cancel_email) { |*args| @@ -137,7 +146,6 @@ describe Spree::Order do # Stubs methods that cause unwanted side effects in this test allow(Spree::OrderMailer).to receive(:cancel_email).and_return(mail_message = double) allow(mail_message).to receive :deliver_later - allow(order).to receive :restock_items! allow(shipment).to receive(:cancel!) end @@ -151,44 +159,4 @@ describe Spree::Order do end end end - - # Another regression test for Spree #729 - context "#resume" do - context "resets payment state" do - let!(:variant) { build(:variant) } - before do - allow(order).to receive_messages email: "user@spreecommerce.com" - allow(order).to receive_messages allow_cancel?: true - allow(order).to receive_messages allow_resume?: true - allow(order).to receive_messages line_items: - [build(:line_item, variant:, quantity: 2)] - allow(order.line_items).to receive_messages find_by_variant_id: order.line_items.first - order.update(total: 10) - order.cancel! - end - - it "should set payment state to 'balance due'" do - expect { - order.resume! - order.reload - }.to change { order.payment_state }.to("balance_due") - end - - it "should set payment state to 'paid'" do - expect { - order.update(payment_total: 10) - order.resume! - order.reload - }.to change { order.payment_state }.to("paid") - end - - it "should set payment state to 'credit owed'" do - expect { - order.update(payment_total: 20) - order.resume! - order.reload - }.to change { order.payment_state }.to("credit_owed") - end - end - end end From 6b2bb0bd329acc197c4bfcb2330d8d390cdd7ba1 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 9 May 2024 09:58:06 +1000 Subject: [PATCH 102/319] Don't verify partial doubles because we can't fix all specs now --- spec/base_spec_helper.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb index 9d54095759..bf65ee490e 100644 --- a/spec/base_spec_helper.rb +++ b/spec/base_spec_helper.rb @@ -108,10 +108,13 @@ RSpec.configure do |config| # rspec-mocks config goes here. You can use an alternate test double # library (such as bogus or mocha) by changing the `mock_with` option here. config.mock_with :rspec do |mocks| + # We use too many mocks at the moment. Activating the following + # feature fails a lot of specs. We should clean it up over time. + # # Prevents you from mocking or stubbing a method that does not exist on # a real object. This is generally recommended, and will default to # `true` in RSpec 4. - mocks.verify_partial_doubles = true + # mocks.verify_partial_doubles = true end # Reset locale for all specs. From 9ca6519fb1ff523b45cfffe775d7a1cbcadca44e Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 9 May 2024 10:02:17 +1000 Subject: [PATCH 103/319] Recommended RSpec option: shared_context_metadata_behavior One spec failed due to this new behaviour. Converting the shared examples to simple blocks solved this. But the specs could probably be written better now. I didn't invest this time. --- spec/base_spec_helper.rb | 7 +++ spec/system/admin/order_cycles/simple_spec.rb | 59 +++++++++++-------- 2 files changed, 40 insertions(+), 26 deletions(-) diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb index bf65ee490e..7412ba4dec 100644 --- a/spec/base_spec_helper.rb +++ b/spec/base_spec_helper.rb @@ -117,6 +117,13 @@ RSpec.configure do |config| # mocks.verify_partial_doubles = true end + # This option will default to `:apply_to_host_groups` in RSpec 4 (and will + # have no way to turn it off -- the option exists only for backwards + # compatibility in RSpec 3). It causes shared context metadata to be + # inherited by the metadata hash of host groups and examples, rather than + # triggering implicit auto-inclusion in groups with matching metadata. + config.shared_context_metadata_behavior = :apply_to_host_groups + # Reset locale for all specs. config.around(:each) do |example| I18n.with_locale(:en) { example.run } diff --git a/spec/system/admin/order_cycles/simple_spec.rb b/spec/system/admin/order_cycles/simple_spec.rb index 087665d92d..364048ee9d 100644 --- a/spec/system/admin/order_cycles/simple_spec.rb +++ b/spec/system/admin/order_cycles/simple_spec.rb @@ -399,37 +399,44 @@ describe ' oc.update prefers_product_selection_from_coordinator_inventory_only: false end - shared_examples "inventory warning" do - |inventory_visible, inventory_only, it_description, expect_message| - before do - # hides/displays variant within coordinator's inventory - inventory_item_v1.update!(visible: inventory_visible) - # changes coordinator's inventory preferences - supplier_managed.update preferred_product_selection_from_inventory_only: inventory_only + it "shows a warning when going to 'outgoing products' tab" do + # hides/displays variant within coordinator's inventory + inventory_item_v1.update!(visible: false) + # changes coordinator's inventory preferences + supplier_managed.update preferred_product_selection_from_inventory_only: true + + visit edit_admin_order_cycle_path(oc) + click_link "Outgoing Products" + within "tr.distributor-#{distributor_managed.id}" do + page.find("td.products").click end - it "#{it_description} a warning when going to 'outgoing products' tab" do - visit edit_admin_order_cycle_path(oc) - click_link "Outgoing Products" - within "tr.distributor-#{distributor_managed.id}" do - page.find("td.products").click - end + # we need this assertion here to assure there is enough time to + # toggle the variant box and evaluate the following assertion + expect(page).to have_content product.name.upcase - # we need this assertion here to assure there is enough time to - # toggle the variant box and evaluate the following assertion - expect(page).to have_content product.name.upcase - - # iterates between true / false, depending on the test case - expectation = expect_message ? :to : :not_to - expect(page).public_send(expectation, - have_content(%(No variant available for this product - (hidden via inventory settings)).squish)) - end + expect(page).to have_content "No variant available for this product" end - it_behaves_like "inventory warning", false, true, "shows", true - it_behaves_like "inventory warning", false, false, "does not show", false do - before { pending("#11851") } + it "doesn't show a warning when going to 'outgoing products' tab" do + pending("#11851") + + # hides/displays variant within coordinator's inventory + inventory_item_v1.update!(visible: false) + # changes coordinator's inventory preferences + supplier_managed.update preferred_product_selection_from_inventory_only: false + + visit edit_admin_order_cycle_path(oc) + click_link "Outgoing Products" + within "tr.distributor-#{distributor_managed.id}" do + page.find("td.products").click + end + + # we need this assertion here to assure there is enough time to + # toggle the variant box and evaluate the following assertion + expect(page).to have_content product.name.upcase + + expect(page).not_to have_content "No variant available for this product" end end From 6317fe1b717b0dd569f67a514e7dec88d56980ed Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 9 May 2024 10:25:26 +1000 Subject: [PATCH 104/319] Disable RSpec monkey patching --- .../products_reset_strategy_spec.rb | 2 +- .../spec/requests/addresses_spec.rb | 2 +- .../spec/requests/catalog_items_spec.rb | 4 +-- .../enterprise_groups/affiliated_by_spec.rb | 4 +-- .../spec/requests/enterprise_groups_spec.rb | 2 +- .../spec/requests/enterprises_spec.rb | 2 +- .../dfc_provider/spec/requests/offers_spec.rb | 2 +- .../spec/requests/persons_spec.rb | 2 +- .../spec/requests/social_medias_spec.rb | 2 +- .../spec/requests/supplied_products_spec.rb | 2 +- .../spec/services/address_builder_spec.rb | 2 +- .../services/authorization_control_spec.rb | 2 +- .../services/catalog_item_builder_spec.rb | 2 +- .../dfc_provider/spec/services/dfc_io_spec.rb | 2 +- .../spec/services/dfc_loader_spec.rb | 2 +- .../services/dfc_product_type_factory_spec.rb | 2 +- .../spec/services/dfc_request_spec.rb | 2 +- .../spec/services/enterprise_builder_spec.rb | 2 +- .../spec/services/offer_builder_spec.rb | 2 +- .../quantitative_value_builder_spec.rb | 2 +- .../services/social_media_builder_spec.rb | 2 +- .../services/supplied_product_builder_spec.rb | 2 +- .../stripe_sca_payment_authorize_spec.rb | 2 +- .../order_management/order/updater_spec.rb | 2 +- .../stock/coordinator_spec.rb | 2 +- .../order_management/stock/estimator_spec.rb | 2 +- .../order_management/stock/package_spec.rb | 2 +- .../order_management/stock/packer_spec.rb | 2 +- .../stock/prioritizer_spec.rb | 2 +- .../subscriptions/count_spec.rb | 2 +- .../subscriptions/estimator_spec.rb | 2 +- .../subscriptions/form_spec.rb | 2 +- .../subscriptions/payment_setup_spec.rb | 2 +- .../subscriptions/proxy_order_syncer_spec.rb | 2 +- .../stripe_payment_setup_spec.rb | 2 +- .../subscriptions/summarizer_spec.rb | 2 +- .../subscriptions/summary_spec.rb | 2 +- .../subscriptions/validator_spec.rb | 2 +- .../subscriptions/variants_list_spec.rb | 2 +- .../helpers/cookies_policy_helper_spec.rb | 2 +- spec/base_spec_helper.rb | 5 +++ .../distributor_title_component_spec.rb | 2 +- spec/components/example_component_spec.rb | 2 +- .../vertical_ellipsis_menu_component_spec.rb | 2 +- .../feature_toggle_constraint_spec.rb | 2 +- .../admin/bulk_line_items_controller_spec.rb | 2 +- .../column_preferences_controller_spec.rb | 2 +- .../admin/customers_controller_spec.rb | 2 +- .../admin/enterprises_controller_spec.rb | 2 +- .../admin/inventory_items_controller_spec.rb | 2 +- .../admin/invoice_settings_controller_spec.rb | 2 +- .../admin/matomo_settings_controller_spec.rb | 2 +- .../admin/order_cycles_controller_spec.rb | 2 +- .../admin/product_import_controller_spec.rb | 2 +- .../admin/proxy_orders_controller_spec.rb | 2 +- .../admin/reports_controller_spec.rb | 2 +- .../admin/schedules_controller_spec.rb | 2 +- .../admin/stripe_accounts_controller_spec.rb | 2 +- ...stripe_connect_settings_controller_spec.rb | 2 +- ...subscription_line_items_controller_spec.rb | 2 +- .../admin/subscriptions_controller_spec.rb | 2 +- .../admin/tag_rules_controller_spec.rb | 2 +- .../terms_of_service_files_controller_spec.rb | 2 +- .../variant_overrides_controller_spec.rb | 2 +- .../api/v0/base_controller_spec.rb | 2 +- .../api/v0/customers_controller_spec.rb | 2 +- .../api/v0/enterprise_fees_controller_spec.rb | 2 +- .../api/v0/enterprises_controller_spec.rb | 2 +- .../v0/exchange_products_controller_spec.rb | 2 +- .../api/v0/logos_controller_spec.rb | 2 +- .../api/v0/order_cycles_controller_spec.rb | 2 +- .../api/v0/orders_controller_spec.rb | 2 +- .../api/v0/product_images_controller_spec.rb | 2 +- .../api/v0/products_controller_spec.rb | 2 +- .../api/v0/promo_images_controller_spec.rb | 2 +- .../api/v0/reports/packing_report_spec.rb | 2 +- .../api/v0/reports_controller_spec.rb | 2 +- .../api/v0/shipments_controller_spec.rb | 2 +- .../api/v0/shops_controller_spec.rb | 2 +- .../api/v0/states_controller_spec.rb | 2 +- .../api/v0/statuses_controller_spec.rb | 2 +- .../api/v0/taxonomies_controller_spec.rb | 2 +- .../api/v0/taxons_controller_spec.rb | 2 +- .../terms_and_conditions_controller_spec.rb | 2 +- .../api/v0/variants_controller_spec.rb | 2 +- spec/controllers/base_controller_spec.rb | 2 +- spec/controllers/cart_controller_spec.rb | 2 +- spec/controllers/checkout_controller_spec.rb | 2 +- .../concerns/address_transformation_spec.rb | 2 +- .../controllers/concerns/extra_fields_spec.rb | 2 +- .../concerns/raising_parameters_spec.rb | 2 +- .../enterprises_controller_spec.rb | 2 +- spec/controllers/groups_controller_spec.rb | 2 +- .../controllers/line_items_controller_spec.rb | 2 +- .../paypal_controller_spec.rb | 2 +- .../stripe_controller_spec.rb | 2 +- .../registration_controller_spec.rb | 2 +- spec/controllers/shop_controller_spec.rb | 2 +- spec/controllers/shops_controller_spec.rb | 2 +- .../admin/adjustments_controller_spec.rb | 2 +- .../spree/admin/base_controller_spec.rb | 2 +- .../spree/admin/countries_controller_spec.rb | 2 +- .../admin/general_settings_controller_spec.rb | 2 +- .../admin/mail_methods_controller_spec.rb | 2 +- .../customer_details_controller_spec.rb | 2 +- .../spree/admin/orders/invoices_spec.rb | 4 +-- .../payments_controller_refunds_spec.rb | 2 +- .../payments/payments_controller_spec.rb | 2 +- .../spree/admin/orders_controller_spec.rb | 2 +- .../spree/admin/overview_controller_spec.rb | 2 +- .../admin/payment_methods_controller_spec.rb | 2 +- .../spree/admin/products_controller_spec.rb | 2 +- .../return_authorizations_controller_spec.rb | 2 +- .../spree/admin/search_controller_spec.rb | 2 +- .../shipping_categories_controller_spec.rb | 2 +- .../admin/shipping_methods_controller_spec.rb | 2 +- .../spree/admin/tax_rates_controller_spec.rb | 2 +- .../admin/tax_settings_controller_spec.rb | 2 +- .../spree/admin/taxons_controller_spec.rb | 2 +- .../spree/admin/users_controller_spec.rb | 2 +- .../spree/admin/variants_controller_spec.rb | 2 +- .../spree/api_keys_controller_spec.rb | 2 +- .../spree/credit_cards_controller_spec.rb | 2 +- .../spree/orders_controller_spec.rb | 2 +- .../spree/user_sessions_controller_spec.rb | 2 +- .../spree/users_controller_spec.rb | 2 +- .../stripe/callbacks_controller_spec.rb | 2 +- .../stripe/webhooks_controller_spec.rb | 2 +- .../user_confirmations_controller_spec.rb | 2 +- .../user_passwords_controller_spec.rb | 2 +- .../user_registrations_controller_spec.rb | 2 +- .../webhook_endpoints_controller_spec.rb | 2 +- .../forms/enterprise_fees_bulk_update_spec.rb | 2 +- spec/helpers/admin/enterprises_helper_spec.rb | 2 +- spec/helpers/admin/orders_helper_spec.rb | 2 +- spec/helpers/admin/reports_helper_spec.rb | 2 +- .../admin/subscriptions_helper_spec.rb | 2 +- spec/helpers/application_helper_spec.rb | 2 +- spec/helpers/bulk_form_builder_spec.rb | 2 +- spec/helpers/checkout_helper_spec.rb | 2 +- spec/helpers/i18n_helper_spec.rb | 2 +- spec/helpers/injection_helper_spec.rb | 2 +- spec/helpers/link_helper_spec.rb | 2 +- spec/helpers/navigation_helper_spec.rb | 2 +- spec/helpers/order_cycles_helper_spec.rb | 2 +- spec/helpers/serializer_helper_spec.rb | 2 +- spec/helpers/shop_helper_spec.rb | 2 +- spec/helpers/spree/admin/base_helper_spec.rb | 2 +- .../admin/general_settings_helper_spec.rb | 2 +- .../helpers/spree/admin/orders_helper_spec.rb | 2 +- spec/helpers/spree/base_helper_spec.rb | 2 +- spec/helpers/spree/orders_helper_spec.rb | 2 +- spec/helpers/tax_helper_spec.rb | 2 +- .../terms_and_conditions_helper_spec.rb | 2 +- spec/jobs/bulk_invoice_job_spec.rb | 2 +- spec/jobs/heartbeat_job_spec.rb | 2 +- spec/jobs/job_logger_spec.rb | 2 +- spec/jobs/order_cycle_closing_job_spec.rb | 2 +- .../jobs/order_cycle_notification_job_spec.rb | 2 +- spec/jobs/order_cycle_opened_job_spec.rb | 2 +- spec/jobs/report_job_spec.rb | 2 +- spec/jobs/subscription_confirm_job_spec.rb | 2 +- spec/jobs/subscription_placement_job_spec.rb | 2 +- spec/jobs/webhook_delivery_job_spec.rb | 2 +- spec/lib/action_dispatch/request_spec.rb | 2 +- spec/lib/haml_up_spec.rb | 2 +- spec/lib/i18n_digests_spec.rb | 2 +- .../open_food_network/address_finder_spec.rb | 2 +- .../enterprise_fee_applicator_spec.rb | 2 +- .../enterprise_fee_calculator_spec.rb | 2 +- .../enterprise_issue_validator_spec.rb | 2 +- .../open_food_network/error_logger_spec.rb | 2 +- .../open_food_network/feature_toggle_spec.rb | 2 +- .../lib/open_food_network/i18n_config_spec.rb | 2 +- .../i18n_inflections_spec.rb | 2 +- .../order_cycle_form_applicator_spec.rb | 2 +- .../order_cycle_permissions_spec.rb | 2 +- .../lib/open_food_network/permissions_spec.rb | 2 +- .../open_food_network/property_merge_spec.rb | 2 +- .../open_food_network/referer_parser_spec.rb | 2 +- .../scope_variant_to_hub_spec.rb | 2 +- .../scope_variants_to_search_spec.rb | 2 +- .../tag_rule_applicator_spec.rb | 2 +- spec/lib/reports/bulk_coop_report_spec.rb | 2 +- spec/lib/reports/customers_report_spec.rb | 2 +- .../enterprise_fee_summary/authorizer_spec.rb | 2 +- .../enterprise_fee_summary_report_spec.rb | 2 +- ...e_fees_with_tax_report_by_producer_spec.rb | 2 +- .../enterprise_fee_summary/parameters_spec.rb | 2 +- .../permissions_spec.rb | 2 +- .../enterprise_fee_type_total_spec.rb | 2 +- .../enterprise_fee_summary/summarizer_spec.rb | 2 +- spec/lib/reports/lettuce_share_report_spec.rb | 2 +- spec/lib/reports/line_items_spec.rb | 2 +- .../order_cycle_management_report_spec.rb | 2 +- .../orders_and_distributors_report_spec.rb | 2 +- ...order_cycle_customer_totals_report_spec.rb | 2 +- ...tributor_totals_by_supplier_report_spec.rb | 2 +- ...plier_totals_by_distributor_report_spec.rb | 2 +- ...rders_cycle_supplier_totals_report_spec.rb | 2 +- .../reports/packing/packing_report_spec.rb | 2 +- .../products_and_inventory_report_spec.rb | 4 +-- spec/lib/reports/report_loader_spec.rb | 2 +- spec/lib/reports/report_renderer_spec.rb | 2 +- spec/lib/reports/report_spec.rb | 2 +- spec/lib/reports/sales_tax_report_spec.rb | 2 +- .../reports/sales_tax_totals_by_order_spec.rb | 2 +- .../users_and_enterprises_report_spec.rb | 2 +- spec/lib/reports/xero_invoices_report_spec.rb | 2 +- spec/lib/spree/core/environment_spec.rb | 2 +- spec/lib/spree/core/mail_interceptor_spec.rb | 2 +- spec/lib/spree/core/mail_settings_spec.rb | 2 +- .../lib/spree/core/product_duplicator_spec.rb | 2 +- spec/lib/spree/core/token_resource_spec.rb | 2 +- spec/lib/spree/i18n_spec.rb | 2 +- spec/lib/spree/localized_number_spec.rb | 2 +- spec/lib/spree/money_spec.rb | 2 +- spec/lib/stripe/account_connector_spec.rb | 2 +- .../stripe/authorize_response_patcher_spec.rb | 2 +- spec/lib/stripe/credit_card_cloner_spec.rb | 2 +- spec/lib/stripe/credit_card_remover_spec.rb | 2 +- .../stripe/payment_intent_validator_spec.rb | 2 +- spec/lib/stripe/profile_storer_spec.rb | 2 +- spec/lib/stripe/webhook_handler_spec.rb | 2 +- .../tasks/data/remove_transient_data_spec.rb | 2 +- .../lib/tasks/data/truncate_data_rake_spec.rb | 2 +- spec/lib/tasks/data/truncate_data_spec.rb | 2 +- spec/lib/tasks/enterprises_rake_spec.rb | 2 +- spec/lib/tasks/reset_spec.rb | 2 +- spec/lib/tasks/sample_data_rake_spec.rb | 2 +- spec/lib/tasks/users_rake_spec.rb | 2 +- spec/mailers/enterprise_mailer_spec.rb | 2 +- spec/mailers/order_mailer_spec.rb | 2 +- spec/mailers/producer_mailer_spec.rb | 2 +- spec/mailers/report_mailer_spec.rb | 2 +- spec/mailers/shipment_mailer_spec.rb | 2 +- spec/mailers/subscription_mailer_spec.rb | 2 +- spec/mailers/test_mailer_spec.rb | 2 +- spec/mailers/user_mailer_spec.rb | 2 +- ...59_copy_oidc_data_to_oidc_accounts_spec.rb | 2 +- .../20240502035220_update_n8n_url_spec.rb | 2 +- ...nvert_stripe_connect_to_stripe_sca_spec.rb | 2 +- .../migrate_admin_tax_amounts_spec.rb | 2 +- .../migrations/migrate_customer_names_spec.rb | 2 +- spec/migrations/split_customer_names_spec.rb | 2 +- .../update_enterprise_instagram_links_spec.rb | 2 +- spec/models/adjustment_metadata_spec.rb | 2 +- .../flat_percent_item_total_spec.rb | 2 +- .../calculator/flat_percent_per_item_spec.rb | 2 +- spec/models/calculator/flat_rate_spec.rb | 2 +- spec/models/calculator/flexi_rate_spec.rb | 2 +- spec/models/calculator/per_item_spec.rb | 2 +- spec/models/calculator/price_sack_spec.rb | 2 +- spec/models/calculator/weight_spec.rb | 2 +- spec/models/column_preference_spec.rb | 2 +- spec/models/concerns/balance_spec.rb | 2 +- .../concerns/calculated_adjustments_spec.rb | 2 +- spec/models/concerns/order_shipment_spec.rb | 2 +- spec/models/concerns/product_stock_spec.rb | 2 +- spec/models/concerns/variant_stock_spec.rb | 2 +- spec/models/content_configuration_spec.rb | 2 +- spec/models/coordinator_fee_spec.rb | 2 +- spec/models/custom_tab_spec.rb | 2 +- spec/models/customer_spec.rb | 2 +- spec/models/enterprise_caching_spec.rb | 2 +- .../models/enterprise_fee_adjustments_spec.rb | 2 +- spec/models/enterprise_fee_spec.rb | 2 +- spec/models/enterprise_group_spec.rb | 2 +- spec/models/enterprise_relationship_spec.rb | 2 +- spec/models/enterprise_spec.rb | 2 +- spec/models/exchange_spec.rb | 2 +- .../invoice/data_presenter/line_item_spec.rb | 2 +- spec/models/invoice/data_presenter_spec.rb | 2 +- spec/models/oidc_account_spec.rb | 2 +- spec/models/order_balance_spec.rb | 2 +- spec/models/order_cycle_spec.rb | 2 +- .../product_import/entry_processor_spec.rb | 2 +- .../product_import/entry_validator_spec.rb | 2 +- .../inventory_reset_strategy_spec.rb | 2 +- .../product_import/reset_absent_spec.rb | 2 +- spec/models/product_import/settings_spec.rb | 2 +- spec/models/product_importer_spec.rb | 2 +- spec/models/proxy_order_spec.rb | 2 +- spec/models/report_blob_spec.rb | 2 +- spec/models/spree/ability_spec.rb | 2 +- spec/models/spree/address_spec.rb | 2 +- spec/models/spree/addresses_spec.rb | 2 +- spec/models/spree/adjustment_spec.rb | 2 +- spec/models/spree/app_configuration_spec.rb | 2 +- spec/models/spree/asset_spec.rb | 2 +- spec/models/spree/calculator_spec.rb | 2 +- spec/models/spree/credit_card_spec.rb | 2 +- spec/models/spree/gateway/stripe_sca_spec.rb | 2 +- spec/models/spree/gateway_spec.rb | 2 +- spec/models/spree/gateway_tagging_spec.rb | 4 +-- spec/models/spree/image_spec.rb | 2 +- spec/models/spree/inventory_unit_spec.rb | 2 +- spec/models/spree/line_item_spec.rb | 4 +-- spec/models/spree/order/address_spec.rb | 2 +- spec/models/spree/order/adjustments_spec.rb | 2 +- spec/models/spree/order/callbacks_spec.rb | 2 +- spec/models/spree/order/checkout_spec.rb | 2 +- spec/models/spree/order/payment_spec.rb | 2 +- spec/models/spree/order/state_machine_spec.rb | 2 +- spec/models/spree/order/tax_spec.rb | 2 +- spec/models/spree/order_contents_spec.rb | 2 +- spec/models/spree/order_inventory_spec.rb | 2 +- spec/models/spree/order_spec.rb | 2 +- spec/models/spree/payment_method_spec.rb | 2 +- spec/models/spree/payment_spec.rb | 2 +- spec/models/spree/preference_spec.rb | 2 +- .../spree/preferences/configuration_spec.rb | 2 +- .../spree/preferences/preferable_spec.rb | 2 +- spec/models/spree/preferences/store_spec.rb | 2 +- spec/models/spree/price_spec.rb | 2 +- spec/models/spree/product_property_spec.rb | 2 +- spec/models/spree/product_spec.rb | 4 +-- .../models/spree/return_authorization_spec.rb | 2 +- spec/models/spree/shipment_spec.rb | 2 +- spec/models/spree/shipping_method_spec.rb | 2 +- spec/models/spree/shipping_rate_spec.rb | 2 +- spec/models/spree/state_spec.rb | 2 +- .../stock/availability_validator_spec.rb | 2 +- spec/models/spree/stock/quantifier_spec.rb | 2 +- spec/models/spree/stock_location_spec.rb | 2 +- spec/models/spree/stock_movement_spec.rb | 2 +- spec/models/spree/tax_category_spec.rb | 2 +- spec/models/spree/tax_rate_spec.rb | 2 +- spec/models/spree/taxon_spec.rb | 2 +- spec/models/spree/taxonomy_spec.rb | 2 +- spec/models/spree/user_spec.rb | 2 +- spec/models/spree/variant_spec.rb | 2 +- spec/models/spree/zone_spec.rb | 2 +- spec/models/stripe_account_spec.rb | 2 +- spec/models/subscription_line_item_spec.rb | 2 +- spec/models/subscription_spec.rb | 2 +- .../tag_rule/filter_order_cycles_spec.rb | 2 +- .../tag_rule/filter_payment_methods_spec.rb | 2 +- spec/models/tag_rule/filter_products_spec.rb | 2 +- .../tag_rule/filter_shipping_methods_spec.rb | 2 +- spec/models/tag_rule_spec.rb | 2 +- spec/models/terms_of_service_file_spec.rb | 2 +- spec/models/variant_override_spec.rb | 2 +- spec/models/voucher_spec.rb | 2 +- spec/models/vouchers/flat_rate_spec.rb | 2 +- spec/models/vouchers/percentage_rate_spec.rb | 2 +- spec/models/webhook_endpoint_spec.rb | 2 +- .../queries/batch_taggable_tags_query_spec.rb | 2 +- ...complete_orders_with_balance_query_spec.rb | 2 +- .../complete_visible_orders_query_spec.rb | 2 +- .../customers_with_balance_query_spec.rb | 2 +- .../queries/outstanding_balance_query_spec.rb | 2 +- .../payments_requiring_action_query_spec.rb | 2 +- spec/queries/product_scope_query_spec.rb | 2 +- spec/reflexes/products_reflex_spec.rb | 2 +- spec/reflexes/user_reflex_spec.rb | 2 +- spec/requests/admin/images_spec.rb | 2 +- spec/requests/admin/product_import_spec.rb | 2 +- spec/requests/admin/vouchers_spec.rb | 2 +- spec/requests/api/orders_spec.rb | 2 +- spec/requests/api/routes_spec.rb | 2 +- spec/requests/api/v1/customers_spec.rb | 2 +- spec/requests/api_docs_spec.rb | 2 +- .../requests/checkout/failed_checkout_spec.rb | 2 +- spec/requests/checkout/paypal_spec.rb | 2 +- spec/requests/checkout/routes_spec.rb | 2 +- spec/requests/checkout/stripe_sca_spec.rb | 2 +- spec/requests/home_controller_spec.rb | 2 +- .../omniauth_callbacks_controller_spec.rb | 2 +- spec/requests/payments_controller_spec.rb | 2 +- spec/requests/spree/admin/overview_spec.rb | 2 +- spec/requests/spree/admin/payments_spec.rb | 2 +- spec/requests/voucher_adjustments_spec.rb | 2 +- spec/routing/stripe_spec.rb | 2 +- .../api/admin/customer_serializer_spec.rb | 2 +- .../customer_with_balance_serializer_spec.rb | 2 +- .../api/admin/enterprise_serializer_spec.rb | 2 +- .../api/admin/exchange_serializer_spec.rb | 2 +- .../supplied_product_serializer_spec.rb | 2 +- .../admin/index_enterprise_serializer_spec.rb | 2 +- .../api/admin/order_cycle_serializer_spec.rb | 2 +- .../api/admin/order_serializer_spec.rb | 2 +- .../api/admin/product_serializer_spec.rb | 2 +- .../subscription_customer_serializer_spec.rb | 2 +- .../subscription_line_item_serializer_spec.rb | 2 +- .../admin/variant_override_serializer_spec.rb | 2 +- .../api/admin/variant_serializer_spec.rb | 2 +- .../api/cached_enterprise_serializer_spec.rb | 2 +- .../api/credit_card_serializer_spec.rb | 2 +- .../api/current_order_serializer_spec.rb | 2 +- .../api/enterprise_serializer_spec.rb | 2 +- ...terprise_shopfront_list_serializer_spec.rb | 2 +- .../enterprise_shopfront_serializer_spec.rb | 2 +- .../api/group_list_serializer_spec.rb | 2 +- .../api/order_cycle_serializer_spec.rb | 2 +- spec/serializers/api/order_serializer_spec.rb | 2 +- .../api/product_serializer_spec.rb | 2 +- .../api/shipping_method_serializer_spec.rb | 2 +- .../api/variant_serializer_spec.rb | 2 +- spec/services/address_geocoder_spec.rb | 2 +- spec/services/cache_service_spec.rb | 2 +- spec/services/cap_quantity_spec.rb | 2 +- spec/services/cart_service_spec.rb | 2 +- .../checkout/payment_method_fetcher_spec.rb | 2 +- .../checkout/post_checkout_actions_spec.rb | 2 +- .../services/checkout/stripe_redirect_spec.rb | 2 +- spec/services/content_sanitizer_spec.rb | 2 +- .../default_shipping_category_spec.rb | 2 +- spec/services/default_stock_location_spec.rb | 2 +- spec/services/embedded_page_service_spec.rb | 2 +- .../exchange_products_renderer_spec.rb | 2 +- .../exchange_variant_bulk_updater_spec.rb | 2 +- spec/services/file_path_sanitizer_spec.rb | 2 +- spec/services/image_importer_spec.rb | 2 +- spec/services/invoice_data_generator_spec.rb | 2 +- spec/services/invoice_renderer_spec.rb | 2 +- spec/services/mail_configuration_spec.rb | 2 +- .../order_cycles/clone_service_spec.rb | 2 +- .../distributed_products_service_spec.rb | 2 +- .../distributed_variants_service_spec.rb | 2 +- .../order_cycles/form_service_spec.rb | 2 +- .../order_cycles/warning_service_spec.rb | 2 +- .../order_cycles/webhook_service_spec.rb | 2 +- .../available_payment_methods_service_spec.rb | 2 +- ...available_shipping_methods_service_spec.rb | 2 +- .../orders/cart_reset_service_spec.rb | 2 +- .../orders/checkout_restart_service_spec.rb | 2 +- .../orders/compare_invoice_service_spec.rb | 35 ++++++++++--------- .../customer_cancellation_service_spec.rb | 2 +- spec/services/orders/factory_service_spec.rb | 2 +- .../orders/find_payment_service_spec.rb | 2 +- .../orders/generate_invoice_service_spec.rb | 2 +- .../orders/handle_fees_service_spec.rb | 2 +- .../services/orders/mask_data_service_spec.rb | 2 +- .../order_tax_adjustments_fetcher_spec.rb | 2 +- spec/services/orders/sync_service_spec.rb | 2 +- spec/services/orders/workflow_service_spec.rb | 2 +- spec/services/path_checker_spec.rb | 2 +- spec/services/paypal_items_builder_spec.rb | 2 +- spec/services/permissions/order_spec.rb | 2 +- .../permitted_attributes/order_cycle_spec.rb | 2 +- .../permitted_attributes/user_spec.rb | 2 +- spec/services/place_proxy_order_spec.rb | 2 +- spec/services/process_payment_intent_spec.rb | 2 +- spec/services/product_filters_spec.rb | 2 +- .../product_tag_rules_filterer_spec.rb | 2 +- spec/services/products_renderer_spec.rb | 2 +- spec/services/search_orders_spec.rb | 2 +- spec/services/sets/model_set_spec.rb | 2 +- spec/services/sets/product_set_spec.rb | 2 +- spec/services/shop/order_cycles_list_spec.rb | 2 +- spec/services/stripe_payment_status_spec.rb | 2 +- spec/services/tax_rate_finder_spec.rb | 2 +- spec/services/tax_rate_updater_spec.rb | 2 +- spec/services/terms_of_service_spec.rb | 2 +- spec/services/unit_prices_spec.rb | 2 +- spec/services/upload_sanitizer_spec.rb | 2 +- spec/services/url_generator_spec.rb | 2 +- .../user_default_address_setter_spec.rb | 2 +- spec/services/user_locale_setter_spec.rb | 2 +- .../variant_overrides_indexed_spec.rb | 2 +- .../variant_units/option_value_namer_spec.rb | 2 +- spec/services/variants_stock_levels_spec.rb | 2 +- .../voucher_adjustments_service_spec.rb | 2 +- spec/services/weights_and_measures_spec.rb | 2 +- spec/system/admin/adjustments_spec.rb | 2 +- spec/system/admin/authentication_spec.rb | 2 +- .../admin/bulk_order_cancellation_spec.rb | 2 +- .../admin/bulk_order_management_spec.rb | 2 +- spec/system/admin/bulk_product_update_spec.rb | 2 +- .../admin/configuration/content_spec.rb | 2 +- .../configuration/general_settings_spec.rb | 2 +- .../admin/configuration/mail_methods_spec.rb | 2 +- .../configuration/shipping_categories_spec.rb | 2 +- .../system/admin/configuration/states_spec.rb | 2 +- .../configuration/tax_categories_spec.rb | 2 +- .../admin/configuration/tax_rates_spec.rb | 2 +- .../admin/configuration/taxonomies_spec.rb | 2 +- .../terms_of_service_files_spec.rb | 2 +- spec/system/admin/configuration/zones_spec.rb | 2 +- spec/system/admin/customers_spec.rb | 2 +- spec/system/admin/dfc_product_import_spec.rb | 2 +- spec/system/admin/enterprise_fees_spec.rb | 2 +- spec/system/admin/enterprise_groups_spec.rb | 2 +- .../admin/enterprise_relationships_spec.rb | 2 +- spec/system/admin/enterprise_roles_spec.rb | 2 +- spec/system/admin/enterprise_user_spec.rb | 2 +- .../enterprises/business_address_form_spec.rb | 2 +- .../admin/enterprises/connected_apps_spec.rb | 2 +- spec/system/admin/enterprises/images_spec.rb | 2 +- spec/system/admin/enterprises/index_spec.rb | 2 +- .../enterprises/terms_and_conditions_spec.rb | 2 +- spec/system/admin/enterprises_spec.rb | 2 +- spec/system/admin/flatpickr_spec.rb | 2 +- spec/system/admin/invoice_print_spec.rb | 2 +- spec/system/admin/multilingual_spec.rb | 2 +- spec/system/admin/oidc_settings_spec.rb | 2 +- .../complex_creating_specific_time_spec.rb | 2 +- ...x_editing_exchange_same_enterprise_spec.rb | 2 +- ...lex_editing_multiple_product_pages_spec.rb | 2 +- .../complex_editing_multiple_updation_spec.rb | 2 +- .../order_cycles/complex_editing_spec.rb | 2 +- .../complex_updating_specific_time_spec.rb | 2 +- spec/system/admin/order_cycles/list_spec.rb | 2 +- spec/system/admin/order_cycles/simple_spec.rb | 2 +- .../order_cycles_complex_nav_check_spec.rb | 2 +- spec/system/admin/order_spec.rb | 2 +- spec/system/admin/orders/invoices_spec.rb | 2 +- spec/system/admin/orders_spec.rb | 2 +- spec/system/admin/overview_spec.rb | 2 +- spec/system/admin/payment_method_spec.rb | 2 +- spec/system/admin/payments_spec.rb | 2 +- spec/system/admin/payments_stripe_spec.rb | 2 +- spec/system/admin/product_import_spec.rb | 2 +- spec/system/admin/products_spec.rb | 2 +- .../system/admin/products_v3/products_spec.rb | 2 +- spec/system/admin/properties_spec.rb | 2 +- .../reports/enterprise_fee_summaries_spec.rb | 2 +- ...mmary_fee_with_tax_report_by_order_spec.rb | 2 +- ...ry_fee_with_tax_report_by_producer_spec.rb | 2 +- .../reports/orders_and_fulfillment_spec.rb | 2 +- .../admin/reports/packing_report_spec.rb | 2 +- .../admin/reports/payments_report_spec.rb | 2 +- .../admin/reports/revenues_by_hub_spec.rb | 2 +- .../sales_tax_totals_by_order_spec.rb | 2 +- .../sales_tax_totals_by_producer_spec.rb | 2 +- .../reports/users_and_enterprises_spec.rb | 2 +- spec/system/admin/reports_spec.rb | 2 +- spec/system/admin/schedules_spec.rb | 2 +- spec/system/admin/shipping_methods_spec.rb | 2 +- spec/system/admin/subscriptions/crud_spec.rb | 2 +- .../admin/subscriptions/smoke_tests_spec.rb | 2 +- spec/system/admin/tag_rules_spec.rb | 2 +- spec/system/admin/tax_settings_spec.rb | 2 +- spec/system/admin/tos_banner_spec.rb | 2 +- spec/system/admin/unit_price_spec.rb | 2 +- spec/system/admin/users_spec.rb | 2 +- spec/system/admin/variant_overrides_spec.rb | 2 +- spec/system/admin/variants_spec.rb | 2 +- spec/system/admin/vouchers_spec.rb | 2 +- spec/system/consumer/account/cards_spec.rb | 2 +- .../account/developer_settings_spec.rb | 2 +- spec/system/consumer/account/payments_spec.rb | 2 +- spec/system/consumer/account/settings_spec.rb | 2 +- spec/system/consumer/account_spec.rb | 2 +- spec/system/consumer/authentication_spec.rb | 2 +- .../caching/darkswarm_caching_spec.rb | 2 +- .../consumer/caching/shops_caching_spec.rb | 2 +- spec/system/consumer/checkout/details_spec.rb | 2 +- spec/system/consumer/checkout/guest_spec.rb | 2 +- spec/system/consumer/checkout/payment_spec.rb | 2 +- spec/system/consumer/checkout/summary_spec.rb | 2 +- .../system/consumer/checkout/tax_incl_spec.rb | 2 +- .../consumer/checkout/tax_not_incl_spec.rb | 2 +- spec/system/consumer/cookies_spec.rb | 2 +- spec/system/consumer/footer_links_spec.rb | 2 +- spec/system/consumer/groups_spec.rb | 2 +- spec/system/consumer/multilingual_spec.rb | 2 +- spec/system/consumer/producers_spec.rb | 2 +- spec/system/consumer/registration_spec.rb | 2 +- spec/system/consumer/shopping/cart_spec.rb | 2 +- .../consumer/shopping/checkout_auth_spec.rb | 2 +- .../consumer/shopping/checkout_paypal_spec.rb | 2 +- .../consumer/shopping/checkout_stripe_spec.rb | 2 +- .../consumer/shopping/embedded_groups_spec.rb | 2 +- spec/system/consumer/shopping/orders_spec.rb | 2 +- .../system/consumer/shopping/products_spec.rb | 2 +- .../system/consumer/shopping/shopping_spec.rb | 2 +- .../consumer/shopping/unit_price_spec.rb | 2 +- .../shopping/variant_overrides_spec.rb | 2 +- spec/system/consumer/shops_spec.rb | 2 +- spec/system/consumer/sitemap_spec.rb | 2 +- spec/system/consumer/user_password_spec.rb | 2 +- spec/system/consumer/white_label_spec.rb | 2 +- .../date_time_string_validator_spec.rb | 2 +- .../integer_array_validator_spec.rb | 2 +- .../products_v3/_filters.html.haml_spec.rb | 2 +- .../_voucher_section.html.haml_spec.rb | 2 +- .../views/layouts/darkswarm.html.haml_spec.rb | 2 +- .../layouts/registration.html.haml_spec.rb | 2 +- .../spree/admin/orders/edit.html.haml_spec.rb | 2 +- .../admin/orders/index.html.haml_spec.rb | 2 +- .../admin/orders/invoice.html.haml_spec.rb | 2 +- .../payment_methods/index.html.haml_spec.rb | 2 +- .../views/spree/orders/edit.html.haml_spec.rb | 2 +- .../views/spree/orders/show.html.haml_spec.rb | 2 +- .../shared/_order_details.html.haml_spec.rb | 2 +- 587 files changed, 615 insertions(+), 609 deletions(-) diff --git a/engines/catalog/spec/services/catalog/product_import/products_reset_strategy_spec.rb b/engines/catalog/spec/services/catalog/product_import/products_reset_strategy_spec.rb index 823ed5d6b1..c6d43be45f 100644 --- a/engines/catalog/spec/services/catalog/product_import/products_reset_strategy_spec.rb +++ b/engines/catalog/spec/services/catalog/product_import/products_reset_strategy_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module Catalog module ProductImport - describe ProductsResetStrategy do + RSpec.describe ProductsResetStrategy do let(:products_reset) { described_class.new(excluded_items_ids) } describe '#reset' do diff --git a/engines/dfc_provider/spec/requests/addresses_spec.rb b/engines/dfc_provider/spec/requests/addresses_spec.rb index 21032e5df9..9e8693b03c 100644 --- a/engines/dfc_provider/spec/requests/addresses_spec.rb +++ b/engines/dfc_provider/spec/requests/addresses_spec.rb @@ -2,7 +2,7 @@ require_relative "../swagger_helper" -describe "Addresses", type: :request, swagger_doc: "dfc.yaml", rswag_autodoc: true do +RSpec.describe "Addresses", type: :request, swagger_doc: "dfc.yaml", rswag_autodoc: true do let(:user) { create(:oidc_user) } let(:address) { create(:address, id: 40_000) } let(:result) { json_response } diff --git a/engines/dfc_provider/spec/requests/catalog_items_spec.rb b/engines/dfc_provider/spec/requests/catalog_items_spec.rb index f047812e00..1405a5b0a5 100644 --- a/engines/dfc_provider/spec/requests/catalog_items_spec.rb +++ b/engines/dfc_provider/spec/requests/catalog_items_spec.rb @@ -2,8 +2,8 @@ require_relative "../swagger_helper" -describe "CatalogItems", type: :request, swagger_doc: "dfc.yaml", - rswag_autodoc: true do +RSpec.describe "CatalogItems", type: :request, swagger_doc: "dfc.yaml", + rswag_autodoc: true do let(:user) { create(:oidc_user, id: 12_345) } let(:enterprise) { create( diff --git a/engines/dfc_provider/spec/requests/enterprise_groups/affiliated_by_spec.rb b/engines/dfc_provider/spec/requests/enterprise_groups/affiliated_by_spec.rb index 4230fe2b29..fdee727fa8 100644 --- a/engines/dfc_provider/spec/requests/enterprise_groups/affiliated_by_spec.rb +++ b/engines/dfc_provider/spec/requests/enterprise_groups/affiliated_by_spec.rb @@ -2,8 +2,8 @@ require_relative "../../swagger_helper" -describe "EnterpriseGroups::AffiliatedBy", type: :request, swagger_doc: "dfc.yaml", - rswag_autodoc: true do +RSpec.describe "EnterpriseGroups::AffiliatedBy", type: :request, swagger_doc: "dfc.yaml", + rswag_autodoc: true do let(:user) { create(:oidc_user, id: 12_345) } let(:group) { create( diff --git a/engines/dfc_provider/spec/requests/enterprise_groups_spec.rb b/engines/dfc_provider/spec/requests/enterprise_groups_spec.rb index 80f734d92e..8b3f161893 100644 --- a/engines/dfc_provider/spec/requests/enterprise_groups_spec.rb +++ b/engines/dfc_provider/spec/requests/enterprise_groups_spec.rb @@ -2,7 +2,7 @@ require_relative "../swagger_helper" -describe "EnterpriseGroups", type: :request, swagger_doc: "dfc.yaml", rswag_autodoc: true do +RSpec.describe "EnterpriseGroups", type: :request, swagger_doc: "dfc.yaml", rswag_autodoc: true do let(:user) { create(:oidc_user, id: 12_345) } let(:group) { create( diff --git a/engines/dfc_provider/spec/requests/enterprises_spec.rb b/engines/dfc_provider/spec/requests/enterprises_spec.rb index c205bc62a9..9785361aa6 100644 --- a/engines/dfc_provider/spec/requests/enterprises_spec.rb +++ b/engines/dfc_provider/spec/requests/enterprises_spec.rb @@ -2,7 +2,7 @@ require_relative "../swagger_helper" -describe "Enterprises", type: :request, swagger_doc: "dfc.yaml", rswag_autodoc: true do +RSpec.describe "Enterprises", type: :request, swagger_doc: "dfc.yaml", rswag_autodoc: true do let!(:user) { create(:oidc_user) } let!(:enterprise) do create( diff --git a/engines/dfc_provider/spec/requests/offers_spec.rb b/engines/dfc_provider/spec/requests/offers_spec.rb index 826df7be76..f309613c0c 100644 --- a/engines/dfc_provider/spec/requests/offers_spec.rb +++ b/engines/dfc_provider/spec/requests/offers_spec.rb @@ -2,7 +2,7 @@ require_relative "../swagger_helper" -describe "Offers", type: :request, swagger_doc: "dfc.yaml", rswag_autodoc: true do +RSpec.describe "Offers", type: :request, swagger_doc: "dfc.yaml", rswag_autodoc: true do let!(:user) { create(:oidc_user) } let!(:enterprise) { create(:distributor_enterprise, id: 10_000, owner: user) } let!(:product) { diff --git a/engines/dfc_provider/spec/requests/persons_spec.rb b/engines/dfc_provider/spec/requests/persons_spec.rb index 3af17b76e9..a7ef52c0c4 100644 --- a/engines/dfc_provider/spec/requests/persons_spec.rb +++ b/engines/dfc_provider/spec/requests/persons_spec.rb @@ -2,7 +2,7 @@ require_relative "../swagger_helper" -describe "Persons", type: :request, swagger_doc: "dfc.yaml", rswag_autodoc: true do +RSpec.describe "Persons", type: :request, swagger_doc: "dfc.yaml", rswag_autodoc: true do let(:user) { create(:oidc_user, id: 10_000) } let(:other_user) { create(:oidc_user) } diff --git a/engines/dfc_provider/spec/requests/social_medias_spec.rb b/engines/dfc_provider/spec/requests/social_medias_spec.rb index 4211e5f455..71e7bfdbee 100644 --- a/engines/dfc_provider/spec/requests/social_medias_spec.rb +++ b/engines/dfc_provider/spec/requests/social_medias_spec.rb @@ -2,7 +2,7 @@ require_relative "../swagger_helper" -describe "SocialMedias", type: :request, swagger_doc: "dfc.yaml", rswag_autodoc: true do +RSpec.describe "SocialMedias", type: :request, swagger_doc: "dfc.yaml", rswag_autodoc: true do let(:user) { create(:oidc_user) } let(:enterprise) do create( diff --git a/engines/dfc_provider/spec/requests/supplied_products_spec.rb b/engines/dfc_provider/spec/requests/supplied_products_spec.rb index d57d45c0f0..e72e13017f 100644 --- a/engines/dfc_provider/spec/requests/supplied_products_spec.rb +++ b/engines/dfc_provider/spec/requests/supplied_products_spec.rb @@ -2,7 +2,7 @@ require_relative "../swagger_helper" -describe "SuppliedProducts", type: :request, swagger_doc: "dfc.yaml", rswag_autodoc: true do +RSpec.describe "SuppliedProducts", type: :request, swagger_doc: "dfc.yaml", rswag_autodoc: true do let!(:user) { create(:oidc_user) } let!(:enterprise) { create(:distributor_enterprise, id: 10_000, owner: user) } let!(:product) { diff --git a/engines/dfc_provider/spec/services/address_builder_spec.rb b/engines/dfc_provider/spec/services/address_builder_spec.rb index 134e08e998..89020de3e7 100644 --- a/engines/dfc_provider/spec/services/address_builder_spec.rb +++ b/engines/dfc_provider/spec/services/address_builder_spec.rb @@ -2,7 +2,7 @@ require_relative "../spec_helper" -describe AddressBuilder do +RSpec.describe AddressBuilder do subject(:result) { described_class.address(address) } let(:address) { build( diff --git a/engines/dfc_provider/spec/services/authorization_control_spec.rb b/engines/dfc_provider/spec/services/authorization_control_spec.rb index 97cd646df3..f5695f0cd6 100644 --- a/engines/dfc_provider/spec/services/authorization_control_spec.rb +++ b/engines/dfc_provider/spec/services/authorization_control_spec.rb @@ -2,7 +2,7 @@ require_relative "../spec_helper" -describe AuthorizationControl do +RSpec.describe AuthorizationControl do include AuthorizationHelper let(:user) { create(:oidc_user) } diff --git a/engines/dfc_provider/spec/services/catalog_item_builder_spec.rb b/engines/dfc_provider/spec/services/catalog_item_builder_spec.rb index ed80ac34a1..7c1b4d2c0f 100644 --- a/engines/dfc_provider/spec/services/catalog_item_builder_spec.rb +++ b/engines/dfc_provider/spec/services/catalog_item_builder_spec.rb @@ -2,7 +2,7 @@ require_relative "../spec_helper" -describe DfcBuilder do +RSpec.describe DfcBuilder do let(:variant) { build(:variant) } describe ".catalog_item" do diff --git a/engines/dfc_provider/spec/services/dfc_io_spec.rb b/engines/dfc_provider/spec/services/dfc_io_spec.rb index e95801853c..58194ce204 100644 --- a/engines/dfc_provider/spec/services/dfc_io_spec.rb +++ b/engines/dfc_provider/spec/services/dfc_io_spec.rb @@ -2,7 +2,7 @@ require_relative "../spec_helper" -describe DfcIo do +RSpec.describe DfcIo do let(:person) do DataFoodConsortium::Connector::Person.new("Pete") end diff --git a/engines/dfc_provider/spec/services/dfc_loader_spec.rb b/engines/dfc_provider/spec/services/dfc_loader_spec.rb index c36f05f75f..93ae98de9d 100644 --- a/engines/dfc_provider/spec/services/dfc_loader_spec.rb +++ b/engines/dfc_provider/spec/services/dfc_loader_spec.rb @@ -2,7 +2,7 @@ require_relative "../spec_helper" -describe DfcLoader do +RSpec.describe DfcLoader do it "prepares the DFC Connector to provide DFC object classes for export" do tomato = DataFoodConsortium::Connector::SuppliedProduct.new( "https://openfoodnetwork.org/tomato", diff --git a/engines/dfc_provider/spec/services/dfc_product_type_factory_spec.rb b/engines/dfc_provider/spec/services/dfc_product_type_factory_spec.rb index be4fa4342b..191046c294 100644 --- a/engines/dfc_provider/spec/services/dfc_product_type_factory_spec.rb +++ b/engines/dfc_provider/spec/services/dfc_product_type_factory_spec.rb @@ -2,7 +2,7 @@ require_relative "../spec_helper" -describe DfcProductTypeFactory do +RSpec.describe DfcProductTypeFactory do describe ".for" do let(:dfc_id) { "https://github.com/datafoodconsortium/taxonomies/releases/latest/download/productTypes.rdf#drink" diff --git a/engines/dfc_provider/spec/services/dfc_request_spec.rb b/engines/dfc_provider/spec/services/dfc_request_spec.rb index a4f0421fad..d1e82d17ef 100644 --- a/engines/dfc_provider/spec/services/dfc_request_spec.rb +++ b/engines/dfc_provider/spec/services/dfc_request_spec.rb @@ -2,7 +2,7 @@ require_relative "../spec_helper" -describe DfcRequest do +RSpec.describe DfcRequest do subject(:api) { DfcRequest.new(user) } let(:user) { build(:oidc_user) } diff --git a/engines/dfc_provider/spec/services/enterprise_builder_spec.rb b/engines/dfc_provider/spec/services/enterprise_builder_spec.rb index 8e24ed4fd1..cc26fe767b 100644 --- a/engines/dfc_provider/spec/services/enterprise_builder_spec.rb +++ b/engines/dfc_provider/spec/services/enterprise_builder_spec.rb @@ -2,7 +2,7 @@ require_relative "../spec_helper" -describe EnterpriseBuilder do +RSpec.describe EnterpriseBuilder do subject(:builder) { described_class } let(:enterprise) { build( diff --git a/engines/dfc_provider/spec/services/offer_builder_spec.rb b/engines/dfc_provider/spec/services/offer_builder_spec.rb index 15ef9c4dda..0fd9732d47 100644 --- a/engines/dfc_provider/spec/services/offer_builder_spec.rb +++ b/engines/dfc_provider/spec/services/offer_builder_spec.rb @@ -2,7 +2,7 @@ require_relative "../spec_helper" -describe OfferBuilder do +RSpec.describe OfferBuilder do let(:variant) { build(:variant) } describe ".offer" do diff --git a/engines/dfc_provider/spec/services/quantitative_value_builder_spec.rb b/engines/dfc_provider/spec/services/quantitative_value_builder_spec.rb index 39f2a8d8a7..4c5403e7e7 100644 --- a/engines/dfc_provider/spec/services/quantitative_value_builder_spec.rb +++ b/engines/dfc_provider/spec/services/quantitative_value_builder_spec.rb @@ -2,7 +2,7 @@ require_relative "../spec_helper" -describe QuantitativeValueBuilder do +RSpec.describe QuantitativeValueBuilder do subject(:builder) { described_class } let(:variant) { build(:variant, product:) } let(:product) { build(:product, name: "Apple") } diff --git a/engines/dfc_provider/spec/services/social_media_builder_spec.rb b/engines/dfc_provider/spec/services/social_media_builder_spec.rb index 633ce732d8..85d440d0e0 100644 --- a/engines/dfc_provider/spec/services/social_media_builder_spec.rb +++ b/engines/dfc_provider/spec/services/social_media_builder_spec.rb @@ -2,7 +2,7 @@ require_relative "../spec_helper" -describe SocialMediaBuilder do +RSpec.describe SocialMediaBuilder do let(:enterprise) do create( :enterprise, diff --git a/engines/dfc_provider/spec/services/supplied_product_builder_spec.rb b/engines/dfc_provider/spec/services/supplied_product_builder_spec.rb index 12bc49f518..3e582a7aa4 100644 --- a/engines/dfc_provider/spec/services/supplied_product_builder_spec.rb +++ b/engines/dfc_provider/spec/services/supplied_product_builder_spec.rb @@ -2,7 +2,7 @@ require_relative "../spec_helper" -describe SuppliedProductBuilder do +RSpec.describe SuppliedProductBuilder do include FileHelper subject(:builder) { described_class } diff --git a/engines/order_management/spec/services/order_management/order/stripe_sca_payment_authorize_spec.rb b/engines/order_management/spec/services/order_management/order/stripe_sca_payment_authorize_spec.rb index afe866f15b..338d938a1a 100644 --- a/engines/order_management/spec/services/order_management/order/stripe_sca_payment_authorize_spec.rb +++ b/engines/order_management/spec/services/order_management/order/stripe_sca_payment_authorize_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module OrderManagement module Order - describe StripeScaPaymentAuthorize do + RSpec.describe StripeScaPaymentAuthorize do let(:order) { create(:order) } let(:payment_authorize) { OrderManagement::Order::StripeScaPaymentAuthorize.new(order) diff --git a/engines/order_management/spec/services/order_management/order/updater_spec.rb b/engines/order_management/spec/services/order_management/order/updater_spec.rb index 6c2542b9e0..4b1eb0689e 100644 --- a/engines/order_management/spec/services/order_management/order/updater_spec.rb +++ b/engines/order_management/spec/services/order_management/order/updater_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module OrderManagement module Order - describe Updater do + RSpec.describe Updater do let(:order) { create(:order) } let(:updater) { OrderManagement::Order::Updater.new(order) } diff --git a/engines/order_management/spec/services/order_management/stock/coordinator_spec.rb b/engines/order_management/spec/services/order_management/stock/coordinator_spec.rb index ee93585dd6..9acc53675f 100644 --- a/engines/order_management/spec/services/order_management/stock/coordinator_spec.rb +++ b/engines/order_management/spec/services/order_management/stock/coordinator_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module OrderManagement module Stock - describe Coordinator do + RSpec.describe Coordinator do let!(:order) do build_stubbed( :order_with_line_items, diff --git a/engines/order_management/spec/services/order_management/stock/estimator_spec.rb b/engines/order_management/spec/services/order_management/stock/estimator_spec.rb index 042b4958d2..0c31ebe454 100644 --- a/engines/order_management/spec/services/order_management/stock/estimator_spec.rb +++ b/engines/order_management/spec/services/order_management/stock/estimator_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module OrderManagement module Stock - describe Estimator do + RSpec.describe Estimator do let!(:shipping_method) { create(:shipping_method, zones: [create(:zone)] ) } let(:package) { build(:stock_package_fulfilled) } let(:order) { package.order } diff --git a/engines/order_management/spec/services/order_management/stock/package_spec.rb b/engines/order_management/spec/services/order_management/stock/package_spec.rb index 64a9fd46d3..22b97eb1ff 100644 --- a/engines/order_management/spec/services/order_management/stock/package_spec.rb +++ b/engines/order_management/spec/services/order_management/stock/package_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module OrderManagement module Stock - describe Package do + RSpec.describe Package do context "base tests" do let(:variant) { build(:variant, weight: 25.0) } let(:stock_location) { build(:stock_location) } diff --git a/engines/order_management/spec/services/order_management/stock/packer_spec.rb b/engines/order_management/spec/services/order_management/stock/packer_spec.rb index 80666eb3d4..1b0895bc28 100644 --- a/engines/order_management/spec/services/order_management/stock/packer_spec.rb +++ b/engines/order_management/spec/services/order_management/stock/packer_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module OrderManagement module Stock - describe Packer do + RSpec.describe Packer do let(:distributor) { create(:distributor_enterprise) } let(:order) { create(:order_with_line_items, line_items_count: 5, distributor:) } let(:stock_location) { create(:stock_location) } diff --git a/engines/order_management/spec/services/order_management/stock/prioritizer_spec.rb b/engines/order_management/spec/services/order_management/stock/prioritizer_spec.rb index b1783eb734..c521eaad84 100644 --- a/engines/order_management/spec/services/order_management/stock/prioritizer_spec.rb +++ b/engines/order_management/spec/services/order_management/stock/prioritizer_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module OrderManagement module Stock - describe Prioritizer do + RSpec.describe Prioritizer do let(:order) { create(:order_with_line_items, line_items_count: 2) } let(:stock_location) { build(:stock_location) } let(:variant1) { order.line_items[0].variant } diff --git a/engines/order_management/spec/services/order_management/subscriptions/count_spec.rb b/engines/order_management/spec/services/order_management/subscriptions/count_spec.rb index 75b4e47111..a852130932 100644 --- a/engines/order_management/spec/services/order_management/subscriptions/count_spec.rb +++ b/engines/order_management/spec/services/order_management/subscriptions/count_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module OrderManagement module Subscriptions - describe Count do + RSpec.describe Count do let(:oc1) { create(:simple_order_cycle) } let(:oc2) { create(:simple_order_cycle) } let(:subscriptions_count) { Count.new(order_cycles) } diff --git a/engines/order_management/spec/services/order_management/subscriptions/estimator_spec.rb b/engines/order_management/spec/services/order_management/subscriptions/estimator_spec.rb index 238aa8e322..5a4c91f71d 100644 --- a/engines/order_management/spec/services/order_management/subscriptions/estimator_spec.rb +++ b/engines/order_management/spec/services/order_management/subscriptions/estimator_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module OrderManagement module Subscriptions - describe Estimator do + RSpec.describe Estimator do describe "estimating prices for subscription line items" do let!(:subscription) { create(:subscription, with_items: true) } let!(:sli1) { subscription.subscription_line_items.first } diff --git a/engines/order_management/spec/services/order_management/subscriptions/form_spec.rb b/engines/order_management/spec/services/order_management/subscriptions/form_spec.rb index 56122e12e6..c915ff0e99 100644 --- a/engines/order_management/spec/services/order_management/subscriptions/form_spec.rb +++ b/engines/order_management/spec/services/order_management/subscriptions/form_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module OrderManagement module Subscriptions - describe Form do + RSpec.describe Form do describe "creating a new subscription" do let!(:shop) { create(:distributor_enterprise) } let!(:customer) { create(:customer, enterprise: shop) } diff --git a/engines/order_management/spec/services/order_management/subscriptions/payment_setup_spec.rb b/engines/order_management/spec/services/order_management/subscriptions/payment_setup_spec.rb index 035021eb49..297fc841a7 100644 --- a/engines/order_management/spec/services/order_management/subscriptions/payment_setup_spec.rb +++ b/engines/order_management/spec/services/order_management/subscriptions/payment_setup_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module OrderManagement module Subscriptions - describe PaymentSetup do + RSpec.describe PaymentSetup do let(:order) { create(:order) } let(:payment_setup) { OrderManagement::Subscriptions::PaymentSetup.new(order) } diff --git a/engines/order_management/spec/services/order_management/subscriptions/proxy_order_syncer_spec.rb b/engines/order_management/spec/services/order_management/subscriptions/proxy_order_syncer_spec.rb index fcf06793df..91dcc2a32a 100644 --- a/engines/order_management/spec/services/order_management/subscriptions/proxy_order_syncer_spec.rb +++ b/engines/order_management/spec/services/order_management/subscriptions/proxy_order_syncer_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module OrderManagement module Subscriptions - describe ProxyOrderSyncer do + RSpec.describe ProxyOrderSyncer do describe "initialization" do let!(:subscription) { create(:subscription) } diff --git a/engines/order_management/spec/services/order_management/subscriptions/stripe_payment_setup_spec.rb b/engines/order_management/spec/services/order_management/subscriptions/stripe_payment_setup_spec.rb index 9c4e97157c..6db96cf112 100644 --- a/engines/order_management/spec/services/order_management/subscriptions/stripe_payment_setup_spec.rb +++ b/engines/order_management/spec/services/order_management/subscriptions/stripe_payment_setup_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module OrderManagement module Subscriptions - describe StripePaymentSetup do + RSpec.describe StripePaymentSetup do let(:order) { create(:order) } let(:payment_setup) { OrderManagement::Subscriptions::StripePaymentSetup.new(order) } diff --git a/engines/order_management/spec/services/order_management/subscriptions/summarizer_spec.rb b/engines/order_management/spec/services/order_management/subscriptions/summarizer_spec.rb index 8333eda906..a442a76f6f 100644 --- a/engines/order_management/spec/services/order_management/subscriptions/summarizer_spec.rb +++ b/engines/order_management/spec/services/order_management/subscriptions/summarizer_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module OrderManagement module Subscriptions - describe Summarizer do + RSpec.describe Summarizer do let(:order) { create(:order) } let(:summarizer) { OrderManagement::Subscriptions::Summarizer.new } diff --git a/engines/order_management/spec/services/order_management/subscriptions/summary_spec.rb b/engines/order_management/spec/services/order_management/subscriptions/summary_spec.rb index 6aeb292bf2..5c877800a5 100644 --- a/engines/order_management/spec/services/order_management/subscriptions/summary_spec.rb +++ b/engines/order_management/spec/services/order_management/subscriptions/summary_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module OrderManagement module Subscriptions - describe Summary do + RSpec.describe Summary do let(:summary) { OrderManagement::Subscriptions::Summary.new(123) } describe "#initialize" do diff --git a/engines/order_management/spec/services/order_management/subscriptions/validator_spec.rb b/engines/order_management/spec/services/order_management/subscriptions/validator_spec.rb index 55e4d28944..2d76ac4ace 100644 --- a/engines/order_management/spec/services/order_management/subscriptions/validator_spec.rb +++ b/engines/order_management/spec/services/order_management/subscriptions/validator_spec.rb @@ -4,7 +4,7 @@ require "spec_helper" module OrderManagement module Subscriptions - describe Validator do + RSpec.describe Validator do let(:owner) { create(:user) } let(:shop) { create(:enterprise, name: "Shop", owner:) } diff --git a/engines/order_management/spec/services/order_management/subscriptions/variants_list_spec.rb b/engines/order_management/spec/services/order_management/subscriptions/variants_list_spec.rb index dc51f14f8e..bb95c0dc77 100644 --- a/engines/order_management/spec/services/order_management/subscriptions/variants_list_spec.rb +++ b/engines/order_management/spec/services/order_management/subscriptions/variants_list_spec.rb @@ -4,7 +4,7 @@ require "spec_helper" module OrderManagement module Subscriptions - describe VariantsList do + RSpec.describe VariantsList do describe "variant eligibility for subscription" do let!(:shop) { create(:distributor_enterprise) } let!(:producer) { create(:supplier_enterprise) } diff --git a/engines/web/spec/helpers/cookies_policy_helper_spec.rb b/engines/web/spec/helpers/cookies_policy_helper_spec.rb index 02ff9910a0..81a779c7dd 100644 --- a/engines/web/spec/helpers/cookies_policy_helper_spec.rb +++ b/engines/web/spec/helpers/cookies_policy_helper_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Web - describe CookiesPolicyHelper, type: :helper do + RSpec.describe CookiesPolicyHelper, type: :helper do # keeps global state unchanged around do |example| original_locale = I18n.locale diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb index 7412ba4dec..bfa70791e5 100644 --- a/spec/base_spec_helper.rb +++ b/spec/base_spec_helper.rb @@ -124,6 +124,11 @@ RSpec.configure do |config| # triggering implicit auto-inclusion in groups with matching metadata. config.shared_context_metadata_behavior = :apply_to_host_groups + # Limits the available syntax to the non-monkey patched syntax that is + # recommended. For more details, see: + # https://rspec.info/features/3-12/rspec-core/configuration/zero-monkey-patching-mode/ + config.disable_monkey_patching! + # Reset locale for all specs. config.around(:each) do |example| I18n.with_locale(:en) { example.run } diff --git a/spec/components/distributor_title_component_spec.rb b/spec/components/distributor_title_component_spec.rb index b678027f49..c88b76eb67 100644 --- a/spec/components/distributor_title_component_spec.rb +++ b/spec/components/distributor_title_component_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "DistributorTitle tests", type: :component do +RSpec.describe "DistributorTitle tests", type: :component do it "displays distributor title with its name" do render_inline(DistributorTitleComponent.new(name: "Freddy's Farm Shop")) {} expect(page).to have_selector "h3", text: "Freddy's Farm Shop" diff --git a/spec/components/example_component_spec.rb b/spec/components/example_component_spec.rb index f40eeb5ee8..540d7a4364 100644 --- a/spec/components/example_component_spec.rb +++ b/spec/components/example_component_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "ExampleComponent tests", type: :component do +RSpec.describe "ExampleComponent tests", type: :component do it "displays the h1 with the given parameter" do render_inline(ExampleComponent.new(title: "Hello")) {} expect(page).to have_selector "h1", text: "Hello" diff --git a/spec/components/vertical_ellipsis_menu_component_spec.rb b/spec/components/vertical_ellipsis_menu_component_spec.rb index cdbdea159f..3f8a37bab1 100644 --- a/spec/components/vertical_ellipsis_menu_component_spec.rb +++ b/spec/components/vertical_ellipsis_menu_component_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe VerticalEllipsisMenu::Component, type: :component do +RSpec.describe VerticalEllipsisMenu::Component, type: :component do it "displays the included links" do content = "Edit" render_inline(described_class.new.with_content(content.html_safe)) diff --git a/spec/constraints/feature_toggle_constraint_spec.rb b/spec/constraints/feature_toggle_constraint_spec.rb index 4c9e477d17..6738c64480 100644 --- a/spec/constraints/feature_toggle_constraint_spec.rb +++ b/spec/constraints/feature_toggle_constraint_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe FeatureToggleConstraint do +RSpec.describe FeatureToggleConstraint do subject { described_class.new("baking") } let(:request) { double(env:) } let(:env) { {} } diff --git a/spec/controllers/admin/bulk_line_items_controller_spec.rb b/spec/controllers/admin/bulk_line_items_controller_spec.rb index 15e540c97b..1a3a4d2852 100644 --- a/spec/controllers/admin/bulk_line_items_controller_spec.rb +++ b/spec/controllers/admin/bulk_line_items_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Admin::BulkLineItemsController, type: :controller do +RSpec.describe Admin::BulkLineItemsController, type: :controller do describe '#index' do render_views diff --git a/spec/controllers/admin/column_preferences_controller_spec.rb b/spec/controllers/admin/column_preferences_controller_spec.rb index 0c46af6ecd..41f34b163e 100644 --- a/spec/controllers/admin/column_preferences_controller_spec.rb +++ b/spec/controllers/admin/column_preferences_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Admin::ColumnPreferencesController, type: :controller do +RSpec.describe Admin::ColumnPreferencesController, type: :controller do include AuthenticationHelper describe "bulk_update" do diff --git a/spec/controllers/admin/customers_controller_spec.rb b/spec/controllers/admin/customers_controller_spec.rb index f7397e58ab..d8d464fcb0 100644 --- a/spec/controllers/admin/customers_controller_spec.rb +++ b/spec/controllers/admin/customers_controller_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Admin - describe CustomersController, type: :controller do + RSpec.describe CustomersController, type: :controller do include AuthenticationHelper describe "index" do diff --git a/spec/controllers/admin/enterprises_controller_spec.rb b/spec/controllers/admin/enterprises_controller_spec.rb index 9c033da706..4caf3e38d7 100644 --- a/spec/controllers/admin/enterprises_controller_spec.rb +++ b/spec/controllers/admin/enterprises_controller_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'open_food_network/order_cycle_permissions' -describe Admin::EnterprisesController, type: :controller do +RSpec.describe Admin::EnterprisesController, type: :controller do let(:user) { create(:user) } let(:admin_user) { create(:admin_user) } let(:distributor_manager) { create(:user, enterprise_limit: 10, enterprises: [distributor]) } diff --git a/spec/controllers/admin/inventory_items_controller_spec.rb b/spec/controllers/admin/inventory_items_controller_spec.rb index cf29a2d39c..8375a89bbd 100644 --- a/spec/controllers/admin/inventory_items_controller_spec.rb +++ b/spec/controllers/admin/inventory_items_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Admin::InventoryItemsController, type: :controller do +RSpec.describe Admin::InventoryItemsController, type: :controller do describe "create" do context "json" do let(:format) { :json } diff --git a/spec/controllers/admin/invoice_settings_controller_spec.rb b/spec/controllers/admin/invoice_settings_controller_spec.rb index b575d822d4..de8edc2a62 100644 --- a/spec/controllers/admin/invoice_settings_controller_spec.rb +++ b/spec/controllers/admin/invoice_settings_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Admin::InvoiceSettingsController, type: :controller do +RSpec.describe Admin::InvoiceSettingsController, type: :controller do describe "#update" do let(:params) { { diff --git a/spec/controllers/admin/matomo_settings_controller_spec.rb b/spec/controllers/admin/matomo_settings_controller_spec.rb index 26b5f8d604..f488bd9637 100644 --- a/spec/controllers/admin/matomo_settings_controller_spec.rb +++ b/spec/controllers/admin/matomo_settings_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Admin::MatomoSettingsController, type: :controller do +RSpec.describe Admin::MatomoSettingsController, type: :controller do describe "#update" do let(:params) { { diff --git a/spec/controllers/admin/order_cycles_controller_spec.rb b/spec/controllers/admin/order_cycles_controller_spec.rb index fd154b7118..aaeafbd8d7 100644 --- a/spec/controllers/admin/order_cycles_controller_spec.rb +++ b/spec/controllers/admin/order_cycles_controller_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Admin - describe OrderCyclesController, type: :controller do + RSpec.describe OrderCyclesController, type: :controller do let!(:distributor_owner) { create(:user) } before do diff --git a/spec/controllers/admin/product_import_controller_spec.rb b/spec/controllers/admin/product_import_controller_spec.rb index 88f6793ad5..404e4ed763 100644 --- a/spec/controllers/admin/product_import_controller_spec.rb +++ b/spec/controllers/admin/product_import_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Admin::ProductImportController, type: :controller do +RSpec.describe Admin::ProductImportController, type: :controller do describe 'validate_file_path' do context 'file extension' do it 'should authorize csv extension' do diff --git a/spec/controllers/admin/proxy_orders_controller_spec.rb b/spec/controllers/admin/proxy_orders_controller_spec.rb index 6e505530b6..7882fd96c4 100644 --- a/spec/controllers/admin/proxy_orders_controller_spec.rb +++ b/spec/controllers/admin/proxy_orders_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Admin::ProxyOrdersController, type: :controller do +RSpec.describe Admin::ProxyOrdersController, type: :controller do include AuthenticationHelper describe 'cancel' do diff --git a/spec/controllers/admin/reports_controller_spec.rb b/spec/controllers/admin/reports_controller_spec.rb index 318682a8e8..5e80fe5f68 100644 --- a/spec/controllers/admin/reports_controller_spec.rb +++ b/spec/controllers/admin/reports_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Admin::ReportsController, type: :controller do +RSpec.describe Admin::ReportsController, type: :controller do # Given two distributors and two suppliers let(:bill_address) { create(:address) } let(:ship_address) { create(:address) } diff --git a/spec/controllers/admin/schedules_controller_spec.rb b/spec/controllers/admin/schedules_controller_spec.rb index 38b1f12e35..c47b9e7bc8 100644 --- a/spec/controllers/admin/schedules_controller_spec.rb +++ b/spec/controllers/admin/schedules_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Admin::SchedulesController, type: :controller do +RSpec.describe Admin::SchedulesController, type: :controller do include AuthenticationHelper describe "index" do diff --git a/spec/controllers/admin/stripe_accounts_controller_spec.rb b/spec/controllers/admin/stripe_accounts_controller_spec.rb index a1b5df8d69..97aa99a895 100644 --- a/spec/controllers/admin/stripe_accounts_controller_spec.rb +++ b/spec/controllers/admin/stripe_accounts_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Admin::StripeAccountsController, type: :controller do +RSpec.describe Admin::StripeAccountsController, type: :controller do let(:enterprise) { create(:distributor_enterprise) } describe "#connect" do diff --git a/spec/controllers/admin/stripe_connect_settings_controller_spec.rb b/spec/controllers/admin/stripe_connect_settings_controller_spec.rb index c6e99d47a8..ac56335e2d 100644 --- a/spec/controllers/admin/stripe_connect_settings_controller_spec.rb +++ b/spec/controllers/admin/stripe_connect_settings_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Admin::StripeConnectSettingsController, type: :controller do +RSpec.describe Admin::StripeConnectSettingsController, type: :controller do let(:user) { create(:user) } let(:admin) { create(:admin_user) } diff --git a/spec/controllers/admin/subscription_line_items_controller_spec.rb b/spec/controllers/admin/subscription_line_items_controller_spec.rb index 1ac8b006d8..0a015046f2 100644 --- a/spec/controllers/admin/subscription_line_items_controller_spec.rb +++ b/spec/controllers/admin/subscription_line_items_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Admin::SubscriptionLineItemsController, type: :controller do +RSpec.describe Admin::SubscriptionLineItemsController, type: :controller do include AuthenticationHelper describe "build" do diff --git a/spec/controllers/admin/subscriptions_controller_spec.rb b/spec/controllers/admin/subscriptions_controller_spec.rb index c00d8ae113..3beaf5f5d5 100644 --- a/spec/controllers/admin/subscriptions_controller_spec.rb +++ b/spec/controllers/admin/subscriptions_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Admin::SubscriptionsController, type: :controller do +RSpec.describe Admin::SubscriptionsController, type: :controller do include AuthenticationHelper describe 'index' do diff --git a/spec/controllers/admin/tag_rules_controller_spec.rb b/spec/controllers/admin/tag_rules_controller_spec.rb index 9f789c1784..66930b43ce 100644 --- a/spec/controllers/admin/tag_rules_controller_spec.rb +++ b/spec/controllers/admin/tag_rules_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Admin::TagRulesController, type: :controller do +RSpec.describe Admin::TagRulesController, type: :controller do describe "destroy" do context "json" do let(:format) { :json } diff --git a/spec/controllers/admin/terms_of_service_files_controller_spec.rb b/spec/controllers/admin/terms_of_service_files_controller_spec.rb index de6b0ba174..dac296ea95 100644 --- a/spec/controllers/admin/terms_of_service_files_controller_spec.rb +++ b/spec/controllers/admin/terms_of_service_files_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Admin::TermsOfServiceFilesController, type: :controller do +RSpec.describe Admin::TermsOfServiceFilesController, type: :controller do context "a non-admin user" do let(:user) { create(:user) } diff --git a/spec/controllers/admin/variant_overrides_controller_spec.rb b/spec/controllers/admin/variant_overrides_controller_spec.rb index 4224452fb1..7e37e63d60 100644 --- a/spec/controllers/admin/variant_overrides_controller_spec.rb +++ b/spec/controllers/admin/variant_overrides_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Admin::VariantOverridesController, type: :controller do +RSpec.describe Admin::VariantOverridesController, type: :controller do describe "bulk_update" do context "json" do let(:format) { :json } diff --git a/spec/controllers/api/v0/base_controller_spec.rb b/spec/controllers/api/v0/base_controller_spec.rb index ae57801550..e98ab3e4f6 100644 --- a/spec/controllers/api/v0/base_controller_spec.rb +++ b/spec/controllers/api/v0/base_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::V0::BaseController do +RSpec.describe Api::V0::BaseController do render_views controller(Api::V0::BaseController) do skip_authorization_check only: :index diff --git a/spec/controllers/api/v0/customers_controller_spec.rb b/spec/controllers/api/v0/customers_controller_spec.rb index 83bd201b4f..b232bdea45 100644 --- a/spec/controllers/api/v0/customers_controller_spec.rb +++ b/spec/controllers/api/v0/customers_controller_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Api - describe V0::CustomersController, type: :controller do + RSpec.describe V0::CustomersController, type: :controller do include AuthenticationHelper render_views diff --git a/spec/controllers/api/v0/enterprise_fees_controller_spec.rb b/spec/controllers/api/v0/enterprise_fees_controller_spec.rb index 40ed1e78e2..06a7b564fe 100644 --- a/spec/controllers/api/v0/enterprise_fees_controller_spec.rb +++ b/spec/controllers/api/v0/enterprise_fees_controller_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Api - describe V0::EnterpriseFeesController, type: :controller do + RSpec.describe V0::EnterpriseFeesController, type: :controller do include AuthenticationHelper let!(:unreferenced_fee) { create(:enterprise_fee) } diff --git a/spec/controllers/api/v0/enterprises_controller_spec.rb b/spec/controllers/api/v0/enterprises_controller_spec.rb index b930acfeaf..d0529f3eeb 100644 --- a/spec/controllers/api/v0/enterprises_controller_spec.rb +++ b/spec/controllers/api/v0/enterprises_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::V0::EnterprisesController, type: :controller do +RSpec.describe Api::V0::EnterprisesController, type: :controller do render_views let(:enterprise) { create(:distributor_enterprise) } diff --git a/spec/controllers/api/v0/exchange_products_controller_spec.rb b/spec/controllers/api/v0/exchange_products_controller_spec.rb index 18c04f3825..ea226a80f1 100644 --- a/spec/controllers/api/v0/exchange_products_controller_spec.rb +++ b/spec/controllers/api/v0/exchange_products_controller_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Api - describe V0::ExchangeProductsController, type: :controller do + RSpec.describe V0::ExchangeProductsController, type: :controller do include AuthenticationHelper let(:order_cycle) { create(:order_cycle) } diff --git a/spec/controllers/api/v0/logos_controller_spec.rb b/spec/controllers/api/v0/logos_controller_spec.rb index 3d8c800ba0..323c11c4ea 100644 --- a/spec/controllers/api/v0/logos_controller_spec.rb +++ b/spec/controllers/api/v0/logos_controller_spec.rb @@ -3,7 +3,7 @@ require "spec_helper" module Api - describe V0::LogosController, type: :controller do + RSpec.describe V0::LogosController, type: :controller do include AuthenticationHelper include FileHelper diff --git a/spec/controllers/api/v0/order_cycles_controller_spec.rb b/spec/controllers/api/v0/order_cycles_controller_spec.rb index a8640fa581..c6c9257cfe 100644 --- a/spec/controllers/api/v0/order_cycles_controller_spec.rb +++ b/spec/controllers/api/v0/order_cycles_controller_spec.rb @@ -3,7 +3,7 @@ require "spec_helper" module Api - describe V0::OrderCyclesController, type: :controller do + RSpec.describe V0::OrderCyclesController, type: :controller do let!(:distributor) { create(:distributor_enterprise) } let!(:order_cycle) { create(:simple_order_cycle, distributors: [distributor]) } let!(:exchange) { order_cycle.exchanges.to_enterprises(distributor).outgoing.first } diff --git a/spec/controllers/api/v0/orders_controller_spec.rb b/spec/controllers/api/v0/orders_controller_spec.rb index d727221cfe..5f955cd573 100644 --- a/spec/controllers/api/v0/orders_controller_spec.rb +++ b/spec/controllers/api/v0/orders_controller_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Api - describe V0::OrdersController, type: :controller do + RSpec.describe V0::OrdersController, type: :controller do include AuthenticationHelper render_views diff --git a/spec/controllers/api/v0/product_images_controller_spec.rb b/spec/controllers/api/v0/product_images_controller_spec.rb index 2c0a380bee..d010e7b615 100644 --- a/spec/controllers/api/v0/product_images_controller_spec.rb +++ b/spec/controllers/api/v0/product_images_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::V0::ProductImagesController, type: :controller do +RSpec.describe Api::V0::ProductImagesController, type: :controller do include AuthenticationHelper include FileHelper render_views diff --git a/spec/controllers/api/v0/products_controller_spec.rb b/spec/controllers/api/v0/products_controller_spec.rb index 4abba9f3bd..bd796be1ea 100644 --- a/spec/controllers/api/v0/products_controller_spec.rb +++ b/spec/controllers/api/v0/products_controller_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'spree/core/product_duplicator' -describe Api::V0::ProductsController, type: :controller do +RSpec.describe Api::V0::ProductsController, type: :controller do render_views let(:supplier) { create(:supplier_enterprise) } diff --git a/spec/controllers/api/v0/promo_images_controller_spec.rb b/spec/controllers/api/v0/promo_images_controller_spec.rb index 76e7288ae1..0b3d173efb 100644 --- a/spec/controllers/api/v0/promo_images_controller_spec.rb +++ b/spec/controllers/api/v0/promo_images_controller_spec.rb @@ -3,7 +3,7 @@ require "spec_helper" module Api - describe V0::PromoImagesController, type: :controller do + RSpec.describe V0::PromoImagesController, type: :controller do include AuthenticationHelper include FileHelper diff --git a/spec/controllers/api/v0/reports/packing_report_spec.rb b/spec/controllers/api/v0/reports/packing_report_spec.rb index a88a26c7d0..1b35ddbe66 100644 --- a/spec/controllers/api/v0/reports/packing_report_spec.rb +++ b/spec/controllers/api/v0/reports/packing_report_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Api::V0::ReportsController, type: :controller do +RSpec.describe Api::V0::ReportsController, type: :controller do let(:params) { { report_type: 'packing', diff --git a/spec/controllers/api/v0/reports_controller_spec.rb b/spec/controllers/api/v0/reports_controller_spec.rb index e50c55cbdc..6c6000300d 100644 --- a/spec/controllers/api/v0/reports_controller_spec.rb +++ b/spec/controllers/api/v0/reports_controller_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Api::V0::ReportsController, type: :controller do +RSpec.describe Api::V0::ReportsController, type: :controller do let(:enterprise_user) { create(:user, enterprises: [create(:enterprise)]) } let(:params) { { diff --git a/spec/controllers/api/v0/shipments_controller_spec.rb b/spec/controllers/api/v0/shipments_controller_spec.rb index add3d0c3ba..f7c9584e01 100644 --- a/spec/controllers/api/v0/shipments_controller_spec.rb +++ b/spec/controllers/api/v0/shipments_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::V0::ShipmentsController, type: :controller do +RSpec.describe Api::V0::ShipmentsController, type: :controller do render_views let!(:shipment) { create(:shipment) } diff --git a/spec/controllers/api/v0/shops_controller_spec.rb b/spec/controllers/api/v0/shops_controller_spec.rb index 2863aaef53..d1842ac53d 100644 --- a/spec/controllers/api/v0/shops_controller_spec.rb +++ b/spec/controllers/api/v0/shops_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::V0::ShopsController, type: :controller do +RSpec.describe Api::V0::ShopsController, type: :controller do include AuthenticationHelper render_views diff --git a/spec/controllers/api/v0/states_controller_spec.rb b/spec/controllers/api/v0/states_controller_spec.rb index 19993200e2..e8f5267db8 100644 --- a/spec/controllers/api/v0/states_controller_spec.rb +++ b/spec/controllers/api/v0/states_controller_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Api - describe V0::StatesController do + RSpec.describe V0::StatesController do render_views let!(:state) { create(:state, name: "Victoria") } diff --git a/spec/controllers/api/v0/statuses_controller_spec.rb b/spec/controllers/api/v0/statuses_controller_spec.rb index 32ef605a51..cf95869bac 100644 --- a/spec/controllers/api/v0/statuses_controller_spec.rb +++ b/spec/controllers/api/v0/statuses_controller_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Api - describe V0::StatusesController, type: :controller do + RSpec.describe V0::StatusesController, type: :controller do render_views describe "job queue status" do diff --git a/spec/controllers/api/v0/taxonomies_controller_spec.rb b/spec/controllers/api/v0/taxonomies_controller_spec.rb index dfa5c2c25b..3426342ed5 100644 --- a/spec/controllers/api/v0/taxonomies_controller_spec.rb +++ b/spec/controllers/api/v0/taxonomies_controller_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Api - describe V0::TaxonomiesController do + RSpec.describe V0::TaxonomiesController do render_views let(:taxonomy) { create(:taxonomy) } diff --git a/spec/controllers/api/v0/taxons_controller_spec.rb b/spec/controllers/api/v0/taxons_controller_spec.rb index 6bd3fe8586..8666749deb 100644 --- a/spec/controllers/api/v0/taxons_controller_spec.rb +++ b/spec/controllers/api/v0/taxons_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::V0::TaxonsController do +RSpec.describe Api::V0::TaxonsController do render_views let(:taxonomy) { create(:taxonomy) } diff --git a/spec/controllers/api/v0/terms_and_conditions_controller_spec.rb b/spec/controllers/api/v0/terms_and_conditions_controller_spec.rb index 53596f7fd3..1ca17ec0d9 100644 --- a/spec/controllers/api/v0/terms_and_conditions_controller_spec.rb +++ b/spec/controllers/api/v0/terms_and_conditions_controller_spec.rb @@ -3,7 +3,7 @@ require "spec_helper" module Api - describe V0::TermsAndConditionsController, type: :controller do + RSpec.describe V0::TermsAndConditionsController, type: :controller do include AuthenticationHelper include FileHelper diff --git a/spec/controllers/api/v0/variants_controller_spec.rb b/spec/controllers/api/v0/variants_controller_spec.rb index 1a90dd704a..496af4d6b4 100644 --- a/spec/controllers/api/v0/variants_controller_spec.rb +++ b/spec/controllers/api/v0/variants_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::V0::VariantsController, type: :controller do +RSpec.describe Api::V0::VariantsController, type: :controller do render_views let(:supplier) { create(:supplier_enterprise) } diff --git a/spec/controllers/base_controller_spec.rb b/spec/controllers/base_controller_spec.rb index 5158dd1c3c..0c9ff572ad 100644 --- a/spec/controllers/base_controller_spec.rb +++ b/spec/controllers/base_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe BaseController, type: :controller do +RSpec.describe BaseController, type: :controller do let(:oc) { instance_double(OrderCycle, id: 1) } let(:order) { instance_double(Spree::Order) } controller(BaseController) do diff --git a/spec/controllers/cart_controller_spec.rb b/spec/controllers/cart_controller_spec.rb index 70ef4fd4e5..07ac5c50e5 100644 --- a/spec/controllers/cart_controller_spec.rb +++ b/spec/controllers/cart_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe CartController, type: :controller do +RSpec.describe CartController, type: :controller do let(:order) { create(:order) } describe "basic behaviour" do diff --git a/spec/controllers/checkout_controller_spec.rb b/spec/controllers/checkout_controller_spec.rb index 4f948cdefa..7c4a158e4d 100644 --- a/spec/controllers/checkout_controller_spec.rb +++ b/spec/controllers/checkout_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe CheckoutController, type: :controller do +RSpec.describe CheckoutController, type: :controller do let(:user) { order.user } let(:address) { create(:address) } let(:distributor) { create(:distributor_enterprise, with_payment_and_shipping: true) } diff --git a/spec/controllers/concerns/address_transformation_spec.rb b/spec/controllers/concerns/address_transformation_spec.rb index d8f9cf74c2..2f9f1d725e 100644 --- a/spec/controllers/concerns/address_transformation_spec.rb +++ b/spec/controllers/concerns/address_transformation_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe AddressTransformation do +RSpec.describe AddressTransformation do include AddressTransformation describe "#transform_address!" do diff --git a/spec/controllers/concerns/extra_fields_spec.rb b/spec/controllers/concerns/extra_fields_spec.rb index 463427926b..0c6d4a1569 100644 --- a/spec/controllers/concerns/extra_fields_spec.rb +++ b/spec/controllers/concerns/extra_fields_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ExtraFields do +RSpec.describe ExtraFields do let(:dummy_controller) { Api::V1::BaseController.new.extend ExtraFields } describe "#invalid_query_param" do diff --git a/spec/controllers/concerns/raising_parameters_spec.rb b/spec/controllers/concerns/raising_parameters_spec.rb index 73008f20cf..1a7badf85d 100644 --- a/spec/controllers/concerns/raising_parameters_spec.rb +++ b/spec/controllers/concerns/raising_parameters_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe RaisingParameters do +RSpec.describe RaisingParameters do describe "Parameters" do let(:params) do RaisingParameters::Parameters.new( diff --git a/spec/controllers/enterprises_controller_spec.rb b/spec/controllers/enterprises_controller_spec.rb index 3f50de9a39..014d21706b 100644 --- a/spec/controllers/enterprises_controller_spec.rb +++ b/spec/controllers/enterprises_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe EnterprisesController, type: :controller do +RSpec.describe EnterprisesController, type: :controller do describe "shopping for a distributor" do let(:user) { create(:user) } let(:order) { controller.current_order(true) } diff --git a/spec/controllers/groups_controller_spec.rb b/spec/controllers/groups_controller_spec.rb index 9240ba0cf8..a7d91c3522 100644 --- a/spec/controllers/groups_controller_spec.rb +++ b/spec/controllers/groups_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe GroupsController, type: :controller do +RSpec.describe GroupsController, type: :controller do render_views let!(:enterprise) { create(:distributor_enterprise) } diff --git a/spec/controllers/line_items_controller_spec.rb b/spec/controllers/line_items_controller_spec.rb index 28db84cd07..a825e77b35 100644 --- a/spec/controllers/line_items_controller_spec.rb +++ b/spec/controllers/line_items_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe LineItemsController, type: :controller do +RSpec.describe LineItemsController, type: :controller do let(:user) { create(:user) } let(:distributor) { create(:distributor_enterprise) } let(:order_cycle) { create(:simple_order_cycle) } diff --git a/spec/controllers/payment_gateways/paypal_controller_spec.rb b/spec/controllers/payment_gateways/paypal_controller_spec.rb index d348054fde..8eb2fb2191 100644 --- a/spec/controllers/payment_gateways/paypal_controller_spec.rb +++ b/spec/controllers/payment_gateways/paypal_controller_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module PaymentGateways - describe PaypalController, type: :controller do + RSpec.describe PaypalController, type: :controller do context '#cancel' do it 'redirects back to checkout' do expect(get(:cancel)).to redirect_to checkout_path diff --git a/spec/controllers/payment_gateways/stripe_controller_spec.rb b/spec/controllers/payment_gateways/stripe_controller_spec.rb index 9b2e3233d9..5f7d086c9a 100644 --- a/spec/controllers/payment_gateways/stripe_controller_spec.rb +++ b/spec/controllers/payment_gateways/stripe_controller_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module PaymentGateways - describe StripeController, type: :controller do + RSpec.describe StripeController, type: :controller do include StripeStubs let!(:distributor) { create(:distributor_enterprise, with_payment_and_shipping: true) } diff --git a/spec/controllers/registration_controller_spec.rb b/spec/controllers/registration_controller_spec.rb index 6fa9e867f4..bb87674ba9 100644 --- a/spec/controllers/registration_controller_spec.rb +++ b/spec/controllers/registration_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe RegistrationController, type: :controller do +RSpec.describe RegistrationController, type: :controller do describe "redirecting when user not logged in" do it "index" do get :index diff --git a/spec/controllers/shop_controller_spec.rb b/spec/controllers/shop_controller_spec.rb index b072152e72..9431411a82 100644 --- a/spec/controllers/shop_controller_spec.rb +++ b/spec/controllers/shop_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ShopController, type: :controller do +RSpec.describe ShopController, type: :controller do let!(:pm) { create(:payment_method) } let!(:sm) { create(:shipping_method) } let(:distributor) { diff --git a/spec/controllers/shops_controller_spec.rb b/spec/controllers/shops_controller_spec.rb index 97cea60cb9..a12a964038 100644 --- a/spec/controllers/shops_controller_spec.rb +++ b/spec/controllers/shops_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ShopsController, type: :controller do +RSpec.describe ShopsController, type: :controller do include WebHelper render_views diff --git a/spec/controllers/spree/admin/adjustments_controller_spec.rb b/spec/controllers/spree/admin/adjustments_controller_spec.rb index a6ae890071..93837dbfb8 100644 --- a/spec/controllers/spree/admin/adjustments_controller_spec.rb +++ b/spec/controllers/spree/admin/adjustments_controller_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Spree - describe Admin::AdjustmentsController, type: :controller do + RSpec.describe Admin::AdjustmentsController, type: :controller do include AuthenticationHelper before { controller_login_as_admin } diff --git a/spec/controllers/spree/admin/base_controller_spec.rb b/spec/controllers/spree/admin/base_controller_spec.rb index 21dbc71a4e..63844e9883 100644 --- a/spec/controllers/spree/admin/base_controller_spec.rb +++ b/spec/controllers/spree/admin/base_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::BaseController, type: :controller do +RSpec.describe Spree::Admin::BaseController, type: :controller do controller(Spree::Admin::BaseController) do def index before_action :unauthorized diff --git a/spec/controllers/spree/admin/countries_controller_spec.rb b/spec/controllers/spree/admin/countries_controller_spec.rb index 87a9356f1e..d5829a9149 100644 --- a/spec/controllers/spree/admin/countries_controller_spec.rb +++ b/spec/controllers/spree/admin/countries_controller_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module Spree module Admin - describe CountriesController, type: :controller do + RSpec.describe CountriesController, type: :controller do include AuthenticationHelper describe "#update" do diff --git a/spec/controllers/spree/admin/general_settings_controller_spec.rb b/spec/controllers/spree/admin/general_settings_controller_spec.rb index 3fff115d01..1a0e0b002f 100644 --- a/spec/controllers/spree/admin/general_settings_controller_spec.rb +++ b/spec/controllers/spree/admin/general_settings_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::GeneralSettingsController, type: :controller do +RSpec.describe Spree::Admin::GeneralSettingsController, type: :controller do include AuthenticationHelper describe 'updating general settings' do diff --git a/spec/controllers/spree/admin/mail_methods_controller_spec.rb b/spec/controllers/spree/admin/mail_methods_controller_spec.rb index 43ff49f9f0..163ec8f54b 100644 --- a/spec/controllers/spree/admin/mail_methods_controller_spec.rb +++ b/spec/controllers/spree/admin/mail_methods_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::MailMethodsController do +RSpec.describe Spree::Admin::MailMethodsController do include AuthenticationHelper before { controller_login_as_admin } diff --git a/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb b/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb index a19d2e942e..44b595b8ab 100644 --- a/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +++ b/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::Orders::CustomerDetailsController, type: :controller do +RSpec.describe Spree::Admin::Orders::CustomerDetailsController, type: :controller do include AuthenticationHelper describe "#update" do diff --git a/spec/controllers/spree/admin/orders/invoices_spec.rb b/spec/controllers/spree/admin/orders/invoices_spec.rb index 4aea9fd065..3eda9051a2 100644 --- a/spec/controllers/spree/admin/orders/invoices_spec.rb +++ b/spec/controllers/spree/admin/orders/invoices_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::OrdersController, type: :controller do +RSpec.describe Spree::Admin::OrdersController, type: :controller do describe "#invoice" do let!(:user) { create(:user) } let!(:enterprise_user) { create(:user) } @@ -106,7 +106,7 @@ describe Spree::Admin::OrdersController, type: :controller do end end -describe Spree::Admin::InvoicesController, type: :controller do +RSpec.describe Spree::Admin::InvoicesController, type: :controller do describe "#index" do let(:user) { create(:user) } let(:enterprise_user) { create(:user, enterprises: [create(:enterprise)]) } diff --git a/spec/controllers/spree/admin/orders/payments/payments_controller_refunds_spec.rb b/spec/controllers/spree/admin/orders/payments/payments_controller_refunds_spec.rb index a6ed0be235..1e3b1cf8c6 100644 --- a/spec/controllers/spree/admin/orders/payments/payments_controller_refunds_spec.rb +++ b/spec/controllers/spree/admin/orders/payments/payments_controller_refunds_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::PaymentsController, type: :controller do +RSpec.describe Spree::Admin::PaymentsController, type: :controller do include StripeHelper include StripeStubs diff --git a/spec/controllers/spree/admin/orders/payments/payments_controller_spec.rb b/spec/controllers/spree/admin/orders/payments/payments_controller_spec.rb index 6478629e48..1917294fac 100644 --- a/spec/controllers/spree/admin/orders/payments/payments_controller_spec.rb +++ b/spec/controllers/spree/admin/orders/payments/payments_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::PaymentsController, type: :controller do +RSpec.describe Spree::Admin::PaymentsController, type: :controller do let!(:shop) { create(:enterprise) } let!(:user) { shop.owner } let!(:order) { create(:order, distributor: shop, state: 'complete') } diff --git a/spec/controllers/spree/admin/orders_controller_spec.rb b/spec/controllers/spree/admin/orders_controller_spec.rb index 0dc568430d..d4dab4e0b2 100644 --- a/spec/controllers/spree/admin/orders_controller_spec.rb +++ b/spec/controllers/spree/admin/orders_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::OrdersController, type: :controller do +RSpec.describe Spree::Admin::OrdersController, type: :controller do describe "#edit" do let!(:order) { create(:order_with_totals_and_distribution, ship_address: create(:address)) } diff --git a/spec/controllers/spree/admin/overview_controller_spec.rb b/spec/controllers/spree/admin/overview_controller_spec.rb index 455f3b3ac9..cb5f218f24 100644 --- a/spec/controllers/spree/admin/overview_controller_spec.rb +++ b/spec/controllers/spree/admin/overview_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::OverviewController, type: :controller do +RSpec.describe Spree::Admin::OverviewController, type: :controller do describe "#index" do before do allow(controller).to receive(:spree_current_user).and_return(user) diff --git a/spec/controllers/spree/admin/payment_methods_controller_spec.rb b/spec/controllers/spree/admin/payment_methods_controller_spec.rb index 37569b28ec..e6d3288603 100644 --- a/spec/controllers/spree/admin/payment_methods_controller_spec.rb +++ b/spec/controllers/spree/admin/payment_methods_controller_spec.rb @@ -7,7 +7,7 @@ module Spree preference :password, :string, default: "password" end - describe Admin::PaymentMethodsController, type: :controller do + RSpec.describe Admin::PaymentMethodsController, type: :controller do let(:user) { create(:user, enterprises: [create(:distributor_enterprise)]) } diff --git a/spec/controllers/spree/admin/products_controller_spec.rb b/spec/controllers/spree/admin/products_controller_spec.rb index 9dbf146f53..2e33fc3926 100644 --- a/spec/controllers/spree/admin/products_controller_spec.rb +++ b/spec/controllers/spree/admin/products_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::ProductsController, type: :controller do +RSpec.describe Spree::Admin::ProductsController, type: :controller do describe 'bulk_update' do context "updating a product we do not have access to" do let(:s_managed) { create(:enterprise) } diff --git a/spec/controllers/spree/admin/return_authorizations_controller_spec.rb b/spec/controllers/spree/admin/return_authorizations_controller_spec.rb index d8b0a1ca42..d76ee014bd 100644 --- a/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +++ b/spec/controllers/spree/admin/return_authorizations_controller_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module Spree module Admin - describe ReturnAuthorizationsController, type: :controller do + RSpec.describe ReturnAuthorizationsController, type: :controller do include AuthenticationHelper let(:order) { create(:shipped_order, distributor: create(:distributor_enterprise)) } diff --git a/spec/controllers/spree/admin/search_controller_spec.rb b/spec/controllers/spree/admin/search_controller_spec.rb index 53313e5521..a62e38e6b9 100644 --- a/spec/controllers/spree/admin/search_controller_spec.rb +++ b/spec/controllers/spree/admin/search_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::SearchController, type: :controller do +RSpec.describe Spree::Admin::SearchController, type: :controller do context "Distributor Enterprise User" do let!(:owner) { create(:user, email: "test1@email.com" ) } let!(:manager) { create(:user, email: "test2@email.com" ) } diff --git a/spec/controllers/spree/admin/shipping_categories_controller_spec.rb b/spec/controllers/spree/admin/shipping_categories_controller_spec.rb index 8a77bb78c6..e7df05f5f4 100644 --- a/spec/controllers/spree/admin/shipping_categories_controller_spec.rb +++ b/spec/controllers/spree/admin/shipping_categories_controller_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module Spree module Admin - describe ShippingCategoriesController, type: :controller do + RSpec.describe ShippingCategoriesController, type: :controller do include AuthenticationHelper describe "#create and #update" do diff --git a/spec/controllers/spree/admin/shipping_methods_controller_spec.rb b/spec/controllers/spree/admin/shipping_methods_controller_spec.rb index e93103e2d6..efdb46d78c 100644 --- a/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +++ b/spec/controllers/spree/admin/shipping_methods_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::ShippingMethodsController, type: :controller do +RSpec.describe Spree::Admin::ShippingMethodsController, type: :controller do include AuthenticationHelper describe "#update" do diff --git a/spec/controllers/spree/admin/tax_rates_controller_spec.rb b/spec/controllers/spree/admin/tax_rates_controller_spec.rb index 3ce91d9ebf..ad9bc2cb72 100644 --- a/spec/controllers/spree/admin/tax_rates_controller_spec.rb +++ b/spec/controllers/spree/admin/tax_rates_controller_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module Spree module Admin - describe TaxRatesController, type: :controller do + RSpec.describe TaxRatesController, type: :controller do include AuthenticationHelper let!(:default_tax_zone) { create(:zone, default_tax: true) } diff --git a/spec/controllers/spree/admin/tax_settings_controller_spec.rb b/spec/controllers/spree/admin/tax_settings_controller_spec.rb index dbb320b1c6..e41d1825a4 100644 --- a/spec/controllers/spree/admin/tax_settings_controller_spec.rb +++ b/spec/controllers/spree/admin/tax_settings_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::TaxSettingsController, type: :controller do +RSpec.describe Spree::Admin::TaxSettingsController, type: :controller do describe "#update" do let(:params) { { preferences: { products_require_tax_category: "1" } } } diff --git a/spec/controllers/spree/admin/taxons_controller_spec.rb b/spec/controllers/spree/admin/taxons_controller_spec.rb index 8c19f14da8..3abc6669aa 100644 --- a/spec/controllers/spree/admin/taxons_controller_spec.rb +++ b/spec/controllers/spree/admin/taxons_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::TaxonsController do +RSpec.describe Spree::Admin::TaxonsController do render_views let(:taxonomy) { create(:taxonomy) } diff --git a/spec/controllers/spree/admin/users_controller_spec.rb b/spec/controllers/spree/admin/users_controller_spec.rb index 96e7cc4df4..11d4b969c4 100644 --- a/spec/controllers/spree/admin/users_controller_spec.rb +++ b/spec/controllers/spree/admin/users_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::UsersController do +RSpec.describe Spree::Admin::UsersController do context '#authorize_admin' do let(:user) { create(:user) } let(:test_user) { create(:user) } diff --git a/spec/controllers/spree/admin/variants_controller_spec.rb b/spec/controllers/spree/admin/variants_controller_spec.rb index 7bdfc7bcbe..8585415d0e 100644 --- a/spec/controllers/spree/admin/variants_controller_spec.rb +++ b/spec/controllers/spree/admin/variants_controller_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module Spree module Admin - describe VariantsController, type: :controller do + RSpec.describe VariantsController, type: :controller do before { controller_login_as_admin } describe "#index" do diff --git a/spec/controllers/spree/api_keys_controller_spec.rb b/spec/controllers/spree/api_keys_controller_spec.rb index 99faf43964..5b3162acc0 100644 --- a/spec/controllers/spree/api_keys_controller_spec.rb +++ b/spec/controllers/spree/api_keys_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::ApiKeysController, type: :controller, performance: true do +RSpec.describe Spree::ApiKeysController, type: :controller, performance: true do routes { Spree::Core::Engine.routes } include AuthenticationHelper diff --git a/spec/controllers/spree/credit_cards_controller_spec.rb b/spec/controllers/spree/credit_cards_controller_spec.rb index 41e87d975c..c5163163ed 100644 --- a/spec/controllers/spree/credit_cards_controller_spec.rb +++ b/spec/controllers/spree/credit_cards_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::CreditCardsController, type: :controller do +RSpec.describe Spree::CreditCardsController, type: :controller do describe "using VCR", :vcr, :stripe_version do let(:user) { create(:user) } diff --git a/spec/controllers/spree/orders_controller_spec.rb b/spec/controllers/spree/orders_controller_spec.rb index 78ed96e16e..f1f47762c2 100644 --- a/spec/controllers/spree/orders_controller_spec.rb +++ b/spec/controllers/spree/orders_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::OrdersController, type: :controller do +RSpec.describe Spree::OrdersController, type: :controller do include CheckoutHelper include StripeStubs diff --git a/spec/controllers/spree/user_sessions_controller_spec.rb b/spec/controllers/spree/user_sessions_controller_spec.rb index 34053783b7..5f03575263 100644 --- a/spec/controllers/spree/user_sessions_controller_spec.rb +++ b/spec/controllers/spree/user_sessions_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::UserSessionsController, type: :controller do +RSpec.describe Spree::UserSessionsController, type: :controller do let(:user) { create(:user) } before do diff --git a/spec/controllers/spree/users_controller_spec.rb b/spec/controllers/spree/users_controller_spec.rb index ee8de1d00f..6eff295eb6 100644 --- a/spec/controllers/spree/users_controller_spec.rb +++ b/spec/controllers/spree/users_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::UsersController, type: :controller do +RSpec.describe Spree::UsersController, type: :controller do routes { Spree::Core::Engine.routes } include AuthenticationHelper diff --git a/spec/controllers/stripe/callbacks_controller_spec.rb b/spec/controllers/stripe/callbacks_controller_spec.rb index de37d51cc8..b4a122620f 100644 --- a/spec/controllers/stripe/callbacks_controller_spec.rb +++ b/spec/controllers/stripe/callbacks_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Stripe::CallbacksController, type: :controller do +RSpec.describe Stripe::CallbacksController, type: :controller do let(:enterprise) { create(:distributor_enterprise) } context "#index" do diff --git a/spec/controllers/stripe/webhooks_controller_spec.rb b/spec/controllers/stripe/webhooks_controller_spec.rb index 1369a6aa47..38ccaff797 100644 --- a/spec/controllers/stripe/webhooks_controller_spec.rb +++ b/spec/controllers/stripe/webhooks_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Stripe::WebhooksController, type: :controller do +RSpec.describe Stripe::WebhooksController, type: :controller do describe "#create" do let(:params) do { diff --git a/spec/controllers/user_confirmations_controller_spec.rb b/spec/controllers/user_confirmations_controller_spec.rb index dd4897c4e1..d276d4c874 100644 --- a/spec/controllers/user_confirmations_controller_spec.rb +++ b/spec/controllers/user_confirmations_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe UserConfirmationsController, type: :controller do +RSpec.describe UserConfirmationsController, type: :controller do let!(:user) { create(:user) } let!(:confirmed_user) { create(:user, confirmed_at: nil) } let!(:unconfirmed_user) { create(:user, confirmed_at: nil) } diff --git a/spec/controllers/user_passwords_controller_spec.rb b/spec/controllers/user_passwords_controller_spec.rb index 7ba17274b8..594f5dbd79 100644 --- a/spec/controllers/user_passwords_controller_spec.rb +++ b/spec/controllers/user_passwords_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe UserPasswordsController, type: :controller do +RSpec.describe UserPasswordsController, type: :controller do render_views let(:user) { create(:user) } diff --git a/spec/controllers/user_registrations_controller_spec.rb b/spec/controllers/user_registrations_controller_spec.rb index d25b811d69..23aa1e220a 100644 --- a/spec/controllers/user_registrations_controller_spec.rb +++ b/spec/controllers/user_registrations_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe UserRegistrationsController, type: :controller do +RSpec.describe UserRegistrationsController, type: :controller do before do @request.env["devise.mapping"] = Devise.mappings[:spree_user] end diff --git a/spec/controllers/webhook_endpoints_controller_spec.rb b/spec/controllers/webhook_endpoints_controller_spec.rb index e628710f72..bd6ea07961 100644 --- a/spec/controllers/webhook_endpoints_controller_spec.rb +++ b/spec/controllers/webhook_endpoints_controller_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'open_food_network/order_cycle_permissions' -describe WebhookEndpointsController, type: :controller do +RSpec.describe WebhookEndpointsController, type: :controller do let(:user) { create(:admin_user) } before { allow(controller).to receive(:spree_current_user) { user } } diff --git a/spec/forms/enterprise_fees_bulk_update_spec.rb b/spec/forms/enterprise_fees_bulk_update_spec.rb index 1ec22a8c8e..2fcd1a854f 100644 --- a/spec/forms/enterprise_fees_bulk_update_spec.rb +++ b/spec/forms/enterprise_fees_bulk_update_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe EnterpriseFeesBulkUpdate do +RSpec.describe EnterpriseFeesBulkUpdate do describe "error reporting" do let(:enterprise_fee) { build_stubbed(:enterprise_fee) } let(:base_attributes) do diff --git a/spec/helpers/admin/enterprises_helper_spec.rb b/spec/helpers/admin/enterprises_helper_spec.rb index e7683a12b3..58131fdf06 100644 --- a/spec/helpers/admin/enterprises_helper_spec.rb +++ b/spec/helpers/admin/enterprises_helper_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Admin::EnterprisesHelper, type: :helper do +RSpec.describe Admin::EnterprisesHelper, type: :helper do let(:user) { build(:user) } before do diff --git a/spec/helpers/admin/orders_helper_spec.rb b/spec/helpers/admin/orders_helper_spec.rb index ff00b73dc7..9199c7794e 100644 --- a/spec/helpers/admin/orders_helper_spec.rb +++ b/spec/helpers/admin/orders_helper_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Admin::OrdersHelper, type: :helper do +RSpec.describe Admin::OrdersHelper, type: :helper do describe "#order_adjustments_for_display" do let(:order) { create(:order) } let(:service) { instance_double(VoucherAdjustmentsService, voucher_included_tax:) } diff --git a/spec/helpers/admin/reports_helper_spec.rb b/spec/helpers/admin/reports_helper_spec.rb index 9ea424bc48..0cd63d9037 100644 --- a/spec/helpers/admin/reports_helper_spec.rb +++ b/spec/helpers/admin/reports_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ReportsHelper, type: :helper do +RSpec.describe ReportsHelper, type: :helper do describe "#report_payment_method_options" do let(:order_with_payments) { create(:order_ready_to_ship) } let(:order_without_payments) { create(:order_with_line_items) } diff --git a/spec/helpers/admin/subscriptions_helper_spec.rb b/spec/helpers/admin/subscriptions_helper_spec.rb index dec9c2d6af..f4dc888ab3 100644 --- a/spec/helpers/admin/subscriptions_helper_spec.rb +++ b/spec/helpers/admin/subscriptions_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Admin::SubscriptionsHelper, type: :helper do +RSpec.describe Admin::SubscriptionsHelper, type: :helper do describe "checking if setup is complete for any [shop]" do let(:shop) { create(:distributor_enterprise) } let(:customer) { create(:customer, enterprise: shop) } diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index c13cdf44f0..c9aa5c7b0d 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ApplicationHelper, type: :helper do +RSpec.describe ApplicationHelper, type: :helper do describe "#feature?" do it "takes several actors" do user = Spree::User.new(id: 4) diff --git a/spec/helpers/bulk_form_builder_spec.rb b/spec/helpers/bulk_form_builder_spec.rb index 2c1bbc23c7..6400d8b221 100644 --- a/spec/helpers/bulk_form_builder_spec.rb +++ b/spec/helpers/bulk_form_builder_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' class TestHelper < ActionView::Base; end -describe BulkFormBuilder do +RSpec.describe BulkFormBuilder do describe '#text_field' do let(:product) { create(:product) } let(:form) { BulkFormBuilder.new(:product, product, self, {}) } diff --git a/spec/helpers/checkout_helper_spec.rb b/spec/helpers/checkout_helper_spec.rb index 9aae5df87a..a6f8350a24 100644 --- a/spec/helpers/checkout_helper_spec.rb +++ b/spec/helpers/checkout_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe CheckoutHelper, type: :helper do +RSpec.describe CheckoutHelper, type: :helper do it "generates html for validated inputs" do expect(helper).to receive(:render).with( "shared/validated_input", diff --git a/spec/helpers/i18n_helper_spec.rb b/spec/helpers/i18n_helper_spec.rb index a4117097d4..d8434d228c 100644 --- a/spec/helpers/i18n_helper_spec.rb +++ b/spec/helpers/i18n_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe I18nHelper, type: :helper do +RSpec.describe I18nHelper, type: :helper do let(:user) { create(:user) } let(:cookies) { {} } diff --git a/spec/helpers/injection_helper_spec.rb b/spec/helpers/injection_helper_spec.rb index 1c355a5577..d7cc660951 100644 --- a/spec/helpers/injection_helper_spec.rb +++ b/spec/helpers/injection_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe InjectionHelper, type: :helper do +RSpec.describe InjectionHelper, type: :helper do let!(:enterprise) { create(:distributor_enterprise, facebook: "roger") } let!(:distributor1) { create(:distributor_enterprise) } diff --git a/spec/helpers/link_helper_spec.rb b/spec/helpers/link_helper_spec.rb index 6632df9928..cf7c6a07c5 100644 --- a/spec/helpers/link_helper_spec.rb +++ b/spec/helpers/link_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe LinkHelper, type: :helper do +RSpec.describe LinkHelper, type: :helper do describe "ext_url" do it "adds prefix if missing" do expect(helper.ext_url("http://example.com/", "http://example.com/bla")).to eq("http://example.com/bla") diff --git a/spec/helpers/navigation_helper_spec.rb b/spec/helpers/navigation_helper_spec.rb index ee01b3204a..e5a9a40c00 100644 --- a/spec/helpers/navigation_helper_spec.rb +++ b/spec/helpers/navigation_helper_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module Spree module Admin - describe NavigationHelper, type: :helper do + RSpec.describe NavigationHelper, type: :helper do describe "klass_for" do it "returns the class when present" do expect(helper.klass_for('products')).to eq(Spree::Product) diff --git a/spec/helpers/order_cycles_helper_spec.rb b/spec/helpers/order_cycles_helper_spec.rb index 443556be84..cb7a7d1151 100644 --- a/spec/helpers/order_cycles_helper_spec.rb +++ b/spec/helpers/order_cycles_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe OrderCyclesHelper, type: :helper do +RSpec.describe OrderCyclesHelper, type: :helper do let(:oc) { double(:order_cycle) } describe "finding producer enterprise options" do diff --git a/spec/helpers/serializer_helper_spec.rb b/spec/helpers/serializer_helper_spec.rb index 6ba9589abe..911515a7c3 100644 --- a/spec/helpers/serializer_helper_spec.rb +++ b/spec/helpers/serializer_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe SerializerHelper, type: :helper do +RSpec.describe SerializerHelper, type: :helper do let(:serializer) do Class.new(ActiveModel::Serializer) do attributes :id, :name diff --git a/spec/helpers/shop_helper_spec.rb b/spec/helpers/shop_helper_spec.rb index 1c0bd4df7b..e59881d6ef 100644 --- a/spec/helpers/shop_helper_spec.rb +++ b/spec/helpers/shop_helper_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: false require 'spec_helper' -describe ShopHelper, type: :helper do +RSpec.describe ShopHelper, type: :helper do describe "shop_tabs" do context "distributor with groups" do let(:group) { create(:enterprise_group) } diff --git a/spec/helpers/spree/admin/base_helper_spec.rb b/spec/helpers/spree/admin/base_helper_spec.rb index 8930d83d5a..958f7f2ae1 100644 --- a/spec/helpers/spree/admin/base_helper_spec.rb +++ b/spec/helpers/spree/admin/base_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::BaseHelper, type: :helper do +RSpec.describe Spree::Admin::BaseHelper, type: :helper do helper 'spree/admin/navigation' describe "#link_to_remove_fields" do diff --git a/spec/helpers/spree/admin/general_settings_helper_spec.rb b/spec/helpers/spree/admin/general_settings_helper_spec.rb index b63d7c8cdc..c5713c6dec 100644 --- a/spec/helpers/spree/admin/general_settings_helper_spec.rb +++ b/spec/helpers/spree/admin/general_settings_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::GeneralSettingsHelper, type: :helper do +RSpec.describe Spree::Admin::GeneralSettingsHelper, type: :helper do describe "#all_units" do it "returns all units" do expect(helper.all_units).to eq(["mg", "g", "kg", "T", "oz", "lb", "mL", "cL", "dL", "L", diff --git a/spec/helpers/spree/admin/orders_helper_spec.rb b/spec/helpers/spree/admin/orders_helper_spec.rb index 07b5a10f7c..b759df39c9 100644 --- a/spec/helpers/spree/admin/orders_helper_spec.rb +++ b/spec/helpers/spree/admin/orders_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Admin::OrdersHelper, type: :helper do +RSpec.describe Spree::Admin::OrdersHelper, type: :helper do describe "#orders_links" do let(:order) { double(:order) } let(:distributor) { double(:enterprise) } diff --git a/spec/helpers/spree/base_helper_spec.rb b/spec/helpers/spree/base_helper_spec.rb index 54d965f1cf..35511de2be 100644 --- a/spec/helpers/spree/base_helper_spec.rb +++ b/spec/helpers/spree/base_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::BaseHelper do +RSpec.describe Spree::BaseHelper do include Spree::BaseHelper context "available_countries" do diff --git a/spec/helpers/spree/orders_helper_spec.rb b/spec/helpers/spree/orders_helper_spec.rb index a44bd9afab..a74ce38e9e 100644 --- a/spec/helpers/spree/orders_helper_spec.rb +++ b/spec/helpers/spree/orders_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::OrdersHelper, type: :helper do +RSpec.describe Spree::OrdersHelper, type: :helper do describe "#changeable_orders" do let(:complete_orders) { double(:complete_orders, where: "some_orders") } diff --git a/spec/helpers/tax_helper_spec.rb b/spec/helpers/tax_helper_spec.rb index ed87864390..2d262d8486 100644 --- a/spec/helpers/tax_helper_spec.rb +++ b/spec/helpers/tax_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe TaxHelper, type: :helper do +RSpec.describe TaxHelper, type: :helper do let(:line_item) { create(:line_item) } let(:line_item2) { create(:line_item) } let(:line_item3) { create(:line_item) } diff --git a/spec/helpers/terms_and_conditions_helper_spec.rb b/spec/helpers/terms_and_conditions_helper_spec.rb index 320426ea51..100fc3e80d 100644 --- a/spec/helpers/terms_and_conditions_helper_spec.rb +++ b/spec/helpers/terms_and_conditions_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe TermsAndConditionsHelper, type: :helper do +RSpec.describe TermsAndConditionsHelper, type: :helper do describe "#platform_terms_required?" do context 'when ToS file is present' do before do diff --git a/spec/jobs/bulk_invoice_job_spec.rb b/spec/jobs/bulk_invoice_job_spec.rb index 907749033c..3d8e137093 100644 --- a/spec/jobs/bulk_invoice_job_spec.rb +++ b/spec/jobs/bulk_invoice_job_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe BulkInvoiceJob do +RSpec.describe BulkInvoiceJob do subject { BulkInvoiceJob.new(order_ids, "/tmp/file/path") } context "when invoices are enabled", feature: :invoices do diff --git a/spec/jobs/heartbeat_job_spec.rb b/spec/jobs/heartbeat_job_spec.rb index d60aa23b31..933e9cd456 100644 --- a/spec/jobs/heartbeat_job_spec.rb +++ b/spec/jobs/heartbeat_job_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe HeartbeatJob do +RSpec.describe HeartbeatJob do context "with time frozen" do let(:run_time) { Time.zone.local(2016, 4, 13, 13, 0, 0) } diff --git a/spec/jobs/job_logger_spec.rb b/spec/jobs/job_logger_spec.rb index de7a12c946..7d93868ef5 100644 --- a/spec/jobs/job_logger_spec.rb +++ b/spec/jobs/job_logger_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe JobLogger do +RSpec.describe JobLogger do describe '.logger' do it "returns a Ruby's logger instance" do expect(JobLogger.logger).to respond_to(:info) diff --git a/spec/jobs/order_cycle_closing_job_spec.rb b/spec/jobs/order_cycle_closing_job_spec.rb index 33be226c24..dc1f7ce23d 100644 --- a/spec/jobs/order_cycle_closing_job_spec.rb +++ b/spec/jobs/order_cycle_closing_job_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe OrderCycleClosingJob do +RSpec.describe OrderCycleClosingJob do let(:order_cycle1) { create(:order_cycle, automatic_notifications: true, orders_close_at: 1.minute.ago) } diff --git a/spec/jobs/order_cycle_notification_job_spec.rb b/spec/jobs/order_cycle_notification_job_spec.rb index 233beac26b..f8496fc86c 100644 --- a/spec/jobs/order_cycle_notification_job_spec.rb +++ b/spec/jobs/order_cycle_notification_job_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe OrderCycleNotificationJob do +RSpec.describe OrderCycleNotificationJob do let(:order_cycle) { create(:order_cycle) } let(:mail) { double(:mail, deliver_now: true) } diff --git a/spec/jobs/order_cycle_opened_job_spec.rb b/spec/jobs/order_cycle_opened_job_spec.rb index b0ebfbe927..caf5ee6ef1 100644 --- a/spec/jobs/order_cycle_opened_job_spec.rb +++ b/spec/jobs/order_cycle_opened_job_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe OrderCycleOpenedJob do +RSpec.describe OrderCycleOpenedJob do let(:oc_opened_before) { create(:order_cycle, orders_open_at: 1.hour.ago) } diff --git a/spec/jobs/report_job_spec.rb b/spec/jobs/report_job_spec.rb index 399cbcbbb6..e1ce4a1a56 100644 --- a/spec/jobs/report_job_spec.rb +++ b/spec/jobs/report_job_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ReportJob do +RSpec.describe ReportJob do include CableReady::Broadcaster let(:report_args) { diff --git a/spec/jobs/subscription_confirm_job_spec.rb b/spec/jobs/subscription_confirm_job_spec.rb index d5cf92c40c..bdad78a5a9 100644 --- a/spec/jobs/subscription_confirm_job_spec.rb +++ b/spec/jobs/subscription_confirm_job_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe SubscriptionConfirmJob do +RSpec.describe SubscriptionConfirmJob do let(:job) { SubscriptionConfirmJob.new } describe "finding proxy_orders that are ready to be confirmed" do diff --git a/spec/jobs/subscription_placement_job_spec.rb b/spec/jobs/subscription_placement_job_spec.rb index c6bb6c232b..26c7093c31 100644 --- a/spec/jobs/subscription_placement_job_spec.rb +++ b/spec/jobs/subscription_placement_job_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe SubscriptionPlacementJob do +RSpec.describe SubscriptionPlacementJob do include ActiveSupport::Testing::TimeHelpers let(:job) { SubscriptionPlacementJob.new } diff --git a/spec/jobs/webhook_delivery_job_spec.rb b/spec/jobs/webhook_delivery_job_spec.rb index 14c7367d3a..0b09ed7bde 100644 --- a/spec/jobs/webhook_delivery_job_spec.rb +++ b/spec/jobs/webhook_delivery_job_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe WebhookDeliveryJob do +RSpec.describe WebhookDeliveryJob do subject { WebhookDeliveryJob.new(url, event, data) } let(:url) { 'https://test/endpoint' } let(:event) { 'order_cycle.opened' } diff --git a/spec/lib/action_dispatch/request_spec.rb b/spec/lib/action_dispatch/request_spec.rb index 59caf701cb..8ab68abc4c 100644 --- a/spec/lib/action_dispatch/request_spec.rb +++ b/spec/lib/action_dispatch/request_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ActionDispatch::Request do +RSpec.describe ActionDispatch::Request do it "strips nils from arrays" do expect(parse_query_parameters('key[]=value&key[]')).to eq({ "key" => ["value"] }) end diff --git a/spec/lib/haml_up_spec.rb b/spec/lib/haml_up_spec.rb index 0df7c56642..f78b95017a 100644 --- a/spec/lib/haml_up_spec.rb +++ b/spec/lib/haml_up_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'haml_up' -describe HamlUp, skip: !Gem::Dependency.new("", "~> 5.2").match?("", Haml::VERSION) do +RSpec.describe HamlUp, skip: !Gem::Dependency.new("", "~> 5.2").match?("", Haml::VERSION) do describe "#rewrite_template" do it "preserves a simple template" do original = "%p This is a paragraph" diff --git a/spec/lib/i18n_digests_spec.rb b/spec/lib/i18n_digests_spec.rb index 391cbb0050..6dd321c98b 100644 --- a/spec/lib/i18n_digests_spec.rb +++ b/spec/lib/i18n_digests_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe I18nDigests do +RSpec.describe I18nDigests do describe "#build_digests" do let(:available_locales) { ["en", "es"] } let(:md5_hex_regex) { /([a-f0-9]){10}/ } diff --git a/spec/lib/open_food_network/address_finder_spec.rb b/spec/lib/open_food_network/address_finder_spec.rb index 1f11b57b41..499f7dff86 100644 --- a/spec/lib/open_food_network/address_finder_spec.rb +++ b/spec/lib/open_food_network/address_finder_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' require 'open_food_network/address_finder' module OpenFoodNetwork - describe AddressFinder do + RSpec.describe AddressFinder do let(:email) { 'test@example.com' } describe "initialisation" do diff --git a/spec/lib/open_food_network/enterprise_fee_applicator_spec.rb b/spec/lib/open_food_network/enterprise_fee_applicator_spec.rb index 94c0b46b17..98f7db2325 100644 --- a/spec/lib/open_food_network/enterprise_fee_applicator_spec.rb +++ b/spec/lib/open_food_network/enterprise_fee_applicator_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' require 'open_food_network/enterprise_fee_applicator' module OpenFoodNetwork - describe EnterpriseFeeApplicator do + RSpec.describe EnterpriseFeeApplicator do let(:line_item) { create(:line_item, variant: target_variant) } let(:inherits_tax) { true } let(:enterprise_fee) { diff --git a/spec/lib/open_food_network/enterprise_fee_calculator_spec.rb b/spec/lib/open_food_network/enterprise_fee_calculator_spec.rb index 78f23deb72..29f96c231a 100644 --- a/spec/lib/open_food_network/enterprise_fee_calculator_spec.rb +++ b/spec/lib/open_food_network/enterprise_fee_calculator_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' require 'open_food_network/enterprise_fee_calculator' module OpenFoodNetwork - describe EnterpriseFeeCalculator do + RSpec.describe EnterpriseFeeCalculator do describe "integration" do let(:supplier1) { create(:supplier_enterprise) } let(:supplier2) { create(:supplier_enterprise) } diff --git a/spec/lib/open_food_network/enterprise_issue_validator_spec.rb b/spec/lib/open_food_network/enterprise_issue_validator_spec.rb index 8630dfcd36..879282cf9d 100644 --- a/spec/lib/open_food_network/enterprise_issue_validator_spec.rb +++ b/spec/lib/open_food_network/enterprise_issue_validator_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' require 'open_food_network/enterprise_issue_validator' module OpenFoodNetwork - describe EnterpriseIssueValidator do + RSpec.describe EnterpriseIssueValidator do describe "warnings" do let(:enterprise_invisible) { create(:enterprise, visible: "only_through_links") } let(:warnings) { EnterpriseIssueValidator.new(enterprise_invisible).warnings } diff --git a/spec/lib/open_food_network/error_logger_spec.rb b/spec/lib/open_food_network/error_logger_spec.rb index 88afdeede2..a2335ee1d9 100644 --- a/spec/lib/open_food_network/error_logger_spec.rb +++ b/spec/lib/open_food_network/error_logger_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' require 'open_food_network/error_logger' module OpenFoodNetwork - describe ErrorLogger do + RSpec.describe ErrorLogger do let(:error) { StandardError.new("Test") } it "notifies Bugsnag" do diff --git a/spec/lib/open_food_network/feature_toggle_spec.rb b/spec/lib/open_food_network/feature_toggle_spec.rb index 9c9861257a..9d185a8fc6 100644 --- a/spec/lib/open_food_network/feature_toggle_spec.rb +++ b/spec/lib/open_food_network/feature_toggle_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe OpenFoodNetwork::FeatureToggle do +RSpec.describe OpenFoodNetwork::FeatureToggle do subject(:feature_toggle) { OpenFoodNetwork::FeatureToggle } describe ".enabled?" do diff --git a/spec/lib/open_food_network/i18n_config_spec.rb b/spec/lib/open_food_network/i18n_config_spec.rb index b69aa8b745..210be7e612 100644 --- a/spec/lib/open_food_network/i18n_config_spec.rb +++ b/spec/lib/open_food_network/i18n_config_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' require 'open_food_network/i18n_config' module OpenFoodNetwork - describe I18nConfig do + RSpec.describe I18nConfig do before do # Allow non-stubbed calls to ENV to proceed allow(ENV).to receive(:[]).and_call_original diff --git a/spec/lib/open_food_network/i18n_inflections_spec.rb b/spec/lib/open_food_network/i18n_inflections_spec.rb index 2d8bc25d22..70af2719d2 100644 --- a/spec/lib/open_food_network/i18n_inflections_spec.rb +++ b/spec/lib/open_food_network/i18n_inflections_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'open_food_network/i18n_inflections' -describe OpenFoodNetwork::I18nInflections do +RSpec.describe OpenFoodNetwork::I18nInflections do let(:subject) { described_class } it "returns the same word if no plural is known" do diff --git a/spec/lib/open_food_network/order_cycle_form_applicator_spec.rb b/spec/lib/open_food_network/order_cycle_form_applicator_spec.rb index 96314aa674..e12cd9c6a9 100644 --- a/spec/lib/open_food_network/order_cycle_form_applicator_spec.rb +++ b/spec/lib/open_food_network/order_cycle_form_applicator_spec.rb @@ -5,7 +5,7 @@ require "spec_helper" require 'open_food_network/order_cycle_form_applicator' module OpenFoodNetwork - describe OrderCycleFormApplicator do + RSpec.describe OrderCycleFormApplicator do let!(:user) { create(:user) } context "unit specs" do diff --git a/spec/lib/open_food_network/order_cycle_permissions_spec.rb b/spec/lib/open_food_network/order_cycle_permissions_spec.rb index d7d3f93c40..72a9ada9e5 100644 --- a/spec/lib/open_food_network/order_cycle_permissions_spec.rb +++ b/spec/lib/open_food_network/order_cycle_permissions_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' require 'open_food_network/order_cycle_permissions' module OpenFoodNetwork - describe OrderCyclePermissions do + RSpec.describe OrderCyclePermissions do let(:coordinator) { create(:distributor_enterprise) } let(:hub) { create(:distributor_enterprise) } let(:producer) { create(:supplier_enterprise) } diff --git a/spec/lib/open_food_network/permissions_spec.rb b/spec/lib/open_food_network/permissions_spec.rb index 0f216a90d1..457b1fd98f 100644 --- a/spec/lib/open_food_network/permissions_spec.rb +++ b/spec/lib/open_food_network/permissions_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' require 'open_food_network/permissions' module OpenFoodNetwork - describe Permissions do + RSpec.describe Permissions do let(:user) { double(:user) } let(:permissions) { Permissions.new(user) } let(:permission) { 'one' } diff --git a/spec/lib/open_food_network/property_merge_spec.rb b/spec/lib/open_food_network/property_merge_spec.rb index 6ab1dbd55d..1fd6ef8a74 100644 --- a/spec/lib/open_food_network/property_merge_spec.rb +++ b/spec/lib/open_food_network/property_merge_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module OpenFoodNetwork - describe PropertyMerge do + RSpec.describe PropertyMerge do let(:property) { create(:property, presentation: 'One') } let(:duplicate_property) { create(:property, presentation: 'One') } let(:different_property) { create(:property, presentation: 'Two') } diff --git a/spec/lib/open_food_network/referer_parser_spec.rb b/spec/lib/open_food_network/referer_parser_spec.rb index b3a0ceaed3..98dd0f4deb 100644 --- a/spec/lib/open_food_network/referer_parser_spec.rb +++ b/spec/lib/open_food_network/referer_parser_spec.rb @@ -4,7 +4,7 @@ require 'open_food_network/referer_parser' require 'spec_helper' module OpenFoodNetwork - describe RefererParser do + RSpec.describe RefererParser do it "handles requests without referer" do expect(RefererParser.path(nil)).to be_nil end diff --git a/spec/lib/open_food_network/scope_variant_to_hub_spec.rb b/spec/lib/open_food_network/scope_variant_to_hub_spec.rb index d10d372902..cbff22dc35 100644 --- a/spec/lib/open_food_network/scope_variant_to_hub_spec.rb +++ b/spec/lib/open_food_network/scope_variant_to_hub_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' require 'open_food_network/scope_variant_to_hub' module OpenFoodNetwork - describe ScopeVariantToHub do + RSpec.describe ScopeVariantToHub do let(:hub) { create(:distributor_enterprise) } let(:v) { create(:variant, price: 11.11, on_hand: 1, on_demand: true, sku: "VARIANTSKU") } let(:v2) { create(:variant, price: 22.22, on_hand: 5) } diff --git a/spec/lib/open_food_network/scope_variants_to_search_spec.rb b/spec/lib/open_food_network/scope_variants_to_search_spec.rb index e896fa8f60..c8f6104ae5 100644 --- a/spec/lib/open_food_network/scope_variants_to_search_spec.rb +++ b/spec/lib/open_food_network/scope_variants_to_search_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'open_food_network/scope_variants_for_search' -describe OpenFoodNetwork::ScopeVariantsForSearch do +RSpec.describe OpenFoodNetwork::ScopeVariantsForSearch do let!(:p1) { create(:simple_product, name: 'Product 1') } let!(:p2) { create(:simple_product, sku: 'Product 1a') } let!(:p3) { create(:simple_product, name: 'Product 3') } diff --git a/spec/lib/open_food_network/tag_rule_applicator_spec.rb b/spec/lib/open_food_network/tag_rule_applicator_spec.rb index 9aa14c8ccc..bc4195deea 100644 --- a/spec/lib/open_food_network/tag_rule_applicator_spec.rb +++ b/spec/lib/open_food_network/tag_rule_applicator_spec.rb @@ -4,7 +4,7 @@ require 'open_food_network/tag_rule_applicator' require 'spec_helper' module OpenFoodNetwork - describe TagRuleApplicator do + RSpec.describe TagRuleApplicator do let!(:enterprise) { create(:distributor_enterprise) } let!(:oc_tag_rule) { create(:filter_order_cycles_tag_rule, enterprise:, priority: 6, diff --git a/spec/lib/reports/bulk_coop_report_spec.rb b/spec/lib/reports/bulk_coop_report_spec.rb index d94e1429c1..775350d18d 100644 --- a/spec/lib/reports/bulk_coop_report_spec.rb +++ b/spec/lib/reports/bulk_coop_report_spec.rb @@ -6,7 +6,7 @@ require 'spec_helper' module Reporting module Reports module BulkCoop - describe Base do + RSpec.describe Base do subject { Base.new user, params } let(:user) { create(:admin_user) } diff --git a/spec/lib/reports/customers_report_spec.rb b/spec/lib/reports/customers_report_spec.rb index 7e0a4fac0d..bdd18d57b6 100644 --- a/spec/lib/reports/customers_report_spec.rb +++ b/spec/lib/reports/customers_report_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' module Reporting module Reports module Customers - describe Base do + RSpec.describe Base do context "as a site admin" do let(:user) do user = create(:user) diff --git a/spec/lib/reports/enterprise_fee_summary/authorizer_spec.rb b/spec/lib/reports/enterprise_fee_summary/authorizer_spec.rb index 9409ad5f04..40b64ab74a 100644 --- a/spec/lib/reports/enterprise_fee_summary/authorizer_spec.rb +++ b/spec/lib/reports/enterprise_fee_summary/authorizer_spec.rb @@ -5,7 +5,7 @@ require "spec_helper" module Reporting module Reports module EnterpriseFeeSummary - describe Authorizer do + RSpec.describe Authorizer do let(:user) { create(:user) } let(:parameters) { Parameters.new(params) } diff --git a/spec/lib/reports/enterprise_fee_summary/enterprise_fee_summary_report_spec.rb b/spec/lib/reports/enterprise_fee_summary/enterprise_fee_summary_report_spec.rb index 2ddcf23d6c..a11f40a7ac 100644 --- a/spec/lib/reports/enterprise_fee_summary/enterprise_fee_summary_report_spec.rb +++ b/spec/lib/reports/enterprise_fee_summary/enterprise_fee_summary_report_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Reporting::Reports::EnterpriseFeeSummary::FeeSummary do +RSpec.describe Reporting::Reports::EnterpriseFeeSummary::FeeSummary do let(:report_module) { Reporting::Reports::EnterpriseFeeSummary } # Basic data. diff --git a/spec/lib/reports/enterprise_fee_summary/enterprise_fees_with_tax_report_by_producer_spec.rb b/spec/lib/reports/enterprise_fee_summary/enterprise_fees_with_tax_report_by_producer_spec.rb index 76bfe69459..a993becede 100644 --- a/spec/lib/reports/enterprise_fee_summary/enterprise_fees_with_tax_report_by_producer_spec.rb +++ b/spec/lib/reports/enterprise_fee_summary/enterprise_fees_with_tax_report_by_producer_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Reporting::Reports::EnterpriseFeeSummary::EnterpriseFeesWithTaxReportByProducer do +RSpec.describe Reporting::Reports::EnterpriseFeeSummary::EnterpriseFeesWithTaxReportByProducer do let(:current_user) { create(:admin_user) } let(:enterprise) { diff --git a/spec/lib/reports/enterprise_fee_summary/parameters_spec.rb b/spec/lib/reports/enterprise_fee_summary/parameters_spec.rb index 25b684d5a0..b803041573 100644 --- a/spec/lib/reports/enterprise_fee_summary/parameters_spec.rb +++ b/spec/lib/reports/enterprise_fee_summary/parameters_spec.rb @@ -5,7 +5,7 @@ require "spec_helper" module Reporting module Reports module EnterpriseFeeSummary - describe Parameters do + RSpec.describe Parameters do describe "validation" do let(:parameters) { described_class.new } diff --git a/spec/lib/reports/enterprise_fee_summary/permissions_spec.rb b/spec/lib/reports/enterprise_fee_summary/permissions_spec.rb index 8de188cbdf..decb37a18e 100644 --- a/spec/lib/reports/enterprise_fee_summary/permissions_spec.rb +++ b/spec/lib/reports/enterprise_fee_summary/permissions_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Reporting::Reports::EnterpriseFeeSummary::Permissions do +RSpec.describe Reporting::Reports::EnterpriseFeeSummary::Permissions do let!(:order_cycle) { create(:simple_order_cycle) } let!(:incoming_exchange) { create(:exchange, incoming: true, order_cycle:) } let!(:outgoing_exchange) { create(:exchange, incoming: false, order_cycle:) } diff --git a/spec/lib/reports/enterprise_fee_summary/report_data/enterprise_fee_type_total_spec.rb b/spec/lib/reports/enterprise_fee_summary/report_data/enterprise_fee_type_total_spec.rb index 5f26970c00..d7e9e9f6b5 100644 --- a/spec/lib/reports/enterprise_fee_summary/report_data/enterprise_fee_type_total_spec.rb +++ b/spec/lib/reports/enterprise_fee_summary/report_data/enterprise_fee_type_total_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Reporting::Reports::EnterpriseFeeSummary::ReportData::EnterpriseFeeTypeTotal do +RSpec.describe Reporting::Reports::EnterpriseFeeSummary::ReportData::EnterpriseFeeTypeTotal do it "sorts instances according to their attributes" do instance_a = described_class.new( fee_type: "sales", diff --git a/spec/lib/reports/enterprise_fee_summary/summarizer_spec.rb b/spec/lib/reports/enterprise_fee_summary/summarizer_spec.rb index 9070089609..e161d84597 100644 --- a/spec/lib/reports/enterprise_fee_summary/summarizer_spec.rb +++ b/spec/lib/reports/enterprise_fee_summary/summarizer_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Reporting::Reports::EnterpriseFeeSummary::Summarizer do +RSpec.describe Reporting::Reports::EnterpriseFeeSummary::Summarizer do let(:row) { { "total_amount" => 1, "payment_method_name" => nil, diff --git a/spec/lib/reports/lettuce_share_report_spec.rb b/spec/lib/reports/lettuce_share_report_spec.rb index 528b085427..1501ffc778 100644 --- a/spec/lib/reports/lettuce_share_report_spec.rb +++ b/spec/lib/reports/lettuce_share_report_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' module Reporting module Reports module ProductsAndInventory - describe LettuceShare do + RSpec.describe LettuceShare do let(:user) { create(:user) } let(:report) { LettuceShare.new(user) } let(:variant) { create(:variant) } diff --git a/spec/lib/reports/line_items_spec.rb b/spec/lib/reports/line_items_spec.rb index 8e04eb714f..6619634ac2 100644 --- a/spec/lib/reports/line_items_spec.rb +++ b/spec/lib/reports/line_items_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Reporting::LineItems do +RSpec.describe Reporting::LineItems do # This object lets us add some test coverage despite the very deep coupling between the class # under test and the various objects it depends on. Other more common moking strategies where very # hard. diff --git a/spec/lib/reports/order_cycle_management_report_spec.rb b/spec/lib/reports/order_cycle_management_report_spec.rb index 80bed21b3c..65c3a2d86b 100644 --- a/spec/lib/reports/order_cycle_management_report_spec.rb +++ b/spec/lib/reports/order_cycle_management_report_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' module Reporting module Reports module OrderCycleManagement - describe Base do + RSpec.describe Base do context "as a site admin" do subject { Base.new(user, params) } let(:params) { {} } diff --git a/spec/lib/reports/orders_and_distributors_report_spec.rb b/spec/lib/reports/orders_and_distributors_report_spec.rb index 689ea4d791..37fd4de00e 100644 --- a/spec/lib/reports/orders_and_distributors_report_spec.rb +++ b/spec/lib/reports/orders_and_distributors_report_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' module Reporting module Reports module OrdersAndDistributors - describe Base do + RSpec.describe Base do describe 'orders and distributors report' do it 'should return a header row describing the report' do subject = Base.new nil diff --git a/spec/lib/reports/orders_and_fulfillment/order_cycle_customer_totals_report_spec.rb b/spec/lib/reports/orders_and_fulfillment/order_cycle_customer_totals_report_spec.rb index c2d6eccbb3..16511bca45 100644 --- a/spec/lib/reports/orders_and_fulfillment/order_cycle_customer_totals_report_spec.rb +++ b/spec/lib/reports/orders_and_fulfillment/order_cycle_customer_totals_report_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Reporting::Reports::OrdersAndFulfillment::OrderCycleCustomerTotals do +RSpec.describe Reporting::Reports::OrdersAndFulfillment::OrderCycleCustomerTotals do let!(:distributor) { create(:distributor_enterprise, name: "Apple Market") } let!(:customer) { create(:customer, enterprise: distributor, user:, code: "JHN") } let(:user) { create(:user, email: "john@example.net") } diff --git a/spec/lib/reports/orders_and_fulfillment/order_cycle_distributor_totals_by_supplier_report_spec.rb b/spec/lib/reports/orders_and_fulfillment/order_cycle_distributor_totals_by_supplier_report_spec.rb index f88dab48bd..9bedefa186 100644 --- a/spec/lib/reports/orders_and_fulfillment/order_cycle_distributor_totals_by_supplier_report_spec.rb +++ b/spec/lib/reports/orders_and_fulfillment/order_cycle_distributor_totals_by_supplier_report_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' module Reporting module Reports module OrdersAndFulfillment - describe OrderCycleDistributorTotalsBySupplier do + RSpec.describe OrderCycleDistributorTotalsBySupplier do let!(:distributor) { create(:distributor_enterprise) } let!(:order) do diff --git a/spec/lib/reports/orders_and_fulfillment/order_cycle_supplier_totals_by_distributor_report_spec.rb b/spec/lib/reports/orders_and_fulfillment/order_cycle_supplier_totals_by_distributor_report_spec.rb index a5ddd3f877..c6cbb733d0 100644 --- a/spec/lib/reports/orders_and_fulfillment/order_cycle_supplier_totals_by_distributor_report_spec.rb +++ b/spec/lib/reports/orders_and_fulfillment/order_cycle_supplier_totals_by_distributor_report_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' module Reporting module Reports module OrdersAndFulfillment - describe OrderCycleSupplierTotalsByDistributor do + RSpec.describe OrderCycleSupplierTotalsByDistributor do let!(:distributor) { create(:distributor_enterprise) } let!(:order) do diff --git a/spec/lib/reports/orders_and_fulfillment/orders_cycle_supplier_totals_report_spec.rb b/spec/lib/reports/orders_and_fulfillment/orders_cycle_supplier_totals_report_spec.rb index e5206e429a..c40dcc90db 100644 --- a/spec/lib/reports/orders_and_fulfillment/orders_cycle_supplier_totals_report_spec.rb +++ b/spec/lib/reports/orders_and_fulfillment/orders_cycle_supplier_totals_report_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Reporting::Reports::OrdersAndFulfillment::OrderCycleSupplierTotals do +RSpec.describe Reporting::Reports::OrdersAndFulfillment::OrderCycleSupplierTotals do let!(:distributor) { create(:distributor_enterprise) } let!(:order) do diff --git a/spec/lib/reports/packing/packing_report_spec.rb b/spec/lib/reports/packing/packing_report_spec.rb index ead8344bcc..624a5dab5a 100644 --- a/spec/lib/reports/packing/packing_report_spec.rb +++ b/spec/lib/reports/packing/packing_report_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe "Packing Reports" do +RSpec.describe "Packing Reports" do include AuthenticationHelper describe "fetching orders" do diff --git a/spec/lib/reports/products_and_inventory_report_spec.rb b/spec/lib/reports/products_and_inventory_report_spec.rb index 8096fa46b1..79b8c6d21c 100644 --- a/spec/lib/reports/products_and_inventory_report_spec.rb +++ b/spec/lib/reports/products_and_inventory_report_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' module Reporting module Reports module ProductsAndInventory - describe Base do + RSpec.describe Base do context "As a site admin" do let(:user) do user = create(:user) @@ -264,7 +264,7 @@ module Reporting end end - describe AllProducts do + RSpec.describe AllProducts do let(:user) do user = create(:user) user.spree_roles << Spree::Role.find_or_create_by!(name: 'admin') diff --git a/spec/lib/reports/report_loader_spec.rb b/spec/lib/reports/report_loader_spec.rb index 930c5af1ac..af2b877833 100644 --- a/spec/lib/reports/report_loader_spec.rb +++ b/spec/lib/reports/report_loader_spec.rb @@ -16,7 +16,7 @@ module Reporting end end -describe Reporting::ReportLoader do +RSpec.describe Reporting::ReportLoader do let(:service) { Reporting::ReportLoader.new(*arguments) } let(:report_base_class) { Reporting::Reports::Bananas::Base } let(:report_subtypes) { ["green", "yellow"] } diff --git a/spec/lib/reports/report_renderer_spec.rb b/spec/lib/reports/report_renderer_spec.rb index eda37744ca..1671f64c20 100644 --- a/spec/lib/reports/report_renderer_spec.rb +++ b/spec/lib/reports/report_renderer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Reporting::ReportRenderer do +RSpec.describe Reporting::ReportRenderer do let(:data) { [ { "id" => 1, "name" => "carrots", "quantity" => 3 }, diff --git a/spec/lib/reports/report_spec.rb b/spec/lib/reports/report_spec.rb index 4d79cc72b6..22a725f99c 100644 --- a/spec/lib/reports/report_spec.rb +++ b/spec/lib/reports/report_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' # rubocop:disable Metrics/ModuleLength module Reporting - describe ReportTemplate do + RSpec.describe ReportTemplate do let(:user) { create(:user) } let(:params) { {} } subject { described_class.new(user, params) } diff --git a/spec/lib/reports/sales_tax_report_spec.rb b/spec/lib/reports/sales_tax_report_spec.rb index aa8b6b7885..501ad972e9 100644 --- a/spec/lib/reports/sales_tax_report_spec.rb +++ b/spec/lib/reports/sales_tax_report_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' module Reporting module Reports module SalesTax - describe TaxTypes do + RSpec.describe TaxTypes do let(:user) { create(:user) } let(:report) { TaxTypes.new(user, {}) } diff --git a/spec/lib/reports/sales_tax_totals_by_order_spec.rb b/spec/lib/reports/sales_tax_totals_by_order_spec.rb index 088d889bb0..641bc8030e 100644 --- a/spec/lib/reports/sales_tax_totals_by_order_spec.rb +++ b/spec/lib/reports/sales_tax_totals_by_order_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe "Reporting::Reports::SalesTax::SalesTaxTotalsByOrder" do +RSpec.describe "Reporting::Reports::SalesTax::SalesTaxTotalsByOrder" do subject(:report) { Reporting::Reports::SalesTax::SalesTaxTotalsByOrder.new(user, {}) } let(:user) { create(:user) } diff --git a/spec/lib/reports/users_and_enterprises_report_spec.rb b/spec/lib/reports/users_and_enterprises_report_spec.rb index ce0ab369d9..4f1ce54670 100644 --- a/spec/lib/reports/users_and_enterprises_report_spec.rb +++ b/spec/lib/reports/users_and_enterprises_report_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' module Reporting module Reports module UsersAndEnterprises - describe Base do + RSpec.describe Base do describe "query_result" do let!(:owners_and_enterprises) { double(:owners_and_enterprises) } let!(:managers_and_enterprises) { double(:managers_and_enterprises) } diff --git a/spec/lib/reports/xero_invoices_report_spec.rb b/spec/lib/reports/xero_invoices_report_spec.rb index ab4a0e3b9b..7f64e4b5c1 100644 --- a/spec/lib/reports/xero_invoices_report_spec.rb +++ b/spec/lib/reports/xero_invoices_report_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' module Reporting module Reports module XeroInvoices - describe Base do + RSpec.describe Base do subject { Base.new user, {} } let(:user) { create(:user) } diff --git a/spec/lib/spree/core/environment_spec.rb b/spec/lib/spree/core/environment_spec.rb index 7eec8dc329..114a2f05ca 100644 --- a/spec/lib/spree/core/environment_spec.rb +++ b/spec/lib/spree/core/environment_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Core::Environment do +RSpec.describe Spree::Core::Environment do # Our version doesn't add any features we could test. # So we just check that our file is loaded correctly. let(:our_file) { Rails.root.join("lib/spree/core/environment.rb").to_s } diff --git a/spec/lib/spree/core/mail_interceptor_spec.rb b/spec/lib/spree/core/mail_interceptor_spec.rb index cf4569a530..510cc3deea 100644 --- a/spec/lib/spree/core/mail_interceptor_spec.rb +++ b/spec/lib/spree/core/mail_interceptor_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' # Here we use the OrderMailer as a way to test the mail interceptor. -describe Spree::OrderMailer do +RSpec.describe Spree::OrderMailer do let(:order) do Spree::Order.new(distributor: create(:enterprise), bill_address: create(:address)) diff --git a/spec/lib/spree/core/mail_settings_spec.rb b/spec/lib/spree/core/mail_settings_spec.rb index 3953c3266f..29b4ef3e63 100644 --- a/spec/lib/spree/core/mail_settings_spec.rb +++ b/spec/lib/spree/core/mail_settings_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Core::MailSettings do +RSpec.describe Spree::Core::MailSettings do context "overrides appplication defaults" do context "authentication method is login" do before do diff --git a/spec/lib/spree/core/product_duplicator_spec.rb b/spec/lib/spree/core/product_duplicator_spec.rb index 265f2e1d53..e23904ec47 100644 --- a/spec/lib/spree/core/product_duplicator_spec.rb +++ b/spec/lib/spree/core/product_duplicator_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Core::ProductDuplicator do +RSpec.describe Spree::Core::ProductDuplicator do let(:product) do double 'Product', name: "foo", diff --git a/spec/lib/spree/core/token_resource_spec.rb b/spec/lib/spree/core/token_resource_spec.rb index 087c5b9350..1de0d25ea2 100644 --- a/spec/lib/spree/core/token_resource_spec.rb +++ b/spec/lib/spree/core/token_resource_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' # Its pretty difficult to test this module in isolation b/c it needs to work in conjunction # with an actual class that extends ActiveRecord::Base and has a corresponding table in the DB. # So we'll just test it using Order instead since it included the module. -describe Spree::Core::TokenResource do +RSpec.describe Spree::Core::TokenResource do let(:order) { Spree::Order.new } let(:permission) { double(Spree::TokenizedPermission) } diff --git a/spec/lib/spree/i18n_spec.rb b/spec/lib/spree/i18n_spec.rb index 04be4e1dc4..bb03786fa4 100644 --- a/spec/lib/spree/i18n_spec.rb +++ b/spec/lib/spree/i18n_spec.rb @@ -3,7 +3,7 @@ require 'rspec/expectations' require 'spree/i18n' -describe "i18n" do +RSpec.describe "i18n" do before do I18n.backend.store_translations( :en, diff --git a/spec/lib/spree/localized_number_spec.rb b/spec/lib/spree/localized_number_spec.rb index 81d632c972..31ce979d91 100644 --- a/spec/lib/spree/localized_number_spec.rb +++ b/spec/lib/spree/localized_number_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'spree/localized_number' -describe Spree::LocalizedNumber do +RSpec.describe Spree::LocalizedNumber do describe ".parse" do context "with point separator" do it "captures the proper amount for a formatted string" do diff --git a/spec/lib/spree/money_spec.rb b/spec/lib/spree/money_spec.rb index b6f2fca897..e79443e920 100644 --- a/spec/lib/spree/money_spec.rb +++ b/spec/lib/spree/money_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Money do +RSpec.describe Spree::Money do include PreferencesHelper before do diff --git a/spec/lib/stripe/account_connector_spec.rb b/spec/lib/stripe/account_connector_spec.rb index b38bf88207..c399a620fe 100644 --- a/spec/lib/stripe/account_connector_spec.rb +++ b/spec/lib/stripe/account_connector_spec.rb @@ -5,7 +5,7 @@ require 'stripe/account_connector' require 'stripe/oauth' module Stripe - describe AccountConnector do + RSpec.describe AccountConnector do describe "create_account" do let(:user) { create(:user) } let(:enterprise) { create(:enterprise) } diff --git a/spec/lib/stripe/authorize_response_patcher_spec.rb b/spec/lib/stripe/authorize_response_patcher_spec.rb index 9ecb800ee2..c99b2da340 100644 --- a/spec/lib/stripe/authorize_response_patcher_spec.rb +++ b/spec/lib/stripe/authorize_response_patcher_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Stripe - describe AuthorizeResponsePatcher do + RSpec.describe AuthorizeResponsePatcher do describe "#call!" do let(:patcher) { Stripe::AuthorizeResponsePatcher.new(response) } let(:params) { {} } diff --git a/spec/lib/stripe/credit_card_cloner_spec.rb b/spec/lib/stripe/credit_card_cloner_spec.rb index f9ef2b59fd..44acfb5373 100644 --- a/spec/lib/stripe/credit_card_cloner_spec.rb +++ b/spec/lib/stripe/credit_card_cloner_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' require 'stripe/credit_card_cloner' module Stripe - describe CreditCardCloner do + RSpec.describe CreditCardCloner do let!(:user) { create(:user, email: "apple.customer@example.com") } let!(:enterprise) { create(:enterprise) } diff --git a/spec/lib/stripe/credit_card_remover_spec.rb b/spec/lib/stripe/credit_card_remover_spec.rb index 39638ee82d..a5af7ba88a 100644 --- a/spec/lib/stripe/credit_card_remover_spec.rb +++ b/spec/lib/stripe/credit_card_remover_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'stripe/credit_card_remover' -describe Stripe::CreditCardRemover do +RSpec.describe Stripe::CreditCardRemover do let(:credit_card) { create(:credit_card, gateway_payment_profile_id: pm_card.id, user:) } let!(:user) { create(:user, email: "apple.customer@example.com") } diff --git a/spec/lib/stripe/payment_intent_validator_spec.rb b/spec/lib/stripe/payment_intent_validator_spec.rb index 64713217fa..c3d917b614 100644 --- a/spec/lib/stripe/payment_intent_validator_spec.rb +++ b/spec/lib/stripe/payment_intent_validator_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'stripe/payment_intent_validator' -describe Stripe::PaymentIntentValidator do +RSpec.describe Stripe::PaymentIntentValidator do let(:payment_method) { create(:stripe_sca_payment_method, distributor_ids: [create(:distributor_enterprise).id], preferred_enterprise_id: create(:enterprise).id) diff --git a/spec/lib/stripe/profile_storer_spec.rb b/spec/lib/stripe/profile_storer_spec.rb index 663db16165..972651ff2f 100644 --- a/spec/lib/stripe/profile_storer_spec.rb +++ b/spec/lib/stripe/profile_storer_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Stripe - describe ProfileStorer do + RSpec.describe ProfileStorer do include StripeStubs describe "create_customer_from_token", :vcr, :stripe_version do diff --git a/spec/lib/stripe/webhook_handler_spec.rb b/spec/lib/stripe/webhook_handler_spec.rb index df835ecf97..6750123fb4 100644 --- a/spec/lib/stripe/webhook_handler_spec.rb +++ b/spec/lib/stripe/webhook_handler_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' require 'stripe/webhook_handler' module Stripe - describe WebhookHandler do + RSpec.describe WebhookHandler do let(:event) { double(:event, type: 'some.event') } let(:handler) { WebhookHandler.new(event) } diff --git a/spec/lib/tasks/data/remove_transient_data_spec.rb b/spec/lib/tasks/data/remove_transient_data_spec.rb index af47e06475..ff2667d749 100644 --- a/spec/lib/tasks/data/remove_transient_data_spec.rb +++ b/spec/lib/tasks/data/remove_transient_data_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'tasks/data/remove_transient_data' -describe RemoveTransientData do +RSpec.describe RemoveTransientData do describe '#call' do let(:retention_period) { RemoveTransientData::RETENTION_PERIOD } diff --git a/spec/lib/tasks/data/truncate_data_rake_spec.rb b/spec/lib/tasks/data/truncate_data_rake_spec.rb index d2f86fc826..a04221200a 100644 --- a/spec/lib/tasks/data/truncate_data_rake_spec.rb +++ b/spec/lib/tasks/data/truncate_data_rake_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'rake' -describe 'truncate_data.rake' do +RSpec.describe 'truncate_data.rake' do describe ':truncate' do context 'when months_to_keep is specified' do it 'truncates order cycles closed earlier than months_to_keep months ago' do diff --git a/spec/lib/tasks/data/truncate_data_spec.rb b/spec/lib/tasks/data/truncate_data_spec.rb index fe2b249d8e..e799ec3a02 100644 --- a/spec/lib/tasks/data/truncate_data_spec.rb +++ b/spec/lib/tasks/data/truncate_data_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'tasks/data/truncate_data' -describe TruncateData do +RSpec.describe TruncateData do describe '#call' do before do allow(Spree::ReturnAuthorization).to receive(:delete_all) diff --git a/spec/lib/tasks/enterprises_rake_spec.rb b/spec/lib/tasks/enterprises_rake_spec.rb index dfcb91cebd..0ebf97b7d7 100644 --- a/spec/lib/tasks/enterprises_rake_spec.rb +++ b/spec/lib/tasks/enterprises_rake_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'rake' -describe 'enterprises.rake' do +RSpec.describe 'enterprises.rake' do before(:all) do Rake.application.rake_require("tasks/enterprises") Rake::Task.define_task(:environment) diff --git a/spec/lib/tasks/reset_spec.rb b/spec/lib/tasks/reset_spec.rb index 9c05cff671..99b0237bb5 100644 --- a/spec/lib/tasks/reset_spec.rb +++ b/spec/lib/tasks/reset_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'rake' -describe "reset.rake" do +RSpec.describe "reset.rake" do before(:all) do Rake.application.rake_require("tasks/reset") Rake::Task.define_task(:environment) diff --git a/spec/lib/tasks/sample_data_rake_spec.rb b/spec/lib/tasks/sample_data_rake_spec.rb index a22ebce9da..4fa798e53a 100644 --- a/spec/lib/tasks/sample_data_rake_spec.rb +++ b/spec/lib/tasks/sample_data_rake_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'rake' -describe 'sample_data.rake' do +RSpec.describe 'sample_data.rake' do before(:all) do Rake.application.rake_require 'tasks/sample_data' Rake::Task.define_task(:environment) diff --git a/spec/lib/tasks/users_rake_spec.rb b/spec/lib/tasks/users_rake_spec.rb index 5fdc6a0487..ebf5e8a5a1 100644 --- a/spec/lib/tasks/users_rake_spec.rb +++ b/spec/lib/tasks/users_rake_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'rake' -describe 'users.rake' do +RSpec.describe 'users.rake' do before do Rake.application.rake_require 'tasks/users' Rake::Task.define_task(:environment) diff --git a/spec/mailers/enterprise_mailer_spec.rb b/spec/mailers/enterprise_mailer_spec.rb index a9417a3841..e7de3e3a89 100644 --- a/spec/mailers/enterprise_mailer_spec.rb +++ b/spec/mailers/enterprise_mailer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe EnterpriseMailer do +RSpec.describe EnterpriseMailer do let!(:enterprise) { create(:enterprise) } let!(:user) { create(:user) } diff --git a/spec/mailers/order_mailer_spec.rb b/spec/mailers/order_mailer_spec.rb index 506a05d6b4..34206213d5 100644 --- a/spec/mailers/order_mailer_spec.rb +++ b/spec/mailers/order_mailer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::OrderMailer do +RSpec.describe Spree::OrderMailer do describe '#confirm_email_for_customer' do subject(:email) { described_class.confirm_email_for_customer(order) } diff --git a/spec/mailers/producer_mailer_spec.rb b/spec/mailers/producer_mailer_spec.rb index b6460e4f6a..b4e1be284a 100644 --- a/spec/mailers/producer_mailer_spec.rb +++ b/spec/mailers/producer_mailer_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'yaml' -describe ProducerMailer, type: :mailer do +RSpec.describe ProducerMailer, type: :mailer do let!(:zone) { create(:zone_with_member) } let!(:tax_rate) { create(:tax_rate, included_in_price: true, calculator: Calculator::DefaultTax.new, zone:, diff --git a/spec/mailers/report_mailer_spec.rb b/spec/mailers/report_mailer_spec.rb index 54a63845ea..b23932d3a3 100644 --- a/spec/mailers/report_mailer_spec.rb +++ b/spec/mailers/report_mailer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ReportMailer do +RSpec.describe ReportMailer do describe "#report_ready" do subject(:email) { ReportMailer.with( diff --git a/spec/mailers/shipment_mailer_spec.rb b/spec/mailers/shipment_mailer_spec.rb index f0ea130c64..e81ea4d0cb 100644 --- a/spec/mailers/shipment_mailer_spec.rb +++ b/spec/mailers/shipment_mailer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::ShipmentMailer do +RSpec.describe Spree::ShipmentMailer do let(:shipment) do order = build(:order_with_distributor) product = build(:product, name: %{The "BEST" product}) diff --git a/spec/mailers/subscription_mailer_spec.rb b/spec/mailers/subscription_mailer_spec.rb index 12cad33ece..93e4b82523 100644 --- a/spec/mailers/subscription_mailer_spec.rb +++ b/spec/mailers/subscription_mailer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe SubscriptionMailer, type: :mailer do +RSpec.describe SubscriptionMailer, type: :mailer do include ActionView::Helpers::SanitizeHelper describe '#placement_email' do diff --git a/spec/mailers/test_mailer_spec.rb b/spec/mailers/test_mailer_spec.rb index 181b93164e..191f84a344 100644 --- a/spec/mailers/test_mailer_spec.rb +++ b/spec/mailers/test_mailer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::TestMailer do +RSpec.describe Spree::TestMailer do let(:user) { create(:user) } context ":from not set explicitly" do diff --git a/spec/mailers/user_mailer_spec.rb b/spec/mailers/user_mailer_spec.rb index 62d144d87f..14dbb566f3 100644 --- a/spec/mailers/user_mailer_spec.rb +++ b/spec/mailers/user_mailer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::UserMailer do +RSpec.describe Spree::UserMailer do let(:user) { build(:user) } describe '#signup_confirmation' do diff --git a/spec/migrations/20240213044159_copy_oidc_data_to_oidc_accounts_spec.rb b/spec/migrations/20240213044159_copy_oidc_data_to_oidc_accounts_spec.rb index d2bbd81694..8a134c8b59 100644 --- a/spec/migrations/20240213044159_copy_oidc_data_to_oidc_accounts_spec.rb +++ b/spec/migrations/20240213044159_copy_oidc_data_to_oidc_accounts_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require_relative '../../db/migrate/20240213044159_copy_oidc_data_to_oidc_accounts' -describe CopyOidcDataToOidcAccounts do +RSpec.describe CopyOidcDataToOidcAccounts do describe "up" do let!(:user) { create(:user) } let!(:oidc_user) { diff --git a/spec/migrations/20240502035220_update_n8n_url_spec.rb b/spec/migrations/20240502035220_update_n8n_url_spec.rb index 9735f1126d..2c318dcf18 100644 --- a/spec/migrations/20240502035220_update_n8n_url_spec.rb +++ b/spec/migrations/20240502035220_update_n8n_url_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require_relative '../../db/migrate/20240502035220_update_n8n_url' -describe UpdateN8nUrl do +RSpec.describe UpdateN8nUrl do # We may want to move this to a support file if this syntax is useful in # other places. Reference: # - https://stackoverflow.com/a/34969429/3377535 diff --git a/spec/migrations/convert_stripe_connect_to_stripe_sca_spec.rb b/spec/migrations/convert_stripe_connect_to_stripe_sca_spec.rb index 45248ce68c..f107bb2b66 100644 --- a/spec/migrations/convert_stripe_connect_to_stripe_sca_spec.rb +++ b/spec/migrations/convert_stripe_connect_to_stripe_sca_spec.rb @@ -12,7 +12,7 @@ module Spree end end -describe ConvertStripeConnectToStripeSca do +RSpec.describe ConvertStripeConnectToStripeSca do let(:owner) { create(:distributor_enterprise) } let(:new_owner) { create(:distributor_enterprise) } let(:old_stripe_connect) { diff --git a/spec/migrations/migrate_admin_tax_amounts_spec.rb b/spec/migrations/migrate_admin_tax_amounts_spec.rb index b60c8ae762..41250be1cc 100644 --- a/spec/migrations/migrate_admin_tax_amounts_spec.rb +++ b/spec/migrations/migrate_admin_tax_amounts_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require_relative '../../db/migrate/20210617203927_migrate_admin_tax_amounts' -describe MigrateAdminTaxAmounts do +RSpec.describe MigrateAdminTaxAmounts do subject { MigrateAdminTaxAmounts.new } let(:tax_category10) { create(:tax_category) } diff --git a/spec/migrations/migrate_customer_names_spec.rb b/spec/migrations/migrate_customer_names_spec.rb index 2e014efefa..9338e0e9a8 100644 --- a/spec/migrations/migrate_customer_names_spec.rb +++ b/spec/migrations/migrate_customer_names_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require_relative '../../db/migrate/20211027140313_migrate_customer_names' -describe MigrateCustomerNames do +RSpec.describe MigrateCustomerNames do subject { MigrateCustomerNames.new } let!(:enterprise1) { create(:enterprise) } diff --git a/spec/migrations/split_customer_names_spec.rb b/spec/migrations/split_customer_names_spec.rb index 76c3803553..3d94e32edd 100644 --- a/spec/migrations/split_customer_names_spec.rb +++ b/spec/migrations/split_customer_names_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require_relative '../../db/migrate/20220105085730_migrate_customers_data' -describe MigrateCustomersData do +RSpec.describe MigrateCustomersData do let!(:customer1) { create(:customer, name: "Timmy Test", first_name: "", last_name: "", bill_address: nil) } diff --git a/spec/migrations/update_enterprise_instagram_links_spec.rb b/spec/migrations/update_enterprise_instagram_links_spec.rb index 99a2a770f0..6dc5ec5ef3 100644 --- a/spec/migrations/update_enterprise_instagram_links_spec.rb +++ b/spec/migrations/update_enterprise_instagram_links_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' require Rails.root.join('db/migrate/20221208150521_update_enterprise_instagram_links.rb') -describe UpdateEnterpriseInstagramLinks do +RSpec.describe UpdateEnterpriseInstagramLinks do let!(:enterprise1) { create(:enterprise, instagram: "https://www.instagram.com/happyfarm") } let!(:enterprise2) { create(:enterprise, instagram: "@happyfarm") } diff --git a/spec/models/adjustment_metadata_spec.rb b/spec/models/adjustment_metadata_spec.rb index 66ae5bc6f0..9f4cd157b3 100644 --- a/spec/models/adjustment_metadata_spec.rb +++ b/spec/models/adjustment_metadata_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe AdjustmentMetadata do +RSpec.describe AdjustmentMetadata do it { is_expected.to belong_to(:adjustment).required } it { is_expected.to belong_to(:enterprise).required } diff --git a/spec/models/calculator/flat_percent_item_total_spec.rb b/spec/models/calculator/flat_percent_item_total_spec.rb index 3305c7791a..8ffb10918a 100644 --- a/spec/models/calculator/flat_percent_item_total_spec.rb +++ b/spec/models/calculator/flat_percent_item_total_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Calculator::FlatPercentItemTotal do +RSpec.describe Calculator::FlatPercentItemTotal do let(:calculator) { Calculator::FlatPercentItemTotal.new } let(:line_item) { build_stubbed(:line_item, price: 10, quantity: 1) } diff --git a/spec/models/calculator/flat_percent_per_item_spec.rb b/spec/models/calculator/flat_percent_per_item_spec.rb index ac873a0ba7..c8efad27a6 100644 --- a/spec/models/calculator/flat_percent_per_item_spec.rb +++ b/spec/models/calculator/flat_percent_per_item_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Calculator::FlatPercentPerItem do +RSpec.describe Calculator::FlatPercentPerItem do let(:calculator) { Calculator::FlatPercentPerItem.new preferred_flat_percent: 20 } it { is_expected.to validate_numericality_of(:preferred_flat_percent) } diff --git a/spec/models/calculator/flat_rate_spec.rb b/spec/models/calculator/flat_rate_spec.rb index 92eaa864d0..6b8ced68a6 100644 --- a/spec/models/calculator/flat_rate_spec.rb +++ b/spec/models/calculator/flat_rate_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Calculator::FlatRate do +RSpec.describe Calculator::FlatRate do let(:calculator) { Calculator::FlatRate.new } before { allow(calculator).to receive_messages preferred_amount: 10 } diff --git a/spec/models/calculator/flexi_rate_spec.rb b/spec/models/calculator/flexi_rate_spec.rb index 6f33270b43..7129d1555e 100644 --- a/spec/models/calculator/flexi_rate_spec.rb +++ b/spec/models/calculator/flexi_rate_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Calculator::FlexiRate do +RSpec.describe Calculator::FlexiRate do let(:line_item) { build_stubbed(:line_item, quantity:) } let(:calculator) do Calculator::FlexiRate.new( diff --git a/spec/models/calculator/per_item_spec.rb b/spec/models/calculator/per_item_spec.rb index 914ca33dfa..78e324290a 100644 --- a/spec/models/calculator/per_item_spec.rb +++ b/spec/models/calculator/per_item_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Calculator::PerItem do +RSpec.describe Calculator::PerItem do let(:calculator) { Calculator::PerItem.new(preferred_amount: 10) } let(:shipping_calculable) { double(:calculable) } let(:line_item) { build_stubbed(:line_item, quantity: 5) } diff --git a/spec/models/calculator/price_sack_spec.rb b/spec/models/calculator/price_sack_spec.rb index afab174fe5..229f6b9cbf 100644 --- a/spec/models/calculator/price_sack_spec.rb +++ b/spec/models/calculator/price_sack_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Calculator::PriceSack do +RSpec.describe Calculator::PriceSack do let(:calculator) do calculator = Calculator::PriceSack.new calculator.preferred_minimal_amount = 5 diff --git a/spec/models/calculator/weight_spec.rb b/spec/models/calculator/weight_spec.rb index 915562c7b1..ec7907f638 100644 --- a/spec/models/calculator/weight_spec.rb +++ b/spec/models/calculator/weight_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Calculator::Weight do +RSpec.describe Calculator::Weight do it "computes shipping cost for an order by total weight" do variant1 = build_stubbed(:variant, unit_value: 10_000) variant2 = build_stubbed(:variant, unit_value: 20_000) diff --git a/spec/models/column_preference_spec.rb b/spec/models/column_preference_spec.rb index 9a7e76a70a..99f6402987 100644 --- a/spec/models/column_preference_spec.rb +++ b/spec/models/column_preference_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ColumnPreference, type: :model do +RSpec.describe ColumnPreference, type: :model do subject { ColumnPreference.new( user:, action_name: :customers_index, column_name: :email diff --git a/spec/models/concerns/balance_spec.rb b/spec/models/concerns/balance_spec.rb index 9531f04816..dcf82dd601 100644 --- a/spec/models/concerns/balance_spec.rb +++ b/spec/models/concerns/balance_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Balance do +RSpec.describe Balance do context "#new_outstanding_balance" do context 'when orders are in cart state' do let(:order) { build(:order, total: 100, payment_total: 10, state: 'cart') } diff --git a/spec/models/concerns/calculated_adjustments_spec.rb b/spec/models/concerns/calculated_adjustments_spec.rb index 3020088b0f..73238a055c 100644 --- a/spec/models/concerns/calculated_adjustments_spec.rb +++ b/spec/models/concerns/calculated_adjustments_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' # Its pretty difficult to test this module in isolation b/c it needs to work in conjunction # with an actual class that extends ActiveRecord::Base and has a corresponding table in the DB. # So we'll just test it using Order and ShippingMethod. These classes are including the module. -describe CalculatedAdjustments do +RSpec.describe CalculatedAdjustments do let(:calculator) { build(:calculator) } let(:tax_rate) { Spree::TaxRate.new(calculator:) } diff --git a/spec/models/concerns/order_shipment_spec.rb b/spec/models/concerns/order_shipment_spec.rb index 26dbb3937c..fe5843ebf3 100644 --- a/spec/models/concerns/order_shipment_spec.rb +++ b/spec/models/concerns/order_shipment_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe OrderShipment do +RSpec.describe OrderShipment do let(:order) { create(:order) } describe "#shipping_method" do diff --git a/spec/models/concerns/product_stock_spec.rb b/spec/models/concerns/product_stock_spec.rb index 0024035f91..751f57058a 100644 --- a/spec/models/concerns/product_stock_spec.rb +++ b/spec/models/concerns/product_stock_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe ProductStock do +RSpec.describe ProductStock do let(:product) { create(:simple_product) } context "when product has one variant" do diff --git a/spec/models/concerns/variant_stock_spec.rb b/spec/models/concerns/variant_stock_spec.rb index daff2825fc..4a25c58355 100644 --- a/spec/models/concerns/variant_stock_spec.rb +++ b/spec/models/concerns/variant_stock_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe VariantStock do +RSpec.describe VariantStock do let(:variant) { create(:variant) } describe '#after_save' do diff --git a/spec/models/content_configuration_spec.rb b/spec/models/content_configuration_spec.rb index 07f8bcc18d..4b29dd4904 100644 --- a/spec/models/content_configuration_spec.rb +++ b/spec/models/content_configuration_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ContentConfiguration do +RSpec.describe ContentConfiguration do describe "default logos and home_hero" do it "sets a default url with existing image" do expect(image_exist?(ContentConfig.url_for(:logo))).to be true diff --git a/spec/models/coordinator_fee_spec.rb b/spec/models/coordinator_fee_spec.rb index 5e3a8765b8..980935c0a9 100644 --- a/spec/models/coordinator_fee_spec.rb +++ b/spec/models/coordinator_fee_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe CoordinatorFee do +RSpec.describe CoordinatorFee do it { is_expected.to belong_to(:order_cycle).required } it { is_expected.to belong_to(:enterprise_fee).required } end diff --git a/spec/models/custom_tab_spec.rb b/spec/models/custom_tab_spec.rb index f192068f63..b35af1c71c 100644 --- a/spec/models/custom_tab_spec.rb +++ b/spec/models/custom_tab_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe CustomTab do +RSpec.describe CustomTab do describe 'associations' do it { is_expected.to belong_to(:enterprise).required } end diff --git a/spec/models/customer_spec.rb b/spec/models/customer_spec.rb index fc5847239c..bb488b6993 100644 --- a/spec/models/customer_spec.rb +++ b/spec/models/customer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Customer, type: :model do +RSpec.describe Customer, type: :model do it { is_expected.to belong_to(:enterprise).required } it { is_expected.to belong_to(:user).optional } it { is_expected.to belong_to(:bill_address).optional } diff --git a/spec/models/enterprise_caching_spec.rb b/spec/models/enterprise_caching_spec.rb index e66063abc1..5f10a52398 100644 --- a/spec/models/enterprise_caching_spec.rb +++ b/spec/models/enterprise_caching_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Enterprise do +RSpec.describe Enterprise do context "key-based caching invalidation" do describe "is touched when a(n)" do let(:enterprise) { create(:distributor_enterprise) } diff --git a/spec/models/enterprise_fee_adjustments_spec.rb b/spec/models/enterprise_fee_adjustments_spec.rb index 8e00118b11..df281deeba 100644 --- a/spec/models/enterprise_fee_adjustments_spec.rb +++ b/spec/models/enterprise_fee_adjustments_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe EnterpriseFeeAdjustments do +RSpec.describe EnterpriseFeeAdjustments do let(:tax_rate) { create(:tax_rate, amount: 0.1) } let(:line_item) { create(:line_item) } let(:line_item2) { create(:line_item) } diff --git a/spec/models/enterprise_fee_spec.rb b/spec/models/enterprise_fee_spec.rb index 9a81c0d132..e2881f3a05 100644 --- a/spec/models/enterprise_fee_spec.rb +++ b/spec/models/enterprise_fee_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe EnterpriseFee do +RSpec.describe EnterpriseFee do describe "associations" do it { is_expected.to belong_to(:enterprise).required } it { is_expected.to belong_to(:tax_category).optional } diff --git a/spec/models/enterprise_group_spec.rb b/spec/models/enterprise_group_spec.rb index 4a74fa65f8..8902e7cb4e 100644 --- a/spec/models/enterprise_group_spec.rb +++ b/spec/models/enterprise_group_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe EnterpriseGroup do +RSpec.describe EnterpriseGroup do describe "associations" do subject { build(:enterprise_group) } diff --git a/spec/models/enterprise_relationship_spec.rb b/spec/models/enterprise_relationship_spec.rb index d0abff9ebe..dfdc2df022 100644 --- a/spec/models/enterprise_relationship_spec.rb +++ b/spec/models/enterprise_relationship_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe EnterpriseRelationship do +RSpec.describe EnterpriseRelationship do describe "scopes" do let(:e1) { create(:enterprise, name: 'A') } let(:e2) { create(:enterprise, name: 'B') } diff --git a/spec/models/enterprise_spec.rb b/spec/models/enterprise_spec.rb index 8fd7c29f1f..300dd84ccb 100644 --- a/spec/models/enterprise_spec.rb +++ b/spec/models/enterprise_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Enterprise do +RSpec.describe Enterprise do describe "sending emails" do describe "on creation" do let!(:user) { create(:user) } diff --git a/spec/models/exchange_spec.rb b/spec/models/exchange_spec.rb index 69dd37d3af..b2a9c92f35 100644 --- a/spec/models/exchange_spec.rb +++ b/spec/models/exchange_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Exchange do +RSpec.describe Exchange do it "should be valid when built from factory" do expect(build(:exchange)).to be_valid end diff --git a/spec/models/invoice/data_presenter/line_item_spec.rb b/spec/models/invoice/data_presenter/line_item_spec.rb index 14d3df8c9f..81abe073bd 100644 --- a/spec/models/invoice/data_presenter/line_item_spec.rb +++ b/spec/models/invoice/data_presenter/line_item_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Invoice::DataPresenter::LineItem do +RSpec.describe Invoice::DataPresenter::LineItem do subject(:presenter) { described_class.new(data) } describe "#amount_with_adjustments_without_taxes" do diff --git a/spec/models/invoice/data_presenter_spec.rb b/spec/models/invoice/data_presenter_spec.rb index bd35562762..555aeeb952 100644 --- a/spec/models/invoice/data_presenter_spec.rb +++ b/spec/models/invoice/data_presenter_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Invoice::DataPresenter do +RSpec.describe Invoice::DataPresenter do context "#display_date" do let(:invoice) { double(:invoice, date: '2023-08-01') } diff --git a/spec/models/oidc_account_spec.rb b/spec/models/oidc_account_spec.rb index 7d0ef6939e..f6eb2d792d 100644 --- a/spec/models/oidc_account_spec.rb +++ b/spec/models/oidc_account_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe OidcAccount, type: :model do +RSpec.describe OidcAccount, type: :model do describe "associations and validations" do subject { OidcAccount.new( diff --git a/spec/models/order_balance_spec.rb b/spec/models/order_balance_spec.rb index a7f1aedc66..7e3247900f 100644 --- a/spec/models/order_balance_spec.rb +++ b/spec/models/order_balance_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe OrderBalance do +RSpec.describe OrderBalance do subject(:order_balance) { described_class.new(order) } let(:order) { build(:order) } let(:user) { order.user } diff --git a/spec/models/order_cycle_spec.rb b/spec/models/order_cycle_spec.rb index 912ff2ec15..39095af2f6 100644 --- a/spec/models/order_cycle_spec.rb +++ b/spec/models/order_cycle_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe OrderCycle do +RSpec.describe OrderCycle do it "should be valid when built from factory" do expect(build(:simple_order_cycle)).to be_valid end diff --git a/spec/models/product_import/entry_processor_spec.rb b/spec/models/product_import/entry_processor_spec.rb index 69defea209..1306080ef8 100644 --- a/spec/models/product_import/entry_processor_spec.rb +++ b/spec/models/product_import/entry_processor_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ProductImport::EntryProcessor do +RSpec.describe ProductImport::EntryProcessor do let(:importer) { double(:importer) } let(:validator) { double(:validator) } let(:import_settings) { double(:import_settings) } diff --git a/spec/models/product_import/entry_validator_spec.rb b/spec/models/product_import/entry_validator_spec.rb index 4648298545..3f9ef97209 100644 --- a/spec/models/product_import/entry_validator_spec.rb +++ b/spec/models/product_import/entry_validator_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ProductImport::EntryValidator do +RSpec.describe ProductImport::EntryValidator do let(:current_user) { double(:current_user) } let(:import_time) { double(:import_time) } let(:spreadsheet_data) { double(:spreadsheet_data) } diff --git a/spec/models/product_import/inventory_reset_strategy_spec.rb b/spec/models/product_import/inventory_reset_strategy_spec.rb index 3eed624486..86a0b67de4 100644 --- a/spec/models/product_import/inventory_reset_strategy_spec.rb +++ b/spec/models/product_import/inventory_reset_strategy_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ProductImport::InventoryResetStrategy do +RSpec.describe ProductImport::InventoryResetStrategy do let(:inventory_reset) { described_class.new(excluded_items_ids) } describe '#reset' do diff --git a/spec/models/product_import/reset_absent_spec.rb b/spec/models/product_import/reset_absent_spec.rb index c853d3e79c..6a1bf2a56a 100644 --- a/spec/models/product_import/reset_absent_spec.rb +++ b/spec/models/product_import/reset_absent_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module ProductImport - describe ResetAbsent do + RSpec.describe ResetAbsent do let(:entry_processor) { instance_double(EntryProcessor) } let(:reset_absent) do diff --git a/spec/models/product_import/settings_spec.rb b/spec/models/product_import/settings_spec.rb index ab383b89a2..1eaa119543 100644 --- a/spec/models/product_import/settings_spec.rb +++ b/spec/models/product_import/settings_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ProductImport::Settings do +RSpec.describe ProductImport::Settings do let(:settings) { described_class.new(import_settings) } describe '#defaults' do diff --git a/spec/models/product_importer_spec.rb b/spec/models/product_importer_spec.rb index ff6470d782..39b6508575 100644 --- a/spec/models/product_importer_spec.rb +++ b/spec/models/product_importer_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'open_food_network/permissions' -describe ProductImport::ProductImporter do +RSpec.describe ProductImport::ProductImporter do let!(:admin) { create(:admin_user) } let!(:user) { create(:user) } let!(:user2) { create(:user) } diff --git a/spec/models/proxy_order_spec.rb b/spec/models/proxy_order_spec.rb index 0061284d5b..7fe6b76620 100644 --- a/spec/models/proxy_order_spec.rb +++ b/spec/models/proxy_order_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ProxyOrder, type: :model do +RSpec.describe ProxyOrder, type: :model do describe "cancel" do let(:order_cycle) { create(:simple_order_cycle) } let(:subscription) { create(:subscription) } diff --git a/spec/models/report_blob_spec.rb b/spec/models/report_blob_spec.rb index 7df91b4344..764925ba11 100644 --- a/spec/models/report_blob_spec.rb +++ b/spec/models/report_blob_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ReportBlob, type: :model do +RSpec.describe ReportBlob, type: :model do it "preserves UTF-8 content" do content = "This works. ✓" diff --git a/spec/models/spree/ability_spec.rb b/spec/models/spree/ability_spec.rb index b787e64a87..9ff691368e 100644 --- a/spec/models/spree/ability_spec.rb +++ b/spec/models/spree/ability_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' require 'cancan/matchers' require 'support/ability_helpers' -describe Spree::Ability do +RSpec.describe Spree::Ability do let(:user) { create(:user) } let(:subject) { Spree::Ability.new(user) } let(:token) { nil } diff --git a/spec/models/spree/address_spec.rb b/spec/models/spree/address_spec.rb index c0b4f17234..712a4ad6ed 100644 --- a/spec/models/spree/address_spec.rb +++ b/spec/models/spree/address_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Address do +RSpec.describe Spree::Address do describe "clone" do it "creates a copy of the address with the exception of the id, " \ "updated_at and created_at attributes" do diff --git a/spec/models/spree/addresses_spec.rb b/spec/models/spree/addresses_spec.rb index 1b76aa51ce..e2aa0ea9e6 100644 --- a/spec/models/spree/addresses_spec.rb +++ b/spec/models/spree/addresses_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Address do +RSpec.describe Spree::Address do let(:address) { build(:address) } let(:enterprise_address) { build(:address, enterprise: build(:enterprise)) } diff --git a/spec/models/spree/adjustment_spec.rb b/spec/models/spree/adjustment_spec.rb index f3e08d06fe..9682d045ee 100644 --- a/spec/models/spree/adjustment_spec.rb +++ b/spec/models/spree/adjustment_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Spree - describe Adjustment do + RSpec.describe Adjustment do let(:order) { build(:order) } let(:adjustment) { Spree::Adjustment.create(label: "Adjustment", amount: 5) } diff --git a/spec/models/spree/app_configuration_spec.rb b/spec/models/spree/app_configuration_spec.rb index 607dc8501b..9a0843fb30 100644 --- a/spec/models/spree/app_configuration_spec.rb +++ b/spec/models/spree/app_configuration_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::AppConfiguration do +RSpec.describe Spree::AppConfiguration do let(:prefs) { Rails.application.config.spree.preferences } it "should be available from the environment" do diff --git a/spec/models/spree/asset_spec.rb b/spec/models/spree/asset_spec.rb index d8567c4d74..2268537256 100644 --- a/spec/models/spree/asset_spec.rb +++ b/spec/models/spree/asset_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Asset do +RSpec.describe Spree::Asset do describe "#viewable" do it "touches association" do product = create(:product) diff --git a/spec/models/spree/calculator_spec.rb b/spec/models/spree/calculator_spec.rb index a2e8daf912..85d6c4a908 100644 --- a/spec/models/spree/calculator_spec.rb +++ b/spec/models/spree/calculator_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Spree - describe Calculator do + RSpec.describe Calculator do let(:calculator) { Spree::Calculator.new } let!(:enterprise) { create(:enterprise) } let!(:order) { create(:order) } diff --git a/spec/models/spree/credit_card_spec.rb b/spec/models/spree/credit_card_spec.rb index 1a0468ec28..749bdea460 100644 --- a/spec/models/spree/credit_card_spec.rb +++ b/spec/models/spree/credit_card_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Spree - describe CreditCard do + RSpec.describe CreditCard do let(:valid_credit_card_attributes) { { number: '4111111111111111', diff --git a/spec/models/spree/gateway/stripe_sca_spec.rb b/spec/models/spree/gateway/stripe_sca_spec.rb index f3191c09d4..1b9c28863e 100644 --- a/spec/models/spree/gateway/stripe_sca_spec.rb +++ b/spec/models/spree/gateway/stripe_sca_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Gateway::StripeSCA, :vcr, :stripe_version, type: :model do +RSpec.describe Spree::Gateway::StripeSCA, :vcr, :stripe_version, type: :model do let(:order) { create(:order_ready_for_payment) } let(:year_valid) { Time.zone.now.year.next } diff --git a/spec/models/spree/gateway_spec.rb b/spec/models/spree/gateway_spec.rb index 9bf43378f4..23b0b97d96 100644 --- a/spec/models/spree/gateway_spec.rb +++ b/spec/models/spree/gateway_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Gateway do +RSpec.describe Spree::Gateway do let(:test_gateway) do Class.new(Spree::Gateway) do def provider_class diff --git a/spec/models/spree/gateway_tagging_spec.rb b/spec/models/spree/gateway_tagging_spec.rb index 410ef1ec35..6ba82372e3 100644 --- a/spec/models/spree/gateway_tagging_spec.rb +++ b/spec/models/spree/gateway_tagging_spec.rb @@ -8,7 +8,7 @@ require "spec_helper" # # This spec tests several descendants for their taggability. The tests are in # a separate file, because they cover one aspect of several classes. -shared_examples "taggable" do |expected_taggable_type| +RSpec.shared_examples "taggable" do |expected_taggable_type| it "provides a tag list" do expect(subject.tag_list).to eq [] end @@ -22,7 +22,7 @@ shared_examples "taggable" do |expected_taggable_type| end module Spree - describe "PaymentMethod and descendants" do + RSpec.describe "PaymentMethod and descendants" do let(:shop) { create(:enterprise) } let(:valid_subject) do # Supply required parameters so that it can be saved to attach taggings. diff --git a/spec/models/spree/image_spec.rb b/spec/models/spree/image_spec.rb index 3b80fb686c..115c20b526 100644 --- a/spec/models/spree/image_spec.rb +++ b/spec/models/spree/image_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Spree - describe Image do + RSpec.describe Image do include FileHelper subject { diff --git a/spec/models/spree/inventory_unit_spec.rb b/spec/models/spree/inventory_unit_spec.rb index 964e57c4c4..e4743b652e 100644 --- a/spec/models/spree/inventory_unit_spec.rb +++ b/spec/models/spree/inventory_unit_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::InventoryUnit do +RSpec.describe Spree::InventoryUnit do let(:stock_location) { create(:stock_location_with_items) } let(:stock_item) { stock_location.stock_items.order(:id).first } diff --git a/spec/models/spree/line_item_spec.rb b/spec/models/spree/line_item_spec.rb index fbc6f753c5..ec596cec40 100644 --- a/spec/models/spree/line_item_spec.rb +++ b/spec/models/spree/line_item_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Spree - describe LineItem do + RSpec.describe LineItem do let(:order) { create :order_with_line_items, line_items_count: 1 } let(:line_item) { order.line_items.first } @@ -803,7 +803,7 @@ module Spree end end - describe "searching with ransack" do + RSpec.describe "searching with ransack" do let(:order_cycle1) { create(:order_cycle) } let(:order_cycle2) { create(:order_cycle) } let(:product1) { create(:product, supplier: create(:supplier_enterprise)) } diff --git a/spec/models/spree/order/address_spec.rb b/spec/models/spree/order/address_spec.rb index 78ad56a0ef..d85110c43b 100644 --- a/spec/models/spree/order/address_spec.rb +++ b/spec/models/spree/order/address_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Order do +RSpec.describe Spree::Order do let(:order) { Spree::Order.new } context 'validation' do diff --git a/spec/models/spree/order/adjustments_spec.rb b/spec/models/spree/order/adjustments_spec.rb index 4c2daf5ade..a204822061 100644 --- a/spec/models/spree/order/adjustments_spec.rb +++ b/spec/models/spree/order/adjustments_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Order do +RSpec.describe Spree::Order do let(:order) { Spree::Order.new } context "totaling adjustments" do diff --git a/spec/models/spree/order/callbacks_spec.rb b/spec/models/spree/order/callbacks_spec.rb index ed5b4c2c35..9918b93157 100644 --- a/spec/models/spree/order/callbacks_spec.rb +++ b/spec/models/spree/order/callbacks_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Order do +RSpec.describe Spree::Order do let(:order) { build(:order) } before do Spree::Order.define_state_machine! diff --git a/spec/models/spree/order/checkout_spec.rb b/spec/models/spree/order/checkout_spec.rb index a8686917b2..1925b1ac15 100644 --- a/spec/models/spree/order/checkout_spec.rb +++ b/spec/models/spree/order/checkout_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Order::Checkout do +RSpec.describe Spree::Order::Checkout do let(:order) { Spree::Order.new } context "with default state machine" do diff --git a/spec/models/spree/order/payment_spec.rb b/spec/models/spree/order/payment_spec.rb index 2eb15a022c..2e3af6e953 100644 --- a/spec/models/spree/order/payment_spec.rb +++ b/spec/models/spree/order/payment_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Spree - describe Spree::Order do + RSpec.describe Spree::Order do before { Stripe.api_key = "sk_test_12345" } let(:order) { build(:order) } let(:updater) { OrderManagement::Order::Updater.new(order) } diff --git a/spec/models/spree/order/state_machine_spec.rb b/spec/models/spree/order/state_machine_spec.rb index 25eea3e212..69908b781e 100644 --- a/spec/models/spree/order/state_machine_spec.rb +++ b/spec/models/spree/order/state_machine_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Order do +RSpec.describe Spree::Order do let(:order) { Spree::Order.new } before do # Ensure state machine has been re-defined correctly diff --git a/spec/models/spree/order/tax_spec.rb b/spec/models/spree/order/tax_spec.rb index 1e1bb80f7c..39cae12848 100644 --- a/spec/models/spree/order/tax_spec.rb +++ b/spec/models/spree/order/tax_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Spree - describe Spree::Order do + RSpec.describe Spree::Order do let(:order) { build(:order) } context "#tax_zone" do diff --git a/spec/models/spree/order_contents_spec.rb b/spec/models/spree/order_contents_spec.rb index 4355a4f8a7..b31d685ea3 100644 --- a/spec/models/spree/order_contents_spec.rb +++ b/spec/models/spree/order_contents_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::OrderContents do +RSpec.describe Spree::OrderContents do let!(:order) { create(:order) } let!(:variant) { create(:variant) } subject { described_class.new(order) } diff --git a/spec/models/spree/order_inventory_spec.rb b/spec/models/spree/order_inventory_spec.rb index b363fa62bb..0aa07585f5 100644 --- a/spec/models/spree/order_inventory_spec.rb +++ b/spec/models/spree/order_inventory_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::OrderInventory do +RSpec.describe Spree::OrderInventory do let(:order) { create :completed_order_with_totals } let(:line_item) { order.line_items.first } subject { described_class.new(order) } diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb index 9d21351f42..ec49b695cd 100644 --- a/spec/models/spree/order_spec.rb +++ b/spec/models/spree/order_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Order do +RSpec.describe Spree::Order do let(:user) { build(:user, email: "spree@example.com") } let(:order) { build(:order, user:) } diff --git a/spec/models/spree/payment_method_spec.rb b/spec/models/spree/payment_method_spec.rb index 634ed0d672..877164f8b4 100644 --- a/spec/models/spree/payment_method_spec.rb +++ b/spec/models/spree/payment_method_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' class Spree::Gateway::Test < Spree::Gateway end -describe Spree::PaymentMethod do +RSpec.describe Spree::PaymentMethod do describe ".managed_by scope" do subject! { create(:payment_method) } let(:owner) { subject.distributors.first.owner } diff --git a/spec/models/spree/payment_spec.rb b/spec/models/spree/payment_spec.rb index 26edb058ad..be09f52539 100644 --- a/spec/models/spree/payment_spec.rb +++ b/spec/models/spree/payment_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Payment do +RSpec.describe Spree::Payment do context 'original specs from Spree' do before { Stripe.api_key = "sk_test_12345" } let(:order) { create(:order) } diff --git a/spec/models/spree/preference_spec.rb b/spec/models/spree/preference_spec.rb index b70cf1bc1a..636c1d15c9 100644 --- a/spec/models/spree/preference_spec.rb +++ b/spec/models/spree/preference_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Preference do +RSpec.describe Spree::Preference do it "should require a key" do @preference = Spree::Preference.new @preference.key = :test diff --git a/spec/models/spree/preferences/configuration_spec.rb b/spec/models/spree/preferences/configuration_spec.rb index fc4b51a709..a309883dcd 100644 --- a/spec/models/spree/preferences/configuration_spec.rb +++ b/spec/models/spree/preferences/configuration_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Preferences::Configuration do +RSpec.describe Spree::Preferences::Configuration do let(:config) do Class.new(Spree::Preferences::Configuration) do preference :color, :string, default: :blue diff --git a/spec/models/spree/preferences/preferable_spec.rb b/spec/models/spree/preferences/preferable_spec.rb index 4cf412c392..465b4f858e 100644 --- a/spec/models/spree/preferences/preferable_spec.rb +++ b/spec/models/spree/preferences/preferable_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Preferences::Preferable do +RSpec.describe Spree::Preferences::Preferable do a_class = A = Class.new do include Spree::Preferences::Preferable diff --git a/spec/models/spree/preferences/store_spec.rb b/spec/models/spree/preferences/store_spec.rb index 7d5995e97a..d8d2b4d1ec 100644 --- a/spec/models/spree/preferences/store_spec.rb +++ b/spec/models/spree/preferences/store_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Preferences::Store do +RSpec.describe Spree::Preferences::Store do before :each do @store = Spree::Preferences::StoreInstance.new end diff --git a/spec/models/spree/price_spec.rb b/spec/models/spree/price_spec.rb index d0fd0ad44f..441a7a185b 100644 --- a/spec/models/spree/price_spec.rb +++ b/spec/models/spree/price_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Spree - describe Price do + RSpec.describe Price do let(:variant) { create(:variant) } let(:price) { variant.default_price } diff --git a/spec/models/spree/product_property_spec.rb b/spec/models/spree/product_property_spec.rb index c99820f815..1af2043ac0 100644 --- a/spec/models/spree/product_property_spec.rb +++ b/spec/models/spree/product_property_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::ProductProperty do +RSpec.describe Spree::ProductProperty do context "validations" do it "should validate length of value" do pp = create(:product_property) diff --git a/spec/models/spree/product_spec.rb b/spec/models/spree/product_spec.rb index 7efd2da024..15667125c3 100644 --- a/spec/models/spree/product_spec.rb +++ b/spec/models/spree/product_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' require 'spree/core/product_duplicator' module Spree - describe Product do + RSpec.describe Product do context 'product instance' do let(:product) { create(:product) } @@ -750,7 +750,7 @@ module Spree end end - describe "product import" do + RSpec.describe "product import" do describe "finding the most recent import date of the variants" do let!(:product) { create(:product) } diff --git a/spec/models/spree/return_authorization_spec.rb b/spec/models/spree/return_authorization_spec.rb index 68249cedc3..2d0c0df31c 100644 --- a/spec/models/spree/return_authorization_spec.rb +++ b/spec/models/spree/return_authorization_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::ReturnAuthorization do +RSpec.describe Spree::ReturnAuthorization do let(:order) { create(:shipped_order) } let(:variant) { order.shipments.first.inventory_units.first.variant } let(:return_authorization) { Spree::ReturnAuthorization.new(order:) } diff --git a/spec/models/spree/shipment_spec.rb b/spec/models/spree/shipment_spec.rb index fc2b31b272..4b4f70318c 100644 --- a/spec/models/spree/shipment_spec.rb +++ b/spec/models/spree/shipment_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'benchmark' -describe Spree::Shipment do +RSpec.describe Spree::Shipment do let(:order) { build(:order) } let(:shipping_method) { build(:shipping_method, name: "UPS") } let(:shipment) do diff --git a/spec/models/spree/shipping_method_spec.rb b/spec/models/spree/shipping_method_spec.rb index 839367c8d1..0a89467611 100644 --- a/spec/models/spree/shipping_method_spec.rb +++ b/spec/models/spree/shipping_method_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Spree - describe ShippingMethod do + RSpec.describe ShippingMethod do it "is valid when built from factory" do expect( build( diff --git a/spec/models/spree/shipping_rate_spec.rb b/spec/models/spree/shipping_rate_spec.rb index 5090d285e9..3343355edf 100644 --- a/spec/models/spree/shipping_rate_spec.rb +++ b/spec/models/spree/shipping_rate_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::ShippingRate do +RSpec.describe Spree::ShippingRate do let(:shipment) { create(:shipment) } let(:shipping_method) { build_stubbed(:shipping_method) } let(:shipping_rate) { diff --git a/spec/models/spree/state_spec.rb b/spec/models/spree/state_spec.rb index 47a3b8552d..efe83bc41e 100644 --- a/spec/models/spree/state_spec.rb +++ b/spec/models/spree/state_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::State do +RSpec.describe Spree::State do before(:all) do Spree::State.destroy_all end diff --git a/spec/models/spree/stock/availability_validator_spec.rb b/spec/models/spree/stock/availability_validator_spec.rb index d7e39ed175..91a7f0a2fe 100644 --- a/spec/models/spree/stock/availability_validator_spec.rb +++ b/spec/models/spree/stock/availability_validator_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module Spree module Stock - describe AvailabilityValidator do + RSpec.describe AvailabilityValidator do let(:validator) { AvailabilityValidator.new({}) } context "line item without existing inventory units" do diff --git a/spec/models/spree/stock/quantifier_spec.rb b/spec/models/spree/stock/quantifier_spec.rb index 2a06f74344..d697a668d8 100644 --- a/spec/models/spree/stock/quantifier_spec.rb +++ b/spec/models/spree/stock/quantifier_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module Spree module Stock - describe Quantifier do + RSpec.describe Quantifier do let(:quantifier) { Spree::Stock::Quantifier.new(variant) } let(:variant) { create(:variant, on_hand: 99) } diff --git a/spec/models/spree/stock_location_spec.rb b/spec/models/spree/stock_location_spec.rb index 86996b40b4..1efad18c9b 100644 --- a/spec/models/spree/stock_location_spec.rb +++ b/spec/models/spree/stock_location_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Spree - describe StockLocation do + RSpec.describe StockLocation do subject { create(:stock_location_with_items, backorderable_default: true) } let(:stock_item) { subject.stock_items.order(:id).first } let(:variant) { stock_item.variant } diff --git a/spec/models/spree/stock_movement_spec.rb b/spec/models/spree/stock_movement_spec.rb index 251ed56e5c..19ff09341c 100644 --- a/spec/models/spree/stock_movement_spec.rb +++ b/spec/models/spree/stock_movement_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::StockMovement do +RSpec.describe Spree::StockMovement do let(:stock_location) { create(:stock_location_with_items) } let(:stock_item) { stock_location.stock_items.order(:id).first } subject { build(:stock_movement, stock_item:) } diff --git a/spec/models/spree/tax_category_spec.rb b/spec/models/spree/tax_category_spec.rb index 77e9a02501..ce86c94017 100644 --- a/spec/models/spree/tax_category_spec.rb +++ b/spec/models/spree/tax_category_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::TaxCategory do +RSpec.describe Spree::TaxCategory do context 'default tax category' do let(:tax_category) { create(:tax_category) } let(:new_tax_category) { create(:tax_category) } diff --git a/spec/models/spree/tax_rate_spec.rb b/spec/models/spree/tax_rate_spec.rb index 5437ab2182..9d58cd024b 100644 --- a/spec/models/spree/tax_rate_spec.rb +++ b/spec/models/spree/tax_rate_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Spree - describe TaxRate do + RSpec.describe TaxRate do describe "#match" do let!(:zone) { create(:zone_with_member) } let!(:order) { create(:order, distributor: hub, bill_address: create(:address)) } diff --git a/spec/models/spree/taxon_spec.rb b/spec/models/spree/taxon_spec.rb index 7f481413df..34bdda4395 100644 --- a/spec/models/spree/taxon_spec.rb +++ b/spec/models/spree/taxon_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Spree - describe Taxon do + RSpec.describe Taxon do let(:taxon) { Spree::Taxon.new(name: "Ruby on Rails") } let(:e) { create(:supplier_enterprise) } diff --git a/spec/models/spree/taxonomy_spec.rb b/spec/models/spree/taxonomy_spec.rb index 2ead3dcc0e..1ace138313 100644 --- a/spec/models/spree/taxonomy_spec.rb +++ b/spec/models/spree/taxonomy_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Taxonomy do +RSpec.describe Spree::Taxonomy do context "#destroy" do before do @taxonomy = create(:taxonomy) diff --git a/spec/models/spree/user_spec.rb b/spec/models/spree/user_spec.rb index 368792f8ed..c53b8d7845 100644 --- a/spec/models/spree/user_spec.rb +++ b/spec/models/spree/user_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::User do +RSpec.describe Spree::User do describe "associations" do it { is_expected.to have_many(:owned_enterprises) } it { is_expected.to have_many(:webhook_endpoints).dependent(:destroy) } diff --git a/spec/models/spree/variant_spec.rb b/spec/models/spree/variant_spec.rb index 1771e860a1..832cb6d931 100644 --- a/spec/models/spree/variant_spec.rb +++ b/spec/models/spree/variant_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'spree/localized_number' -describe Spree::Variant do +RSpec.describe Spree::Variant do subject(:variant) { build(:variant) } it { is_expected.to have_many :semantic_links } diff --git a/spec/models/spree/zone_spec.rb b/spec/models/spree/zone_spec.rb index ce28024caf..9be11552ad 100644 --- a/spec/models/spree/zone_spec.rb +++ b/spec/models/spree/zone_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Spree::Zone do +RSpec.describe Spree::Zone do context "#match" do let(:country_zone) { create(:zone, name: 'CountryZone') } let(:country) do diff --git a/spec/models/stripe_account_spec.rb b/spec/models/stripe_account_spec.rb index 1de1df4b50..9614344eb1 100644 --- a/spec/models/stripe_account_spec.rb +++ b/spec/models/stripe_account_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'stripe/oauth' -describe StripeAccount do +RSpec.describe StripeAccount do describe "deauthorize_and_destroy", :vcr, :stripe_version do let!(:enterprise) { create(:enterprise) } let!(:enterprise2) { create(:enterprise) } diff --git a/spec/models/subscription_line_item_spec.rb b/spec/models/subscription_line_item_spec.rb index bc31544cbc..7aef546a5d 100644 --- a/spec/models/subscription_line_item_spec.rb +++ b/spec/models/subscription_line_item_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe SubscriptionLineItem, model: true do +RSpec.describe SubscriptionLineItem, model: true do describe "validations" do it "requires a subscription" do expect(subject).to validate_presence_of :subscription diff --git a/spec/models/subscription_spec.rb b/spec/models/subscription_spec.rb index 29e2d0c22e..b4e3eee043 100644 --- a/spec/models/subscription_spec.rb +++ b/spec/models/subscription_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Subscription, type: :model do +RSpec.describe Subscription, type: :model do describe "associations" do it { expect(subject).to belong_to(:shop).optional } it { expect(subject).to belong_to(:customer).optional } diff --git a/spec/models/tag_rule/filter_order_cycles_spec.rb b/spec/models/tag_rule/filter_order_cycles_spec.rb index 661b18b8af..c5fbbfe12a 100644 --- a/spec/models/tag_rule/filter_order_cycles_spec.rb +++ b/spec/models/tag_rule/filter_order_cycles_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe TagRule::FilterOrderCycles, type: :model do +RSpec.describe TagRule::FilterOrderCycles, type: :model do let!(:tag_rule) { build_stubbed(:filter_order_cycles_tag_rule) } describe "determining whether tags match for a given exchange" do diff --git a/spec/models/tag_rule/filter_payment_methods_spec.rb b/spec/models/tag_rule/filter_payment_methods_spec.rb index 59d39aaacf..c7d88ad4ed 100644 --- a/spec/models/tag_rule/filter_payment_methods_spec.rb +++ b/spec/models/tag_rule/filter_payment_methods_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe TagRule::FilterPaymentMethods, type: :model do +RSpec.describe TagRule::FilterPaymentMethods, type: :model do let!(:tag_rule) { build_stubbed(:filter_payment_methods_tag_rule) } describe "determining whether tags match for a given payment method" do diff --git a/spec/models/tag_rule/filter_products_spec.rb b/spec/models/tag_rule/filter_products_spec.rb index f0a8bcc31b..ae844564c3 100644 --- a/spec/models/tag_rule/filter_products_spec.rb +++ b/spec/models/tag_rule/filter_products_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe TagRule::FilterProducts, type: :model do +RSpec.describe TagRule::FilterProducts, type: :model do let!(:tag_rule) { build_stubbed(:filter_products_tag_rule) } describe "determining whether tags match for a given variant" do diff --git a/spec/models/tag_rule/filter_shipping_methods_spec.rb b/spec/models/tag_rule/filter_shipping_methods_spec.rb index 3a6b410b60..7276059b8e 100644 --- a/spec/models/tag_rule/filter_shipping_methods_spec.rb +++ b/spec/models/tag_rule/filter_shipping_methods_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe TagRule::FilterShippingMethods, type: :model do +RSpec.describe TagRule::FilterShippingMethods, type: :model do let!(:tag_rule) { build_stubbed(:filter_shipping_methods_tag_rule) } describe "determining whether tags match for a given shipping method" do diff --git a/spec/models/tag_rule_spec.rb b/spec/models/tag_rule_spec.rb index 86eed9d14b..16e2c78ff8 100644 --- a/spec/models/tag_rule_spec.rb +++ b/spec/models/tag_rule_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe TagRule, type: :model do +RSpec.describe TagRule, type: :model do describe "validations" do it "requires a enterprise" do expect(subject).to validate_presence_of(:enterprise) diff --git a/spec/models/terms_of_service_file_spec.rb b/spec/models/terms_of_service_file_spec.rb index 19d9fb183d..f25c0adf2a 100644 --- a/spec/models/terms_of_service_file_spec.rb +++ b/spec/models/terms_of_service_file_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe TermsOfServiceFile do +RSpec.describe TermsOfServiceFile do include FileHelper let(:upload) { terms_pdf_file } diff --git a/spec/models/variant_override_spec.rb b/spec/models/variant_override_spec.rb index 2da715f80a..15c9a1f4bf 100644 --- a/spec/models/variant_override_spec.rb +++ b/spec/models/variant_override_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe VariantOverride do +RSpec.describe VariantOverride do let(:variant) { create(:variant) } let(:hub) { create(:distributor_enterprise) } diff --git a/spec/models/voucher_spec.rb b/spec/models/voucher_spec.rb index aef0db2194..6af5c6b5bd 100644 --- a/spec/models/voucher_spec.rb +++ b/spec/models/voucher_spec.rb @@ -7,7 +7,7 @@ module Vouchers class TestVoucher < Voucher; end end -describe Voucher do +RSpec.describe Voucher do let(:enterprise) { build(:enterprise) } describe 'associations' do diff --git a/spec/models/vouchers/flat_rate_spec.rb b/spec/models/vouchers/flat_rate_spec.rb index 419a103534..9294784746 100644 --- a/spec/models/vouchers/flat_rate_spec.rb +++ b/spec/models/vouchers/flat_rate_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Vouchers::FlatRate do +RSpec.describe Vouchers::FlatRate do describe 'validations' do subject { build(:voucher_flat_rate) } diff --git a/spec/models/vouchers/percentage_rate_spec.rb b/spec/models/vouchers/percentage_rate_spec.rb index e2e136bd14..b172baf016 100644 --- a/spec/models/vouchers/percentage_rate_spec.rb +++ b/spec/models/vouchers/percentage_rate_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Vouchers::PercentageRate do +RSpec.describe Vouchers::PercentageRate do describe 'validations' do subject { build(:voucher_percentage_rate) } diff --git a/spec/models/webhook_endpoint_spec.rb b/spec/models/webhook_endpoint_spec.rb index 5f1d630f09..0150037a3f 100644 --- a/spec/models/webhook_endpoint_spec.rb +++ b/spec/models/webhook_endpoint_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe WebhookEndpoint, type: :model do +RSpec.describe WebhookEndpoint, type: :model do describe "validations" do it { is_expected.to validate_presence_of(:url) } end diff --git a/spec/queries/batch_taggable_tags_query_spec.rb b/spec/queries/batch_taggable_tags_query_spec.rb index 2bb63926ea..991ce00258 100644 --- a/spec/queries/batch_taggable_tags_query_spec.rb +++ b/spec/queries/batch_taggable_tags_query_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe BatchTaggableTagsQuery do +RSpec.describe BatchTaggableTagsQuery do it "fetches tags for multiple models in one query" do customer_i = create(:customer, tag_list: "member,volunteer") customer_ii = create(:customer, tag_list: "member") diff --git a/spec/queries/complete_orders_with_balance_query_spec.rb b/spec/queries/complete_orders_with_balance_query_spec.rb index 0f7e856865..1f788669e1 100644 --- a/spec/queries/complete_orders_with_balance_query_spec.rb +++ b/spec/queries/complete_orders_with_balance_query_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe CompleteOrdersWithBalanceQuery do +RSpec.describe CompleteOrdersWithBalanceQuery do subject(:result) { described_class.new(user).call } describe '#call' do diff --git a/spec/queries/complete_visible_orders_query_spec.rb b/spec/queries/complete_visible_orders_query_spec.rb index af7d54872f..a39de73bdf 100644 --- a/spec/queries/complete_visible_orders_query_spec.rb +++ b/spec/queries/complete_visible_orders_query_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe CompleteVisibleOrdersQuery do +RSpec.describe CompleteVisibleOrdersQuery do subject(:result) { described_class.new(order_permissions).call } let(:filter_canceled) { false } diff --git a/spec/queries/customers_with_balance_query_spec.rb b/spec/queries/customers_with_balance_query_spec.rb index 47811e21ce..a71adb7479 100644 --- a/spec/queries/customers_with_balance_query_spec.rb +++ b/spec/queries/customers_with_balance_query_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe CustomersWithBalanceQuery do +RSpec.describe CustomersWithBalanceQuery do subject(:result) { described_class.new(Customer.where(id: customers)).call } describe '#call' do diff --git a/spec/queries/outstanding_balance_query_spec.rb b/spec/queries/outstanding_balance_query_spec.rb index 77e9acb307..a79b209da0 100644 --- a/spec/queries/outstanding_balance_query_spec.rb +++ b/spec/queries/outstanding_balance_query_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe OutstandingBalanceQuery do +RSpec.describe OutstandingBalanceQuery do subject(:query) { described_class.new(relation) } let(:result) { query.call } diff --git a/spec/queries/payments_requiring_action_query_spec.rb b/spec/queries/payments_requiring_action_query_spec.rb index 4101a181ca..d18a861802 100644 --- a/spec/queries/payments_requiring_action_query_spec.rb +++ b/spec/queries/payments_requiring_action_query_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe PaymentsRequiringActionQuery do +RSpec.describe PaymentsRequiringActionQuery do subject(:result) { described_class.new(user).call } let(:user) { create(:user) } diff --git a/spec/queries/product_scope_query_spec.rb b/spec/queries/product_scope_query_spec.rb index 9674a201f5..197ec23aad 100755 --- a/spec/queries/product_scope_query_spec.rb +++ b/spec/queries/product_scope_query_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ProductScopeQuery do +RSpec.describe ProductScopeQuery do let!(:taxon) { create(:taxon) } let(:supplier) { create(:supplier_enterprise) } let(:supplier2) { create(:supplier_enterprise) } diff --git a/spec/reflexes/products_reflex_spec.rb b/spec/reflexes/products_reflex_spec.rb index 97bf617161..7f71e8e26d 100644 --- a/spec/reflexes/products_reflex_spec.rb +++ b/spec/reflexes/products_reflex_spec.rb @@ -2,7 +2,7 @@ require "reflex_helper" -describe ProductsReflex, type: :reflex, feature: :admin_style_v3 do +RSpec.describe ProductsReflex, type: :reflex, feature: :admin_style_v3 do let(:current_user) { create(:admin_user) } # todo: set up an enterprise user to test permissions let(:context) { { url: admin_products_url, connection: { current_user: } } diff --git a/spec/reflexes/user_reflex_spec.rb b/spec/reflexes/user_reflex_spec.rb index 815557208f..36fba0c599 100644 --- a/spec/reflexes/user_reflex_spec.rb +++ b/spec/reflexes/user_reflex_spec.rb @@ -2,7 +2,7 @@ require "reflex_helper" -describe UserReflex, type: :reflex do +RSpec.describe UserReflex, type: :reflex do let(:current_user) { create(:user) } let(:context) { { url: spree.admin_dashboard_url, connection: { current_user: } } } diff --git a/spec/requests/admin/images_spec.rb b/spec/requests/admin/images_spec.rb index 11d3659482..e7c9584037 100644 --- a/spec/requests/admin/images_spec.rb +++ b/spec/requests/admin/images_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "/admin/products/:product_id/images", type: :request do +RSpec.describe "/admin/products/:product_id/images", type: :request do include AuthenticationHelper let!(:product) { create(:product) } diff --git a/spec/requests/admin/product_import_spec.rb b/spec/requests/admin/product_import_spec.rb index 3075457f40..b3c968748d 100644 --- a/spec/requests/admin/product_import_spec.rb +++ b/spec/requests/admin/product_import_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe "Product Import", type: :request do +RSpec.describe "Product Import", type: :request do include AuthenticationHelper describe "validate_data" do diff --git a/spec/requests/admin/vouchers_spec.rb b/spec/requests/admin/vouchers_spec.rb index fdb9213d3e..64c16ef7ff 100644 --- a/spec/requests/admin/vouchers_spec.rb +++ b/spec/requests/admin/vouchers_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "/admin/enterprises/:enterprise_id/vouchers", type: :request do +RSpec.describe "/admin/enterprises/:enterprise_id/vouchers", type: :request do let(:enterprise) { create(:supplier_enterprise, name: "Feedme") } let(:enterprise_user) { create(:user, enterprise_limit: 1) } diff --git a/spec/requests/api/orders_spec.rb b/spec/requests/api/orders_spec.rb index 20ea82c530..433be2681b 100644 --- a/spec/requests/api/orders_spec.rb +++ b/spec/requests/api/orders_spec.rb @@ -2,7 +2,7 @@ require 'swagger_helper' -describe 'api/v0/orders', swagger_doc: 'v0.yaml', type: :request do +RSpec.describe 'api/v0/orders', swagger_doc: 'v0.yaml', type: :request do path '/api/v0/orders' do get('list orders') do tags 'Orders' diff --git a/spec/requests/api/routes_spec.rb b/spec/requests/api/routes_spec.rb index fa7d1b20bc..d3ab40d792 100644 --- a/spec/requests/api/routes_spec.rb +++ b/spec/requests/api/routes_spec.rb @@ -3,7 +3,7 @@ # test a single endpoint to make sure the redirects are working as intended. require 'spec_helper' -describe 'Orders Cycles endpoint', type: :request do +RSpec.describe 'Orders Cycles endpoint', type: :request do let(:distributor) { create(:distributor_enterprise) } let(:order_cycle) { create(:order_cycle, distributors: [distributor]) } diff --git a/spec/requests/api/v1/customers_spec.rb b/spec/requests/api/v1/customers_spec.rb index 1ca08263fe..1259e99e03 100644 --- a/spec/requests/api/v1/customers_spec.rb +++ b/spec/requests/api/v1/customers_spec.rb @@ -2,7 +2,7 @@ require "swagger_helper" -describe "Customers", type: :request, swagger_doc: "v1.yaml", feature: :api_v1 do +RSpec.describe "Customers", type: :request, swagger_doc: "v1.yaml", feature: :api_v1 do let!(:enterprise1) { create(:enterprise, name: "The Farm") } let!(:enterprise2) { create(:enterprise) } let!(:enterprise3) { create(:enterprise) } diff --git a/spec/requests/api_docs_spec.rb b/spec/requests/api_docs_spec.rb index 8b5ce15933..f2d8fb5ab6 100644 --- a/spec/requests/api_docs_spec.rb +++ b/spec/requests/api_docs_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe "API documentation", type: :request do +RSpec.describe "API documentation", type: :request do it "shows the OFN API v1" do get rswag_ui_path expect(response).to redirect_to "/api-docs/index.html" diff --git a/spec/requests/checkout/failed_checkout_spec.rb b/spec/requests/checkout/failed_checkout_spec.rb index fdde8cb297..f7a767f630 100644 --- a/spec/requests/checkout/failed_checkout_spec.rb +++ b/spec/requests/checkout/failed_checkout_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe "checking out an order that initially fails", type: :request do +RSpec.describe "checking out an order that initially fails", type: :request do include ShopWorkflow let!(:shop) { create(:enterprise) } diff --git a/spec/requests/checkout/paypal_spec.rb b/spec/requests/checkout/paypal_spec.rb index 5fd39d621a..a32562835e 100644 --- a/spec/requests/checkout/paypal_spec.rb +++ b/spec/requests/checkout/paypal_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe "checking out an order with a paypal express payment method", type: :request do +RSpec.describe "checking out an order with a paypal express payment method", type: :request do include ShopWorkflow include PaypalHelper diff --git a/spec/requests/checkout/routes_spec.rb b/spec/requests/checkout/routes_spec.rb index 0f1b518b8d..55fe054662 100644 --- a/spec/requests/checkout/routes_spec.rb +++ b/spec/requests/checkout/routes_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe 'checkout endpoints', type: :request do +RSpec.describe 'checkout endpoints', type: :request do include ShopWorkflow let!(:shop) { create(:enterprise) } diff --git a/spec/requests/checkout/stripe_sca_spec.rb b/spec/requests/checkout/stripe_sca_spec.rb index 8c5c48a363..5640c49146 100644 --- a/spec/requests/checkout/stripe_sca_spec.rb +++ b/spec/requests/checkout/stripe_sca_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe "checking out an order with a Stripe SCA payment method", type: :request do +RSpec.describe "checking out an order with a Stripe SCA payment method", type: :request do include ShopWorkflow include AuthenticationHelper include OpenFoodNetwork::ApiHelper diff --git a/spec/requests/home_controller_spec.rb b/spec/requests/home_controller_spec.rb index 9400fedcd9..3453d30932 100644 --- a/spec/requests/home_controller_spec.rb +++ b/spec/requests/home_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe HomeController, type: :request do +RSpec.describe HomeController, type: :request do context "#unauthorized" do it "renders the unauthorized template" do get "/unauthorized" diff --git a/spec/requests/omniauth_callbacks_controller_spec.rb b/spec/requests/omniauth_callbacks_controller_spec.rb index 0bf3147ea2..aef5ef69d6 100644 --- a/spec/requests/omniauth_callbacks_controller_spec.rb +++ b/spec/requests/omniauth_callbacks_controller_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' # Devise calls OmniauthCallbacksController for OpenID Connect callbacks. -describe '/user/spree_user/auth/openid_connect/callback', type: :request do +RSpec.describe '/user/spree_user/auth/openid_connect/callback', type: :request do include AuthenticationHelper let(:user) { create(:user) } diff --git a/spec/requests/payments_controller_spec.rb b/spec/requests/payments_controller_spec.rb index 5201b53b86..9aab1272eb 100644 --- a/spec/requests/payments_controller_spec.rb +++ b/spec/requests/payments_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe "/payments/:id/authorize" do +RSpec.describe "/payments/:id/authorize" do let!(:user) { create(:user) } let!(:order) { create(:order, user:) } let!(:payment) { create(:payment, order:) } diff --git a/spec/requests/spree/admin/overview_spec.rb b/spec/requests/spree/admin/overview_spec.rb index 4fc00f5563..4d5739f88c 100644 --- a/spec/requests/spree/admin/overview_spec.rb +++ b/spec/requests/spree/admin/overview_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "/admin", type: :request do +RSpec.describe "/admin", type: :request do let(:enterprise) { create(:supplier_enterprise, name: "Feedme") } let(:enterprise_user) { create(:user, enterprise_limit: 1) } diff --git a/spec/requests/spree/admin/payments_spec.rb b/spec/requests/spree/admin/payments_spec.rb index c8ff325554..18a2a4f75c 100644 --- a/spec/requests/spree/admin/payments_spec.rb +++ b/spec/requests/spree/admin/payments_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Spree::Admin::PaymentsController, type: :request do +RSpec.describe Spree::Admin::PaymentsController, type: :request do let(:user) { order.user } let(:order) { create(:completed_order_with_fees) } diff --git a/spec/requests/voucher_adjustments_spec.rb b/spec/requests/voucher_adjustments_spec.rb index 56af4db442..78ae9c29d5 100644 --- a/spec/requests/voucher_adjustments_spec.rb +++ b/spec/requests/voucher_adjustments_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe VoucherAdjustmentsController, type: :request do +RSpec.describe VoucherAdjustmentsController, type: :request do let(:user) { order.user } let(:address) { create(:address) } let(:distributor) { create(:distributor_enterprise, with_payment_and_shipping: true) } diff --git a/spec/routing/stripe_spec.rb b/spec/routing/stripe_spec.rb index b4f5c4b7d7..f9b0403233 100644 --- a/spec/routing/stripe_spec.rb +++ b/spec/routing/stripe_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "routing for Stripe return URLS", type: :routing do +RSpec.describe "routing for Stripe return URLS", type: :routing do context "checkout return URLs" do it "routes /checkout to checkout#edit" do expect(get: "checkout"). diff --git a/spec/serializers/api/admin/customer_serializer_spec.rb b/spec/serializers/api/admin/customer_serializer_spec.rb index ff241857af..999c8015f1 100644 --- a/spec/serializers/api/admin/customer_serializer_spec.rb +++ b/spec/serializers/api/admin/customer_serializer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::Admin::CustomerSerializer do +RSpec.describe Api::Admin::CustomerSerializer do let(:tag_list) { ["one", "two", "three"] } let(:customer) { create(:customer, tag_list:) } let!(:tag_rule) { diff --git a/spec/serializers/api/admin/customer_with_balance_serializer_spec.rb b/spec/serializers/api/admin/customer_with_balance_serializer_spec.rb index 5c0c3f1df5..53e9c4490b 100644 --- a/spec/serializers/api/admin/customer_with_balance_serializer_spec.rb +++ b/spec/serializers/api/admin/customer_with_balance_serializer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::Admin::CustomerWithBalanceSerializer do +RSpec.describe Api::Admin::CustomerWithBalanceSerializer do let(:serialized_customer) { described_class.new(customer) } describe '#balance' do diff --git a/spec/serializers/api/admin/enterprise_serializer_spec.rb b/spec/serializers/api/admin/enterprise_serializer_spec.rb index 7c588bee1c..3f20145771 100644 --- a/spec/serializers/api/admin/enterprise_serializer_spec.rb +++ b/spec/serializers/api/admin/enterprise_serializer_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Api::Admin::EnterpriseSerializer do +RSpec.describe Api::Admin::EnterpriseSerializer do include FileHelper let(:enterprise) { create(:distributor_enterprise) } diff --git a/spec/serializers/api/admin/exchange_serializer_spec.rb b/spec/serializers/api/admin/exchange_serializer_spec.rb index 5f12b44cd5..05915d7823 100644 --- a/spec/serializers/api/admin/exchange_serializer_spec.rb +++ b/spec/serializers/api/admin/exchange_serializer_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'open_food_network/order_cycle_permissions' -describe Api::Admin::ExchangeSerializer do +RSpec.describe Api::Admin::ExchangeSerializer do let(:v1) { create(:variant) } let(:v2) { create(:variant) } let(:v3) { create(:variant) } diff --git a/spec/serializers/api/admin/for_order_cycle/supplied_product_serializer_spec.rb b/spec/serializers/api/admin/for_order_cycle/supplied_product_serializer_spec.rb index f37eb83f09..8cd6cd560d 100644 --- a/spec/serializers/api/admin/for_order_cycle/supplied_product_serializer_spec.rb +++ b/spec/serializers/api/admin/for_order_cycle/supplied_product_serializer_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Api::Admin::ForOrderCycle::SuppliedProductSerializer do +RSpec.describe Api::Admin::ForOrderCycle::SuppliedProductSerializer do let(:coordinator) { create(:distributor_enterprise) } let(:order_cycle) { double(:order_cycle, coordinator:) } let!(:product) { create(:simple_product) } diff --git a/spec/serializers/api/admin/index_enterprise_serializer_spec.rb b/spec/serializers/api/admin/index_enterprise_serializer_spec.rb index e16a66a235..810fbf951b 100644 --- a/spec/serializers/api/admin/index_enterprise_serializer_spec.rb +++ b/spec/serializers/api/admin/index_enterprise_serializer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::Admin::IndexEnterpriseSerializer do +RSpec.describe Api::Admin::IndexEnterpriseSerializer do let(:enterprise) { create(:distributor_enterprise) } context "when spree_current_user is a manager" do let(:user) { create(:user) } diff --git a/spec/serializers/api/admin/order_cycle_serializer_spec.rb b/spec/serializers/api/admin/order_cycle_serializer_spec.rb index e04e362dc1..b05bf9816e 100644 --- a/spec/serializers/api/admin/order_cycle_serializer_spec.rb +++ b/spec/serializers/api/admin/order_cycle_serializer_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Api::Admin::OrderCycleSerializer do +RSpec.describe Api::Admin::OrderCycleSerializer do let(:order_cycle) { create(:order_cycle) } let(:serializer) { Api::Admin::OrderCycleSerializer.new order_cycle, diff --git a/spec/serializers/api/admin/order_serializer_spec.rb b/spec/serializers/api/admin/order_serializer_spec.rb index f1f16665c5..580a5ae2b1 100644 --- a/spec/serializers/api/admin/order_serializer_spec.rb +++ b/spec/serializers/api/admin/order_serializer_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Api::Admin::OrderSerializer do +RSpec.describe Api::Admin::OrderSerializer do let(:serializer) { described_class.new order } let(:order) { build(:order) } diff --git a/spec/serializers/api/admin/product_serializer_spec.rb b/spec/serializers/api/admin/product_serializer_spec.rb index 7e42a78197..d2c0f25577 100644 --- a/spec/serializers/api/admin/product_serializer_spec.rb +++ b/spec/serializers/api/admin/product_serializer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::Admin::ProductSerializer do +RSpec.describe Api::Admin::ProductSerializer do let(:product) { create(:simple_product) } let(:serializer) { described_class.new(product) } diff --git a/spec/serializers/api/admin/subscription_customer_serializer_spec.rb b/spec/serializers/api/admin/subscription_customer_serializer_spec.rb index ef25c845c0..fd1927c4ef 100644 --- a/spec/serializers/api/admin/subscription_customer_serializer_spec.rb +++ b/spec/serializers/api/admin/subscription_customer_serializer_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'open_food_network/address_finder' -describe Api::Admin::SubscriptionCustomerSerializer do +RSpec.describe Api::Admin::SubscriptionCustomerSerializer do let(:address) { build(:address) } let(:customer) { build(:customer) } let(:serializer) { Api::Admin::SubscriptionCustomerSerializer.new(customer) } diff --git a/spec/serializers/api/admin/subscription_line_item_serializer_spec.rb b/spec/serializers/api/admin/subscription_line_item_serializer_spec.rb index 9b1ca21818..79acfced05 100644 --- a/spec/serializers/api/admin/subscription_line_item_serializer_spec.rb +++ b/spec/serializers/api/admin/subscription_line_item_serializer_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' module Api module Admin - describe SubscriptionLineItemSerializer do + RSpec.describe SubscriptionLineItemSerializer do let(:subscription_line_item) { create(:subscription_line_item) } it "serializes a subscription line item with the product name" do diff --git a/spec/serializers/api/admin/variant_override_serializer_spec.rb b/spec/serializers/api/admin/variant_override_serializer_spec.rb index e282ea0175..9cc1799ee1 100644 --- a/spec/serializers/api/admin/variant_override_serializer_spec.rb +++ b/spec/serializers/api/admin/variant_override_serializer_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -describe Api::Admin::VariantOverrideSerializer do +RSpec.describe Api::Admin::VariantOverrideSerializer do let(:variant) { create(:variant) } let(:hub) { create(:distributor_enterprise) } let(:price) { 77.77 } diff --git a/spec/serializers/api/admin/variant_serializer_spec.rb b/spec/serializers/api/admin/variant_serializer_spec.rb index 957930bad8..7c496d721d 100644 --- a/spec/serializers/api/admin/variant_serializer_spec.rb +++ b/spec/serializers/api/admin/variant_serializer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::Admin::VariantSerializer do +RSpec.describe Api::Admin::VariantSerializer do let(:variant) { create(:variant) } it "serializes the variant name" do diff --git a/spec/serializers/api/cached_enterprise_serializer_spec.rb b/spec/serializers/api/cached_enterprise_serializer_spec.rb index 9517b31a80..584d365e73 100644 --- a/spec/serializers/api/cached_enterprise_serializer_spec.rb +++ b/spec/serializers/api/cached_enterprise_serializer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::CachedEnterpriseSerializer do +RSpec.describe Api::CachedEnterpriseSerializer do let(:cached_enterprise_serializer) { described_class.new(enterprise) } let(:enterprise) { create(:enterprise) } diff --git a/spec/serializers/api/credit_card_serializer_spec.rb b/spec/serializers/api/credit_card_serializer_spec.rb index c8b2e3c3c1..f23160d9cf 100644 --- a/spec/serializers/api/credit_card_serializer_spec.rb +++ b/spec/serializers/api/credit_card_serializer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::CreditCardSerializer do +RSpec.describe Api::CreditCardSerializer do let(:card) { create(:credit_card) } let(:serializer) { Api::CreditCardSerializer.new card } diff --git a/spec/serializers/api/current_order_serializer_spec.rb b/spec/serializers/api/current_order_serializer_spec.rb index 6317477a0f..255885c330 100644 --- a/spec/serializers/api/current_order_serializer_spec.rb +++ b/spec/serializers/api/current_order_serializer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::CurrentOrderSerializer do +RSpec.describe Api::CurrentOrderSerializer do let(:distributor) { build(:distributor_enterprise) } let(:order_cycle) { build(:simple_order_cycle) } let(:line_item) { build(:line_item, variant: create(:variant)) } diff --git a/spec/serializers/api/enterprise_serializer_spec.rb b/spec/serializers/api/enterprise_serializer_spec.rb index 970c8f63d3..0eb7d47abd 100644 --- a/spec/serializers/api/enterprise_serializer_spec.rb +++ b/spec/serializers/api/enterprise_serializer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::EnterpriseSerializer do +RSpec.describe Api::EnterpriseSerializer do let(:serializer) { Api::EnterpriseSerializer.new enterprise, data: } let(:enterprise) { create(:distributor_enterprise, is_primary_producer: true) } let(:taxon) { create(:taxon) } diff --git a/spec/serializers/api/enterprise_shopfront_list_serializer_spec.rb b/spec/serializers/api/enterprise_shopfront_list_serializer_spec.rb index 964c52e295..47462ccbed 100644 --- a/spec/serializers/api/enterprise_shopfront_list_serializer_spec.rb +++ b/spec/serializers/api/enterprise_shopfront_list_serializer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::EnterpriseShopfrontListSerializer do +RSpec.describe Api::EnterpriseShopfrontListSerializer do let(:enterprise) { create(:distributor_enterprise) } let(:serializer) { Api::EnterpriseShopfrontListSerializer.new enterprise diff --git a/spec/serializers/api/enterprise_shopfront_serializer_spec.rb b/spec/serializers/api/enterprise_shopfront_serializer_spec.rb index 8d85719483..766995c793 100644 --- a/spec/serializers/api/enterprise_shopfront_serializer_spec.rb +++ b/spec/serializers/api/enterprise_shopfront_serializer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::EnterpriseShopfrontSerializer do +RSpec.describe Api::EnterpriseShopfrontSerializer do let!(:hub) { create(:distributor_enterprise, with_payment_and_shipping: true) } let!(:producer) { create(:supplier_enterprise) } let!(:producer_hidden) { create(:supplier_enterprise_hidden) } diff --git a/spec/serializers/api/group_list_serializer_spec.rb b/spec/serializers/api/group_list_serializer_spec.rb index 69f10a6360..5dff7def23 100644 --- a/spec/serializers/api/group_list_serializer_spec.rb +++ b/spec/serializers/api/group_list_serializer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::GroupListSerializer do +RSpec.describe Api::GroupListSerializer do let!(:group) { create(:enterprise_group) } let!(:producer) { create(:supplier_enterprise) } diff --git a/spec/serializers/api/order_cycle_serializer_spec.rb b/spec/serializers/api/order_cycle_serializer_spec.rb index 5b0a199d11..af316624d7 100644 --- a/spec/serializers/api/order_cycle_serializer_spec.rb +++ b/spec/serializers/api/order_cycle_serializer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::OrderCycleSerializer do +RSpec.describe Api::OrderCycleSerializer do let(:order_cycle) { create(:simple_order_cycle) } let(:serializer) { Api::OrderCycleSerializer.new(order_cycle).to_json } diff --git a/spec/serializers/api/order_serializer_spec.rb b/spec/serializers/api/order_serializer_spec.rb index 521c3fa4f7..dde0126514 100644 --- a/spec/serializers/api/order_serializer_spec.rb +++ b/spec/serializers/api/order_serializer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::OrderSerializer do +RSpec.describe Api::OrderSerializer do let(:serializer) { Api::OrderSerializer.new order } let(:order) { create(:completed_order_with_totals) } diff --git a/spec/serializers/api/product_serializer_spec.rb b/spec/serializers/api/product_serializer_spec.rb index d44e964665..af0b1f3bf4 100644 --- a/spec/serializers/api/product_serializer_spec.rb +++ b/spec/serializers/api/product_serializer_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'open_food_network/enterprise_fee_calculator' -describe Api::ProductSerializer do +RSpec.describe Api::ProductSerializer do include ShopWorkflow let!(:distributor) { create(:distributor_enterprise) } diff --git a/spec/serializers/api/shipping_method_serializer_spec.rb b/spec/serializers/api/shipping_method_serializer_spec.rb index e112f97310..a24665052e 100644 --- a/spec/serializers/api/shipping_method_serializer_spec.rb +++ b/spec/serializers/api/shipping_method_serializer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::ShippingMethodSerializer do +RSpec.describe Api::ShippingMethodSerializer do let(:shipping_method) { create(:shipping_method) } it "serializes a test shipping_method" do diff --git a/spec/serializers/api/variant_serializer_spec.rb b/spec/serializers/api/variant_serializer_spec.rb index e4d2cfae3d..b8e50edad7 100644 --- a/spec/serializers/api/variant_serializer_spec.rb +++ b/spec/serializers/api/variant_serializer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Api::VariantSerializer do +RSpec.describe Api::VariantSerializer do subject { Api::VariantSerializer.new variant } let(:variant) { create(:variant) } diff --git a/spec/services/address_geocoder_spec.rb b/spec/services/address_geocoder_spec.rb index 1215c95e1b..5865275521 100644 --- a/spec/services/address_geocoder_spec.rb +++ b/spec/services/address_geocoder_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe AddressGeocoder do +RSpec.describe AddressGeocoder do let(:australia) { Spree::Country.find_or_create_by!(name: "Australia") } let(:victoria) { Spree::State.find_or_create_by(name: "Victoria", country: australia) } let(:address) do diff --git a/spec/services/cache_service_spec.rb b/spec/services/cache_service_spec.rb index c82a1aeaf2..526f211bfd 100644 --- a/spec/services/cache_service_spec.rb +++ b/spec/services/cache_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe CacheService do +RSpec.describe CacheService do let(:rails_cache) { Rails.cache } describe "#cache" do diff --git a/spec/services/cap_quantity_spec.rb b/spec/services/cap_quantity_spec.rb index 754a10f1c1..3f97f117dc 100644 --- a/spec/services/cap_quantity_spec.rb +++ b/spec/services/cap_quantity_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe CapQuantity do +RSpec.describe CapQuantity do describe "checking that line items are available to purchase" do let(:order_cycle) { create(:simple_order_cycle) } let(:shop) { order_cycle.coordinator } diff --git a/spec/services/cart_service_spec.rb b/spec/services/cart_service_spec.rb index ea5b1dc731..13b70a2bd7 100644 --- a/spec/services/cart_service_spec.rb +++ b/spec/services/cart_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe CartService do +RSpec.describe CartService do let(:order) { double(:order, id: 123) } let(:currency) { "EUR" } let(:params) { {} } diff --git a/spec/services/checkout/payment_method_fetcher_spec.rb b/spec/services/checkout/payment_method_fetcher_spec.rb index 9f0c23aa89..b3f941b0e4 100644 --- a/spec/services/checkout/payment_method_fetcher_spec.rb +++ b/spec/services/checkout/payment_method_fetcher_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Checkout::PaymentMethodFetcher do +RSpec.describe Checkout::PaymentMethodFetcher do let!(:order) { create(:completed_order_with_totals) } let(:payment1) { build(:payment, order:) } let(:payment2) { build(:payment, order:) } diff --git a/spec/services/checkout/post_checkout_actions_spec.rb b/spec/services/checkout/post_checkout_actions_spec.rb index 765b84e541..30b4936eaa 100644 --- a/spec/services/checkout/post_checkout_actions_spec.rb +++ b/spec/services/checkout/post_checkout_actions_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Checkout::PostCheckoutActions do +RSpec.describe Checkout::PostCheckoutActions do let(:order) { create(:order_with_distributor) } let(:postCheckoutActions) { Checkout::PostCheckoutActions.new(order) } diff --git a/spec/services/checkout/stripe_redirect_spec.rb b/spec/services/checkout/stripe_redirect_spec.rb index a2d547e886..9798958994 100644 --- a/spec/services/checkout/stripe_redirect_spec.rb +++ b/spec/services/checkout/stripe_redirect_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Checkout::StripeRedirect do +RSpec.describe Checkout::StripeRedirect do describe '#path' do let(:order) { create(:order) } let(:service) { Checkout::StripeRedirect.new(payment_method, order) } diff --git a/spec/services/content_sanitizer_spec.rb b/spec/services/content_sanitizer_spec.rb index 1773c5c9fb..63b6a15478 100644 --- a/spec/services/content_sanitizer_spec.rb +++ b/spec/services/content_sanitizer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ContentSanitizer do +RSpec.describe ContentSanitizer do let(:service) { described_class.new } context "#strip_content" do diff --git a/spec/services/default_shipping_category_spec.rb b/spec/services/default_shipping_category_spec.rb index c2032715df..12d8488181 100644 --- a/spec/services/default_shipping_category_spec.rb +++ b/spec/services/default_shipping_category_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe DefaultShippingCategory do +RSpec.describe DefaultShippingCategory do describe '.create!' do it "names the location 'Default'" do shipping_category = described_class.create! diff --git a/spec/services/default_stock_location_spec.rb b/spec/services/default_stock_location_spec.rb index d73ef912cf..93b0a053f7 100644 --- a/spec/services/default_stock_location_spec.rb +++ b/spec/services/default_stock_location_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe DefaultStockLocation do +RSpec.describe DefaultStockLocation do describe '.find_or_create' do context 'when a location named default already exists' do let!(:location) do diff --git a/spec/services/embedded_page_service_spec.rb b/spec/services/embedded_page_service_spec.rb index 54102f4321..6f201f625b 100644 --- a/spec/services/embedded_page_service_spec.rb +++ b/spec/services/embedded_page_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe EmbeddedPageService do +RSpec.describe EmbeddedPageService do let(:enterprise_slug) { 'test-enterprise' } let(:params) { { controller: 'enterprises', action: 'shop', id: enterprise_slug, embedded_shopfront: true } diff --git a/spec/services/exchange_products_renderer_spec.rb b/spec/services/exchange_products_renderer_spec.rb index 2c7863c013..df0e482edc 100644 --- a/spec/services/exchange_products_renderer_spec.rb +++ b/spec/services/exchange_products_renderer_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe ExchangeProductsRenderer do +RSpec.describe ExchangeProductsRenderer do let(:order_cycle) { create(:order_cycle) } let(:coordinator) { order_cycle.coordinator } let(:renderer) { described_class.new(order_cycle, coordinator.owner) } diff --git a/spec/services/exchange_variant_bulk_updater_spec.rb b/spec/services/exchange_variant_bulk_updater_spec.rb index ebe6a408fe..880f097548 100644 --- a/spec/services/exchange_variant_bulk_updater_spec.rb +++ b/spec/services/exchange_variant_bulk_updater_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ExchangeVariantBulkUpdater do +RSpec.describe ExchangeVariantBulkUpdater do let!(:first_variant) { create(:variant) } let!(:second_variant) { create(:variant) } let!(:third_variant) { create(:variant) } diff --git a/spec/services/file_path_sanitizer_spec.rb b/spec/services/file_path_sanitizer_spec.rb index 4a47c2c1b2..9dd4fc1581 100644 --- a/spec/services/file_path_sanitizer_spec.rb +++ b/spec/services/file_path_sanitizer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe FilePathSanitizer do +RSpec.describe FilePathSanitizer do let(:folder_path){ '/tmp/product_import123' } let(:file_path) { "#{folder_path}/import.csv" } diff --git a/spec/services/image_importer_spec.rb b/spec/services/image_importer_spec.rb index b00796b25a..df526750ca 100644 --- a/spec/services/image_importer_spec.rb +++ b/spec/services/image_importer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ImageImporter do +RSpec.describe ImageImporter do let(:url) { Rails.root.join("spec/fixtures/files/logo.png").to_s } let(:product) { create(:product) } diff --git a/spec/services/invoice_data_generator_spec.rb b/spec/services/invoice_data_generator_spec.rb index 1099482a9f..917b3557a8 100644 --- a/spec/services/invoice_data_generator_spec.rb +++ b/spec/services/invoice_data_generator_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe InvoiceDataGenerator do +RSpec.describe InvoiceDataGenerator do describe '#generate' do let!(:order) { create(:completed_order_with_fees) } let!(:invoice_data_generator){ InvoiceDataGenerator.new(order) } diff --git a/spec/services/invoice_renderer_spec.rb b/spec/services/invoice_renderer_spec.rb index cbad391a0f..e732aa3b5d 100644 --- a/spec/services/invoice_renderer_spec.rb +++ b/spec/services/invoice_renderer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe InvoiceRenderer do +RSpec.describe InvoiceRenderer do include Spree::PaymentMethodsHelper let(:service) { described_class.new } diff --git a/spec/services/mail_configuration_spec.rb b/spec/services/mail_configuration_spec.rb index f0f10a9c4b..c4b6b7068d 100644 --- a/spec/services/mail_configuration_spec.rb +++ b/spec/services/mail_configuration_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe MailConfiguration do +RSpec.describe MailConfiguration do describe 'apply!' do before do allow(Spree::Core::MailSettings).to receive(:init) { true } diff --git a/spec/services/order_cycles/clone_service_spec.rb b/spec/services/order_cycles/clone_service_spec.rb index 32525a5b73..a3b8b4d16f 100644 --- a/spec/services/order_cycles/clone_service_spec.rb +++ b/spec/services/order_cycles/clone_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe OrderCycles::CloneService do +RSpec.describe OrderCycles::CloneService do describe "#create" do it "clones the order cycle" do coordinator = create(:enterprise); diff --git a/spec/services/order_cycles/distributed_products_service_spec.rb b/spec/services/order_cycles/distributed_products_service_spec.rb index 76a41be2d7..4427c48494 100644 --- a/spec/services/order_cycles/distributed_products_service_spec.rb +++ b/spec/services/order_cycles/distributed_products_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe OrderCycles::DistributedProductsService do +RSpec.describe OrderCycles::DistributedProductsService do describe "#products_relation" do let(:distributor) { create(:distributor_enterprise) } let(:product) { create(:product) } diff --git a/spec/services/order_cycles/distributed_variants_service_spec.rb b/spec/services/order_cycles/distributed_variants_service_spec.rb index 6c5bde8aa1..d0abcf08f7 100644 --- a/spec/services/order_cycles/distributed_variants_service_spec.rb +++ b/spec/services/order_cycles/distributed_variants_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe OrderCycles::DistributedVariantsService do +RSpec.describe OrderCycles::DistributedVariantsService do let(:order) { double(:order) } let(:distributor) { double(:distributor) } let(:order_cycle) { double(:order_cycle) } diff --git a/spec/services/order_cycles/form_service_spec.rb b/spec/services/order_cycles/form_service_spec.rb index 3f39ad5439..ca8c5e1b18 100644 --- a/spec/services/order_cycles/form_service_spec.rb +++ b/spec/services/order_cycles/form_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe OrderCycles::FormService do +RSpec.describe OrderCycles::FormService do describe "save" do describe "creating a new order cycle from params" do let(:shop) { create(:enterprise) } diff --git a/spec/services/order_cycles/warning_service_spec.rb b/spec/services/order_cycles/warning_service_spec.rb index 1cb7e0bb9f..aad80e8721 100644 --- a/spec/services/order_cycles/warning_service_spec.rb +++ b/spec/services/order_cycles/warning_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe OrderCycles::WarningService do +RSpec.describe OrderCycles::WarningService do let(:user) { create(:user) } let(:subject) { OrderCycles::WarningService } let!(:distributor) { create(:enterprise, owner: user) } diff --git a/spec/services/order_cycles/webhook_service_spec.rb b/spec/services/order_cycles/webhook_service_spec.rb index 060607b8f9..bdc77bb151 100644 --- a/spec/services/order_cycles/webhook_service_spec.rb +++ b/spec/services/order_cycles/webhook_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe OrderCycles::WebhookService do +RSpec.describe OrderCycles::WebhookService do let(:order_cycle) { create( :simple_order_cycle, diff --git a/spec/services/orders/available_payment_methods_service_spec.rb b/spec/services/orders/available_payment_methods_service_spec.rb index b31d3af5f6..fc442f3748 100644 --- a/spec/services/orders/available_payment_methods_service_spec.rb +++ b/spec/services/orders/available_payment_methods_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Orders::AvailablePaymentMethodsService do +RSpec.describe Orders::AvailablePaymentMethodsService do context "when the order has no current_distributor" do it "returns an empty array" do order_cycle = create(:sells_own_order_cycle) diff --git a/spec/services/orders/available_shipping_methods_service_spec.rb b/spec/services/orders/available_shipping_methods_service_spec.rb index 9ee26ca804..639ff8d0df 100644 --- a/spec/services/orders/available_shipping_methods_service_spec.rb +++ b/spec/services/orders/available_shipping_methods_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Orders::AvailableShippingMethodsService do +RSpec.describe Orders::AvailableShippingMethodsService do context "when the order has no current_distributor" do it "returns an empty array" do order_cycle = create(:sells_own_order_cycle) diff --git a/spec/services/orders/cart_reset_service_spec.rb b/spec/services/orders/cart_reset_service_spec.rb index 05e2ea4387..3c4b01048d 100644 --- a/spec/services/orders/cart_reset_service_spec.rb +++ b/spec/services/orders/cart_reset_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Orders::CartResetService do +RSpec.describe Orders::CartResetService do let(:distributor) { create(:distributor_enterprise) } let(:order) { create(:order, :with_line_item, distributor:) } diff --git a/spec/services/orders/checkout_restart_service_spec.rb b/spec/services/orders/checkout_restart_service_spec.rb index 414838e31b..3ebc3284b4 100644 --- a/spec/services/orders/checkout_restart_service_spec.rb +++ b/spec/services/orders/checkout_restart_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Orders::CheckoutRestartService do +RSpec.describe Orders::CheckoutRestartService do let(:order) { create(:order_with_distributor) } describe "#call" do diff --git a/spec/services/orders/compare_invoice_service_spec.rb b/spec/services/orders/compare_invoice_service_spec.rb index 932e5b54b6..19ad37422a 100644 --- a/spec/services/orders/compare_invoice_service_spec.rb +++ b/spec/services/orders/compare_invoice_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -shared_examples "attribute changes - payment total" do |boolean, type| +RSpec.shared_examples "attribute changes - payment total" do |boolean, type| before do Spree::Order.where(id: order.id).update_all(payment_total: order.payment_total + 10) end @@ -13,7 +13,7 @@ shared_examples "attribute changes - payment total" do |boolean, type| end end -shared_examples "attribute changes - order total" do |boolean, type| +RSpec.shared_examples "attribute changes - order total" do |boolean, type| before do Spree::Order.where(id: order.id).update_all(total: order.total + 10) end @@ -24,7 +24,7 @@ shared_examples "attribute changes - order total" do |boolean, type| end end -shared_examples "attribute changes - order state: cancelled" do |boolean, type| +RSpec.shared_examples "attribute changes - order state: cancelled" do |boolean, type| before do order.cancel! end @@ -35,7 +35,7 @@ shared_examples "attribute changes - order state: cancelled" do |boolean, type| end end -shared_examples "attribute changes - tax total changes" do |boolean, type, included_boolean| +RSpec.shared_examples "attribute changes - tax total changes" do |boolean, type, included_boolean| let(:order) do create(:order_with_taxes, product_price: 110, tax_rate_amount: 0.1, included_in_price: included_boolean) @@ -58,7 +58,7 @@ shared_examples "attribute changes - tax total changes" do |boolean, type, inclu end end -shared_examples "attribute changes - shipping method" do |boolean, type| +RSpec.shared_examples "attribute changes - shipping method" do |boolean, type| let(:shipping_method) { create(:shipping_method) } before do @@ -71,13 +71,13 @@ shared_examples "attribute changes - shipping method" do |boolean, type| end end -shared_examples "no attribute changes" do +RSpec.shared_examples "no attribute changes" do it "returns false if no attribute has changed" do expect(subject).to be false end end -shared_examples "attribute changes - special insctructions" do |boolean, type| +RSpec.shared_examples "attribute changes - special insctructions" do |boolean, type| before do order.update!(special_instructions: "A very special insctruction.") end @@ -86,7 +86,7 @@ shared_examples "attribute changes - special insctructions" do |boolean, type| end end -shared_examples "attribute changes - note" do |boolean, type| +RSpec.shared_examples "attribute changes - note" do |boolean, type| before do order.update!(note: "THIS IS A NEW NOTE") end @@ -95,7 +95,8 @@ shared_examples "attribute changes - note" do |boolean, type| end end -shared_examples "associated attribute changes - adjustments (create/delete)" do |boolean, type| +RSpec.shared_examples "associated attribute changes - adjustments (create/delete)" do + |boolean, type| context "creating an adjustment" do before { order.adjustments << create(:adjustment, order:) } it "returns #{boolean} if a #{type} attribute changes" do @@ -111,7 +112,7 @@ shared_examples "associated attribute changes - adjustments (create/delete)" do end end -shared_examples "associated attribute changes - adjustments (edit amount)" do |boolean, type| +RSpec.shared_examples "associated attribute changes - adjustments (edit amount)" do |boolean, type| context "with an existing adjustments" do context "editing the amount" do before { order.all_adjustments.first.update!(amount: 123) } @@ -122,7 +123,7 @@ shared_examples "associated attribute changes - adjustments (edit amount)" do |b end end -shared_examples "associated attribute changes - adjustments (edit label)" do |boolean, type| +RSpec.shared_examples "associated attribute changes - adjustments (edit label)" do |boolean, type| context "adjustment changes" do context "editing the label" do before { order.all_adjustments.first.update!(label: "It's a new label") } @@ -133,7 +134,7 @@ shared_examples "associated attribute changes - adjustments (edit label)" do |bo end end -shared_examples "associated attribute changes - line items" do |boolean, type| +RSpec.shared_examples "associated attribute changes - line items" do |boolean, type| context "line item changes" do let(:line_item){ order.line_items.first } context "on quantitity" do @@ -154,7 +155,7 @@ shared_examples "associated attribute changes - line items" do |boolean, type| end end -shared_examples "associated attribute changes - bill address" do |boolean, type| +RSpec.shared_examples "associated attribute changes - bill address" do |boolean, type| context "bill address - a #{type}" do let(:bill_address) { Spree::Address.where(id: order.bill_address_id) } it "first name" do @@ -207,7 +208,7 @@ shared_examples "associated attribute changes - bill address" do |boolean, type| end end -shared_examples "associated attribute changes - ship address" do |boolean, type| +RSpec.shared_examples "associated attribute changes - ship address" do |boolean, type| context "ship address - a #{type}" do let(:ship_address) { Spree::Address.where(id: order.ship_address_id) } it "first name" do @@ -260,7 +261,7 @@ shared_examples "associated attribute changes - ship address" do |boolean, type| end end -shared_examples "associated attribute changes - payments" do |boolean, type| +RSpec.shared_examples "associated attribute changes - payments" do |boolean, type| context "payment changes on" do let(:payment) { create(:payment, order_id: order.id) } context "amount" do @@ -284,7 +285,7 @@ shared_examples "associated attribute changes - payments" do |boolean, type| end end -shared_examples "attribute changes - payment state" do |boolean, type| +RSpec.shared_examples "attribute changes - payment state" do |boolean, type| let(:payment) { order.payments.first } context "payment changes on" do context "state" do @@ -299,7 +300,7 @@ shared_examples "attribute changes - payment state" do |boolean, type| end end -describe Orders::CompareInvoiceService do +RSpec.describe Orders::CompareInvoiceService do let!(:invoice){ create(:invoice, order:, diff --git a/spec/services/orders/customer_cancellation_service_spec.rb b/spec/services/orders/customer_cancellation_service_spec.rb index 624ea08fd3..a7b3e7aad8 100644 --- a/spec/services/orders/customer_cancellation_service_spec.rb +++ b/spec/services/orders/customer_cancellation_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Orders::CustomerCancellationService do +RSpec.describe Orders::CustomerCancellationService do let(:mail_mock) { double(:mailer_mock, deliver_later: true) } before do allow(Spree::OrderMailer).to receive(:cancel_email_for_shop) { mail_mock } diff --git a/spec/services/orders/factory_service_spec.rb b/spec/services/orders/factory_service_spec.rb index 26c8ec2564..aee3bea3cb 100644 --- a/spec/services/orders/factory_service_spec.rb +++ b/spec/services/orders/factory_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Orders::FactoryService do +RSpec.describe Orders::FactoryService do let(:variant1) { create(:variant, price: 5.0) } let(:variant2) { create(:variant, price: 7.0) } let(:user) { create(:user) } diff --git a/spec/services/orders/find_payment_service_spec.rb b/spec/services/orders/find_payment_service_spec.rb index 0777d5ed2c..1e898f7e53 100644 --- a/spec/services/orders/find_payment_service_spec.rb +++ b/spec/services/orders/find_payment_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Orders::FindPaymentService do +RSpec.describe Orders::FindPaymentService do let(:order) { create(:order_with_distributor) } let(:finder) { Orders::FindPaymentService.new(order) } diff --git a/spec/services/orders/generate_invoice_service_spec.rb b/spec/services/orders/generate_invoice_service_spec.rb index 50fb5350d5..a396a26897 100644 --- a/spec/services/orders/generate_invoice_service_spec.rb +++ b/spec/services/orders/generate_invoice_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Orders::GenerateInvoiceService do +RSpec.describe Orders::GenerateInvoiceService do let!(:order) { create(:completed_order_with_fees) } let!(:invoice_data_generator){ InvoiceDataGenerator.new(order) } let!(:latest_invoice){ diff --git a/spec/services/orders/handle_fees_service_spec.rb b/spec/services/orders/handle_fees_service_spec.rb index 6b92683331..f31ce21ce2 100644 --- a/spec/services/orders/handle_fees_service_spec.rb +++ b/spec/services/orders/handle_fees_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Orders::HandleFeesService do +RSpec.describe Orders::HandleFeesService do let(:order_cycle) { create(:order_cycle) } let(:order) { create(:order_with_line_items, line_items_count: 1, order_cycle:) } let(:line_item) { order.line_items.first } diff --git a/spec/services/orders/mask_data_service_spec.rb b/spec/services/orders/mask_data_service_spec.rb index f23141922c..aed4ba48a8 100644 --- a/spec/services/orders/mask_data_service_spec.rb +++ b/spec/services/orders/mask_data_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Orders::MaskDataService do +RSpec.describe Orders::MaskDataService do describe '#call' do let(:distributor) { create(:enterprise) } let(:order) { create(:order, distributor:, ship_address: create(:address)) } diff --git a/spec/services/orders/order_tax_adjustments_fetcher_spec.rb b/spec/services/orders/order_tax_adjustments_fetcher_spec.rb index f45280c27a..af19dd22f8 100644 --- a/spec/services/orders/order_tax_adjustments_fetcher_spec.rb +++ b/spec/services/orders/order_tax_adjustments_fetcher_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Orders::FetchTaxAdjustmentsService do +RSpec.describe Orders::FetchTaxAdjustmentsService do describe "#totals" do let(:zone) { create(:zone_with_member) } let(:coordinator) { create(:distributor_enterprise, charges_sales_tax: true) } diff --git a/spec/services/orders/sync_service_spec.rb b/spec/services/orders/sync_service_spec.rb index f45a009a9c..9dd6eb968d 100644 --- a/spec/services/orders/sync_service_spec.rb +++ b/spec/services/orders/sync_service_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Orders::SyncService do +RSpec.describe Orders::SyncService do describe "updating the shipping method" do let!(:subscription) { create(:subscription, with_items: true, with_proxy_orders: true) } let!(:order) { subscription.proxy_orders.first.initialise_order! } diff --git a/spec/services/orders/workflow_service_spec.rb b/spec/services/orders/workflow_service_spec.rb index 08e48fa0cd..d1db9ff3c3 100644 --- a/spec/services/orders/workflow_service_spec.rb +++ b/spec/services/orders/workflow_service_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe Orders::WorkflowService do +RSpec.describe Orders::WorkflowService do let!(:distributor) { create(:distributor_enterprise) } let!(:order) do create(:order_with_totals_and_distribution, distributor:, diff --git a/spec/services/path_checker_spec.rb b/spec/services/path_checker_spec.rb index e0a4160e18..2ce16c19b5 100644 --- a/spec/services/path_checker_spec.rb +++ b/spec/services/path_checker_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe PathChecker do +RSpec.describe PathChecker do describe "#active_path?" do let(:view_context) { double("view context") } diff --git a/spec/services/paypal_items_builder_spec.rb b/spec/services/paypal_items_builder_spec.rb index 227422b612..f34be2f6ac 100644 --- a/spec/services/paypal_items_builder_spec.rb +++ b/spec/services/paypal_items_builder_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe PaypalItemsBuilder do +RSpec.describe PaypalItemsBuilder do let(:order) { create(:completed_order_with_fees) } let(:service) { described_class.new(order) } let(:items) { described_class.new(order).call } diff --git a/spec/services/permissions/order_spec.rb b/spec/services/permissions/order_spec.rb index 2e3ba313ee..385b4a336a 100644 --- a/spec/services/permissions/order_spec.rb +++ b/spec/services/permissions/order_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module Permissions - describe Order do + RSpec.describe Order do let(:user) { double(:user) } let(:permissions) { Permissions::Order.new(user) } let!(:basic_permissions) { OpenFoodNetwork::Permissions.new(user) } diff --git a/spec/services/permitted_attributes/order_cycle_spec.rb b/spec/services/permitted_attributes/order_cycle_spec.rb index 6990548af1..1036e426b2 100644 --- a/spec/services/permitted_attributes/order_cycle_spec.rb +++ b/spec/services/permitted_attributes/order_cycle_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module PermittedAttributes - describe OrderCycle do + RSpec.describe OrderCycle do let(:oc_permitted_attributes) { PermittedAttributes::OrderCycle.new(params) } describe "with basic attributes" do diff --git a/spec/services/permitted_attributes/user_spec.rb b/spec/services/permitted_attributes/user_spec.rb index 8b98311efa..e5119d696e 100644 --- a/spec/services/permitted_attributes/user_spec.rb +++ b/spec/services/permitted_attributes/user_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module PermittedAttributes - describe User do + RSpec.describe User do describe "simple usage" do let(:user_permitted_attributes) { PermittedAttributes::User.new(params) } diff --git a/spec/services/place_proxy_order_spec.rb b/spec/services/place_proxy_order_spec.rb index 2fc895ec53..4fd895d8d9 100644 --- a/spec/services/place_proxy_order_spec.rb +++ b/spec/services/place_proxy_order_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe PlaceProxyOrder do +RSpec.describe PlaceProxyOrder do include ActiveSupport::Testing::TimeHelpers subject { described_class.new(proxy_order, summarizer, logger, stock_changes_loader) } diff --git a/spec/services/process_payment_intent_spec.rb b/spec/services/process_payment_intent_spec.rb index 51ab52294f..10af03a91e 100644 --- a/spec/services/process_payment_intent_spec.rb +++ b/spec/services/process_payment_intent_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ProcessPaymentIntent do +RSpec.describe ProcessPaymentIntent do let(:service) { described_class.new } describe "processing a payment intent" do diff --git a/spec/services/product_filters_spec.rb b/spec/services/product_filters_spec.rb index 056e3c1681..dce7571c1e 100644 --- a/spec/services/product_filters_spec.rb +++ b/spec/services/product_filters_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ProductFilters do +RSpec.describe ProductFilters do describe "extract" do it "should return a hash including only key from ProductFilters::PRODUCT_FILTERS" do params = { 'id' => 20, 'producerFilter' => 2, 'categoryFilter' => 5 } diff --git a/spec/services/product_tag_rules_filterer_spec.rb b/spec/services/product_tag_rules_filterer_spec.rb index 1302788381..eafd6d6d38 100644 --- a/spec/services/product_tag_rules_filterer_spec.rb +++ b/spec/services/product_tag_rules_filterer_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe ProductTagRulesFilterer do +RSpec.describe ProductTagRulesFilterer do describe "filtering by tag rules" do let!(:distributor) { create(:distributor_enterprise) } let(:product) { create(:product, supplier: distributor) } diff --git a/spec/services/products_renderer_spec.rb b/spec/services/products_renderer_spec.rb index 179233fe2d..0913c61ee9 100644 --- a/spec/services/products_renderer_spec.rb +++ b/spec/services/products_renderer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe ProductsRenderer do +RSpec.describe ProductsRenderer do let(:distributor) { create(:distributor_enterprise) } let(:order_cycle) { create(:simple_order_cycle, distributors: [distributor]) } let(:exchange) { order_cycle.exchanges.to_enterprises(distributor).outgoing.first } diff --git a/spec/services/search_orders_spec.rb b/spec/services/search_orders_spec.rb index 6abf20fcf5..3b3de62b4e 100644 --- a/spec/services/search_orders_spec.rb +++ b/spec/services/search_orders_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe SearchOrders do +RSpec.describe SearchOrders do let!(:distributor) { create(:distributor_enterprise) } let!(:order1) { create(:order_with_line_items, distributor:, line_items_count: 3) } let!(:order2) { create(:order_with_line_items, distributor:, line_items_count: 2) } diff --git a/spec/services/sets/model_set_spec.rb b/spec/services/sets/model_set_spec.rb index b783872f9e..bf9f7b37ec 100644 --- a/spec/services/sets/model_set_spec.rb +++ b/spec/services/sets/model_set_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Sets::ModelSet do +RSpec.describe Sets::ModelSet do describe "updating" do it "creates new models" do attrs = { collection_attributes: { '1' => { name: "Fantasia", iso_name: "FAN" }, diff --git a/spec/services/sets/product_set_spec.rb b/spec/services/sets/product_set_spec.rb index 88eb990e9d..b60dd0f2a5 100644 --- a/spec/services/sets/product_set_spec.rb +++ b/spec/services/sets/product_set_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Sets::ProductSet do +RSpec.describe Sets::ProductSet do describe '#save' do let(:product_set) do described_class.new(collection_attributes: collection_hash) diff --git a/spec/services/shop/order_cycles_list_spec.rb b/spec/services/shop/order_cycles_list_spec.rb index 30febf01e2..5b5e230fb1 100644 --- a/spec/services/shop/order_cycles_list_spec.rb +++ b/spec/services/shop/order_cycles_list_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Shop::OrderCyclesList do +RSpec.describe Shop::OrderCyclesList do describe ".active_for" do let(:customer) { nil } diff --git a/spec/services/stripe_payment_status_spec.rb b/spec/services/stripe_payment_status_spec.rb index 3e9b17fa21..08e8b7f234 100644 --- a/spec/services/stripe_payment_status_spec.rb +++ b/spec/services/stripe_payment_status_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe StripePaymentStatus, :vcr, :stripe_version do +RSpec.describe StripePaymentStatus, :vcr, :stripe_version do subject { StripePaymentStatus.new(payment) } let(:credit_card) { create(:credit_card, gateway_payment_profile_id: pm_card.id) } diff --git a/spec/services/tax_rate_finder_spec.rb b/spec/services/tax_rate_finder_spec.rb index 3ceca79607..0464565ef0 100644 --- a/spec/services/tax_rate_finder_spec.rb +++ b/spec/services/tax_rate_finder_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe TaxRateFinder do +RSpec.describe TaxRateFinder do describe "getting the corresponding tax rate" do let(:amount) { BigDecimal(120) } let(:tax_rate) { diff --git a/spec/services/tax_rate_updater_spec.rb b/spec/services/tax_rate_updater_spec.rb index baa3b6d4a6..93c3223220 100644 --- a/spec/services/tax_rate_updater_spec.rb +++ b/spec/services/tax_rate_updater_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe TaxRateUpdater do +RSpec.describe TaxRateUpdater do let!(:old_tax_rate) { create(:tax_rate, name: "Test Rate", amount: 0.2, calculator: Calculator::DefaultTax.new) } diff --git a/spec/services/terms_of_service_spec.rb b/spec/services/terms_of_service_spec.rb index 22151ee0bc..c2b4021b7e 100644 --- a/spec/services/terms_of_service_spec.rb +++ b/spec/services/terms_of_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe TermsOfService do +RSpec.describe TermsOfService do let(:customer) { create(:customer) } let(:distributor) { create(:distributor_enterprise) } diff --git a/spec/services/unit_prices_spec.rb b/spec/services/unit_prices_spec.rb index ef9aa86bee..2219eab6c8 100644 --- a/spec/services/unit_prices_spec.rb +++ b/spec/services/unit_prices_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe UnitPrice do +RSpec.describe UnitPrice do subject { UnitPrice.new(variant) } let(:variant) { Spree::Variant.new } let(:product) { instance_double(Spree::Product) } diff --git a/spec/services/upload_sanitizer_spec.rb b/spec/services/upload_sanitizer_spec.rb index c90625fe72..e766fa7ec8 100644 --- a/spec/services/upload_sanitizer_spec.rb +++ b/spec/services/upload_sanitizer_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe UploadSanitizer do +RSpec.describe UploadSanitizer do describe "#call" do let(:upload) do File.open("/tmp/unsanitized.csv", 'wb:ascii-8bit') do |f| diff --git a/spec/services/url_generator_spec.rb b/spec/services/url_generator_spec.rb index f33c093bf9..fcb0d78edd 100644 --- a/spec/services/url_generator_spec.rb +++ b/spec/services/url_generator_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe UrlGenerator do +RSpec.describe UrlGenerator do subject { UrlGenerator } describe "#to_url" do diff --git a/spec/services/user_default_address_setter_spec.rb b/spec/services/user_default_address_setter_spec.rb index 2e8ec3319d..e90d53b32b 100644 --- a/spec/services/user_default_address_setter_spec.rb +++ b/spec/services/user_default_address_setter_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe UserDefaultAddressSetter do +RSpec.describe UserDefaultAddressSetter do let(:customer_address) { create(:address, address1: "customer road") } let(:order_address) { create(:address, address1: "order road") } let(:customer) do diff --git a/spec/services/user_locale_setter_spec.rb b/spec/services/user_locale_setter_spec.rb index 5b0bc0e69b..9e3223c52e 100644 --- a/spec/services/user_locale_setter_spec.rb +++ b/spec/services/user_locale_setter_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe UserLocaleSetter do +RSpec.describe UserLocaleSetter do let(:user) { create(:user) } let(:default_locale) { I18n.default_locale } let(:locale_params) { {} } diff --git a/spec/services/variant_overrides_indexed_spec.rb b/spec/services/variant_overrides_indexed_spec.rb index 62cc1e6228..d789c048c7 100644 --- a/spec/services/variant_overrides_indexed_spec.rb +++ b/spec/services/variant_overrides_indexed_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe VariantOverridesIndexed do +RSpec.describe VariantOverridesIndexed do subject(:variant_overrides) { described_class.new([variant.id], [distributor.id]) } let(:distributor) { create(:distributor_enterprise) } diff --git a/spec/services/variant_units/option_value_namer_spec.rb b/spec/services/variant_units/option_value_namer_spec.rb index 6d71ac3966..8c2ac4f537 100644 --- a/spec/services/variant_units/option_value_namer_spec.rb +++ b/spec/services/variant_units/option_value_namer_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' module VariantUnits - describe OptionValueNamer do + RSpec.describe OptionValueNamer do describe "generating option value name" do let(:v) { Spree::Variant.new } let(:p) { Spree::Product.new } diff --git a/spec/services/variants_stock_levels_spec.rb b/spec/services/variants_stock_levels_spec.rb index 475f9fb452..630fc2c2de 100644 --- a/spec/services/variants_stock_levels_spec.rb +++ b/spec/services/variants_stock_levels_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe VariantsStockLevels do +RSpec.describe VariantsStockLevels do let(:order) { create(:order) } let!(:line_item) do diff --git a/spec/services/voucher_adjustments_service_spec.rb b/spec/services/voucher_adjustments_service_spec.rb index 87df60558e..d9f05fb1df 100644 --- a/spec/services/voucher_adjustments_service_spec.rb +++ b/spec/services/voucher_adjustments_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe VoucherAdjustmentsService do +RSpec.describe VoucherAdjustmentsService do describe '#update' do let(:enterprise) { build(:enterprise) } diff --git a/spec/services/weights_and_measures_spec.rb b/spec/services/weights_and_measures_spec.rb index 59877062ec..22d337308c 100644 --- a/spec/services/weights_and_measures_spec.rb +++ b/spec/services/weights_and_measures_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe WeightsAndMeasures do +RSpec.describe WeightsAndMeasures do subject { WeightsAndMeasures.new(variant) } let(:variant) { Spree::Variant.new } let(:product) { instance_double(Spree::Product) } diff --git a/spec/system/admin/adjustments_spec.rb b/spec/system/admin/adjustments_spec.rb index cbe5f8f7d5..bc525c819e 100644 --- a/spec/system/admin/adjustments_spec.rb +++ b/spec/system/admin/adjustments_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe ' +RSpec.describe ' As an administrator I want to manage adjustments on orders ' do diff --git a/spec/system/admin/authentication_spec.rb b/spec/system/admin/authentication_spec.rb index 426ac758a8..74a7d71412 100644 --- a/spec/system/admin/authentication_spec.rb +++ b/spec/system/admin/authentication_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Authentication" do +RSpec.describe "Authentication" do include UIComponentHelper include AuthenticationHelper include WebHelper diff --git a/spec/system/admin/bulk_order_cancellation_spec.rb b/spec/system/admin/bulk_order_cancellation_spec.rb index c07ccfe9e1..bb2084976f 100644 --- a/spec/system/admin/bulk_order_cancellation_spec.rb +++ b/spec/system/admin/bulk_order_cancellation_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an Administrator I want to be able to delete orders in bulk ' do diff --git a/spec/system/admin/bulk_order_management_spec.rb b/spec/system/admin/bulk_order_management_spec.rb index ccf0141afd..8e00eff139 100644 --- a/spec/system/admin/bulk_order_management_spec.rb +++ b/spec/system/admin/bulk_order_management_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an Administrator I want to be able to manage orders in bulk ' do diff --git a/spec/system/admin/bulk_product_update_spec.rb b/spec/system/admin/bulk_product_update_spec.rb index 1f954dc142..7ccab2766a 100644 --- a/spec/system/admin/bulk_product_update_spec.rb +++ b/spec/system/admin/bulk_product_update_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an Administrator I want to be able to manage products in bulk ' do diff --git a/spec/system/admin/configuration/content_spec.rb b/spec/system/admin/configuration/content_spec.rb index a74bd03421..8e44066e70 100644 --- a/spec/system/admin/configuration/content_spec.rb +++ b/spec/system/admin/configuration/content_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe " +RSpec.describe " As a site administrator I want to configure the site content " do diff --git a/spec/system/admin/configuration/general_settings_spec.rb b/spec/system/admin/configuration/general_settings_spec.rb index ddbf01bbd3..cc352c745b 100644 --- a/spec/system/admin/configuration/general_settings_spec.rb +++ b/spec/system/admin/configuration/general_settings_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "General Settings" do +RSpec.describe "General Settings" do include AuthenticationHelper before do diff --git a/spec/system/admin/configuration/mail_methods_spec.rb b/spec/system/admin/configuration/mail_methods_spec.rb index 0bf637ea58..643ee1dc7a 100644 --- a/spec/system/admin/configuration/mail_methods_spec.rb +++ b/spec/system/admin/configuration/mail_methods_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Mail Methods" do +RSpec.describe "Mail Methods" do include AuthenticationHelper before do diff --git a/spec/system/admin/configuration/shipping_categories_spec.rb b/spec/system/admin/configuration/shipping_categories_spec.rb index 6b554852a4..7e884d0aeb 100644 --- a/spec/system/admin/configuration/shipping_categories_spec.rb +++ b/spec/system/admin/configuration/shipping_categories_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Shipping Categories" do +RSpec.describe "Shipping Categories" do include AuthenticationHelper include WebHelper let(:admin_role) { Spree::Role.find_or_create_by!(name: 'admin') } diff --git a/spec/system/admin/configuration/states_spec.rb b/spec/system/admin/configuration/states_spec.rb index 8f44e48957..0653a429f3 100644 --- a/spec/system/admin/configuration/states_spec.rb +++ b/spec/system/admin/configuration/states_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "States" do +RSpec.describe "States" do include AuthenticationHelper include WebHelper diff --git a/spec/system/admin/configuration/tax_categories_spec.rb b/spec/system/admin/configuration/tax_categories_spec.rb index 61410c0663..ea5074d8bf 100644 --- a/spec/system/admin/configuration/tax_categories_spec.rb +++ b/spec/system/admin/configuration/tax_categories_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Tax Categories" do +RSpec.describe "Tax Categories" do include AuthenticationHelper include WebHelper diff --git a/spec/system/admin/configuration/tax_rates_spec.rb b/spec/system/admin/configuration/tax_rates_spec.rb index da48c549d8..87c60b2392 100644 --- a/spec/system/admin/configuration/tax_rates_spec.rb +++ b/spec/system/admin/configuration/tax_rates_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Tax Rates" do +RSpec.describe "Tax Rates" do include AuthenticationHelper let!(:calculator) { create(:calculator_per_item, calculable: create(:order)) } diff --git a/spec/system/admin/configuration/taxonomies_spec.rb b/spec/system/admin/configuration/taxonomies_spec.rb index b5dea632fd..5f4771cbd6 100644 --- a/spec/system/admin/configuration/taxonomies_spec.rb +++ b/spec/system/admin/configuration/taxonomies_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Taxonomies" do +RSpec.describe "Taxonomies" do include AuthenticationHelper include WebHelper diff --git a/spec/system/admin/configuration/terms_of_service_files_spec.rb b/spec/system/admin/configuration/terms_of_service_files_spec.rb index fad947a089..1a1ca75d3d 100644 --- a/spec/system/admin/configuration/terms_of_service_files_spec.rb +++ b/spec/system/admin/configuration/terms_of_service_files_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Terms of Service files" do +RSpec.describe "Terms of Service files" do include AuthenticationHelper describe "as admin" do diff --git a/spec/system/admin/configuration/zones_spec.rb b/spec/system/admin/configuration/zones_spec.rb index 36e7bf9969..134d4c14f7 100644 --- a/spec/system/admin/configuration/zones_spec.rb +++ b/spec/system/admin/configuration/zones_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Zones" do +RSpec.describe "Zones" do include AuthenticationHelper include WebHelper diff --git a/spec/system/admin/customers_spec.rb b/spec/system/admin/customers_spec.rb index b8ab97768e..44417d2110 100644 --- a/spec/system/admin/customers_spec.rb +++ b/spec/system/admin/customers_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe 'Customers' do +RSpec.describe 'Customers' do include AdminHelper include AuthenticationHelper include WebHelper diff --git a/spec/system/admin/dfc_product_import_spec.rb b/spec/system/admin/dfc_product_import_spec.rb index 195c8370c5..224b4d89af 100644 --- a/spec/system/admin/dfc_product_import_spec.rb +++ b/spec/system/admin/dfc_product_import_spec.rb @@ -3,7 +3,7 @@ require 'system_helper' require_relative '../../../engines/dfc_provider/spec/support/authorization_helper' -describe "DFC Product Import" do +RSpec.describe "DFC Product Import" do include AuthorizationHelper let(:user) { create(:oidc_user, owned_enterprises: [enterprise]) } diff --git a/spec/system/admin/enterprise_fees_spec.rb b/spec/system/admin/enterprise_fees_spec.rb index 53dbaf2e33..2c90e748e8 100644 --- a/spec/system/admin/enterprise_fees_spec.rb +++ b/spec/system/admin/enterprise_fees_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an administrator I want to manage enterprise fees ' do diff --git a/spec/system/admin/enterprise_groups_spec.rb b/spec/system/admin/enterprise_groups_spec.rb index d025aa8cc8..786eb9df5e 100644 --- a/spec/system/admin/enterprise_groups_spec.rb +++ b/spec/system/admin/enterprise_groups_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an administrator I want to manage enterprise groups ' do diff --git a/spec/system/admin/enterprise_relationships_spec.rb b/spec/system/admin/enterprise_relationships_spec.rb index 50b2b89e33..1e86c9d229 100644 --- a/spec/system/admin/enterprise_relationships_spec.rb +++ b/spec/system/admin/enterprise_relationships_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an Administrator I want to manage relationships between enterprises ' do diff --git a/spec/system/admin/enterprise_roles_spec.rb b/spec/system/admin/enterprise_roles_spec.rb index 2b7be496ca..e3be5b5862 100644 --- a/spec/system/admin/enterprise_roles_spec.rb +++ b/spec/system/admin/enterprise_roles_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an Administrator I want to manage relationships between users and enterprises ' do diff --git a/spec/system/admin/enterprise_user_spec.rb b/spec/system/admin/enterprise_user_spec.rb index b8435cbef7..ce04a15196 100644 --- a/spec/system/admin/enterprise_user_spec.rb +++ b/spec/system/admin/enterprise_user_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe ' +RSpec.describe ' As a Super User I want to setup users to manage an enterprise ' do diff --git a/spec/system/admin/enterprises/business_address_form_spec.rb b/spec/system/admin/enterprises/business_address_form_spec.rb index 37b82c8489..ffec4468a2 100644 --- a/spec/system/admin/enterprises/business_address_form_spec.rb +++ b/spec/system/admin/enterprises/business_address_form_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "Business Address" do +RSpec.describe "Business Address" do include WebHelper include AuthenticationHelper diff --git a/spec/system/admin/enterprises/connected_apps_spec.rb b/spec/system/admin/enterprises/connected_apps_spec.rb index 2be667e904..23bf8d4fe0 100644 --- a/spec/system/admin/enterprises/connected_apps_spec.rb +++ b/spec/system/admin/enterprises/connected_apps_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "Connected Apps", feature: :connected_apps, vcr: true do +RSpec.describe "Connected Apps", feature: :connected_apps, vcr: true do let(:enterprise) { create(:enterprise) } before do diff --git a/spec/system/admin/enterprises/images_spec.rb b/spec/system/admin/enterprises/images_spec.rb index f5f1ccdb97..972485d32a 100644 --- a/spec/system/admin/enterprises/images_spec.rb +++ b/spec/system/admin/enterprises/images_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "Managing enterprise images" do +RSpec.describe "Managing enterprise images" do include WebHelper include FileHelper include AuthenticationHelper diff --git a/spec/system/admin/enterprises/index_spec.rb b/spec/system/admin/enterprises/index_spec.rb index c79780b490..239ca72a92 100644 --- a/spec/system/admin/enterprises/index_spec.rb +++ b/spec/system/admin/enterprises/index_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe 'Enterprises Index' do +RSpec.describe 'Enterprises Index' do include WebHelper include AuthenticationHelper diff --git a/spec/system/admin/enterprises/terms_and_conditions_spec.rb b/spec/system/admin/enterprises/terms_and_conditions_spec.rb index e8a5f33bd7..15301c3760 100644 --- a/spec/system/admin/enterprises/terms_and_conditions_spec.rb +++ b/spec/system/admin/enterprises/terms_and_conditions_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "Uploading Terms and Conditions PDF" do +RSpec.describe "Uploading Terms and Conditions PDF" do include AuthenticationHelper include FileHelper diff --git a/spec/system/admin/enterprises_spec.rb b/spec/system/admin/enterprises_spec.rb index 92fdf304d3..caabb4a006 100644 --- a/spec/system/admin/enterprises_spec.rb +++ b/spec/system/admin/enterprises_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe ' +RSpec.describe ' As an administrator I want to manage enterprises ' do diff --git a/spec/system/admin/flatpickr_spec.rb b/spec/system/admin/flatpickr_spec.rb index 901566a0eb..434b24a2b0 100644 --- a/spec/system/admin/flatpickr_spec.rb +++ b/spec/system/admin/flatpickr_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "Test Flatpickr" do +RSpec.describe "Test Flatpickr" do include AuthenticationHelper include WebHelper diff --git a/spec/system/admin/invoice_print_spec.rb b/spec/system/admin/invoice_print_spec.rb index e4246a9d69..9596a7d191 100644 --- a/spec/system/admin/invoice_print_spec.rb +++ b/spec/system/admin/invoice_print_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe ' +RSpec.describe ' As an administrator I want to print a invoice as PDF ', type: :feature do diff --git a/spec/system/admin/multilingual_spec.rb b/spec/system/admin/multilingual_spec.rb index 82e3894e6b..e8de421d75 100644 --- a/spec/system/admin/multilingual_spec.rb +++ b/spec/system/admin/multilingual_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe 'Multilingual' do +RSpec.describe 'Multilingual' do include AuthenticationHelper include WebHelper let(:admin_role) { Spree::Role.find_or_create_by!(name: 'admin') } diff --git a/spec/system/admin/oidc_settings_spec.rb b/spec/system/admin/oidc_settings_spec.rb index 3402bc6797..ca63a8b3e8 100644 --- a/spec/system/admin/oidc_settings_spec.rb +++ b/spec/system/admin/oidc_settings_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "OIDC Settings" do +RSpec.describe "OIDC Settings" do it "requires login" do visit admin_oidc_settings_path expect(page).to have_button "Login" diff --git a/spec/system/admin/order_cycles/complex_creating_specific_time_spec.rb b/spec/system/admin/order_cycles/complex_creating_specific_time_spec.rb index ad5c818721..958ca4931a 100644 --- a/spec/system/admin/order_cycles/complex_creating_specific_time_spec.rb +++ b/spec/system/admin/order_cycles/complex_creating_specific_time_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an administrator I want to create/update complex order cycles with a specific time ' do diff --git a/spec/system/admin/order_cycles/complex_editing_exchange_same_enterprise_spec.rb b/spec/system/admin/order_cycles/complex_editing_exchange_same_enterprise_spec.rb index ac602ec42f..fdc41f3ebe 100644 --- a/spec/system/admin/order_cycles/complex_editing_exchange_same_enterprise_spec.rb +++ b/spec/system/admin/order_cycles/complex_editing_exchange_same_enterprise_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an administrator I want to manage complex order cycles ' do diff --git a/spec/system/admin/order_cycles/complex_editing_multiple_product_pages_spec.rb b/spec/system/admin/order_cycles/complex_editing_multiple_product_pages_spec.rb index 122085e583..23aa655a77 100644 --- a/spec/system/admin/order_cycles/complex_editing_multiple_product_pages_spec.rb +++ b/spec/system/admin/order_cycles/complex_editing_multiple_product_pages_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an administrator I want to manage complex order cycles ' do diff --git a/spec/system/admin/order_cycles/complex_editing_multiple_updation_spec.rb b/spec/system/admin/order_cycles/complex_editing_multiple_updation_spec.rb index ba68c626e5..5d744c1c71 100644 --- a/spec/system/admin/order_cycles/complex_editing_multiple_updation_spec.rb +++ b/spec/system/admin/order_cycles/complex_editing_multiple_updation_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an administrator I want to see alert for unsaved changes on order cycle edit page ' do diff --git a/spec/system/admin/order_cycles/complex_editing_spec.rb b/spec/system/admin/order_cycles/complex_editing_spec.rb index 1438de2510..3635cf69e9 100644 --- a/spec/system/admin/order_cycles/complex_editing_spec.rb +++ b/spec/system/admin/order_cycles/complex_editing_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an administrator I want to manage complex order cycles ' do diff --git a/spec/system/admin/order_cycles/complex_updating_specific_time_spec.rb b/spec/system/admin/order_cycles/complex_updating_specific_time_spec.rb index 3e7d02d2b3..4d109e5243 100644 --- a/spec/system/admin/order_cycles/complex_updating_specific_time_spec.rb +++ b/spec/system/admin/order_cycles/complex_updating_specific_time_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -xdescribe ' +RSpec.xdescribe ' As an administrator I want to create/update complex order cycles with a specific time ' do diff --git a/spec/system/admin/order_cycles/list_spec.rb b/spec/system/admin/order_cycles/list_spec.rb index 308f95a36f..2c95656555 100644 --- a/spec/system/admin/order_cycles/list_spec.rb +++ b/spec/system/admin/order_cycles/list_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an administrator I want to list and filter order cycles ' do diff --git a/spec/system/admin/order_cycles/simple_spec.rb b/spec/system/admin/order_cycles/simple_spec.rb index 364048ee9d..1ce165d630 100644 --- a/spec/system/admin/order_cycles/simple_spec.rb +++ b/spec/system/admin/order_cycles/simple_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an administrator I want to manage simple order cycles ' do diff --git a/spec/system/admin/order_cycles_complex_nav_check_spec.rb b/spec/system/admin/order_cycles_complex_nav_check_spec.rb index 7fb590294b..3c3bc5622c 100644 --- a/spec/system/admin/order_cycles_complex_nav_check_spec.rb +++ b/spec/system/admin/order_cycles_complex_nav_check_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an administrator I want to be alerted when I navigate away from a dirty order cycle form ' do diff --git a/spec/system/admin/order_spec.rb b/spec/system/admin/order_spec.rb index f6f5f96fe0..9cf328d69f 100644 --- a/spec/system/admin/order_spec.rb +++ b/spec/system/admin/order_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe ' +RSpec.describe ' As an administrator I want to create and edit orders ' do diff --git a/spec/system/admin/orders/invoices_spec.rb b/spec/system/admin/orders/invoices_spec.rb index e57f83f350..b5ade9edc9 100644 --- a/spec/system/admin/orders/invoices_spec.rb +++ b/spec/system/admin/orders/invoices_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an administrator I want to manage invoices for an order ', feature: :invoices do diff --git a/spec/system/admin/orders_spec.rb b/spec/system/admin/orders_spec.rb index d7b4ca715f..a2ce6a82a0 100644 --- a/spec/system/admin/orders_spec.rb +++ b/spec/system/admin/orders_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe ' +RSpec.describe ' As an administrator I want to manage orders ' do diff --git a/spec/system/admin/overview_spec.rb b/spec/system/admin/overview_spec.rb index da77a83e39..9660f812eb 100644 --- a/spec/system/admin/overview_spec.rb +++ b/spec/system/admin/overview_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As a backend user I want to be given information about the state of my enterprises, products and order cycles ' do diff --git a/spec/system/admin/payment_method_spec.rb b/spec/system/admin/payment_method_spec.rb index c7173c5d23..7dd66633a7 100644 --- a/spec/system/admin/payment_method_spec.rb +++ b/spec/system/admin/payment_method_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe ' +RSpec.describe ' As a Super Admin I want to be able to set a distributor on each payment method ' do diff --git a/spec/system/admin/payments_spec.rb b/spec/system/admin/payments_spec.rb index e648c5698f..c7a1afeef2 100644 --- a/spec/system/admin/payments_spec.rb +++ b/spec/system/admin/payments_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an admin I want to manage payments ' do diff --git a/spec/system/admin/payments_stripe_spec.rb b/spec/system/admin/payments_stripe_spec.rb index 0d648250ae..deef52735b 100644 --- a/spec/system/admin/payments_stripe_spec.rb +++ b/spec/system/admin/payments_stripe_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an hub manager I want to make Stripe payments ' do diff --git a/spec/system/admin/product_import_spec.rb b/spec/system/admin/product_import_spec.rb index 6cc91970a6..21104c4fd5 100644 --- a/spec/system/admin/product_import_spec.rb +++ b/spec/system/admin/product_import_spec.rb @@ -3,7 +3,7 @@ require 'system_helper' require 'open_food_network/permissions' -describe "Product Import" do +RSpec.describe "Product Import" do include AdminHelper include AuthenticationHelper include WebHelper diff --git a/spec/system/admin/products_spec.rb b/spec/system/admin/products_spec.rb index 55e15a3e41..e75f4bf3dd 100644 --- a/spec/system/admin/products_spec.rb +++ b/spec/system/admin/products_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe ' +RSpec.describe ' As an admin I want to set a supplier and distributor(s) for a product ' do diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 0eff69cde8..2f216b8f0b 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe 'As an enterprise user, I can manage my products', feature: :admin_style_v3 do +RSpec.describe 'As an enterprise user, I can manage my products', feature: :admin_style_v3 do include WebHelper include AuthenticationHelper include FileHelper diff --git a/spec/system/admin/properties_spec.rb b/spec/system/admin/properties_spec.rb index 21ca9ff919..fe3c2d2e50 100644 --- a/spec/system/admin/properties_spec.rb +++ b/spec/system/admin/properties_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe ' +RSpec.describe ' As an admin I want to manage product properties ' do diff --git a/spec/system/admin/reports/enterprise_fee_summaries_spec.rb b/spec/system/admin/reports/enterprise_fee_summaries_spec.rb index 5e44a321ab..4d1b70fee7 100644 --- a/spec/system/admin/reports/enterprise_fee_summaries_spec.rb +++ b/spec/system/admin/reports/enterprise_fee_summaries_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "enterprise fee summaries" do +RSpec.describe "enterprise fee summaries" do include AuthenticationHelper include WebHelper diff --git a/spec/system/admin/reports/enterprise_summary_fees/enterprise_summary_fee_with_tax_report_by_order_spec.rb b/spec/system/admin/reports/enterprise_summary_fees/enterprise_summary_fee_with_tax_report_by_order_spec.rb index bd833db5d8..fb80e2b510 100644 --- a/spec/system/admin/reports/enterprise_summary_fees/enterprise_summary_fee_with_tax_report_by_order_spec.rb +++ b/spec/system/admin/reports/enterprise_summary_fees/enterprise_summary_fee_with_tax_report_by_order_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Enterprise Summary Fee with Tax Report By Order" do +RSpec.describe "Enterprise Summary Fee with Tax Report By Order" do # 1 order cycle the has: # - coordinator fees price 20 # - incoming exchange fees 15 diff --git a/spec/system/admin/reports/enterprise_summary_fees/enterprise_summary_fee_with_tax_report_by_producer_spec.rb b/spec/system/admin/reports/enterprise_summary_fees/enterprise_summary_fee_with_tax_report_by_producer_spec.rb index d31796eea4..bdab8ac972 100644 --- a/spec/system/admin/reports/enterprise_summary_fees/enterprise_summary_fee_with_tax_report_by_producer_spec.rb +++ b/spec/system/admin/reports/enterprise_summary_fees/enterprise_summary_fee_with_tax_report_by_producer_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Enterprise Summary Fee with Tax Report By Producer" do +RSpec.describe "Enterprise Summary Fee with Tax Report By Producer" do # 1 order cycle has: # - coordinator fees price 20 # - incoming exchange fees 15 diff --git a/spec/system/admin/reports/orders_and_fulfillment_spec.rb b/spec/system/admin/reports/orders_and_fulfillment_spec.rb index f96ddf89d5..4be6589234 100644 --- a/spec/system/admin/reports/orders_and_fulfillment_spec.rb +++ b/spec/system/admin/reports/orders_and_fulfillment_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "Orders And Fulfillment" do +RSpec.describe "Orders And Fulfillment" do include AuthenticationHelper include WebHelper diff --git a/spec/system/admin/reports/packing_report_spec.rb b/spec/system/admin/reports/packing_report_spec.rb index f1117e5dee..04f2f82a49 100644 --- a/spec/system/admin/reports/packing_report_spec.rb +++ b/spec/system/admin/reports/packing_report_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "Packing Reports" do +RSpec.describe "Packing Reports" do include AuthenticationHelper include WebHelper diff --git a/spec/system/admin/reports/payments_report_spec.rb b/spec/system/admin/reports/payments_report_spec.rb index 762d3a5215..ad220e6acc 100644 --- a/spec/system/admin/reports/payments_report_spec.rb +++ b/spec/system/admin/reports/payments_report_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Payments Reports" do +RSpec.describe "Payments Reports" do include AuthenticationHelper let(:order) do diff --git a/spec/system/admin/reports/revenues_by_hub_spec.rb b/spec/system/admin/reports/revenues_by_hub_spec.rb index 8d950901cb..71ce4386c9 100644 --- a/spec/system/admin/reports/revenues_by_hub_spec.rb +++ b/spec/system/admin/reports/revenues_by_hub_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Revenues By Hub Reports" do +RSpec.describe "Revenues By Hub Reports" do include AuthenticationHelper let(:order) do diff --git a/spec/system/admin/reports/sales_tax/sales_tax_totals_by_order_spec.rb b/spec/system/admin/reports/sales_tax/sales_tax_totals_by_order_spec.rb index 1ff6b557b0..b186182669 100644 --- a/spec/system/admin/reports/sales_tax/sales_tax_totals_by_order_spec.rb +++ b/spec/system/admin/reports/sales_tax/sales_tax_totals_by_order_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Sales Tax Totals By order" do +RSpec.describe "Sales Tax Totals By order" do # Scenarion 1: added tax # 1 producer # 1 distributor diff --git a/spec/system/admin/reports/sales_tax/sales_tax_totals_by_producer_spec.rb b/spec/system/admin/reports/sales_tax/sales_tax_totals_by_producer_spec.rb index da3244cef5..e896d23a14 100644 --- a/spec/system/admin/reports/sales_tax/sales_tax_totals_by_producer_spec.rb +++ b/spec/system/admin/reports/sales_tax/sales_tax_totals_by_producer_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Sales Tax Totals By Producer" do +RSpec.describe "Sales Tax Totals By Producer" do # Scenario 1: added tax # 1 producer # 1 distributor diff --git a/spec/system/admin/reports/users_and_enterprises_spec.rb b/spec/system/admin/reports/users_and_enterprises_spec.rb index e54c1c8e32..64ad6c04e7 100644 --- a/spec/system/admin/reports/users_and_enterprises_spec.rb +++ b/spec/system/admin/reports/users_and_enterprises_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Users & Enterprises reports" do +RSpec.describe "Users & Enterprises reports" do include AuthenticationHelper before do diff --git a/spec/system/admin/reports_spec.rb b/spec/system/admin/reports_spec.rb index abe26647c7..a8de146328 100644 --- a/spec/system/admin/reports_spec.rb +++ b/spec/system/admin/reports_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe ' +RSpec.describe ' As an administrator I want numbers, all the numbers! ' do diff --git a/spec/system/admin/schedules_spec.rb b/spec/system/admin/schedules_spec.rb index 8832f34d66..383e26d931 100644 --- a/spec/system/admin/schedules_spec.rb +++ b/spec/system/admin/schedules_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe 'Schedules' do +RSpec.describe 'Schedules' do include AuthenticationHelper include WebHelper diff --git a/spec/system/admin/shipping_methods_spec.rb b/spec/system/admin/shipping_methods_spec.rb index 2bcc1f142c..6a4e7abad7 100644 --- a/spec/system/admin/shipping_methods_spec.rb +++ b/spec/system/admin/shipping_methods_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe 'shipping methods' do +RSpec.describe 'shipping methods' do include WebHelper include AuthenticationHelper diff --git a/spec/system/admin/subscriptions/crud_spec.rb b/spec/system/admin/subscriptions/crud_spec.rb index 8882defc20..91e9467216 100644 --- a/spec/system/admin/subscriptions/crud_spec.rb +++ b/spec/system/admin/subscriptions/crud_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe 'Subscriptions' do +RSpec.describe 'Subscriptions' do include AdminHelper include AuthenticationHelper include WebHelper diff --git a/spec/system/admin/subscriptions/smoke_tests_spec.rb b/spec/system/admin/subscriptions/smoke_tests_spec.rb index 348721ac33..feb905a1aa 100644 --- a/spec/system/admin/subscriptions/smoke_tests_spec.rb +++ b/spec/system/admin/subscriptions/smoke_tests_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe 'Subscriptions' do +RSpec.describe 'Subscriptions' do include AdminHelper include AuthenticationHelper include WebHelper diff --git a/spec/system/admin/tag_rules_spec.rb b/spec/system/admin/tag_rules_spec.rb index 72603632a6..f369fcc94d 100644 --- a/spec/system/admin/tag_rules_spec.rb +++ b/spec/system/admin/tag_rules_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe 'Tag Rules' do +RSpec.describe 'Tag Rules' do include AuthenticationHelper include WebHelper diff --git a/spec/system/admin/tax_settings_spec.rb b/spec/system/admin/tax_settings_spec.rb index 5a7392626e..7b84c5d960 100644 --- a/spec/system/admin/tax_settings_spec.rb +++ b/spec/system/admin/tax_settings_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe 'Account and Billing Settings' do +RSpec.describe 'Account and Billing Settings' do include AuthenticationHelper include WebHelper diff --git a/spec/system/admin/tos_banner_spec.rb b/spec/system/admin/tos_banner_spec.rb index 8fe256558b..867af24fae 100644 --- a/spec/system/admin/tos_banner_spec.rb +++ b/spec/system/admin/tos_banner_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe 'Terms of Service banner' do +RSpec.describe 'Terms of Service banner' do include AuthenticationHelper include FileHelper diff --git a/spec/system/admin/unit_price_spec.rb b/spec/system/admin/unit_price_spec.rb index 31070ac421..3c82f76c40 100644 --- a/spec/system/admin/unit_price_spec.rb +++ b/spec/system/admin/unit_price_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an admin I want to check the unit price of my products/variants ' do diff --git a/spec/system/admin/users_spec.rb b/spec/system/admin/users_spec.rb index 5d3a6f9046..6548dbc558 100644 --- a/spec/system/admin/users_spec.rb +++ b/spec/system/admin/users_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "Managing users" do +RSpec.describe "Managing users" do include AuthenticationHelper context "as super-admin" do diff --git a/spec/system/admin/variant_overrides_spec.rb b/spec/system/admin/variant_overrides_spec.rb index 2da4bf705a..9e5554bc92 100644 --- a/spec/system/admin/variant_overrides_spec.rb +++ b/spec/system/admin/variant_overrides_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe " +RSpec.describe " Managing a hub's inventory I want to override the stock level and price of products Without affecting other hubs that share the same products diff --git a/spec/system/admin/variants_spec.rb b/spec/system/admin/variants_spec.rb index 754670b542..beb164fe1e 100644 --- a/spec/system/admin/variants_spec.rb +++ b/spec/system/admin/variants_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an admin I want to manage product variants ' do diff --git a/spec/system/admin/vouchers_spec.rb b/spec/system/admin/vouchers_spec.rb index c6893de80f..2673cb2403 100644 --- a/spec/system/admin/vouchers_spec.rb +++ b/spec/system/admin/vouchers_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As an entreprise user I want to manage vouchers ' do diff --git a/spec/system/consumer/account/cards_spec.rb b/spec/system/consumer/account/cards_spec.rb index a4228031b6..58764598c9 100644 --- a/spec/system/consumer/account/cards_spec.rb +++ b/spec/system/consumer/account/cards_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Credit Cards" do +RSpec.describe "Credit Cards" do include AuthenticationHelper include StripeHelper include StripeStubs diff --git a/spec/system/consumer/account/developer_settings_spec.rb b/spec/system/consumer/account/developer_settings_spec.rb index 704a4a986e..06b204d762 100644 --- a/spec/system/consumer/account/developer_settings_spec.rb +++ b/spec/system/consumer/account/developer_settings_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "Developer Settings" do +RSpec.describe "Developer Settings" do include AuthenticationHelper include WebHelper diff --git a/spec/system/consumer/account/payments_spec.rb b/spec/system/consumer/account/payments_spec.rb index b88a3932f5..0efbf46c13 100644 --- a/spec/system/consumer/account/payments_spec.rb +++ b/spec/system/consumer/account/payments_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Payments requiring action" do +RSpec.describe "Payments requiring action" do include AuthenticationHelper describe "as a logged in user" do diff --git a/spec/system/consumer/account/settings_spec.rb b/spec/system/consumer/account/settings_spec.rb index d20e870db9..58a49c2b2d 100644 --- a/spec/system/consumer/account/settings_spec.rb +++ b/spec/system/consumer/account/settings_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Account Settings" do +RSpec.describe "Account Settings" do include AuthenticationHelper describe "as a logged in user" do diff --git a/spec/system/consumer/account_spec.rb b/spec/system/consumer/account_spec.rb index d50ced38a0..ed984f3452 100644 --- a/spec/system/consumer/account_spec.rb +++ b/spec/system/consumer/account_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As a consumer I want to view my order history with each hub and view any outstanding balance. diff --git a/spec/system/consumer/authentication_spec.rb b/spec/system/consumer/authentication_spec.rb index 7062d99a2e..196425e9d5 100644 --- a/spec/system/consumer/authentication_spec.rb +++ b/spec/system/consumer/authentication_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Authentication" do +RSpec.describe "Authentication" do include AuthenticationHelper include UIComponentHelper diff --git a/spec/system/consumer/caching/darkswarm_caching_spec.rb b/spec/system/consumer/caching/darkswarm_caching_spec.rb index eea29f8cb2..02c2fdad65 100644 --- a/spec/system/consumer/caching/darkswarm_caching_spec.rb +++ b/spec/system/consumer/caching/darkswarm_caching_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "Darkswarm data caching", caching: true do +RSpec.describe "Darkswarm data caching", caching: true do let!(:taxon) { create(:taxon, name: "Cached Taxon") } let!(:property) { create(:property, presentation: "Cached Property") } diff --git a/spec/system/consumer/caching/shops_caching_spec.rb b/spec/system/consumer/caching/shops_caching_spec.rb index b44a8f77bc..baaf3302e3 100644 --- a/spec/system/consumer/caching/shops_caching_spec.rb +++ b/spec/system/consumer/caching/shops_caching_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "Shops caching", caching: true do +RSpec.describe "Shops caching", caching: true do include WebHelper include UIComponentHelper diff --git a/spec/system/consumer/checkout/details_spec.rb b/spec/system/consumer/checkout/details_spec.rb index 6f83576155..7c970196be 100644 --- a/spec/system/consumer/checkout/details_spec.rb +++ b/spec/system/consumer/checkout/details_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "As a consumer, I want to checkout my order" do +RSpec.describe "As a consumer, I want to checkout my order" do include ShopWorkflow include CheckoutHelper include FileHelper diff --git a/spec/system/consumer/checkout/guest_spec.rb b/spec/system/consumer/checkout/guest_spec.rb index 303d10c7fc..bf24547115 100644 --- a/spec/system/consumer/checkout/guest_spec.rb +++ b/spec/system/consumer/checkout/guest_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "As a consumer, I want to checkout my order" do +RSpec.describe "As a consumer, I want to checkout my order" do include ShopWorkflow include CheckoutHelper include FileHelper diff --git a/spec/system/consumer/checkout/payment_spec.rb b/spec/system/consumer/checkout/payment_spec.rb index 0646e40185..e9a1c83609 100644 --- a/spec/system/consumer/checkout/payment_spec.rb +++ b/spec/system/consumer/checkout/payment_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "As a consumer, I want to checkout my order" do +RSpec.describe "As a consumer, I want to checkout my order" do include ShopWorkflow include CheckoutHelper include FileHelper diff --git a/spec/system/consumer/checkout/summary_spec.rb b/spec/system/consumer/checkout/summary_spec.rb index 1b27719717..75a1a06487 100644 --- a/spec/system/consumer/checkout/summary_spec.rb +++ b/spec/system/consumer/checkout/summary_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "As a consumer, I want to checkout my order" do +RSpec.describe "As a consumer, I want to checkout my order" do include ShopWorkflow include CheckoutHelper include FileHelper diff --git a/spec/system/consumer/checkout/tax_incl_spec.rb b/spec/system/consumer/checkout/tax_incl_spec.rb index e0d1713a1d..b8b9ff5b7e 100644 --- a/spec/system/consumer/checkout/tax_incl_spec.rb +++ b/spec/system/consumer/checkout/tax_incl_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "As a consumer, I want to see adjustment breakdown" do +RSpec.describe "As a consumer, I want to see adjustment breakdown" do include ShopWorkflow include CheckoutHelper include CheckoutRequestsHelper diff --git a/spec/system/consumer/checkout/tax_not_incl_spec.rb b/spec/system/consumer/checkout/tax_not_incl_spec.rb index aa746adad6..274480300e 100644 --- a/spec/system/consumer/checkout/tax_not_incl_spec.rb +++ b/spec/system/consumer/checkout/tax_not_incl_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "As a consumer, I want to see adjustment breakdown" do +RSpec.describe "As a consumer, I want to see adjustment breakdown" do include ShopWorkflow include CheckoutHelper include CheckoutRequestsHelper diff --git a/spec/system/consumer/cookies_spec.rb b/spec/system/consumer/cookies_spec.rb index 7685ab1cfa..e97d900973 100644 --- a/spec/system/consumer/cookies_spec.rb +++ b/spec/system/consumer/cookies_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Cookies", caching: true do +RSpec.describe "Cookies", caching: true do describe "banner" do # keeps banner toggle config unchanged around do |example| diff --git a/spec/system/consumer/footer_links_spec.rb b/spec/system/consumer/footer_links_spec.rb index af61a4bba9..b686779e82 100644 --- a/spec/system/consumer/footer_links_spec.rb +++ b/spec/system/consumer/footer_links_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Footer Links" do +RSpec.describe "Footer Links" do describe "policy link" do it "showing" do visit root_path diff --git a/spec/system/consumer/groups_spec.rb b/spec/system/consumer/groups_spec.rb index 93734d88db..6820ad1b9c 100644 --- a/spec/system/consumer/groups_spec.rb +++ b/spec/system/consumer/groups_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe 'Groups' do +RSpec.describe 'Groups' do include AuthenticationHelper include UIComponentHelper diff --git a/spec/system/consumer/multilingual_spec.rb b/spec/system/consumer/multilingual_spec.rb index b50b51f77d..7116c0c1de 100644 --- a/spec/system/consumer/multilingual_spec.rb +++ b/spec/system/consumer/multilingual_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe 'Multilingual' do +RSpec.describe 'Multilingual' do include AuthenticationHelper include WebHelper include ShopWorkflow diff --git a/spec/system/consumer/producers_spec.rb b/spec/system/consumer/producers_spec.rb index 36ccd65a47..48832fbd62 100644 --- a/spec/system/consumer/producers_spec.rb +++ b/spec/system/consumer/producers_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe ' +RSpec.describe ' As a consumer I want to see a list of producers So that I can shop at hubs distributing their products diff --git a/spec/system/consumer/registration_spec.rb b/spec/system/consumer/registration_spec.rb index e95c69812a..ad37f4a8c1 100644 --- a/spec/system/consumer/registration_spec.rb +++ b/spec/system/consumer/registration_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Registration" do +RSpec.describe "Registration" do include AuthenticationHelper include WebHelper diff --git a/spec/system/consumer/shopping/cart_spec.rb b/spec/system/consumer/shopping/cart_spec.rb index 3cd4150e2a..5ad9edef83 100644 --- a/spec/system/consumer/shopping/cart_spec.rb +++ b/spec/system/consumer/shopping/cart_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "full-page cart" do +RSpec.describe "full-page cart" do include AuthenticationHelper include WebHelper include ShopWorkflow diff --git a/spec/system/consumer/shopping/checkout_auth_spec.rb b/spec/system/consumer/shopping/checkout_auth_spec.rb index 0b12d7ff0d..0e3ea887f7 100644 --- a/spec/system/consumer/shopping/checkout_auth_spec.rb +++ b/spec/system/consumer/shopping/checkout_auth_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "As a consumer I want to check out my cart" do +RSpec.describe "As a consumer I want to check out my cart" do include AuthenticationHelper include WebHelper include ShopWorkflow diff --git a/spec/system/consumer/shopping/checkout_paypal_spec.rb b/spec/system/consumer/shopping/checkout_paypal_spec.rb index aea7807324..07bc98c309 100644 --- a/spec/system/consumer/shopping/checkout_paypal_spec.rb +++ b/spec/system/consumer/shopping/checkout_paypal_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "Check out with Paypal" do +RSpec.describe "Check out with Paypal" do include ShopWorkflow include CheckoutRequestsHelper include AuthenticationHelper diff --git a/spec/system/consumer/shopping/checkout_stripe_spec.rb b/spec/system/consumer/shopping/checkout_stripe_spec.rb index 28b184b7d1..7758f582db 100644 --- a/spec/system/consumer/shopping/checkout_stripe_spec.rb +++ b/spec/system/consumer/shopping/checkout_stripe_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Check out with Stripe" do +RSpec.describe "Check out with Stripe" do include AuthenticationHelper include ShopWorkflow include CheckoutRequestsHelper diff --git a/spec/system/consumer/shopping/embedded_groups_spec.rb b/spec/system/consumer/shopping/embedded_groups_spec.rb index f157b2cd69..b59f59ca3c 100644 --- a/spec/system/consumer/shopping/embedded_groups_spec.rb +++ b/spec/system/consumer/shopping/embedded_groups_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Using embedded shopfront functionality" do +RSpec.describe "Using embedded shopfront functionality" do include OpenFoodNetwork::EmbeddedPagesHelper describe 'embedded groups' do diff --git a/spec/system/consumer/shopping/orders_spec.rb b/spec/system/consumer/shopping/orders_spec.rb index 0aaf4e4cc7..590ad801e6 100644 --- a/spec/system/consumer/shopping/orders_spec.rb +++ b/spec/system/consumer/shopping/orders_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "Order Management" do +RSpec.describe "Order Management" do include AuthenticationHelper describe "viewing a completed order" do diff --git a/spec/system/consumer/shopping/products_spec.rb b/spec/system/consumer/shopping/products_spec.rb index fdef556152..81a21613be 100644 --- a/spec/system/consumer/shopping/products_spec.rb +++ b/spec/system/consumer/shopping/products_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "As a consumer I want to view products" do +RSpec.describe "As a consumer I want to view products" do include AuthenticationHelper include WebHelper include ShopWorkflow diff --git a/spec/system/consumer/shopping/shopping_spec.rb b/spec/system/consumer/shopping/shopping_spec.rb index 9694059eb1..7868c73382 100644 --- a/spec/system/consumer/shopping/shopping_spec.rb +++ b/spec/system/consumer/shopping/shopping_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "As a consumer I want to shop with a distributor" do +RSpec.describe "As a consumer I want to shop with a distributor" do include AuthenticationHelper include FileHelper include WebHelper diff --git a/spec/system/consumer/shopping/unit_price_spec.rb b/spec/system/consumer/shopping/unit_price_spec.rb index de195c1159..85da774add 100644 --- a/spec/system/consumer/shopping/unit_price_spec.rb +++ b/spec/system/consumer/shopping/unit_price_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "As a consumer, I want to check unit price information for a product" do +RSpec.describe "As a consumer, I want to check unit price information for a product" do include AuthenticationHelper include WebHelper include ShopWorkflow diff --git a/spec/system/consumer/shopping/variant_overrides_spec.rb b/spec/system/consumer/shopping/variant_overrides_spec.rb index 20ef2a5122..90c24666d0 100644 --- a/spec/system/consumer/shopping/variant_overrides_spec.rb +++ b/spec/system/consumer/shopping/variant_overrides_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe "shopping with variant overrides defined" do +RSpec.describe "shopping with variant overrides defined" do include AuthenticationHelper include WebHelper include ShopWorkflow diff --git a/spec/system/consumer/shops_spec.rb b/spec/system/consumer/shops_spec.rb index 02fccfd130..d36a9ca6c1 100644 --- a/spec/system/consumer/shops_spec.rb +++ b/spec/system/consumer/shops_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe 'Shops' do +RSpec.describe 'Shops' do include AuthenticationHelper include UIComponentHelper include WebHelper diff --git a/spec/system/consumer/sitemap_spec.rb b/spec/system/consumer/sitemap_spec.rb index 93b3ebe655..255606c2ae 100644 --- a/spec/system/consumer/sitemap_spec.rb +++ b/spec/system/consumer/sitemap_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe 'sitemap' do +RSpec.describe 'sitemap' do let(:enterprise) { create(:distributor_enterprise) } let!(:group) { create(:enterprise_group, enterprises: [enterprise], on_front_page: true) } diff --git a/spec/system/consumer/user_password_spec.rb b/spec/system/consumer/user_password_spec.rb index a744aac85c..6638541b97 100644 --- a/spec/system/consumer/user_password_spec.rb +++ b/spec/system/consumer/user_password_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "User password confirm/reset page" do +RSpec.describe "User password confirm/reset page" do include UIComponentHelper let(:email) { "test@example.org" } diff --git a/spec/system/consumer/white_label_spec.rb b/spec/system/consumer/white_label_spec.rb index 6fe7645ec6..73aa8065a9 100644 --- a/spec/system/consumer/white_label_spec.rb +++ b/spec/system/consumer/white_label_spec.rb @@ -2,7 +2,7 @@ require 'system_helper' -describe 'White label setting' do +RSpec.describe 'White label setting' do include AuthenticationHelper include ShopWorkflow include FileHelper diff --git a/spec/validators/date_time_string_validator_spec.rb b/spec/validators/date_time_string_validator_spec.rb index a4b5d7a468..17539a42ab 100644 --- a/spec/validators/date_time_string_validator_spec.rb +++ b/spec/validators/date_time_string_validator_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe DateTimeStringValidator do +RSpec.describe DateTimeStringValidator do describe "internationalization" do it "has translation for NOT_STRING_ERROR" do expect(described_class.not_string_error).not_to be_blank diff --git a/spec/validators/integer_array_validator_spec.rb b/spec/validators/integer_array_validator_spec.rb index 0643d02806..fc447f7df2 100644 --- a/spec/validators/integer_array_validator_spec.rb +++ b/spec/validators/integer_array_validator_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe IntegerArrayValidator do +RSpec.describe IntegerArrayValidator do describe "internationalization" do it "has translation for NOT_ARRAY_ERROR" do expect(described_class.not_array_error).not_to be_blank diff --git a/spec/views/admin/products_v3/_filters.html.haml_spec.rb b/spec/views/admin/products_v3/_filters.html.haml_spec.rb index b9ae7725c2..7eff206b7e 100644 --- a/spec/views/admin/products_v3/_filters.html.haml_spec.rb +++ b/spec/views/admin/products_v3/_filters.html.haml_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "admin/products_v3/_filters.html.haml" do +RSpec.describe "admin/products_v3/_filters.html.haml" do subject { render } let(:locals) do diff --git a/spec/views/checkout/_voucher_section.html.haml_spec.rb b/spec/views/checkout/_voucher_section.html.haml_spec.rb index 36aa3e0776..f60d80d03b 100644 --- a/spec/views/checkout/_voucher_section.html.haml_spec.rb +++ b/spec/views/checkout/_voucher_section.html.haml_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "checkout/_voucher_section.html.haml" do +RSpec.describe "checkout/_voucher_section.html.haml" do let(:order) { create(:order_with_distributor, total: 10) } let(:flat_voucher) { create(:voucher_flat_rate, code: "flat_code", diff --git a/spec/views/layouts/darkswarm.html.haml_spec.rb b/spec/views/layouts/darkswarm.html.haml_spec.rb index 8cf60679df..286f301a94 100644 --- a/spec/views/layouts/darkswarm.html.haml_spec.rb +++ b/spec/views/layouts/darkswarm.html.haml_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "layouts/darkswarm.html.haml" do +RSpec.describe "layouts/darkswarm.html.haml" do helper InjectionHelper helper I18nHelper helper ShopHelper diff --git a/spec/views/layouts/registration.html.haml_spec.rb b/spec/views/layouts/registration.html.haml_spec.rb index 9beac670a7..07eac91486 100644 --- a/spec/views/layouts/registration.html.haml_spec.rb +++ b/spec/views/layouts/registration.html.haml_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "layouts/registration.html.haml" do +RSpec.describe "layouts/registration.html.haml" do helper InjectionHelper helper I18nHelper helper ShopHelper diff --git a/spec/views/spree/admin/orders/edit.html.haml_spec.rb b/spec/views/spree/admin/orders/edit.html.haml_spec.rb index 9376b9188e..644af45b88 100644 --- a/spec/views/spree/admin/orders/edit.html.haml_spec.rb +++ b/spec/views/spree/admin/orders/edit.html.haml_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "spree/admin/orders/edit.html.haml" do +RSpec.describe "spree/admin/orders/edit.html.haml" do helper Spree::BaseHelper # required to make pretty_time work helper Spree::Admin::NavigationHelper helper Admin::InjectionHelper diff --git a/spec/views/spree/admin/orders/index.html.haml_spec.rb b/spec/views/spree/admin/orders/index.html.haml_spec.rb index 04641e5159..c28da03214 100644 --- a/spec/views/spree/admin/orders/index.html.haml_spec.rb +++ b/spec/views/spree/admin/orders/index.html.haml_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "spree/admin/orders/index.html.haml" do +RSpec.describe "spree/admin/orders/index.html.haml" do helper Spree::Admin::NavigationHelper helper EnterprisesHelper diff --git a/spec/views/spree/admin/orders/invoice.html.haml_spec.rb b/spec/views/spree/admin/orders/invoice.html.haml_spec.rb index c76950e869..a49b25d426 100644 --- a/spec/views/spree/admin/orders/invoice.html.haml_spec.rb +++ b/spec/views/spree/admin/orders/invoice.html.haml_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "spree/admin/orders/invoice.html.haml" do +RSpec.describe "spree/admin/orders/invoice.html.haml" do let(:shop) { create(:distributor_enterprise) } let(:order) { create(:completed_order_with_totals, distributor: shop) } let(:adas_address) do diff --git a/spec/views/spree/admin/payment_methods/index.html.haml_spec.rb b/spec/views/spree/admin/payment_methods/index.html.haml_spec.rb index e5f1f2def3..95ee8a0ab5 100644 --- a/spec/views/spree/admin/payment_methods/index.html.haml_spec.rb +++ b/spec/views/spree/admin/payment_methods/index.html.haml_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "spree/admin/payment_methods/index.html.haml" do +RSpec.describe "spree/admin/payment_methods/index.html.haml" do include AuthenticationHelper helper Spree::Admin::NavigationHelper helper Spree::Admin::BaseHelper diff --git a/spec/views/spree/orders/edit.html.haml_spec.rb b/spec/views/spree/orders/edit.html.haml_spec.rb index 421d7c535b..cb1186592b 100644 --- a/spec/views/spree/orders/edit.html.haml_spec.rb +++ b/spec/views/spree/orders/edit.html.haml_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "spree/orders/edit.html.haml" do +RSpec.describe "spree/orders/edit.html.haml" do helper InjectionHelper helper ShopHelper helper ApplicationHelper diff --git a/spec/views/spree/orders/show.html.haml_spec.rb b/spec/views/spree/orders/show.html.haml_spec.rb index 6ce839a6e8..a1d238f472 100644 --- a/spec/views/spree/orders/show.html.haml_spec.rb +++ b/spec/views/spree/orders/show.html.haml_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "spree/orders/show.html.haml" do +RSpec.describe "spree/orders/show.html.haml" do helper InjectionHelper helper ShopHelper helper ApplicationHelper diff --git a/spec/views/spree/shared/_order_details.html.haml_spec.rb b/spec/views/spree/shared/_order_details.html.haml_spec.rb index 0224bdc37a..3acc484f0e 100644 --- a/spec/views/spree/shared/_order_details.html.haml_spec.rb +++ b/spec/views/spree/shared/_order_details.html.haml_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "spree/shared/_order_details.html.haml" do +RSpec.describe "spree/shared/_order_details.html.haml" do include AuthenticationHelper helper Spree::BaseHelper helper CheckoutHelper From 8362c4a7bda8a263f44e52ea1e31f9851744ad1a Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 9 May 2024 11:16:48 +1000 Subject: [PATCH 105/319] Detailed output when running only one spec file --- spec/base_spec_helper.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb index bfa70791e5..11e2fae0ee 100644 --- a/spec/base_spec_helper.rb +++ b/spec/base_spec_helper.rb @@ -129,6 +129,16 @@ RSpec.configure do |config| # https://rspec.info/features/3-12/rspec-core/configuration/zero-monkey-patching-mode/ config.disable_monkey_patching! + # Many RSpec users commonly either run the entire suite or an individual + # file, and it's useful to allow more verbose output when running an + # individual spec file. + if config.files_to_run.one? + # Use the documentation formatter for detailed output, + # unless a formatter has already been configured + # (e.g. via a command-line flag). + config.default_formatter = "doc" + end + # Reset locale for all specs. config.around(:each) do |example| I18n.with_locale(:en) { example.run } From c84be2f396ed49a6ebbbabcb391262bcd1e1f337 Mon Sep 17 00:00:00 2001 From: Arun Guleria Date: Thu, 9 May 2024 15:12:03 +0530 Subject: [PATCH 106/319] 12372-Add missing translation page titles --- app/views/spree/admin/shared/_head.html.haml | 2 +- config/locales/en.yml | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/views/spree/admin/shared/_head.html.haml b/app/views/spree/admin/shared/_head.html.haml index 97336242ce..cd1fa4cda3 100644 --- a/app/views/spree/admin/shared/_head.html.haml +++ b/app/views/spree/admin/shared/_head.html.haml @@ -7,7 +7,7 @@ - if content_for? :html_title = yield :html_title - else - = t(controller.controller_name, :default => controller.controller_name.titleize) + = t("spree.admin.tab.#{controller.controller_name}", :default => controller.controller_name.titleize) = " - OFN #{t(:administration)}" %link{:href => "https://fonts.googleapis.com/css?family=Open+Sans:400italic,600italic,400,600&subset=latin,cyrillic,greek,vietnamese", :rel => "stylesheet", :type => "text/css"} diff --git a/config/locales/en.yml b/config/locales/en.yml index 46197090c0..7f72fa3f1a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -4174,6 +4174,10 @@ See the %{link} to find out more about %{sitename}'s features and to start using customers: "Customers" groups: "Groups" oidc_settings: "OIDC Settings" + overview: "Overview" + product_import: "Import" + enterprise_roles: "Roles" + payment_methods: "Payment Methods" product_properties: index: inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)" From 50ab72a8187cf8e1b863c3f5200e251c96e58487 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 9 May 2024 09:56:24 +0000 Subject: [PATCH 107/319] chore(deps): bump newrelic_rpm from 9.8.0 to 9.9.0 Bumps [newrelic_rpm](https://github.com/newrelic/newrelic-ruby-agent) from 9.8.0 to 9.9.0. - [Release notes](https://github.com/newrelic/newrelic-ruby-agent/releases) - [Changelog](https://github.com/newrelic/newrelic-ruby-agent/blob/dev/CHANGELOG.md) - [Commits](https://github.com/newrelic/newrelic-ruby-agent/compare/9.8.0...9.9.0) --- updated-dependencies: - dependency-name: newrelic_rpm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 74cb8d7290..153da78854 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -436,7 +436,7 @@ GEM timeout net-smtp (0.5.0) net-protocol - newrelic_rpm (9.8.0) + newrelic_rpm (9.9.0) nio4r (2.7.0) nokogiri (1.16.4) mini_portile2 (~> 2.8.2) From ae8f2bfdc4785a4900518fca574983ff1aeb2f69 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 9 May 2024 09:59:00 +0000 Subject: [PATCH 108/319] chore(deps-dev): bump rubocop from 1.63.2 to 1.63.5 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.63.2 to 1.63.5. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.63.2...v1.63.5) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 74cb8d7290..2c89f6dcf3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -651,7 +651,7 @@ GEM rswag-ui (2.13.0) actionpack (>= 3.1, < 7.2) railties (>= 3.1, < 7.2) - rubocop (1.63.2) + rubocop (1.63.5) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) From 40b2361572e25a1dcb3d2c1288070b5bf7842343 Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Thu, 9 May 2024 14:38:21 +0100 Subject: [PATCH 109/319] add LogDestroyPerformer concern to be included in models where we want log destroy action --- app/models/concerns/log_destroy_performer.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 app/models/concerns/log_destroy_performer.rb diff --git a/app/models/concerns/log_destroy_performer.rb b/app/models/concerns/log_destroy_performer.rb new file mode 100644 index 0000000000..298e0e5012 --- /dev/null +++ b/app/models/concerns/log_destroy_performer.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +require 'active_support/concern' + +module LogDestroyPerformer + extend ActiveSupport::Concern + included do + attr_accessor :destroyed_by + after_destroy :log_who_destroyed + + def log_who_destroyed + return if destroyed_by.nil? + + Rails.logger.info "#{self.class} #{id} deleted by #{destroyed_by.id}" + end + end +end From b5fe19cb7d897f31844c0e08eac05a1b82916927 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Wed, 8 May 2024 13:47:47 +0500 Subject: [PATCH 110/319] 11058: add specs --- .../admin/products_v3/_content.html.haml | 2 +- .../system/admin/products_v3/products_spec.rb | 27 +++++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/app/views/admin/products_v3/_content.html.haml b/app/views/admin/products_v3/_content.html.haml index e605fdd8b3..0a9459abae 100644 --- a/app/views/admin/products_v3/_content.html.haml +++ b/app/views/admin/products_v3/_content.html.haml @@ -1,5 +1,5 @@ %turbo-frame#products-content{ target: "_top", refresh: "morph" } - .spinner-overlay.hidden + .spinner-overlay{ "data-controller": "loading", "data-products-target": "loading", class: "hidden" } .spinner-container .spinner = t('.loading') diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 0eff69cde8..5f332407bb 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -26,13 +26,14 @@ describe 'As an enterprise user, I can manage my products', feature: :admin_styl describe "sorting" do let!(:product_b) { create(:simple_product, name: "Bananas") } let!(:product_a) { create(:simple_product, name: "Apples") } + let(:products_table) { "table.products" } before do visit admin_products_url end - it "Should sort products alphabetically by default" do - within "table.products" do + it "Should sort products alphabetically by default in ascending order" do + within products_table do # Gather input values, because page.content doesn't include them. input_content = page.find_all('input[type=text]').map(&:value).join @@ -40,6 +41,28 @@ describe 'As an enterprise user, I can manage my products', feature: :admin_styl expect(input_content).to match /Apples.*Bananas/ end end + + context "when clicked on 'Name' column header" do + it "Should sort products alphabetically in descending/ascending order" do + within products_table do + name_header = page.find('th > a[data-column="name"]') + + # Sort in descending order + name_header.click + expect(page).to have_content("Name ▼") # this indicates the re-sorted content has loaded + + input_content = page.find_all('input[type=text]').map(&:value).join + expect(input_content).to match /Bananas.*Apples/ + + # Sort in ascending order + name_header.click + expect(page).to have_content("Name ▲") # this indicates the re-sorted content has loaded + + input_content = page.find_all('input[type=text]').map(&:value).join + expect(input_content).to match /Apples.*Bananas/ + end + end + end end describe "pagination" do From bc27e4bbddaa77645d935290b680fc1232f0c22d Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 10 May 2024 08:56:06 +1000 Subject: [PATCH 111/319] Re-instate spec which uses invalid mocking I removed it because it needed a complete rewrite and I didn't think it was valuable enough to do so. But now that I deactivated RSpecs validating mocks again, this spec passes and we can do that work another time. --- spec/models/spree/order/state_machine_spec.rb | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/spec/models/spree/order/state_machine_spec.rb b/spec/models/spree/order/state_machine_spec.rb index 69908b781e..b0a03d17eb 100644 --- a/spec/models/spree/order/state_machine_spec.rb +++ b/spec/models/spree/order/state_machine_spec.rb @@ -159,4 +159,44 @@ RSpec.describe Spree::Order do end end end + + # Another regression test for Spree #729 + context "#resume" do + context "resets payment state" do + let!(:variant) { build(:variant) } + before do + allow(order).to receive_messages email: "user@spreecommerce.com" + allow(order).to receive_messages allow_cancel?: true + allow(order).to receive_messages allow_resume?: true + allow(order).to receive_messages line_items: + [build(:line_item, variant:, quantity: 2)] + allow(order.line_items).to receive_messages find_by_variant_id: order.line_items.first + order.update(total: 10) + order.cancel! + end + + it "should set payment state to 'balance due'" do + expect { + order.resume! + order.reload + }.to change { order.payment_state }.to("balance_due") + end + + it "should set payment state to 'paid'" do + expect { + order.update(payment_total: 10) + order.resume! + order.reload + }.to change { order.payment_state }.to("paid") + end + + it "should set payment state to 'credit owed'" do + expect { + order.update(payment_total: 20) + order.resume! + order.reload + }.to change { order.payment_state }.to("credit_owed") + end + end + end end From 881da0f9ac8665bd3e46fbbebc803276551ee1c2 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 10 May 2024 04:05:29 +0500 Subject: [PATCH 112/319] 11058: add get_all_input_values --- spec/system/admin/products_v3/products_spec.rb | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 5f332407bb..1cddd3d42c 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -34,11 +34,8 @@ describe 'As an enterprise user, I can manage my products', feature: :admin_styl it "Should sort products alphabetically by default in ascending order" do within products_table do - # Gather input values, because page.content doesn't include them. - input_content = page.find_all('input[type=text]').map(&:value).join - # Products are in correct order. - expect(input_content).to match /Apples.*Bananas/ + expect(all_input_values).to match /Apples.*Bananas/ end end @@ -50,16 +47,12 @@ describe 'As an enterprise user, I can manage my products', feature: :admin_styl # Sort in descending order name_header.click expect(page).to have_content("Name ▼") # this indicates the re-sorted content has loaded - - input_content = page.find_all('input[type=text]').map(&:value).join - expect(input_content).to match /Bananas.*Apples/ + expect(all_input_values).to match /Bananas.*Apples/ # Sort in ascending order name_header.click expect(page).to have_content("Name ▲") # this indicates the re-sorted content has loaded - - input_content = page.find_all('input[type=text]').map(&:value).join - expect(input_content).to match /Apples.*Bananas/ + expect(all_input_values).to match /Apples.*Bananas/ end end end @@ -1199,4 +1192,8 @@ describe 'As an enterprise user, I can manage my products', feature: :admin_styl Spree::TaxCategory .pluck(:name).sample end + + def all_input_values + page.find_all('input[type=text]').map(&:value).join + end end From 3e9ca641ce6e8003c4bc7b150cf4d7ec67153e70 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 10 May 2024 10:18:08 +1000 Subject: [PATCH 113/319] Update all locales with the latest Transifex translations --- config/locales/ar.yml | 4 ++++ config/locales/ca.yml | 4 ++++ config/locales/cy.yml | 4 ++++ config/locales/de_CH.yml | 4 ++++ config/locales/de_DE.yml | 4 ++++ config/locales/el.yml | 4 ++++ config/locales/en_AU.yml | 13 +++++++++++++ config/locales/en_BE.yml | 4 ++++ config/locales/en_CA.yml | 17 +++++++++-------- config/locales/en_DE.yml | 4 ++++ config/locales/en_FR.yml | 5 +++++ config/locales/en_GB.yml | 4 ++++ config/locales/en_IE.yml | 4 ++++ config/locales/en_IN.yml | 4 ++++ config/locales/en_NZ.yml | 4 ++++ config/locales/en_PH.yml | 4 ++++ config/locales/en_US.yml | 4 ++++ config/locales/en_ZA.yml | 4 ++++ config/locales/es.yml | 4 ++++ config/locales/es_CO.yml | 4 ++++ config/locales/es_CR.yml | 4 ++++ config/locales/es_US.yml | 4 ++++ config/locales/fil_PH.yml | 4 ++++ config/locales/fr.yml | 5 +++++ config/locales/fr_BE.yml | 26 ++++++++++++++++++++++---- config/locales/fr_CA.yml | 4 ++++ config/locales/fr_CH.yml | 4 ++++ config/locales/fr_CM.yml | 4 ++++ config/locales/hi.yml | 4 ++++ config/locales/hu.yml | 4 ++++ config/locales/it.yml | 4 ++++ config/locales/it_CH.yml | 4 ++++ config/locales/ko.yml | 4 ++++ config/locales/ml.yml | 4 ++++ config/locales/mr.yml | 3 +++ config/locales/nb.yml | 28 ++++++++++++++++++++++++++++ config/locales/nl_BE.yml | 4 ++++ config/locales/pa.yml | 4 ++++ config/locales/pl.yml | 4 ++++ config/locales/pt.yml | 4 ++++ config/locales/pt_BR.yml | 4 ++++ config/locales/ru.yml | 4 ++++ config/locales/sv.yml | 4 ++++ config/locales/tr.yml | 4 ++++ config/locales/uk.yml | 4 ++++ 45 files changed, 237 insertions(+), 12 deletions(-) diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 9f2d3b657d..225992f8db 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -710,6 +710,10 @@ ar: close: عودة variant_row: none_tax_category: لا شيء + category_field_name: "الفئة" + tax_category_field_name: "الفئة الضريبية" + product_row: + producer_field_name: "المنتج" product_import: title: استيراد المنتج file_not_found: لم يتم العثور على الملف أو تعذر فتحه diff --git a/config/locales/ca.yml b/config/locales/ca.yml index f52b4f50f2..3ed08a8b08 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -776,6 +776,10 @@ ca: close: Enrere variant_row: none_tax_category: Cap + category_field_name: "Categoria" + tax_category_field_name: "Categoria d'impostos" + product_row: + producer_field_name: "Productora" product_import: title: Importació de productes file_not_found: No s'ha trobat el fitxer o no s'ha pogut obrir diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 436e7013f8..7c34b24325 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -816,6 +816,10 @@ cy: error: Yn methu dileu’r amrywiolyn variant_row: none_tax_category: Dim + category_field_name: "Categori" + tax_category_field_name: "Categori Treth" + product_row: + producer_field_name: "Cynhyrchydd" product_import: title: Mewnforio Cynnyrch file_not_found: Ni ddaethpwyd o hyd i ffeil neu ni ellid ei hagor diff --git a/config/locales/de_CH.yml b/config/locales/de_CH.yml index e58546e8f7..6bed1a6bcb 100644 --- a/config/locales/de_CH.yml +++ b/config/locales/de_CH.yml @@ -701,6 +701,10 @@ de_CH: close: Zurück variant_row: none_tax_category: Keine + category_field_name: "Kategorie" + tax_category_field_name: "Steuerkategorie" + product_row: + producer_field_name: "Produzent" product_import: title: Produkte importieren file_not_found: Die Datei konnte nicht gefunden oder nicht geöffnet werden. diff --git a/config/locales/de_DE.yml b/config/locales/de_DE.yml index 064ddb5d88..b30882e2d1 100644 --- a/config/locales/de_DE.yml +++ b/config/locales/de_DE.yml @@ -798,6 +798,10 @@ de_DE: close: Zurück variant_row: none_tax_category: Nichts + category_field_name: "Kategorie" + tax_category_field_name: "Steuerkategorie" + product_row: + producer_field_name: "Produzent" product_import: title: Produkte importieren file_not_found: Die Datei konnte nicht gefunden oder nicht geöffnet werden. diff --git a/config/locales/el.yml b/config/locales/el.yml index a9839113af..cb07ce25c9 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -596,6 +596,10 @@ el: close: Πίσω variant_row: none_tax_category: Κανένας + category_field_name: "Κατηγορία" + tax_category_field_name: "Φορολογική Κατηγορία" + product_row: + producer_field_name: "Παραγωγός" product_import: title: Είσαγωγή Προϊόντος file_not_found: Το αρχείο δεν βρέθηκε ή δεν μπόρεσε να φορτωθεί diff --git a/config/locales/en_AU.yml b/config/locales/en_AU.yml index e6628fa412..09f74df1b0 100644 --- a/config/locales/en_AU.yml +++ b/config/locales/en_AU.yml @@ -560,6 +560,10 @@ en_AU: close: Back variant_row: none_tax_category: None + category_field_name: "Category" + tax_category_field_name: "Tax Category" + product_row: + producer_field_name: "Producer" product_import: title: Product Import file_not_found: File not found or could not be opened @@ -941,7 +945,16 @@ en_AU: customers: Customer active: Active? connected_apps: + tagline: "By clicking ‘Allow data sharing’, you are sharing data between Open Food Network and the Discover Regenerative Portal, and agreeing to make specific data public on the Portal, which will also be publicly available on the API.\nIMPORTANT: Before you stop sharing and remove your listing, please first contact hello@regenerative.org.au to request a copy of your Discover Regenerative data." loading: "Loading" + description_html: | +

+ Discover Regenerative is a showcase of Australia’s Regenerative Farmers, their produce/products, outcomes and achievements. It simplifies how business-to-business (B2B) / wholesale buyers can find regenerative produce and directly connect with Producers. +

+

+ Visit Discover Regenerative + +

actions: edit_profile: Settings properties: Properties diff --git a/config/locales/en_BE.yml b/config/locales/en_BE.yml index a2f979e1c9..bf07d764ef 100644 --- a/config/locales/en_BE.yml +++ b/config/locales/en_BE.yml @@ -521,6 +521,10 @@ en_BE: close: Back variant_row: none_tax_category: None + category_field_name: "Category" + tax_category_field_name: "Tax Category" + product_row: + producer_field_name: "Producer" product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_CA.yml b/config/locales/en_CA.yml index ab0b04ea2f..1c1debf042 100644 --- a/config/locales/en_CA.yml +++ b/config/locales/en_CA.yml @@ -228,7 +228,7 @@ en_CA: customer_instructions: "Customer instructions" additional_information: "Additional information" connect_app: - url: "https://n8n.opernfoodnetwork.org/webhook-test/regen-CAN/connect-enterprise" + url: "https://n8n.openfoodnetwork.org/webhook/foodjustice/connect-enterprise" devise: passwords: spree_user: @@ -835,6 +835,10 @@ en_CA: error: Unable to delete the variant variant_row: none_tax_category: None + category_field_name: "Category" + tax_category_field_name: "Tax Category" + product_row: + producer_field_name: "Producer" product_import: title: Product Import file_not_found: File not found or could not be opened @@ -1283,15 +1287,12 @@ en_CA: Add or update information on your Discover Regenerative listing here. link_label: "Manage listing" description_html: | -

- Eligible producers can showcase their regenerative credentials, - farming practices, and more through a profile listing. - This simplifies how buyers can find regenerative products and connect - with producers of interest. +

+ Eligible producers can showcase call to actions to Volunteer Local, Buy Local, or Donate Local. + This simplifies how producers can connect in the Waterloo region around food justice and sovereignty.

- Learn more about Discover Regenerative + Learn more about the Waterloo Food Commons Project

actions: diff --git a/config/locales/en_DE.yml b/config/locales/en_DE.yml index 5e47128d6c..33fbc01816 100644 --- a/config/locales/en_DE.yml +++ b/config/locales/en_DE.yml @@ -526,6 +526,10 @@ en_DE: close: Back variant_row: none_tax_category: None + category_field_name: "Category" + tax_category_field_name: "Tax Category" + product_row: + producer_field_name: "Producer" product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_FR.yml b/config/locales/en_FR.yml index c25c625256..09934e54af 100644 --- a/config/locales/en_FR.yml +++ b/config/locales/en_FR.yml @@ -840,6 +840,11 @@ en_FR: error: Unable to delete the variant variant_row: none_tax_category: None + search_for_tax_categories: "Search for tax categories" + category_field_name: "Category" + tax_category_field_name: "Tax Category" + product_row: + producer_field_name: "Producer" product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_GB.yml b/config/locales/en_GB.yml index 1aed19905f..13fb294647 100644 --- a/config/locales/en_GB.yml +++ b/config/locales/en_GB.yml @@ -823,6 +823,10 @@ en_GB: error: Unable to delete the variant variant_row: none_tax_category: None + category_field_name: "Category" + tax_category_field_name: "Tax Category" + product_row: + producer_field_name: "Producer" product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_IE.yml b/config/locales/en_IE.yml index 420828cb65..094b48b1d1 100644 --- a/config/locales/en_IE.yml +++ b/config/locales/en_IE.yml @@ -825,6 +825,10 @@ en_IE: error: Unable to delete the variant variant_row: none_tax_category: None + category_field_name: "Category" + tax_category_field_name: "Tax Category" + product_row: + producer_field_name: "Producer" product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_IN.yml b/config/locales/en_IN.yml index defbf532a8..16c2f6c5d6 100644 --- a/config/locales/en_IN.yml +++ b/config/locales/en_IN.yml @@ -544,6 +544,10 @@ en_IN: close: Back variant_row: none_tax_category: None + category_field_name: "Category" + tax_category_field_name: "Tax Category" + product_row: + producer_field_name: "Producer" product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_NZ.yml b/config/locales/en_NZ.yml index 5bb263a7d7..f8ee0a5d0b 100644 --- a/config/locales/en_NZ.yml +++ b/config/locales/en_NZ.yml @@ -697,6 +697,10 @@ en_NZ: close: Back variant_row: none_tax_category: None + category_field_name: "Category" + tax_category_field_name: "Tax Category" + product_row: + producer_field_name: "Producer" product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_PH.yml b/config/locales/en_PH.yml index e68b07cbce..a558cc2c4f 100644 --- a/config/locales/en_PH.yml +++ b/config/locales/en_PH.yml @@ -536,6 +536,10 @@ en_PH: close: Back variant_row: none_tax_category: None + category_field_name: "Category" + tax_category_field_name: "Tax Category" + product_row: + producer_field_name: "Producer" product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_US.yml b/config/locales/en_US.yml index c142968b87..24ac519e15 100644 --- a/config/locales/en_US.yml +++ b/config/locales/en_US.yml @@ -675,6 +675,10 @@ en_US: close: Back variant_row: none_tax_category: None + category_field_name: "Category" + tax_category_field_name: "Tax Category" + product_row: + producer_field_name: "Producer" product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/en_ZA.yml b/config/locales/en_ZA.yml index af98a884f4..fa729e7731 100644 --- a/config/locales/en_ZA.yml +++ b/config/locales/en_ZA.yml @@ -540,6 +540,10 @@ en_ZA: close: Back variant_row: none_tax_category: None + category_field_name: "Category" + tax_category_field_name: "Tax Category" + product_row: + producer_field_name: "Producer" product_import: title: Product Import file_not_found: File not found or could not be opened diff --git a/config/locales/es.yml b/config/locales/es.yml index 186cd6fb59..ef3d731d4c 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -716,6 +716,10 @@ es: close: Atrás variant_row: none_tax_category: Ninguno + category_field_name: "Categoría" + tax_category_field_name: "Categoría de impuestos" + product_row: + producer_field_name: "Productora" product_import: title: Importación de productos file_not_found: Archivo no encontrado o no se pudo abrir diff --git a/config/locales/es_CO.yml b/config/locales/es_CO.yml index 319a49bdfa..b421414c80 100644 --- a/config/locales/es_CO.yml +++ b/config/locales/es_CO.yml @@ -564,6 +564,10 @@ es_CO: close: Atrás variant_row: none_tax_category: Ninguno + category_field_name: "Categoría" + tax_category_field_name: "Categoría de impuestos" + product_row: + producer_field_name: "Productor" product_import: title: Importe de producto file_not_found: Archivo no encontrado o no se pudo abrir diff --git a/config/locales/es_CR.yml b/config/locales/es_CR.yml index 57853eb640..e921f2e256 100644 --- a/config/locales/es_CR.yml +++ b/config/locales/es_CR.yml @@ -701,6 +701,10 @@ es_CR: close: Atrás variant_row: none_tax_category: Ninguno + category_field_name: "Categoría" + tax_category_field_name: "Categoría de impuestos" + product_row: + producer_field_name: "Productor" product_import: title: Importe de producto file_not_found: Archivo no encontrado o no se pudo abrir diff --git a/config/locales/es_US.yml b/config/locales/es_US.yml index 34c37eb84d..7669745129 100644 --- a/config/locales/es_US.yml +++ b/config/locales/es_US.yml @@ -673,6 +673,10 @@ es_US: close: Atrás variant_row: none_tax_category: Ninguno + category_field_name: "Categoría" + tax_category_field_name: "Categoría del impuesto" + product_row: + producer_field_name: "Productora" product_import: title: Importación de productos file_not_found: Archivo no encontrado o no se pudo abrir diff --git a/config/locales/fil_PH.yml b/config/locales/fil_PH.yml index fc3ab8ef4f..95d65bfc91 100644 --- a/config/locales/fil_PH.yml +++ b/config/locales/fil_PH.yml @@ -537,6 +537,10 @@ fil_PH: close: bumalik variant_row: none_tax_category: wala + category_field_name: "kategorya" + tax_category_field_name: "kategorya ng tax" + product_row: + producer_field_name: "Producer" product_import: title: paglipat ng produkto file_not_found: 'ang file ay hindi mahanap o mabuksan ' diff --git a/config/locales/fr.yml b/config/locales/fr.yml index b0b0e28e7f..f5dbd08ea0 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -840,6 +840,11 @@ fr: error: La variante n'a pas pu être supprimée variant_row: none_tax_category: Aucun + search_for_tax_categories: "Chercher les catégories de taxes" + category_field_name: "Catégorie" + tax_category_field_name: "TVA applicable" + product_row: + producer_field_name: "Producteur" product_import: title: Import liste produits file_not_found: Fichier non trouvé ou impossible à ouvrir diff --git a/config/locales/fr_BE.yml b/config/locales/fr_BE.yml index 69bded03f7..a138696097 100644 --- a/config/locales/fr_BE.yml +++ b/config/locales/fr_BE.yml @@ -95,6 +95,7 @@ fr_BE: on_demand_but_count_on_hand_set: "doit être vide si à la demande" limited_stock_but_no_count_on_hand: "doit être spécifié car le stock limité est forcé" messages: + confirmation: "ne correspond pas à %{attribute}" blank: "Champ obligatoire" errors: messages: @@ -113,7 +114,7 @@ fr_BE: dimension_width_equal_to: "la largeur doit être égale au pixel %{length} ." dimension_height_equal_to: "la hauteur doit être égale au pixel %{length} ." aspect_ratio_not_square: "doit être une image carrée" - aspect_ratio_not_portrait: "doit être une image de portrait" + aspect_ratio_not_portrait: "doit être une image en format portrait" aspect_ratio_not_landscape: "doit être une image en format paysage" aspect_ratio_is_not: "doit avoir un rapport hauteur / largeur de %{aspect_ratio}" aspect_ratio_unknown: "a un rapport hauteur/largeur inconnu" @@ -215,6 +216,7 @@ fr_BE: signed_up_but_unconfirmed: "Un message avec un lien de confirmation a été envoyé à l'adresse email indiquée. Veuillez cliquer sur ce lien pour activer votre compte." unknown_error: "Une erreur s'est glissée lors de la création de votre compte. Vérifiez votre adresse email et recommencez." failure: + disabled: "Votre compte a été désactivé. Veuillez contacter un administrateur pour résoudre ce problème." invalid: | Email / mot de passe incorrect. Créez votre compte ou réinitialisez votre mot de passe. @@ -234,6 +236,8 @@ fr_BE: models: order_cycle: cloned_order_cycle_name: "Copie de %{order_cycle}" + tax_rate: + included_in_price: "Inclus dans le prix" open_street_map_enabled: "Open Street Map activé" resume_order: "Reprendre la commande" sku: "Référence produit" @@ -272,6 +276,8 @@ fr_BE: report_ready: subject: "Rapport prêt" heading: "Rapport prêt à télécharger" + intro: | + Le lien ci-dessous expirera après une semaine. shipment_mailer: shipped_email: dear_customer: "Cher Client," @@ -406,7 +412,7 @@ fr_BE: copy: Copier change_my_password: "Changer mon mot de passe" update_password: "Mise à jour du mot de passe" - password_confirmation: confirmation du mot de passe + password_confirmation: Confirmation du mot de passe reset_password_token: Réinitialisation du mot de passe expired: a expiré, veuillez en demander un nouveau back_to_payments_list: "Retour à la liste des paiements" @@ -448,6 +454,7 @@ fr_BE: name: Nom unit: Unité unit_value: Valeur unitaire + display_as: Unité d'affichage comme price: Prix producer: Producteur·trice category: Catégorie @@ -588,6 +595,7 @@ fr_BE: matomo_tag_manager_url: "URL de l'instance sur Matomo" info_html: "Matomo est un site web est une application mobile analytique . Vous pouvez heberger matomo sur place ou heberger dans le cloud. Voyez matomo.org pour plus d'information." config_instructions_html: "Pour utiliser Matomo, vous devez configurer l'intégration avec Open Food France. L'URL de l'instance sur Matomo correspond à l'url du site internet visé par le suivi de la navigation utilisateur. Si le champ est vide, Matomo n'effectuera aucune analyse sur ce site. L'ID de l'instance sur Matomo n'est pas obligatoire, mais nécessaire si vous souhaitez analyser plusieurs sites web sur une seule instance Matomo. Cet ID peut être trouvé sur l'espace administrateur Matomo." + config_instructions_tag_manager_html: "La définition de l'URL de Matomo Tag Manager active la fonctionnalité \"Matomo Tag Manager\". Cet outil vous permet de configurer des événements d'analyse. L'URL de Matomo Tag Manager est copiée à partir de la section \"Code d'installation\" de Matomo Tag Manager. Assurez-vous de sélectionner le bon conteneur et le bon environnement, car ces options modifient l'URL." customers: index: new_customer: "Nouvel acheteur" @@ -704,6 +712,10 @@ fr_BE: close: Retour variant_row: none_tax_category: Aucun + category_field_name: "Catégorie" + tax_category_field_name: "TVA applicable" + product_row: + producer_field_name: "Producteur·trice" product_import: title: Import liste produits file_not_found: Fichier non trouvé ou impossible à ouvrir @@ -1580,6 +1592,8 @@ fr_BE: voucher_code: Code du bon d'achat voucher_amount: Quantité voucher_type: Type de bon d'achat + flat_rate: Montant fixe + percentage_rate: Pourcentage (%) controllers: enterprises: stripe_connect_cancelled: "La connexion avec Stripe a été annulée" @@ -2065,6 +2079,7 @@ fr_BE: producer_mail_order_text: "Voilà la liste et les quantités des produits commandés vous concernant:" producer_mail_delivery_instructions: "Modalités de livraison des produits:" producer_mail_signoff: "Merci et belle fin de journée!" + producer_mail_order_customer_text: "Voici un récapitulatif des commandes regroupées par clients" shopping_oc_closed: Le comptoir est actuellement fermé shopping_oc_closed_description: "Veuillez attendre l'ouverture du prochain cycle de vente (ou contactez directement le comptoir pour voir si nous pouvons accepter une commande tardive)." shopping_oc_last_closed: "Le dernier cycle de vente s'est terminé il y a %{distance_of_time}" @@ -2735,6 +2750,7 @@ fr_BE: report_header_total_tax: "Total TVA (%{currency_symbol})" report_header_total_excl_tax: "Total HT (%{currency_symbol})" report_header_total_incl_tax: "Total TTC (%{currency_symbol})" + report_header_total_orders: "Nombre total de commandes" report_header_enterprise: Entreprise report_header_enterprise_fee_name: Nom report_header_enterprise_fee_type: Catégorie @@ -3543,8 +3559,8 @@ fr_BE: amount: "Quantité" currency: "Devise" first_item: "Coût du premier article " - additional_item: "Coût d'objet supplémentaire" - max_items: "Articles maximum" + additional_item: "Coût supplémentaire par article" + max_items: "Nb d'articles maximum (au delà duquel il n'y a plus de coût supplémentaire)" minimal_amount: "Montant minimal" normal_amount: "Montant normal" discount_amount: "Montant de la remise" @@ -4151,6 +4167,8 @@ fr_BE: shipment: cannot_ready: "Impossible de préparer l'expédition." invalid_taxonomy_id: "Id taxonomique invalide." + unit: unité + per_unit: Montant par unité datetime: distance_in_words: about_x_hours: diff --git a/config/locales/fr_CA.yml b/config/locales/fr_CA.yml index b738838b16..efb8d0ae1b 100644 --- a/config/locales/fr_CA.yml +++ b/config/locales/fr_CA.yml @@ -837,6 +837,10 @@ fr_CA: error: La variante n'a pas pu être supprimée variant_row: none_tax_category: Aucun + category_field_name: "Catégorie" + tax_category_field_name: "Type de taxe" + product_row: + producer_field_name: "Producteur" product_import: title: import produit file_not_found: Fichier non trouvé ou impossible à ouvrir diff --git a/config/locales/fr_CH.yml b/config/locales/fr_CH.yml index a5045c145b..e4b9f946af 100644 --- a/config/locales/fr_CH.yml +++ b/config/locales/fr_CH.yml @@ -695,6 +695,10 @@ fr_CH: close: Retour variant_row: none_tax_category: Aucun + category_field_name: "Catégorie" + tax_category_field_name: "TVA applicable" + product_row: + producer_field_name: "Producteur" product_import: title: Import liste produits file_not_found: Fichier non trouvé ou impossible à ouvrir diff --git a/config/locales/fr_CM.yml b/config/locales/fr_CM.yml index 90fa1e0e5d..422036dd54 100644 --- a/config/locales/fr_CM.yml +++ b/config/locales/fr_CM.yml @@ -632,6 +632,10 @@ fr_CM: close: Retour variant_row: none_tax_category: Aucun + category_field_name: "Catégorie" + tax_category_field_name: "TVA applicable" + product_row: + producer_field_name: "Producteur" product_import: title: Import liste produits file_not_found: Fichier non trouvé ou impossible à ouvrir diff --git a/config/locales/hi.yml b/config/locales/hi.yml index ea85491012..a62c17e002 100644 --- a/config/locales/hi.yml +++ b/config/locales/hi.yml @@ -793,6 +793,10 @@ hi: close: वापस जाएं variant_row: none_tax_category: कोई नहीं + category_field_name: "श्रेणी" + tax_category_field_name: "टैक्स श्रेणी" + product_row: + producer_field_name: "उत्पादक" product_import: title: उत्पाद इम्पोर्ट करें file_not_found: फ़ाइल नहीं मिली या खोली नहीं जा सकी diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 33f3c16a2a..aad97f9268 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -727,6 +727,10 @@ hu: error: A változatot nem lehet törölni variant_row: none_tax_category: Egyik sem + category_field_name: "Kategória" + tax_category_field_name: "Adókategória" + product_row: + producer_field_name: "Termelő" product_import: title: Termék importálása file_not_found: A fájl nem található vagy nem nyitható meg diff --git a/config/locales/it.yml b/config/locales/it.yml index 636e775a4c..c2054d5162 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -731,6 +731,10 @@ it: close: Indietro variant_row: none_tax_category: Nessuno + category_field_name: "Categoria" + tax_category_field_name: "Categoria d'imposta" + product_row: + producer_field_name: "Produttore" product_import: title: Importa prodotto file_not_found: Documento non trovato o non disponibile diff --git a/config/locales/it_CH.yml b/config/locales/it_CH.yml index 863660181e..8fb4ddb9f2 100644 --- a/config/locales/it_CH.yml +++ b/config/locales/it_CH.yml @@ -673,6 +673,10 @@ it_CH: close: Indietro variant_row: none_tax_category: Nessuno + category_field_name: "Categoria" + tax_category_field_name: "Categoria di imposta" + product_row: + producer_field_name: "Produttore" product_import: title: Importa prodotto file_not_found: Documento non trovato o non disponibile diff --git a/config/locales/ko.yml b/config/locales/ko.yml index b72bbf167a..4208b1d1ee 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -696,6 +696,10 @@ ko: close: 뒤로 variant_row: none_tax_category: None + category_field_name: "목록" + tax_category_field_name: "세금 목록" + product_row: + producer_field_name: "제공자" product_import: title: 제품 가져오기 file_not_found: 파일을 찾을 수 없거나 열 수 없습니다. diff --git a/config/locales/ml.yml b/config/locales/ml.yml index bfae0e5e74..66bc82828b 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -798,6 +798,10 @@ ml: close: തിരികെ variant_row: none_tax_category: ഒന്നുമില്ല + category_field_name: "വിഭാഗം" + tax_category_field_name: "നികുതി വിഭാഗം" + product_row: + producer_field_name: "പ്രൊഡ്യൂസർ" product_import: title: ഉൽപ്പന്ന ഇറക്കുമതി file_not_found: ഫയൽ കണ്ടെത്തിയില്ല അല്ലെങ്കിൽ തുറക്കാൻ കഴിഞ്ഞില്ല diff --git a/config/locales/mr.yml b/config/locales/mr.yml index ab91bad32e..9396a2a5f3 100644 --- a/config/locales/mr.yml +++ b/config/locales/mr.yml @@ -787,6 +787,9 @@ mr: save: बदल जतन करा variant_row: none_tax_category: कोणतेही नाही + category_field_name: "श्रेणी" + product_row: + producer_field_name: "उत्पादक" product_import: title: उत्पादन आयात file_not_found: फाइल सापडली नाही किंवा उघडता आली नाही diff --git a/config/locales/nb.yml b/config/locales/nb.yml index b48fef1648..a777da2385 100644 --- a/config/locales/nb.yml +++ b/config/locales/nb.yml @@ -195,6 +195,9 @@ nb: transaction_not_allowed: "Kortet har blitt avvist av ukjent årsak." try_again_later: "Kortet har blitt avvist av ukjent årsak." withdrawal_count_limit_exceeded: "Kunden har overskredet saldoen eller kredittgrensen som er tilgjengelig på kortet sitt." + disconnect_failure: "Kunne ikke koble fra Stripe." + success_code: + disconnected: "Stripe-kontoen er koblet fra." activemodel: errors: messages: @@ -220,10 +223,16 @@ nb: not_available_to_shop: "er ikke tilgjengelig for %{shop}" card_details: "Kortdetaljer" card_type: "Korttype" + card_type_is: "Korttype er" + unrecognized_card_type: "Ukjent korttype" + use_new_cc: "Bruk et nytt kredittkort" + what_is_this: "Hva er dette?" cardholder_name: "Kortholders navn" community_forum_url: "URL for diskusjonsforum" customer_instructions: "Kundeinstruksjoner" additional_information: "Tilleggsinformasjon" + connect_app: + url: "https://n8n.openfoodnetwork.org/webhook/regen/connect-enterprise" devise: passwords: spree_user: @@ -513,8 +522,10 @@ nb: colums: Kolonner columns: name: Navn + unit_scale: Enhetsskala unit: Enhet unit_value: Enhetsverdi + display_as: Vis enhet som price: Pris producer: Produsent category: Kategori @@ -644,6 +655,7 @@ nb: status: Status ok: Ok instance_secret_key: Instans Secret Key + instance_publishable_key: Instans Publiserbar nøkkel account_id: Konto-ID business_name: Bedriftsnavn charges_enabled: Avgifter Aktivert @@ -696,6 +708,10 @@ nb: your_content: Ditt innhold user_guide: Brukermanual map: Kart + dfc_product_imports: + index: + title: "Importere en DFC-produktkatalog" + imported_products: "Importerte produkter:" enterprise_fees: index: title: "Bedriftsavgifter" @@ -824,6 +840,10 @@ nb: error: Kan ikke slette varianten variant_row: none_tax_category: Ingen + category_field_name: "Kategori" + tax_category_field_name: "Avgiftskategori" + product_row: + producer_field_name: "Produsent" product_import: title: Produktimport file_not_found: Filen ble ikke funnet eller kunne ikke åpnes @@ -866,7 +886,9 @@ nb: tax_categories: Avgiftskategorier shipping_categories: Fraktkategorier dfc_import_form: + title: "Importer fra DFC-katalogen" enterprise: "Bedrift" + catalog_url: "DFC-katalog-URL" import: "Import" import: review: Anmeldelse @@ -1176,6 +1198,7 @@ nb: open_date: "Åpningsdato" close_date: "Stengedato" display_ordering_in_shopfront: "Vis sortering i butikken:" + shopfront_sort_by_product: "Etter produkt" shopfront_sort_by_category: "Etter kategori" shopfront_sort_by_producer: "Etter produsent" shopfront_sort_by_category_placeholder: "Kategori" @@ -2482,6 +2505,7 @@ nb: orders_bought_already_confirmed: "* allerede bekreftet" orders_confirm_cancel: "Er du sikker på at du vil avbryte denne bestillingen?" order_processed_successfully: "Behandlingen av din bestilling var vellykket" + thank_you_for_your_order: "Takk for din bestilling" products_cart_distributor_choice: "Distributør for bestillingen:" products_cart_distributor_change: "Din distributør for denne ordren vil bli endret til %{name} hvis du legger til dette produktet i handlekurven din." products_cart_distributor_is: "Din distributør for denne ordren er %{name}." @@ -3703,6 +3727,7 @@ nb: editing_tax_category: "Redigering av avgiftskategori" editing_tax_rate: "Redigering av avgiftssats" editing_zone: "Redigeringssone" + editing_state: "Redigerer regioner" expiration: "Utløp" invalid_payment_provider: "Ugyldig betalingsleverandør" items_cannot_be_shipped: "Varer kan ikke sendes" @@ -3731,6 +3756,8 @@ nb: start_date: "Startdato" successfully_removed: "Fjernet OK" taxonomy_edit: "Rediger kategori" + taxonomy_tree_error: "Det oppsto en feil under oppdatering av kategoritreet." + taxonomy_tree_instruction: "Høyreklikk på et element for å legge til, gi nytt navn, fjerne eller redigere." tree: "Tre" updating: "Oppdaterer" your_order_is_empty_add_product: "Bestillingen din er tom, vennligst søk etter og legg til et produkt over" @@ -3739,6 +3766,7 @@ nb: resend: "Send på nytt" back_to_orders_list: "Tilbake til Bestillingsliste" back_to_payments_list: "Tilbake til betalingsliste" + back_to_states_list: "Tilbake til liste over regioner" return_authorizations: "Returautorisasjoner" cannot_create_returns: "Kan ikke opprette retur da denne bestillingen ikke har noen sendte elementer." select_stock: "Velg lager" diff --git a/config/locales/nl_BE.yml b/config/locales/nl_BE.yml index 3408ce4fcf..3b63a8680c 100644 --- a/config/locales/nl_BE.yml +++ b/config/locales/nl_BE.yml @@ -553,6 +553,10 @@ nl_BE: close: achterstevoren variant_row: none_tax_category: Geen enkele + category_field_name: "Categorie" + tax_category_field_name: "Belastingcategorie" + product_row: + producer_field_name: "Producent" product_import: title: Importeren van producten file_not_found: Bestand niet gevonden of kon niet worden geopend diff --git a/config/locales/pa.yml b/config/locales/pa.yml index 17c475a09c..412bef5dfa 100644 --- a/config/locales/pa.yml +++ b/config/locales/pa.yml @@ -777,6 +777,10 @@ pa: close: ਵਾਪਸ variant_row: none_tax_category: ਕੋਈ ਨਹੀਂ + category_field_name: "ਸ਼੍ਰੇਣੀ" + tax_category_field_name: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ" + product_row: + producer_field_name: "ਉਤਪਾਦਕ" product_import: title: ਉਤਪਾਦ ਦਾ ਇਮਪੋਰਟ file_not_found: ਫ਼ਾਈਲ ਨਹੀਂ ਮਿਲੀ ਜਾਂ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 27b3f86862..9cd451f840 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -527,6 +527,10 @@ pl: close: Wstecz variant_row: none_tax_category: Nic + category_field_name: "Kategoria" + tax_category_field_name: "Kategoria podatku" + product_row: + producer_field_name: "Producent" product_import: title: Import produktów file_not_found: Nie znaleziono pliku lub nie można go otworzyć diff --git a/config/locales/pt.yml b/config/locales/pt.yml index b455e6b372..9e32432617 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -589,6 +589,10 @@ pt: close: Voltar variant_row: none_tax_category: Nenhum + category_field_name: "Categoria" + tax_category_field_name: "Categoria de Imposto" + product_row: + producer_field_name: "Produtor/a" product_import: title: Importação de Produtos file_not_found: O ficheiro não foi encontrado ou não pôde ser aberto diff --git a/config/locales/pt_BR.yml b/config/locales/pt_BR.yml index f131cd74f3..870fd6fec4 100644 --- a/config/locales/pt_BR.yml +++ b/config/locales/pt_BR.yml @@ -630,6 +630,10 @@ pt_BR: close: Voltar variant_row: none_tax_category: Nenhum + category_field_name: "Categoria" + tax_category_field_name: "Categoria de taxa" + product_row: + producer_field_name: "Produtor" product_import: title: Importação de produtos file_not_found: O arquivo não foi encontrado ou não pôde ser aberto diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 7ea1f277c9..985dd74dad 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -833,6 +833,10 @@ ru: error: Невозможно удалить вариант variant_row: none_tax_category: Нет + category_field_name: "Категория" + tax_category_field_name: "Налоговая Категория" + product_row: + producer_field_name: "Производитель" product_import: title: Импорт Товара file_not_found: Файл не найден или не может быть открыт diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 3998252c9c..211f9a0674 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -329,6 +329,10 @@ sv: close: Backa variant_row: none_tax_category: Ingen + category_field_name: "Kategori" + tax_category_field_name: "Skattekategori" + product_row: + producer_field_name: "Producent" product_import: file_not_found: Filen hittades inte eller kunde inte öppnas no_data: Ingen data hittades i kalkylbladet diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 7b5641182c..fdd9c07361 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -614,6 +614,10 @@ tr: close: Geri variant_row: none_tax_category: SATIŞ YAPMIYOR + category_field_name: "Kategori" + tax_category_field_name: "Vergi Kategorisi" + product_row: + producer_field_name: "ÜRETİCİ" product_import: title: Ürün Aktarımı file_not_found: Dosya bulunamadı veya açılamadı diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 25145f6e86..1ae549f00e 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -699,6 +699,10 @@ uk: close: Назад variant_row: none_tax_category: Жодного + category_field_name: "Категорія" + tax_category_field_name: "Категорія податку" + product_row: + producer_field_name: "Виробник" product_import: title: Імпорт продукту file_not_found: Файл не знайдено або не вдалося відкрити From c8e94c66580126d563a48a18e35aa5900ec21548 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 09:41:51 +0000 Subject: [PATCH 114/319] chore(deps): bump i18n from 1.14.4 to 1.14.5 Bumps [i18n](https://github.com/ruby-i18n/i18n) from 1.14.4 to 1.14.5. - [Release notes](https://github.com/ruby-i18n/i18n/releases) - [Changelog](https://github.com/ruby-i18n/i18n/blob/master/CHANGELOG.md) - [Commits](https://github.com/ruby-i18n/i18n/compare/v1.14.4...v1.14.5) --- updated-dependencies: - dependency-name: i18n dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7b7cdfff53..c385f65bcd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -337,7 +337,7 @@ GEM hashie (5.0.0) highline (2.0.3) htmlentities (4.3.4) - i18n (1.14.4) + i18n (1.14.5) concurrent-ruby (~> 1.0) i18n-js (3.9.2) i18n (>= 0.6.6) From 900080e7bb69801750ee3c28fcb60e277b22ecda Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 09:42:36 +0000 Subject: [PATCH 115/319] chore(deps): bump wkhtmltopdf-binary from 0.12.6.6 to 0.12.6.7 Bumps [wkhtmltopdf-binary](https://github.com/zakird/wkhtmltopdf_binary_gem) from 0.12.6.6 to 0.12.6.7. - [Release notes](https://github.com/zakird/wkhtmltopdf_binary_gem/releases) - [Changelog](https://github.com/zakird/wkhtmltopdf_binary_gem/blob/master/CHANGELOG.md) - [Commits](https://github.com/zakird/wkhtmltopdf_binary_gem/compare/0.12.6.6...0.12.6.7) --- updated-dependencies: - dependency-name: wkhtmltopdf-binary dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7b7cdfff53..36313d6e9e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -819,7 +819,7 @@ GEM chronic (>= 0.6.3) wicked_pdf (2.6.3) activesupport - wkhtmltopdf-binary (0.12.6.6) + wkhtmltopdf-binary (0.12.6.7) xml-simple (1.1.8) xpath (3.2.0) nokogiri (~> 1.8) From f7561b428e5283fda32934534ec5ffa573293008 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Gon=C3=A7alves?= Date: Fri, 10 May 2024 15:49:33 +0100 Subject: [PATCH 116/319] Intorduced the simple_format method to the shipping method description --- app/views/checkout/_details.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/checkout/_details.html.haml b/app/views/checkout/_details.html.haml index b837e52812..3a2cb5d90f 100644 --- a/app/views/checkout/_details.html.haml +++ b/app/views/checkout/_details.html.haml @@ -95,7 +95,7 @@ %div.checkout-input{"data-shippingmethod-target": "shippingMethodDescription", "data-shippingmethodid": shipping_method.id , style: "display: #{ship_method_is_selected ? 'block' : 'none'}" } #distributor_address.panel - if shipping_method.description.present? - %span #{shipping_method.description} + %span #{simple_format(shipping_method.description)} %br/ %br/ - if @order.order_cycle.pickup_time_for(@order.distributor) From 89f7c4e3518f1934ec2fe03e75583a80933e4613 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Gon=C3=A7alves?= Date: Mon, 13 May 2024 10:34:24 +0100 Subject: [PATCH 117/319] Intorduced the simple_format method to the payment method description --- app/views/checkout/_payment.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/checkout/_payment.html.haml b/app/views/checkout/_payment.html.haml index 656a246efe..19c066f498 100644 --- a/app/views/checkout/_payment.html.haml +++ b/app/views/checkout/_payment.html.haml @@ -29,7 +29,7 @@ .paymentmethod-container{"data-paymentmethod-id": "#{payment_method.id}", style: "display: #{payment_method.id == selected_payment_method ? "block" : "none"}"} - if payment_method.description && !payment_method.description.empty? .paymentmethod-description.panel - #{payment_method.description} + #{simple_format(payment_method.description)} .paymentmethod-form = render partial: "checkout/payment/#{payment_method.method_type}", locals: { payment_method: payment_method, f: f } From cacff92aeb6a28a4aed3ed66a8183eb22a5a6b20 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 09:40:12 +0000 Subject: [PATCH 118/319] chore(deps): bump dotenv from 3.1.0 to 3.1.2 Bumps [dotenv](https://github.com/bkeepers/dotenv) from 3.1.0 to 3.1.2. - [Release notes](https://github.com/bkeepers/dotenv/releases) - [Changelog](https://github.com/bkeepers/dotenv/blob/main/Changelog.md) - [Commits](https://github.com/bkeepers/dotenv/compare/v3.1.0...v3.1.2) --- updated-dependencies: - dependency-name: dotenv dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7efc47a97a..cfd5b9e79e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -260,7 +260,7 @@ GEM diff-lcs (1.5.1) digest (3.1.1) docile (1.4.0) - dotenv (3.1.0) + dotenv (3.1.2) email_validator (2.2.4) activemodel erubi (1.12.0) From fd01cc16677e2c6e16573e0bdf670a51826b58e2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 09:46:23 +0000 Subject: [PATCH 119/319] chore(deps): bump geocoder from 1.8.2 to 1.8.3 Bumps [geocoder](https://github.com/alexreisner/geocoder) from 1.8.2 to 1.8.3. - [Changelog](https://github.com/alexreisner/geocoder/blob/master/CHANGELOG.md) - [Commits](https://github.com/alexreisner/geocoder/compare/v1.8.2...v1.8.3) --- updated-dependencies: - dependency-name: geocoder dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7efc47a97a..560968a517 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -229,6 +229,7 @@ GEM crass (1.0.6) css_parser (1.16.0) addressable + csv (3.3.0) cuprite (0.15) capybara (~> 3.0) ferrum (~> 0.14.0) @@ -321,7 +322,9 @@ GEM fuubar (2.5.1) rspec-core (~> 3.0) ruby-progressbar (~> 1.4) - geocoder (1.8.2) + geocoder (1.8.3) + base64 (>= 0.1.0) + csv (>= 3.0.0) globalid (1.2.1) activesupport (>= 6.1) gmaps4rails (2.1.2) From d520e3838c4544e2ef44fbf188771481c4375ba0 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Sun, 28 Apr 2024 18:32:28 +0100 Subject: [PATCH 120/319] Removes unused spec related to legacy checkout We can see on the respective controller spec, that having a Stripe SCA payment, with no source does not trigger the error 400, observed on the legacy checkout. --- spec/controllers/checkout_controller_spec.rb | 25 +++++ .../requests/checkout/failed_checkout_spec.rb | 93 ------------------- 2 files changed, 25 insertions(+), 93 deletions(-) delete mode 100644 spec/requests/checkout/failed_checkout_spec.rb diff --git a/spec/controllers/checkout_controller_spec.rb b/spec/controllers/checkout_controller_spec.rb index 7c4a158e4d..80e69d4a14 100644 --- a/spec/controllers/checkout_controller_spec.rb +++ b/spec/controllers/checkout_controller_spec.rb @@ -10,6 +10,9 @@ RSpec.describe CheckoutController, type: :controller do let(:exchange) { order_cycle.exchanges.outgoing.first } let(:order) { create(:order_with_line_items, line_items_count: 1, distributor:, order_cycle:) } let(:payment_method) { distributor.payment_methods.first } + let(:stripe_payment_method) { + create(:stripe_sca_payment_method, distributor_ids: [distributor.id], environment: Rails.env) + } let(:shipping_method) { distributor.shipping_methods.first } before do @@ -287,6 +290,7 @@ RSpec.describe CheckoutController, type: :controller do expect(response).to redirect_to checkout_step_path(:summary) expect(order.reload.state).to eq "confirmation" + expect(response.status).to be 302 end describe "with a voucher" do @@ -308,6 +312,27 @@ RSpec.describe CheckoutController, type: :controller do end end + context "with no payment source" do + let(:checkout_params) do + { + order: { + payments_attributes: [ + { payment_method_id: stripe_payment_method.id } + ] + } + } + end + + it "updates and redirects to summary step" do + put(:update, params:) + + expect(response).to redirect_to checkout_step_path(:summary) + expect(order.reload.state).to eq "confirmation" + expect(order.payments.first.source).to eq nil + expect(response.status).to be 302 + end + end + context "with payment fees" do let(:payment_method_with_fee) do create(:payment_method, :flat_rate, amount: "1.23", distributors: [distributor]) diff --git a/spec/requests/checkout/failed_checkout_spec.rb b/spec/requests/checkout/failed_checkout_spec.rb deleted file mode 100644 index f7a767f630..0000000000 --- a/spec/requests/checkout/failed_checkout_spec.rb +++ /dev/null @@ -1,93 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe "checking out an order that initially fails", type: :request do - include ShopWorkflow - - let!(:shop) { create(:enterprise) } - let!(:order_cycle) { create(:simple_order_cycle) } - let!(:exchange) { - create(:exchange, order_cycle:, sender: order_cycle.coordinator, receiver: shop, - incoming: false, pickup_time: "Monday") - } - let!(:address) { create(:address) } - let!(:line_item) { create(:line_item, order:, quantity: 3, price: 5.00) } - let!(:payment_method) { - create(:stripe_sca_payment_method, distributor_ids: [shop.id], environment: Rails.env) - } - let!(:check_payment_method) { - create(:payment_method, distributor_ids: [shop.id], environment: Rails.env) - } - let!(:shipping_method) { create(:shipping_method, distributor_ids: [shop.id]) } - let!(:shipment) { create(:shipment_with, :shipping_method, shipping_method:) } - let!(:order) { - create(:order, shipments: [shipment], distributor: shop, order_cycle:) - } - let(:params) do - { order: { - shipping_method_id: shipping_method.id, - payments_attributes: [{ payment_method_id: payment_method.id }], - bill_address_attributes: address.attributes.slice("firstname", "lastname", "address1", - "address2", "phone", "city", "zipcode", - "state_id", "country_id"), - ship_address_attributes: address.attributes.slice("firstname", "lastname", "address1", - "address2", "phone", "city", "zipcode", - "state_id", "country_id") - } } - end - - before do - order_cycle_distributed_variants = double(:order_cycle_distributed_variants) - allow(OrderCycles::DistributedVariantsService).to receive(:new) - .and_return(order_cycle_distributed_variants) - allow(order_cycle_distributed_variants) - .to receive(:distributes_order_variants?).and_return(true) - - order.reload.update_totals - set_order order - end - - pending "when shipping and payment fees apply" do - let(:calculator) { Calculator::FlatPercentItemTotal.new(preferred_flat_percent: 10) } - - before do - payment_method.calculator = calculator.dup - payment_method.save! - check_payment_method.calculator = calculator.dup - check_payment_method.save! - shipping_method.calculator = calculator.dup - shipping_method.save! - end - - it "clears shipments and payments before rendering the checkout" do - put update_checkout_path, params:, as: :json - - # Checking out a bogus Stripe Gateway without a source fails at :payment - # Shipments and payments should then be cleared before rendering checkout - expect(response.status).to be 400 - expect(flash[:error]) - .to eq 'Payment could not be processed, please check the details you entered' - order.reload - expect(order.shipments.count).to be 0 - expect(order.payments.count).to be 0 - expect(order.adjustment_total).to eq 0 - - # Add another line item to change the fee totals - create(:line_item, order:, quantity: 3, price: 5.00) - - # Use a check payment method, which should work - params[:order][:payments_attributes][0][:payment_method_id] = check_payment_method.id - - put update_checkout_path, params:, as: :json - - expect(response.status).to be 200 - order.reload - expect(order.total).to eq 36 - expect(order.adjustment_total).to eq 6 - expect(order.item_total).to eq 30 - expect(order.shipments.count).to eq 1 - expect(order.payments.count).to eq 1 - end - end -end From 282acd256b3d1105eb29b7f99c06ed279a83d3e3 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 29 Apr 2024 19:49:05 +0100 Subject: [PATCH 121/319] Undoes changes: removes unecessary test --- spec/controllers/checkout_controller_spec.rb | 25 -------------------- 1 file changed, 25 deletions(-) diff --git a/spec/controllers/checkout_controller_spec.rb b/spec/controllers/checkout_controller_spec.rb index 80e69d4a14..7c4a158e4d 100644 --- a/spec/controllers/checkout_controller_spec.rb +++ b/spec/controllers/checkout_controller_spec.rb @@ -10,9 +10,6 @@ RSpec.describe CheckoutController, type: :controller do let(:exchange) { order_cycle.exchanges.outgoing.first } let(:order) { create(:order_with_line_items, line_items_count: 1, distributor:, order_cycle:) } let(:payment_method) { distributor.payment_methods.first } - let(:stripe_payment_method) { - create(:stripe_sca_payment_method, distributor_ids: [distributor.id], environment: Rails.env) - } let(:shipping_method) { distributor.shipping_methods.first } before do @@ -290,7 +287,6 @@ RSpec.describe CheckoutController, type: :controller do expect(response).to redirect_to checkout_step_path(:summary) expect(order.reload.state).to eq "confirmation" - expect(response.status).to be 302 end describe "with a voucher" do @@ -312,27 +308,6 @@ RSpec.describe CheckoutController, type: :controller do end end - context "with no payment source" do - let(:checkout_params) do - { - order: { - payments_attributes: [ - { payment_method_id: stripe_payment_method.id } - ] - } - } - end - - it "updates and redirects to summary step" do - put(:update, params:) - - expect(response).to redirect_to checkout_step_path(:summary) - expect(order.reload.state).to eq "confirmation" - expect(order.payments.first.source).to eq nil - expect(response.status).to be 302 - end - end - context "with payment fees" do let(:payment_method_with_fee) do create(:payment_method, :flat_rate, amount: "1.23", distributors: [distributor]) From ffdbd0d7d4f6da5efe6423a25f72d9cf15cb4058 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Thu, 2 May 2024 18:00:12 +0100 Subject: [PATCH 122/319] Reproduces Bugsnag error For details see: https://app.bugsnag.com/open-food-network-canada-1/open-food-network-canada/errors/66314b2e78673c00073d2de9?filters[event.since]=30d&filters[error.status]=open&filters[search]=payment_source_class&event_id=66314b2e00e6e45d746f0000 Adds test case for Cash and Stripe payment methods With no source --- spec/controllers/checkout_controller_spec.rb | 56 ++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/spec/controllers/checkout_controller_spec.rb b/spec/controllers/checkout_controller_spec.rb index 7c4a158e4d..b39ffdcacd 100644 --- a/spec/controllers/checkout_controller_spec.rb +++ b/spec/controllers/checkout_controller_spec.rb @@ -308,6 +308,62 @@ RSpec.describe CheckoutController, type: :controller do end end + context "with no payment source" do + let(:checkout_params) do + { + order: { + payments_attributes: [ + { + payment_method_id:, + source_attributes: { + first_name: "Jane", + last_name: "Doe", + month: "", + year: "", + cc_type: "", + last_digits: "", + gateway_payment_profile_id: "" + } + } + ] + }, + commit: "Next - Order Summary" + } + end + let(:error_message) { + 'You must implement payment_source_class method for this gateway.' + } + + context "with a cash/check payment method" do + let!(:payment_method_id) { payment_method.id } + + it "updates and redirects to summary step" do + expect { put(:update, params:) }.to raise_error(RuntimeError, error_message) + + # according to Bugsnag, we should get an error 500 + expect(response.status).to be 200 + expect(response).not_to redirect_to checkout_step_path(:summary) + expect(order.reload.state).to eq "payment" + end + end + + context "with a StripeSCA payment method" do + let(:stripe_payment_method) { + create(:stripe_sca_payment_method, distributor_ids: [distributor.id], + environment: Rails.env) + } + let!(:payment_method_id) { stripe_payment_method.id } + + it "updates and redirects to summary step" do + expect { put(:update, params:) }.not_to raise_error(RuntimeError) + + expect(response.status).to eq 422 + expect(flash[:error]).to match "Saving failed, please update the highlighted fields." + expect(order.reload.state).to eq "payment" + end + end + end + context "with payment fees" do let(:payment_method_with_fee) do create(:payment_method, :flat_rate, amount: "1.23", distributors: [distributor]) From 62fefd5d499c7d2a01ddbf4648213eba45744844 Mon Sep 17 00:00:00 2001 From: David Cook Date: Mon, 6 May 2024 12:11:11 +1000 Subject: [PATCH 123/319] Implement required method Most of the time this doesn't get called because source_required: false. But sometimes it [does happen](https://app.bugsnag.com/yaycode/openfoodnetwork-uk/errors/66329690f4b6380007e8a4f8) I have a feeling that source_required? could be moved to the superclass as payment_source_class.present?. But I don't know enough about this area of the system to try it... --- app/models/spree/payment_method/check.rb | 4 ++++ spec/controllers/checkout_controller_spec.rb | 9 ++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/models/spree/payment_method/check.rb b/app/models/spree/payment_method/check.rb index 9f4378830c..839698bebc 100644 --- a/app/models/spree/payment_method/check.rb +++ b/app/models/spree/payment_method/check.rb @@ -25,6 +25,10 @@ module Spree ActiveMerchant::Billing::Response.new(true, "", {}, {}) end + def payment_source_class + nil + end + def source_required? false end diff --git a/spec/controllers/checkout_controller_spec.rb b/spec/controllers/checkout_controller_spec.rb index b39ffdcacd..4930eb22d5 100644 --- a/spec/controllers/checkout_controller_spec.rb +++ b/spec/controllers/checkout_controller_spec.rb @@ -338,12 +338,11 @@ RSpec.describe CheckoutController, type: :controller do let!(:payment_method_id) { payment_method.id } it "updates and redirects to summary step" do - expect { put(:update, params:) }.to raise_error(RuntimeError, error_message) + put(:update, params:) - # according to Bugsnag, we should get an error 500 - expect(response.status).to be 200 - expect(response).not_to redirect_to checkout_step_path(:summary) - expect(order.reload.state).to eq "payment" + expect(response.status).to be 302 + expect(response).to redirect_to checkout_step_path(:summary) + expect(order.reload.state).to eq "confirmation" end end From a1e2d3a93b9db163c3b5985f3249f79a98226f93 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 6 May 2024 09:52:35 +0100 Subject: [PATCH 124/319] Removes negative expect Removes unused error message --- spec/controllers/checkout_controller_spec.rb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/spec/controllers/checkout_controller_spec.rb b/spec/controllers/checkout_controller_spec.rb index 4930eb22d5..ea761d876b 100644 --- a/spec/controllers/checkout_controller_spec.rb +++ b/spec/controllers/checkout_controller_spec.rb @@ -330,9 +330,6 @@ RSpec.describe CheckoutController, type: :controller do commit: "Next - Order Summary" } end - let(:error_message) { - 'You must implement payment_source_class method for this gateway.' - } context "with a cash/check payment method" do let!(:payment_method_id) { payment_method.id } @@ -354,8 +351,7 @@ RSpec.describe CheckoutController, type: :controller do let!(:payment_method_id) { stripe_payment_method.id } it "updates and redirects to summary step" do - expect { put(:update, params:) }.not_to raise_error(RuntimeError) - + put(:update, params:) expect(response.status).to eq 422 expect(flash[:error]).to match "Saving failed, please update the highlighted fields." expect(order.reload.state).to eq "payment" From b2ecac27eb765881cb0055314bac65341a16fd53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 23:48:01 +0000 Subject: [PATCH 125/319] chore(deps): bump nokogiri from 1.16.4 to 1.16.5 Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.16.4 to 1.16.5. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.16.4...v1.16.5) --- updated-dependencies: - dependency-name: nokogiri dependency-type: indirect ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7efc47a97a..cf59def4cd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -438,7 +438,7 @@ GEM net-protocol newrelic_rpm (9.9.0) nio4r (2.7.0) - nokogiri (1.16.4) + nokogiri (1.16.5) mini_portile2 (~> 2.8.2) racc (~> 1.4) oauth2 (1.4.11) From 9b10b73a6517b4c222e91962f003786fb51611dd Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Mon, 6 May 2024 13:11:17 +0200 Subject: [PATCH 126/319] Delete Button missing before saving variant - used the remove option of stimulus-components/rails-nested-form lib - add the Remove option in the menu - the corresponding spec - the locale --- app/views/admin/products_v3/_table.html.haml | 4 ++-- app/views/admin/products_v3/_variant_row.html.haml | 8 ++++++-- config/locales/en.yml | 1 + spec/system/admin/products_v3/products_spec.rb | 14 ++++++++++++++ 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 23f6fb5fb4..c938771099 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -49,7 +49,7 @@ = form.submit t('.save'), class: "medium" %tr %th.align-left= # image - = render partial: 'spree/admin/shared/stimulus_sortable_header', + = render partial: 'spree/admin/shared/stimulus_sortable_header', locals: { column: :name, sorted: params.dig(:q, :s), default: 'name asc' } %th.align-left.with-input= t('admin.products_page.columns.sku') %th.align-left.with-input= t('admin.products_page.columns.unit_scale') @@ -76,7 +76,7 @@ = form.fields_for("products][#{product_index}][variants_attributes][NEW_RECORD", product.variants.build) do |new_variant_form| %template{ 'data-nested-form-target': "template" } - %tr.condensed{ 'data-controller': "variant" } + %tr.condensed{ 'data-controller': "variant", 'class': "nested-form-wrapper" } = render partial: 'variant_row', locals: { variant: new_variant_form.object, f: new_variant_form, category_options:, tax_category_options: } %tr{ 'data-nested-form-target': "target" } diff --git a/app/views/admin/products_v3/_variant_row.html.haml b/app/views/admin/products_v3/_variant_row.html.haml index 53ea27aad5..9c131c77d7 100644 --- a/app/views/admin/products_v3/_variant_row.html.haml +++ b/app/views/admin/products_v3/_variant_row.html.haml @@ -59,11 +59,15 @@ %td.align-left -# empty %td.align-right - - if variant.persisted? - = render(VerticalEllipsisMenu::Component.new) do + = render(VerticalEllipsisMenu::Component.new) do + - if variant.persisted? = link_to t('admin.products_page.actions.edit'), edit_admin_product_variant_path(variant.product, variant) - if variant.product.variants.size > 1 %a{ "data-controller": "modal-link", "data-action": "click->modal-link#setModalDataSetOnConfirm click->modal-link#open", "data-modal-link-target-value": "variant-delete-modal", "class": "delete", "data-modal-link-modal-dataset-value": {'data-current-id': variant.id}.to_json } = t('admin.products_page.actions.delete') + - else + %a{ 'data-action': "nested-form#remove" } + = f.hidden_field :_destroy + = t('admin.products_page.actions.remove') diff --git a/config/locales/en.yml b/config/locales/en.yml index 46197090c0..5adbcc7c0d 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -601,6 +601,7 @@ en: edit: Edit clone: Clone delete: Delete + remove: Remove image: edit: Edit adjustments: diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 344df65c1b..5ed433daa3 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -546,6 +546,20 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi end end + it 'removes a newly added not persisted variant' do + click_on "New variant" + new_variant_row = find_field("Name", placeholder: "Apples", with: "").ancestor("tr") + within new_variant_row do + fill_in "Name", with: "Large box" + fill_in "SKU", with: "APL-02" + expect(page).to have_field("Name", placeholder: "Apples", with: "Large box") + page.find(".vertical-ellipsis-menu").click + page.find('a', text: 'Remove').click + end + + expect(page).not_to have_field("Name", placeholder: "Apples", with: "Large box") + end + context "with invalid data" do before do click_on "New variant" From 36f3e4af02cfbfdbd26b4ecf1b66586d16c7bde4 Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Tue, 7 May 2024 09:57:14 +0200 Subject: [PATCH 127/319] Requested changes on Delete button missing - cleaned haml/html --- app/views/admin/products_v3/_variant_row.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/products_v3/_variant_row.html.haml b/app/views/admin/products_v3/_variant_row.html.haml index 9c131c77d7..7136d16b79 100644 --- a/app/views/admin/products_v3/_variant_row.html.haml +++ b/app/views/admin/products_v3/_variant_row.html.haml @@ -68,6 +68,6 @@ "data-modal-link-modal-dataset-value": {'data-current-id': variant.id}.to_json } = t('admin.products_page.actions.delete') - else + = f.hidden_field :_destroy %a{ 'data-action': "nested-form#remove" } - = f.hidden_field :_destroy = t('admin.products_page.actions.remove') From 808f1c65f233286b1675c662999523fc91ceca11 Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Mon, 13 May 2024 15:26:59 +0200 Subject: [PATCH 128/319] Requested changes on Delete Button missing - Styling(in red) for the remove button/link in view - A remove method to the bulk_form controller - removes elements from the Dom - removes changed elements from the binded Array in controller - so that menu that indicates changes disappear and blured elements - resume to non blurring state - Added the corresponding specs - test with one, two variants - test with two different products --- .../admin/products_v3/_variant_row.html.haml | 2 +- .../controllers/bulk_form_controller.js | 34 +++++++ .../system/admin/products_v3/products_spec.rb | 97 +++++++++++++++++++ 3 files changed, 132 insertions(+), 1 deletion(-) diff --git a/app/views/admin/products_v3/_variant_row.html.haml b/app/views/admin/products_v3/_variant_row.html.haml index 7136d16b79..7255683347 100644 --- a/app/views/admin/products_v3/_variant_row.html.haml +++ b/app/views/admin/products_v3/_variant_row.html.haml @@ -69,5 +69,5 @@ = t('admin.products_page.actions.delete') - else = f.hidden_field :_destroy - %a{ 'data-action': "nested-form#remove" } + %a{ 'data-action': "nested-form#remove bulk-form#remove", class: 'delete', 'data-temp_id': f.field_id(:remove_link) } = t('admin.products_page.actions.remove') diff --git a/app/webpacker/controllers/bulk_form_controller.js b/app/webpacker/controllers/bulk_form_controller.js index 54a8a812df..c3c73294ae 100644 --- a/app/webpacker/controllers/bulk_form_controller.js +++ b/app/webpacker/controllers/bulk_form_controller.js @@ -91,6 +91,40 @@ export default class BulkFormController extends Controller { } } + // Removes tr from DOM as well as corresponding elmnts from recordElement + // when clicking on 'Remove' button. For not persisted rows removed by + // stimulus components lib. + remove(event) { + // We need the temp id for the newly non persisted variant + let elmnt = event.target; + const recordContainer = elmnt.closest("[data-record-id]"); + let recordId = recordContainer.dataset.recordId; + let elmnt_temp_id = elmnt.dataset.temp_id; + const re = /([0-9]*)_remove_link/; + let temp_id = elmnt_temp_id.match(re)[1] + + // Store indexes and not elements + let elmntsToDelete = []; + this.recordElements[recordId].forEach((item, index) => { + if ((item.id).includes(temp_id)) { + elmntsToDelete.push(index); + } + }); + + + // Want to delete ary.last - ary.first ie from to first up to last index + // In this way, we also delete unnecessary elements without reference to temp variant(id) + // like buttons but nonetheless part of the elements to be removed. + this.recordElements[recordId] + .splice(elmntsToDelete[0], elmntsToDelete[elmntsToDelete.length - 1] - elmntsToDelete[0] + 1); + this.toggleFormChanged(); + + // Otherwise, elements within tr may be re-added to recordElements. + // With the nested-form-wrapper(stimulus components) class added to a tr. + let tr = document.querySelector('.nested-form-wrapper[style="display: none;"]') + tr.remove(); + } + // private #registerSubmit() { diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 5ed433daa3..8665039568 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -216,6 +216,16 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi create(:simple_product, name: "Apples", sku: "APL-00", variant_unit: "weight", variant_unit_scale: 1) # Grams } + let(:variant_b1) { + product_b.variants.first.tap{ |v| + v.update! display_name: "Medium box", sku: "TMT-01", price: 5, on_hand: 5, + on_demand: false + } + } + let(:product_b) { + create(:simple_product, name: "Tomatoes", sku: "TMT-01", + variant_unit: "weight", variant_unit_scale: 1) # Grams + } before do visit admin_products_url end @@ -553,11 +563,98 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi fill_in "Name", with: "Large box" fill_in "SKU", with: "APL-02" expect(page).to have_field("Name", placeholder: "Apples", with: "Large box") + end + + expect(page).to have_text("1 product modified.") + expect(page).to have_css('form.disabled-section#filters') # ie search/sort disabled + + within new_variant_row do page.find(".vertical-ellipsis-menu").click page.find('a', text: 'Remove').click end expect(page).not_to have_field("Name", placeholder: "Apples", with: "Large box") + expect(page).not_to have_text("1 product modified.") + expect(page).not_to have_css('form.disabled-section#filters') + end + + it "removes newly added not persistent Variants one at a time" do + click_on "New variant" + + first_new_variant_row = find_field("Name", placeholder: "Apples", with: "").ancestor("tr") + within first_new_variant_row do + fill_in "Name", with: "Large box" + end + + click_on "New variant" + second_new_variant_row = find_field("Name", placeholder: "Apples", with: "").ancestor("tr") + within second_new_variant_row do + fill_in "Name", with: "Huge box" + end + + expect(page).to have_text("1 product modified.") + expect(page).to have_css('form.disabled-section#filters') + + within first_new_variant_row do + page.find(".vertical-ellipsis-menu").click + page.find('a', text: 'Remove').click + end + + expect(page).to have_text("1 product modified.") + + within second_new_variant_row do + page.find(".vertical-ellipsis-menu").click + page.find('a', text: 'Remove').click + end + # Only when all non persistent variants are gone that product is non modified + expect(page).not_to have_text("1 product modified.") + expect(page).not_to have_css('form.disabled-section#filters') + end + + context "With 2 products" do + before do + variant_b1 + # To add 2nd product on page + page.refresh + end + + it "removes newly added Variants across products" do + click_on "New variant" + apples_new_variant_row = + find_field("Name", placeholder: "Apples", with: "").ancestor("tr") + within apples_new_variant_row do + fill_in "Name", with: "Large box" + end + + tomatoes_part = page.all('tbody')[1] + within tomatoes_part do + click_on "New variant" + end + tomatoes_new_variant_row = + find_field("Name", placeholder: "Tomatoes", with: "").ancestor("tr") + within tomatoes_new_variant_row do + fill_in "Name", with: "Huge box" + end + expect(page).to have_text("2 products modified.") + expect(page).to have_css('form.disabled-section#filters') # ie search/sort disabled + + within apples_new_variant_row do + page.find(".vertical-ellipsis-menu").click + page.find('a', text: 'Remove').click + end + # New variant for apples is no more, expect only 1 modified product + expect(page).to have_text("1 product modified.") + # search/sort still disabled + expect(page).to have_css('form.disabled-section#filters') + + within tomatoes_new_variant_row do + page.find(".vertical-ellipsis-menu").click + page.find('a', text: 'Remove').click + end + # Back to page without any alteration + expect(page).not_to have_text("1 product modified.") + expect(page).not_to have_css('form.disabled-section#filters') + end end context "with invalid data" do From b45df8a723e4064a77135558d24f460a8f9780d1 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 14 May 2024 10:17:50 +1000 Subject: [PATCH 129/319] Use built-in feature to delete new record row I looked at the source code and found that we were missing one detail: data-new-record. https://github.com/stimulus-components/stimulus-rails-nested-form/blob/master/src/index.ts#L32-L35 It's documented here, but it's easy to miss: https://www.stimulus-components.com/docs/stimulus-rails-nested-form/ --- app/views/admin/products_v3/_table.html.haml | 4 ++-- app/webpacker/controllers/bulk_form_controller.js | 5 ----- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index c938771099..ec0159ec5c 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -76,8 +76,8 @@ = form.fields_for("products][#{product_index}][variants_attributes][NEW_RECORD", product.variants.build) do |new_variant_form| %template{ 'data-nested-form-target': "template" } - %tr.condensed{ 'data-controller': "variant", 'class': "nested-form-wrapper" } - = render partial: 'variant_row', locals: { variant: new_variant_form.object, f: new_variant_form, category_options:, tax_category_options: } + %tr.condensed{ 'data-controller': "variant", 'class': "nested-form-wrapper", 'data-new-record': "true" } + = render partial: 'variant_row', locals: { variant: new_variant_form.object, f: new_variant_form, category_options:, tax_category_options: } %tr{ 'data-nested-form-target': "target" } %tr.condensed diff --git a/app/webpacker/controllers/bulk_form_controller.js b/app/webpacker/controllers/bulk_form_controller.js index c3c73294ae..511d058ddc 100644 --- a/app/webpacker/controllers/bulk_form_controller.js +++ b/app/webpacker/controllers/bulk_form_controller.js @@ -118,11 +118,6 @@ export default class BulkFormController extends Controller { this.recordElements[recordId] .splice(elmntsToDelete[0], elmntsToDelete[elmntsToDelete.length - 1] - elmntsToDelete[0] + 1); this.toggleFormChanged(); - - // Otherwise, elements within tr may be re-added to recordElements. - // With the nested-form-wrapper(stimulus components) class added to a tr. - let tr = document.querySelector('.nested-form-wrapper[style="display: none;"]') - tr.remove(); } // private From da77994a8960e5a2262999a0dab9006b7b88e108 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 14 May 2024 10:39:14 +1000 Subject: [PATCH 130/319] Ignore disconnected form elements When elements are removed from the DOM, they remain in the recordElements array. But we can simply ignore them. We have to wait until after rails-nested-form:remove is completed before toggleFormChanged. hmm It would be even better to remove them from the array.. --- app/views/admin/products_v3/_table.html.haml | 2 +- .../admin/products_v3/_variant_row.html.haml | 3 +- .../controllers/bulk_form_controller.js | 36 ++++--------------- 3 files changed, 8 insertions(+), 33 deletions(-) diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index ec0159ec5c..20fd3311ef 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -65,7 +65,7 @@ = form.fields_for("products", product, index: product_index) do |product_form| %tbody.relaxed{ data: { 'record-id': product_form.object.id, controller: "nested-form product", - action: 'rails-nested-form:add->bulk-form#registerElements' } } + action: 'rails-nested-form:add->bulk-form#registerElements rails-nested-form:remove->bulk-form#toggleFormChanged' } } %tr = render partial: 'product_row', locals: { f: product_form, product:, producer_options: } diff --git a/app/views/admin/products_v3/_variant_row.html.haml b/app/views/admin/products_v3/_variant_row.html.haml index 7255683347..040d77ce44 100644 --- a/app/views/admin/products_v3/_variant_row.html.haml +++ b/app/views/admin/products_v3/_variant_row.html.haml @@ -68,6 +68,5 @@ "data-modal-link-modal-dataset-value": {'data-current-id': variant.id}.to_json } = t('admin.products_page.actions.delete') - else - = f.hidden_field :_destroy - %a{ 'data-action': "nested-form#remove bulk-form#remove", class: 'delete', 'data-temp_id': f.field_id(:remove_link) } + %a{ 'data-action': "nested-form#remove", class: 'delete' } = t('admin.products_page.actions.remove') diff --git a/app/webpacker/controllers/bulk_form_controller.js b/app/webpacker/controllers/bulk_form_controller.js index 511d058ddc..0af566b271 100644 --- a/app/webpacker/controllers/bulk_form_controller.js +++ b/app/webpacker/controllers/bulk_form_controller.js @@ -91,35 +91,6 @@ export default class BulkFormController extends Controller { } } - // Removes tr from DOM as well as corresponding elmnts from recordElement - // when clicking on 'Remove' button. For not persisted rows removed by - // stimulus components lib. - remove(event) { - // We need the temp id for the newly non persisted variant - let elmnt = event.target; - const recordContainer = elmnt.closest("[data-record-id]"); - let recordId = recordContainer.dataset.recordId; - let elmnt_temp_id = elmnt.dataset.temp_id; - const re = /([0-9]*)_remove_link/; - let temp_id = elmnt_temp_id.match(re)[1] - - // Store indexes and not elements - let elmntsToDelete = []; - this.recordElements[recordId].forEach((item, index) => { - if ((item.id).includes(temp_id)) { - elmntsToDelete.push(index); - } - }); - - - // Want to delete ary.last - ary.first ie from to first up to last index - // In this way, we also delete unnecessary elements without reference to temp variant(id) - // like buttons but nonetheless part of the elements to be removed. - this.recordElements[recordId] - .splice(elmntsToDelete[0], elmntsToDelete[elmntsToDelete.length - 1] - elmntsToDelete[0] + 1); - this.toggleFormChanged(); - } - // private #registerSubmit() { @@ -161,8 +132,12 @@ export default class BulkFormController extends Controller { } #isChanged(element) { - if (element.type == "checkbox") { + if(!element.isConnected) { + return false; + + } else if (element.type == "checkbox") { return element.defaultChecked !== undefined && element.checked != element.defaultChecked; + } else if (element.type == "select-one") { // (weird) Behavior of select element's include_blank option in Rails: // If a select field has include_blank option selected (its value will be ''), @@ -175,6 +150,7 @@ export default class BulkFormController extends Controller { const areBothBlank = selectedOption.value === '' && defaultSelected === undefined return !areBothBlank && selectedOption !== defaultSelected; + } else { return element.defaultValue !== undefined && element.value != element.defaultValue; } From 00f6d01738c9680ed24168412e1b760889f4cc0c Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 14 May 2024 11:06:25 +1000 Subject: [PATCH 131/319] Remove errored variants I found another case. --- app/views/admin/products_v3/_table.html.haml | 2 +- spec/system/admin/products_v3/products_spec.rb | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 20fd3311ef..27d5d7434f 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -71,7 +71,7 @@ - product.variants.each_with_index do |variant, variant_index| = form.fields_for("products][#{product_index}][variants_attributes][", variant, index: variant_index) do |variant_form| - %tr.condensed{ 'data-controller': "variant" } + %tr.condensed{ 'data-controller': "variant", 'class': "nested-form-wrapper", 'data-new-record': variant.new_record? ? "true" : false } = render partial: 'variant_row', locals: { variant:, f: variant_form, category_options:, tax_category_options: } = form.fields_for("products][#{product_index}][variants_attributes][NEW_RECORD", product.variants.build) do |new_variant_form| diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 8665039568..757be44d02 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -735,6 +735,22 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi expect(new_variant.price).to eq 10.25 expect(new_variant.unit_value).to eq 200 end + + it "removes unsaved record" do + click_button "Save changes" + + expect(page).to have_text("1 product could not be saved.") + + within row_containing_name("N" * 256) do + page.find(".vertical-ellipsis-menu").click + page.find('a', text: 'Remove').click + end + + # Now that invalid variant is removed, we can proceed to save + click_button "Save changes" + expect(page).not_to have_text("1 product could not be saved.") + expect(page).not_to have_css('form.disabled-section#filters') + end end end From 7b4a85f7ef7fe8e14ccce496bef1fb37c28bc478 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 10 May 2024 12:36:49 +1000 Subject: [PATCH 132/319] Sanitise HTML in long description of enterprise This happens only on assignment. We still need to migrate existing data. --- app/models/enterprise.rb | 5 ++++ app/services/html_sanitizer.rb | 15 +++++++++++ spec/models/enterprise_spec.rb | 7 ++++++ spec/services/html_sanitizer_spec.rb | 37 ++++++++++++++++++++++++++++ 4 files changed, 64 insertions(+) create mode 100644 app/services/html_sanitizer.rb create mode 100644 spec/services/html_sanitizer_spec.rb diff --git a/app/models/enterprise.rb b/app/models/enterprise.rb index dd5a63a5fc..fdad5f4814 100644 --- a/app/models/enterprise.rb +++ b/app/models/enterprise.rb @@ -247,6 +247,11 @@ class Enterprise < ApplicationRecord count(distinct: true) end + # Remove any unsupported HTML. + def long_description=(html) + super(HtmlSanitizer.sanitize(html)) + end + def contact contact = users.where(enterprise_roles: { receives_notifications: true }).first contact || owner diff --git a/app/services/html_sanitizer.rb b/app/services/html_sanitizer.rb new file mode 100644 index 0000000000..4f2e44e0ab --- /dev/null +++ b/app/services/html_sanitizer.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +# Keeps only allowed HTML. +# +# We store some rich text as HTML in attributes of models like Enterprise. +# We offer an editor which supports certain tags but you can't insert just any +# HTML, which would be dangerous. +class HtmlSanitizer + def self.sanitize(html) + @sanitizer ||= Rails::HTML5::SafeListSanitizer.new + @sanitizer.sanitize( + html, tags: %w[h1 h2 h3 h4 p b i u a], attributes: %w[href target], + ) + end +end diff --git a/spec/models/enterprise_spec.rb b/spec/models/enterprise_spec.rb index 300dd84ccb..b853031c23 100644 --- a/spec/models/enterprise_spec.rb +++ b/spec/models/enterprise_spec.rb @@ -398,6 +398,13 @@ RSpec.describe Enterprise do end end + describe "serialisation" do + it "sanitises HTML in long_description" do + subject.long_description = "Hello dearest monster." + expect(subject.long_description).to eq "Hello alert dearest monster." + end + end + describe "callbacks" do it "restores permalink to original value when it is changed and invalid" do e1 = create(:enterprise, permalink: "taken") diff --git a/spec/services/html_sanitizer_spec.rb b/spec/services/html_sanitizer_spec.rb new file mode 100644 index 0000000000..7f238ab733 --- /dev/null +++ b/spec/services/html_sanitizer_spec.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe HtmlSanitizer do + subject { described_class } + + it "removes dangerous tags" do + html = "Hello !" + expect(subject.sanitize(html)) + .to eq "Hello alert!" + end + + it "keeps supported tags" do + html = "Hello alert!" + expect(subject.sanitize(html)) + .to eq "Hello alert!" + end + + it "keeps supported attributes" do + html = 'Hello alert!' + expect(subject.sanitize(html)) + .to eq 'Hello alert!' + end + + it "removes unsupported attributes" do + html = 'Hello alert!' + expect(subject.sanitize(html)) + .to eq 'Hello alert!' + end + + it "removes dangerous attribute values" do + html = 'Hello you!' + expect(subject.sanitize(html)) + .to eq 'Hello you!' + end +end From 23a27c65beeda35d938c4be9ade01bb1a25f694e Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 14 May 2024 12:25:58 +1000 Subject: [PATCH 133/319] Sanitise existing HTML in Enterprise#long_description We will add a migration to sanitise all existing descriptions but before we do that destructive action, it's good to test this in a read-only fashion first. --- app/models/enterprise.rb | 5 +++++ spec/models/enterprise_spec.rb | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/app/models/enterprise.rb b/app/models/enterprise.rb index fdad5f4814..4af0fa374e 100644 --- a/app/models/enterprise.rb +++ b/app/models/enterprise.rb @@ -247,6 +247,11 @@ class Enterprise < ApplicationRecord count(distinct: true) end + # Remove any unsupported HTML. + def long_description + HtmlSanitizer.sanitize(super) + end + # Remove any unsupported HTML. def long_description=(html) super(HtmlSanitizer.sanitize(html)) diff --git a/spec/models/enterprise_spec.rb b/spec/models/enterprise_spec.rb index b853031c23..6b1fd9059c 100644 --- a/spec/models/enterprise_spec.rb +++ b/spec/models/enterprise_spec.rb @@ -403,6 +403,11 @@ RSpec.describe Enterprise do subject.long_description = "Hello dearest monster." expect(subject.long_description).to eq "Hello alert dearest monster." end + + it "sanitises existing HTML in long_description" do + subject[:long_description] = "Hello dearest monster." + expect(subject.long_description).to eq "Hello alert dearest monster." + end end describe "callbacks" do From f089c0eff310e1ebbff2344cab2e6adbdb85e67a Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 14 May 2024 12:40:39 +1000 Subject: [PATCH 134/319] Keep HTML line breaks They do appear in long_description on au_prod. --- app/services/html_sanitizer.rb | 2 +- spec/services/html_sanitizer_spec.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/services/html_sanitizer.rb b/app/services/html_sanitizer.rb index 4f2e44e0ab..df3c608219 100644 --- a/app/services/html_sanitizer.rb +++ b/app/services/html_sanitizer.rb @@ -9,7 +9,7 @@ class HtmlSanitizer def self.sanitize(html) @sanitizer ||= Rails::HTML5::SafeListSanitizer.new @sanitizer.sanitize( - html, tags: %w[h1 h2 h3 h4 p b i u a], attributes: %w[href target], + html, tags: %w[h1 h2 h3 h4 p br b i u a], attributes: %w[href target], ) end end diff --git a/spec/services/html_sanitizer_spec.rb b/spec/services/html_sanitizer_spec.rb index 7f238ab733..c98d695b35 100644 --- a/spec/services/html_sanitizer_spec.rb +++ b/spec/services/html_sanitizer_spec.rb @@ -12,9 +12,9 @@ RSpec.describe HtmlSanitizer do end it "keeps supported tags" do - html = "Hello alert!" + html = "Hello alert!
How are you?" expect(subject.sanitize(html)) - .to eq "Hello alert!" + .to eq "Hello alert!
How are you?" end it "keeps supported attributes" do From d5564e5fd20c8fe44c54104cd7bb3e1e84faef59 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Mar 2024 09:06:23 +0000 Subject: [PATCH 135/319] chore(deps): bump stimulus_reflex from 3.5.0-rc3 to 3.5.0-rc4 Bumps [stimulus_reflex](https://github.com/stimulusreflex/stimulus_reflex) from 3.5.0-rc3 to 3.5.0-rc4. - [Release notes](https://github.com/stimulusreflex/stimulus_reflex/releases) - [Changelog](https://github.com/stimulusreflex/stimulus_reflex/blob/main/CHANGELOG.md) - [Commits](https://github.com/stimulusreflex/stimulus_reflex/commits) --- updated-dependencies: - dependency-name: stimulus_reflex dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 11d984c172..9e64cfb153 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "shortcut-buttons-flatpickr": "^0.4.0", "stimulus": "^3.2.2", "stimulus-flatpickr": "^1.4.0", - "stimulus_reflex": "3.5.0-rc3", + "stimulus_reflex": "3.5.0-rc4", "tom-select": "^2.3.1", "trix": "^2.1.1", "webpack": "~4" diff --git a/yarn.lock b/yarn.lock index ec2125d824..24428ad72b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8373,10 +8373,10 @@ stimulus@^3.2.2: "@hotwired/stimulus" "^3.2.2" "@hotwired/stimulus-webpack-helpers" "^1.0.0" -stimulus_reflex@3.5.0-rc3: - version "3.5.0-rc3" - resolved "https://registry.yarnpkg.com/stimulus_reflex/-/stimulus_reflex-3.5.0-rc3.tgz#21196b2a42f48ea7f1fad54f8443d09a95c320a5" - integrity sha512-KSRDgGkU4aA77yw1b0W0oP7Ag+SB6Aa36BdcBJTpacU2W0bm9Fz1a0o9ynD+YAWK6AUyJ0gR20wXLvBvBGpnpg== +stimulus_reflex@3.5.0-rc4: + version "3.5.0-rc4" + resolved "https://registry.yarnpkg.com/stimulus_reflex/-/stimulus_reflex-3.5.0-rc4.tgz#fb5135a810b8f5fd3c3bcb7e13c29b1f5ea81316" + integrity sha512-Oh+ywKP/HvCOHXvsSKqWqKcFENA+SYt8krDG/Z+2jQG0VJZ1UxLe6oEdSXCdkbjj6lDZ4BPiytPm39kQvcDqNA== dependencies: "@hotwired/stimulus" "^3" "@rails/actioncable" "^6 || ^7" From 1d93b6f049e22830595d453cdd7aa39b22f96bcd Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 21 Mar 2024 09:57:01 +1100 Subject: [PATCH 136/319] chore(deps): bump gem stimulus_reflex from 3.5.0-rc3 to 3.5.0-rc4 Gem and package need to be in sync. --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index d4eea771b0..d0e5048526 100644 --- a/Gemfile +++ b/Gemfile @@ -104,7 +104,7 @@ gem 'sidekiq' gem 'sidekiq-scheduler' gem "cable_ready", "5.0.1" -gem "stimulus_reflex", "3.5.0.rc3" +gem "stimulus_reflex", "3.5.0.rc4" gem 'combine_pdf' gem 'wicked_pdf' diff --git a/Gemfile.lock b/Gemfile.lock index 7efc47a97a..579bbac516 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -740,7 +740,7 @@ GEM state_machines-activerecord (0.9.0) activerecord (>= 6.0) state_machines-activemodel (>= 0.9.0) - stimulus_reflex (3.5.0.rc3) + stimulus_reflex (3.5.0.rc4) actioncable (>= 5.2, < 8) actionpack (>= 5.2, < 8) actionview (>= 5.2, < 8) @@ -951,7 +951,7 @@ DEPENDENCIES spring-commands-rspec spring-commands-rubocop state_machines-activerecord - stimulus_reflex (= 3.5.0.rc3) + stimulus_reflex (= 3.5.0.rc4) stimulus_reflex_testing stringex (~> 2.8.5) stripe From 792fecc3fd32d5e2c504ccdc9da1baf3d295b330 Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 27 Mar 2024 11:56:36 +1100 Subject: [PATCH 137/319] Disable StimulusReflex specs temporarily Unfortunately the testing framework doesn't support the latest version of StimulusReflex. This is a third party framework that doesn't seem to be maintained. Maybe we should convert these to ActionCable tests. --- spec/reflexes/products_reflex_spec.rb | 1 + spec/reflexes/user_reflex_spec.rb | 2 ++ 2 files changed, 3 insertions(+) diff --git a/spec/reflexes/products_reflex_spec.rb b/spec/reflexes/products_reflex_spec.rb index 7f71e8e26d..a2b9e2c9f3 100644 --- a/spec/reflexes/products_reflex_spec.rb +++ b/spec/reflexes/products_reflex_spec.rb @@ -10,6 +10,7 @@ RSpec.describe ProductsReflex, type: :reflex, feature: :admin_style_v3 do let(:flash) { {} } before do + pending "https://github.com/podia/stimulus_reflex_testing/issues/21" # Mock flash, because stimulus_reflex_testing doesn't support sessions allow_any_instance_of(described_class).to receive(:flash).and_return(flash) end diff --git a/spec/reflexes/user_reflex_spec.rb b/spec/reflexes/user_reflex_spec.rb index 36fba0c599..5daedffe1a 100644 --- a/spec/reflexes/user_reflex_spec.rb +++ b/spec/reflexes/user_reflex_spec.rb @@ -6,6 +6,8 @@ RSpec.describe UserReflex, type: :reflex do let(:current_user) { create(:user) } let(:context) { { url: spree.admin_dashboard_url, connection: { current_user: } } } + before { pending "https://github.com/podia/stimulus_reflex_testing/issues/21" } + describe "#accept_terms_of_services" do subject(:reflex) { build_reflex(method_name: :accept_terms_of_services, **context) } From 854091eb9c679e1c1b87a8a5a5e6dd7e84cb65b9 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 14 May 2024 13:52:11 +1000 Subject: [PATCH 138/319] Bump stimulus_reflex_testing to latest It contains a fix for stimulus_reflex 3.5.0-rc4, but hasn't been released yet. https://github.com/podia/stimulus_reflex_testing/issues/21 Now the user reflex spec works, but the products spec needs another fix. But we plan to remove it soon anyway. --- Gemfile | 2 +- Gemfile.lock | 12 +++++++++--- spec/reflexes/products_reflex_spec.rb | 2 +- spec/reflexes/user_reflex_spec.rb | 2 -- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Gemfile b/Gemfile index d0e5048526..297c4ff017 100644 --- a/Gemfile +++ b/Gemfile @@ -164,7 +164,7 @@ group :test, :development do gem 'rspec-sql' gem 'rswag' gem 'shoulda-matchers' - gem 'stimulus_reflex_testing' + gem 'stimulus_reflex_testing', github: "podia/stimulus_reflex_testing", branch: :main gem 'timecop' end diff --git a/Gemfile.lock b/Gemfile.lock index 579bbac516..d1c53e4d98 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -17,6 +17,14 @@ GIT sass-rails thor (>= 0.14) +GIT + remote: https://github.com/podia/stimulus_reflex_testing.git + revision: abac2ee34de347c589795b4d1a8e83e0baafb201 + branch: main + specs: + stimulus_reflex_testing (0.3.1) + stimulus_reflex (>= 3.3.0) + PATH remote: engines/catalog specs: @@ -750,8 +758,6 @@ GEM rack (>= 2, < 4) railties (>= 5.2, < 8) redis (>= 4.0, < 6.0) - stimulus_reflex_testing (0.3.0) - stimulus_reflex (>= 3.3.0) stringex (2.8.6) stringio (3.1.0) stripe (11.1.0) @@ -952,7 +958,7 @@ DEPENDENCIES spring-commands-rubocop state_machines-activerecord stimulus_reflex (= 3.5.0.rc4) - stimulus_reflex_testing + stimulus_reflex_testing! stringex (~> 2.8.5) stripe timecop diff --git a/spec/reflexes/products_reflex_spec.rb b/spec/reflexes/products_reflex_spec.rb index a2b9e2c9f3..f0c74f2641 100644 --- a/spec/reflexes/products_reflex_spec.rb +++ b/spec/reflexes/products_reflex_spec.rb @@ -10,7 +10,7 @@ RSpec.describe ProductsReflex, type: :reflex, feature: :admin_style_v3 do let(:flash) { {} } before do - pending "https://github.com/podia/stimulus_reflex_testing/issues/21" + pending "fix spec" # Mock flash, because stimulus_reflex_testing doesn't support sessions allow_any_instance_of(described_class).to receive(:flash).and_return(flash) end diff --git a/spec/reflexes/user_reflex_spec.rb b/spec/reflexes/user_reflex_spec.rb index 5daedffe1a..36fba0c599 100644 --- a/spec/reflexes/user_reflex_spec.rb +++ b/spec/reflexes/user_reflex_spec.rb @@ -6,8 +6,6 @@ RSpec.describe UserReflex, type: :reflex do let(:current_user) { create(:user) } let(:context) { { url: spree.admin_dashboard_url, connection: { current_user: } } } - before { pending "https://github.com/podia/stimulus_reflex_testing/issues/21" } - describe "#accept_terms_of_services" do subject(:reflex) { build_reflex(method_name: :accept_terms_of_services, **context) } From 08edff1a6fb3ce9972a6bee25f8de32d99ffa292 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 14 May 2024 14:30:02 +1000 Subject: [PATCH 139/319] Bump cable_ready and stimulus_reflex packages There wasn't a simple path to upgrade them separately. I think it's fine to do both at once. --- package.json | 4 ++-- yarn.lock | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 9e64cfb153..6fe08c670a 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "@hotwired/turbo": "^8.0.4", "@rails/webpacker": "5.4.4", "@stimulus-components/rails-nested-form": "^5.0.0", - "cable_ready": "5.0.1", + "cable_ready": "5.0.4", "debounced": "^0.0.5", "flatpickr": "^4.6.9", "foundation-sites": "^5.5.3", @@ -27,7 +27,7 @@ "shortcut-buttons-flatpickr": "^0.4.0", "stimulus": "^3.2.2", "stimulus-flatpickr": "^1.4.0", - "stimulus_reflex": "3.5.0-rc4", + "stimulus_reflex": "3.5.0", "tom-select": "^2.3.1", "trix": "^2.1.1", "webpack": "~4" diff --git a/yarn.lock b/yarn.lock index 24428ad72b..b4b3fdff50 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2444,10 +2444,10 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -cable_ready@5.0.1, cable_ready@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/cable_ready/-/cable_ready-5.0.1.tgz#1cef5991cf7a064d09971ed7d87c614dec2ee1e1" - integrity sha512-+t9rKTgYwW5XBx113y97qC8MNEtBZZL84Isdec23HWvjMx0icOQsMzHJE75ycjevgjACTeWZqjRcCdtCHxgZ9g== +cable_ready@5.0.4, cable_ready@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cable_ready/-/cable_ready-5.0.4.tgz#88b5bff27871be402f6ea049d65126bb1995d147" + integrity sha512-HZLj3SjgEDB4H2GqtKHmg2lOu8YCti0hsPR9XC2mMfz6WOkHK4FWt1/NJ0OIKAcQAEnxEJEtlIgBv6tP1m958g== dependencies: morphdom "2.6.1" @@ -8373,14 +8373,14 @@ stimulus@^3.2.2: "@hotwired/stimulus" "^3.2.2" "@hotwired/stimulus-webpack-helpers" "^1.0.0" -stimulus_reflex@3.5.0-rc4: - version "3.5.0-rc4" - resolved "https://registry.yarnpkg.com/stimulus_reflex/-/stimulus_reflex-3.5.0-rc4.tgz#fb5135a810b8f5fd3c3bcb7e13c29b1f5ea81316" - integrity sha512-Oh+ywKP/HvCOHXvsSKqWqKcFENA+SYt8krDG/Z+2jQG0VJZ1UxLe6oEdSXCdkbjj6lDZ4BPiytPm39kQvcDqNA== +stimulus_reflex@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/stimulus_reflex/-/stimulus_reflex-3.5.0.tgz#63726b85ad9d03fbebe93d580ca9a8e1d210e7eb" + integrity sha512-+zD1E8AQJS0Ugjs+fpBjcnFBDzRBXYt6oT+e6cRV/yT1usl1SRrCEon+6+mbbqnZfK7+oXd3jVj7QuE65YLqbQ== dependencies: "@hotwired/stimulus" "^3" "@rails/actioncable" "^6 || ^7" - cable_ready "^5.0.0" + cable_ready "^5.0.4" stream-browserify@^2.0.1: version "2.0.2" From ba50e820365eb9e641a18b6ce29260ceb1d6c3fc Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 14 May 2024 14:55:32 +1000 Subject: [PATCH 140/319] Bump cable_ready and stimulus_reflex gems I ran stimulus_reflex:install. It skipped over most things, but did add gem redis-session-store without explanation. It's mentioned in the [documentation](https://docs.stimulusreflex.com/hello-world/setup.html#session-storage), but I don't think it's relevant to us so I removed it again. --- Gemfile | 4 ++-- Gemfile.lock | 13 +++++++++---- package.json | 5 +++-- yarn.lock | 2 +- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Gemfile b/Gemfile index 297c4ff017..8d9dd18699 100644 --- a/Gemfile +++ b/Gemfile @@ -103,8 +103,8 @@ gem 'redis' gem 'sidekiq' gem 'sidekiq-scheduler' -gem "cable_ready", "5.0.1" -gem "stimulus_reflex", "3.5.0.rc4" +gem "cable_ready" +gem "stimulus_reflex" gem 'combine_pdf' gem 'wicked_pdf' diff --git a/Gemfile.lock b/Gemfile.lock index d1c53e4d98..1e3f8c9c8a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -193,10 +193,11 @@ GEM bullet (7.1.6) activesupport (>= 3.0.0) uniform_notifier (~> 1.11) - cable_ready (5.0.1) + cable_ready (5.0.4) actionpack (>= 5.2) actionview (>= 5.2) activesupport (>= 5.2) + observer (~> 0.1) railties (>= 5.2) thread-local (>= 1.1.0) cancancan (1.15.0) @@ -449,12 +450,15 @@ GEM nokogiri (1.16.4) mini_portile2 (~> 2.8.2) racc (~> 1.4) + nokogiri-html5-inference (0.3.0) + nokogiri (~> 1.14) oauth2 (1.4.11) faraday (>= 0.17.3, < 3.0) jwt (>= 1.0, < 3.0) multi_json (~> 1.3) multi_xml (~> 0.5) rack (>= 1.2, < 4) + observer (0.1.2) omniauth (2.1.2) hashie (>= 3.4.6) rack (>= 2.2.3) @@ -748,13 +752,14 @@ GEM state_machines-activerecord (0.9.0) activerecord (>= 6.0) state_machines-activemodel (>= 0.9.0) - stimulus_reflex (3.5.0.rc4) + stimulus_reflex (3.5.0) actioncable (>= 5.2, < 8) actionpack (>= 5.2, < 8) actionview (>= 5.2, < 8) activesupport (>= 5.2, < 8) cable_ready (~> 5.0) nokogiri (~> 1.0) + nokogiri-html5-inference (~> 0.3) rack (>= 2, < 4) railties (>= 5.2, < 8) redis (>= 4.0, < 6.0) @@ -855,7 +860,7 @@ DEPENDENCIES bootsnap bugsnag bullet - cable_ready (= 5.0.1) + cable_ready cancancan (~> 1.15.0) capybara catalog! @@ -957,7 +962,7 @@ DEPENDENCIES spring-commands-rspec spring-commands-rubocop state_machines-activerecord - stimulus_reflex (= 3.5.0.rc4) + stimulus_reflex stimulus_reflex_testing! stringex (~> 2.8.5) stripe diff --git a/package.json b/package.json index 6fe08c670a..2b41eaa523 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,8 @@ "stimulus_reflex": "3.5.0", "tom-select": "^2.3.1", "trix": "^2.1.1", - "webpack": "~4" + "webpack": "~4", + "@hotwired/stimulus": "^3.2" }, "devDependencies": { "jasmine-core": "~5.1.2", @@ -43,4 +44,4 @@ "pretty-quick": "4.0.0", "webpack-dev-server": "~3" } -} +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index b4b3fdff50..72dff437b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1117,7 +1117,7 @@ resolved "https://registry.yarnpkg.com/@hotwired/stimulus-webpack-helpers/-/stimulus-webpack-helpers-1.0.1.tgz#4cd74487adeca576c9865ac2b9fe5cb20cef16dd" integrity sha512-wa/zupVG0eWxRYJjC1IiPBdt3Lruv0RqGN+/DTMmUWUyMAEB27KXmVY6a8YpUVTM7QwVuaLNGW4EqDgrS2upXQ== -"@hotwired/stimulus@^3", "@hotwired/stimulus@^3.2.2": +"@hotwired/stimulus@^3", "@hotwired/stimulus@^3.2", "@hotwired/stimulus@^3.2.2": version "3.2.2" resolved "https://registry.yarnpkg.com/@hotwired/stimulus/-/stimulus-3.2.2.tgz#071aab59c600fed95b97939e605ff261a4251608" integrity sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A== From 50115bdef945b818946016c9dc0784b7d4375f69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Gon=C3=A7alves?= Date: Tue, 14 May 2024 10:39:30 +0100 Subject: [PATCH 141/319] Changes to views/checkout/details.html.haml:line 98 and changes to view/checkout/payment.html.haml:line 32 --- app/views/checkout/_details.html.haml | 2 +- app/views/checkout/_payment.html.haml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/checkout/_details.html.haml b/app/views/checkout/_details.html.haml index 3a2cb5d90f..1918afc5cd 100644 --- a/app/views/checkout/_details.html.haml +++ b/app/views/checkout/_details.html.haml @@ -95,7 +95,7 @@ %div.checkout-input{"data-shippingmethod-target": "shippingMethodDescription", "data-shippingmethodid": shipping_method.id , style: "display: #{ship_method_is_selected ? 'block' : 'none'}" } #distributor_address.panel - if shipping_method.description.present? - %span #{simple_format(shipping_method.description)} + = simple_format(html_escape(shipping_method.description)) %br/ %br/ - if @order.order_cycle.pickup_time_for(@order.distributor) diff --git a/app/views/checkout/_payment.html.haml b/app/views/checkout/_payment.html.haml index 19c066f498..516d2025bb 100644 --- a/app/views/checkout/_payment.html.haml +++ b/app/views/checkout/_payment.html.haml @@ -29,7 +29,7 @@ .paymentmethod-container{"data-paymentmethod-id": "#{payment_method.id}", style: "display: #{payment_method.id == selected_payment_method ? "block" : "none"}"} - if payment_method.description && !payment_method.description.empty? .paymentmethod-description.panel - #{simple_format(payment_method.description)} + = simple_format(html_escape(payment_method.description)) .paymentmethod-form = render partial: "checkout/payment/#{payment_method.method_type}", locals: { payment_method: payment_method, f: f } From afbfc788b8581bbf6b706ee658f64df9063ed18b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 May 2024 11:01:59 +0000 Subject: [PATCH 142/319] chore(deps-dev): bump knapsack_pro from 7.1.0 to 7.2.0 Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 7.1.0 to 7.2.0. - [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md) - [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v7.1.0...v7.2.0) --- updated-dependencies: - dependency-name: knapsack_pro dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index f4953104fb..d1748bed24 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -388,7 +388,7 @@ GEM activesupport (>= 4.2) jwt (2.8.1) base64 - knapsack_pro (7.1.0) + knapsack_pro (7.2.0) rake language_server-protocol (3.17.0.3) launchy (3.0.0) From 38fe36b246c5c54866c2db2c5cb3ab54d69e7e0a Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Fri, 10 May 2024 12:56:40 +0100 Subject: [PATCH 143/319] Uptades tests on a regular checkout --- .../consumer/shopping/variant_overrides_spec.rb | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/spec/system/consumer/shopping/variant_overrides_spec.rb b/spec/system/consumer/shopping/variant_overrides_spec.rb index 90c24666d0..11ecb52ee7 100644 --- a/spec/system/consumer/shopping/variant_overrides_spec.rb +++ b/spec/system/consumer/shopping/variant_overrides_spec.rb @@ -8,6 +8,7 @@ RSpec.describe "shopping with variant overrides defined" do include ShopWorkflow include CheckoutRequestsHelper include UIComponentHelper + include CheckoutHelper let(:hub) { create(:distributor_enterprise, with_payment_and_shipping: true) } let(:producer) { create(:supplier_enterprise) } @@ -150,14 +151,20 @@ RSpec.describe "shopping with variant overrides defined" do expect(page).to have_selector "#edit-cart .grand-total", text: with_currency(122.22) end - pending "prices in the checkout" do + context "prices in the checkout" do it "shows the correct prices" do click_add_to_cart product1_variant1, 2 click_checkout + checkout_as_guest - expect(page).to have_selector 'form.edit_order .cart-total', text: with_currency(122.22) - expect(page).to have_selector 'form.edit_order .shipping', text: with_currency(0.00) - expect(page).to have_selector 'form.edit_order .total', text: with_currency(122.22) + fill_out_details + fill_out_billing_address + + proceed_to_payment + proceed_to_summary + + expect(page).to have_selector '.summary-right-line-value', text: with_currency(122.22) + expect(page).to have_selector '#order_total', text: with_currency(122.22) end end end From 4e16eb9c6b405ad527c013d245a608676a2c6534 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 14 May 2024 12:08:23 +0100 Subject: [PATCH 144/319] Updates spec to split checkout --- .../shopping/variant_overrides_spec.rb | 33 +++++-------------- 1 file changed, 8 insertions(+), 25 deletions(-) diff --git a/spec/system/consumer/shopping/variant_overrides_spec.rb b/spec/system/consumer/shopping/variant_overrides_spec.rb index 11ecb52ee7..cda13c4459 100644 --- a/spec/system/consumer/shopping/variant_overrides_spec.rb +++ b/spec/system/consumer/shopping/variant_overrides_spec.rb @@ -169,11 +169,9 @@ RSpec.describe "shopping with variant overrides defined" do end end - pending "creating orders" do + describe "creating orders" do it "creates the order with the correct prices" do click_add_to_cart product1_variant1, 2 - click_checkout - complete_checkout o = Spree::Order.complete.last @@ -235,32 +233,17 @@ RSpec.describe "shopping with variant overrides defined" do private def complete_checkout + click_checkout + checkout_as_guest - within "#details" do - fill_in "First Name", with: "Some" - fill_in "Last Name", with: "One" - fill_in "Email", with: "test@example.com" - fill_in "Phone", with: "0456789012" - end + fill_out_details + fill_out_billing_address - within "#billing" do - fill_in "Address", with: "123 Street" - select "Australia", from: "Country" - select "Victoria", from: "State" - fill_in "City", with: "Melbourne" - fill_in "Postcode", with: "3066" - end + proceed_to_payment + proceed_to_summary - within "#shipping" do - choose sm.name - end - - within "#payment" do - choose pm.name - end - - place_order + click_on "Complete order" expect(page).to have_content "Your order has been processed successfully" end From 1fde91e6ff8e6e31948876e5aebe3379f4e10f09 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Wed, 15 May 2024 10:07:40 +1000 Subject: [PATCH 145/319] Update Webmock and VCR config as per Knapsack recommendation See : https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md#720 --- spec/base_spec_helper.rb | 2 +- spec/support/vcr_setup.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb index 11e2fae0ee..6a307e9c3c 100644 --- a/spec/base_spec_helper.rb +++ b/spec/base_spec_helper.rb @@ -32,7 +32,7 @@ require 'webmock/rspec' WebMock.enable! WebMock.disable_net_connect!( allow_localhost: true, - allow: ['chromedriver.storage.googleapis.com', 'api.knapsackpro.com'] + allow: ['chromedriver.storage.googleapis.com'] ) # Requires supporting ruby files with custom matchers and macros, etc, diff --git a/spec/support/vcr_setup.rb b/spec/support/vcr_setup.rb index 1b554f52f2..5d5c155e27 100644 --- a/spec/support/vcr_setup.rb +++ b/spec/support/vcr_setup.rb @@ -7,7 +7,7 @@ VCR.configure do |config| config.hook_into :webmock config.ignore_localhost = true config.configure_rspec_metadata! - config.ignore_hosts('localhost', '127.0.0.1', '0.0.0.0', 'api.knapsackpro.com') + config.ignore_localhost = true # Filter sensitive environment variables %w[ From 45c164d5ae9997d15705e42d2a461d23ad168942 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 15 May 2024 16:47:37 +1000 Subject: [PATCH 146/319] Avoid submitting duplicate connected apps Simple Rails forms prevent double-clicking on submit already. Converting the StimulusReflex interaction to a simple form submit to a controller solves the race condition. The UX is slightly worse because the whole page is reloaded instead rendering only the connected app panel. But we can solve that when we add more apps and want to activate them independently. By then, we may have good patterns for working with Turbo. Technically, the new buttons are a form within a form which is invalid HTML, but it works. --- .../admin/connected_apps_controller.rb | 43 +++++++++++++++ app/reflexes/admin/connected_app_reflex.rb | 53 ------------------- .../form/_connected_apps.html.haml | 6 +-- config/routes/admin.rb | 2 + 4 files changed, 47 insertions(+), 57 deletions(-) create mode 100644 app/controllers/admin/connected_apps_controller.rb delete mode 100644 app/reflexes/admin/connected_app_reflex.rb diff --git a/app/controllers/admin/connected_apps_controller.rb b/app/controllers/admin/connected_apps_controller.rb new file mode 100644 index 0000000000..2cbaca7c9b --- /dev/null +++ b/app/controllers/admin/connected_apps_controller.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +module Admin + class ConnectedAppsController < ApplicationController + def create + authorize! :admin, enterprise + + app = ConnectedApp.create!(enterprise_id: enterprise.id) + + ConnectAppJob.perform_later( + app, spree_current_user.spree_api_key, + channel: SessionChannel.for_request(request), + ) + + render_panel + end + + def destroy + authorize! :admin, enterprise + + app = enterprise.connected_apps.first + app.destroy + + WebhookDeliveryJob.perform_later( + app.data["destroy"], + "disconnect-app", + nil + ) + + render_panel + end + + private + + def enterprise + @enterprise ||= Enterprise.find(params.require(:enterprise_id)) + end + + def render_panel + redirect_to "#{edit_admin_enterprise_path(enterprise)}#/connected_apps_panel" + end + end +end diff --git a/app/reflexes/admin/connected_app_reflex.rb b/app/reflexes/admin/connected_app_reflex.rb deleted file mode 100644 index ecfb974d96..0000000000 --- a/app/reflexes/admin/connected_app_reflex.rb +++ /dev/null @@ -1,53 +0,0 @@ -# frozen_string_literal: true - -module Admin - class ConnectedAppReflex < ApplicationReflex - def create - authorize! :admin, enterprise - - app = ConnectedApp.create!(enterprise_id: enterprise.id) - - # Avoid race condition by sending before enqueuing job: - broadcast_partial - - ConnectAppJob.perform_later( - app, current_user.spree_api_key, - channel: SessionChannel.for_request(request), - ) - morph :nothing - end - - def destroy - authorize! :admin, enterprise - - app = enterprise.connected_apps.first - app.destroy - - broadcast_partial - - WebhookDeliveryJob.perform_later( - app.data["destroy"], - "disconnect-app", - nil - ) - morph :nothing - end - - private - - def enterprise - @enterprise ||= Enterprise.find(element.dataset.enterprise_id) - end - - def broadcast_partial - selector = "#edit_enterprise_#{enterprise.id} #connected-app-discover-regen" - html = ApplicationController.render( - partial: "admin/enterprises/form/connected_apps", - locals: { enterprise: }, - ) - - # Avoid race condition by sending before enqueuing job: - cable_ready.morph(selector:, html:).broadcast - end - end -end diff --git a/app/views/admin/enterprises/form/_connected_apps.html.haml b/app/views/admin/enterprises/form/_connected_apps.html.haml index c60a7da1a1..b8e6be9fae 100644 --- a/app/views/admin/enterprises/form/_connected_apps.html.haml +++ b/app/views/admin/enterprises/form/_connected_apps.html.haml @@ -6,16 +6,14 @@ %p= t ".tagline" %div - if enterprise.connected_apps.empty? - %button{ data: {reflex: "click->Admin::ConnectedApp#create", enterprise_id: enterprise.id} } - = t ".enable" + = button_to t(".enable"), admin_enterprise_connected_apps_path(enterprise.id), method: :post - elsif enterprise.connected_apps.connecting.present? %button{ disabled: true } %i.spinner.fa.fa-spin.fa-circle-o-notch   = t ".loading" - else - %button{ data: {reflex: "click->Admin::ConnectedApp#destroy", enterprise_id: enterprise.id} } - = t ".disable" + = button_to t(".disable"), admin_enterprise_connected_app_path(0, enterprise_id: enterprise.id), method: :delete .connected-app__connection - if enterprise.connected_apps.ready.present? diff --git a/config/routes/admin.rb b/config/routes/admin.rb index 1a7ca8c3cc..c82fb18315 100644 --- a/config/routes/admin.rb +++ b/config/routes/admin.rb @@ -35,6 +35,8 @@ Openfoodnetwork::Application.routes.draw do patch :register end + resources :connected_apps, only: [:create, :destroy] + resources :producer_properties do post :update_positions, on: :collection end From 53c706c6a2898576914967a6f38a0c374093e2a5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 May 2024 09:12:25 +0000 Subject: [PATCH 147/319] chore(deps): bump omniauth-rails_csrf_protection from 1.0.1 to 1.0.2 Bumps [omniauth-rails_csrf_protection](https://github.com/cookpad/omniauth-rails_csrf_protection) from 1.0.1 to 1.0.2. - [Release notes](https://github.com/cookpad/omniauth-rails_csrf_protection/releases) - [Commits](https://github.com/cookpad/omniauth-rails_csrf_protection/compare/v1.0.1...v1.0.2) --- updated-dependencies: - dependency-name: omniauth-rails_csrf_protection dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index b2e1412ffe..611b9ad5ff 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -454,7 +454,7 @@ GEM hashie (>= 3.4.6) rack (>= 2.2.3) rack-protection - omniauth-rails_csrf_protection (1.0.1) + omniauth-rails_csrf_protection (1.0.2) actionpack (>= 4.2) omniauth (~> 2.0) omniauth_openid_connect (0.7.1) From f1a50313a0c3f69ada40f0d99442365a2cdeca72 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 May 2024 09:12:50 +0000 Subject: [PATCH 148/319] chore(deps): bump roadie-rails from 3.1.0 to 3.2.0 Bumps [roadie-rails](https://github.com/Mange/roadie-rails) from 3.1.0 to 3.2.0. - [Changelog](https://github.com/Mange/roadie-rails/blob/master/Changelog.md) - [Commits](https://github.com/Mange/roadie-rails/compare/v3.1.0...v3.2.0) --- updated-dependencies: - dependency-name: roadie-rails dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index b2e1412ffe..39ba543889 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -227,7 +227,7 @@ GEM bigdecimal rexml crass (1.0.6) - css_parser (1.16.0) + css_parser (1.17.1) addressable csv (3.3.0) cuprite (0.15) @@ -410,7 +410,7 @@ GEM net-smtp marcel (1.0.2) matrix (0.4.2) - method_source (1.0.0) + method_source (1.1.0) mime-types (3.5.2) mime-types-data (~> 3.2015) mime-types-data (3.2023.1205) @@ -503,7 +503,7 @@ GEM method_source (~> 1.0) psych (5.1.2) stringio - public_suffix (5.0.4) + public_suffix (5.0.5) puma (6.4.2) nio4r (~> 2.0) query_count (1.1.1) @@ -601,10 +601,10 @@ GEM actionpack (>= 5.2) railties (>= 5.2) rexml (3.2.6) - roadie (5.2.0) + roadie (5.2.1) css_parser (~> 1.4) nokogiri (~> 1.15) - roadie-rails (3.1.0) + roadie-rails (3.2.0) railties (>= 5.1, < 8.0) roadie (~> 5.0) rodf (1.2.0) @@ -826,7 +826,7 @@ GEM xml-simple (1.1.8) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.6.13) + zeitwerk (2.6.14) PLATFORMS ruby From 9464df8aaee976afe81c447d7e93194dbc1dc680 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 10 May 2024 14:09:49 +1000 Subject: [PATCH 149/319] Remove obsolete Enterprise#distributor_info --- ...40510040639_remove_distributor_info_from_enterprises.rb | 7 +++++++ db/schema.rb | 3 +-- lib/tasks/enterprises.rake | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20240510040639_remove_distributor_info_from_enterprises.rb diff --git a/db/migrate/20240510040639_remove_distributor_info_from_enterprises.rb b/db/migrate/20240510040639_remove_distributor_info_from_enterprises.rb new file mode 100644 index 0000000000..3ead73c8a7 --- /dev/null +++ b/db/migrate/20240510040639_remove_distributor_info_from_enterprises.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class RemoveDistributorInfoFromEnterprises < ActiveRecord::Migration[7.0] + def change + remove_column :enterprises, :distributor_info, :text + end +end diff --git a/db/schema.rb b/db/schema.rb index 1cbb2938fa..11699763ba 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_05_01_075735) do +ActiveRecord::Schema[7.0].define(version: 2024_05_10_040639) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" enable_extension "plpgsql" @@ -208,7 +208,6 @@ ActiveRecord::Schema[7.0].define(version: 2024_05_01_075735) do t.string "next_collection_at", limit: 255 t.datetime "created_at", precision: nil, null: false t.datetime "updated_at", precision: nil, null: false - t.text "distributor_info" t.string "facebook", limit: 255 t.string "instagram", limit: 255 t.string "linkedin", limit: 255 diff --git a/lib/tasks/enterprises.rake b/lib/tasks/enterprises.rake index bc97529547..7c2696448c 100644 --- a/lib/tasks/enterprises.rake +++ b/lib/tasks/enterprises.rake @@ -32,7 +32,7 @@ namespace :ofn do def enterprise_header ['name', 'description', 'long_description', 'is_primary_producer', 'is_distributor', 'contact_name', 'phone', 'email', 'website', 'twitter', 'abn', 'acn', 'pickup_times', - 'next_collection_at', 'distributor_info', 'visible', 'facebook', 'instagram', 'linkedin', + 'next_collection_at', 'visible', 'facebook', 'instagram', 'linkedin', 'address1', 'address2', 'city', 'zipcode', 'state', 'country'] end @@ -41,7 +41,7 @@ namespace :ofn do enterprise.is_primary_producer, enterprise.is_distributor, enterprise.contact_name, enterprise.phone, enterprise.email, enterprise.website, enterprise.twitter, enterprise.abn, enterprise.acn, enterprise.pickup_times, enterprise.next_collection_at, - enterprise.distributor_info, enterprise.visible, enterprise.facebook, enterprise.instagram, + enterprise.visible, enterprise.facebook, enterprise.instagram, enterprise.linkedin, enterprise.address.address1, enterprise.address.address2, enterprise.address.city, enterprise.address.zipcode, enterprise.address.state_name, enterprise.address.country&.name] From c981661fe0abd2d84c858e8ae03aa4714c46dd5b Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 10 May 2024 14:12:26 +1000 Subject: [PATCH 150/319] Remove obsolete Enterprise#pickup_times --- .../20240510041114_remove_pickup_times_from_enterprises.rb | 7 +++++++ db/schema.rb | 3 +-- lib/tasks/enterprises.rake | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20240510041114_remove_pickup_times_from_enterprises.rb diff --git a/db/migrate/20240510041114_remove_pickup_times_from_enterprises.rb b/db/migrate/20240510041114_remove_pickup_times_from_enterprises.rb new file mode 100644 index 0000000000..bfe62525a6 --- /dev/null +++ b/db/migrate/20240510041114_remove_pickup_times_from_enterprises.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class RemovePickupTimesFromEnterprises < ActiveRecord::Migration[7.0] + def change + remove_column :enterprises, :pickup_times, :text + end +end diff --git a/db/schema.rb b/db/schema.rb index 11699763ba..90f54fd79a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_05_10_040639) do +ActiveRecord::Schema[7.0].define(version: 2024_05_10_041114) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" enable_extension "plpgsql" @@ -204,7 +204,6 @@ ActiveRecord::Schema[7.0].define(version: 2024_05_10_040639) do t.string "abn", limit: 255 t.string "acn", limit: 255 t.integer "address_id" - t.text "pickup_times" t.string "next_collection_at", limit: 255 t.datetime "created_at", precision: nil, null: false t.datetime "updated_at", precision: nil, null: false diff --git a/lib/tasks/enterprises.rake b/lib/tasks/enterprises.rake index 7c2696448c..9dd85acd2f 100644 --- a/lib/tasks/enterprises.rake +++ b/lib/tasks/enterprises.rake @@ -31,7 +31,7 @@ namespace :ofn do def enterprise_header ['name', 'description', 'long_description', 'is_primary_producer', 'is_distributor', - 'contact_name', 'phone', 'email', 'website', 'twitter', 'abn', 'acn', 'pickup_times', + 'contact_name', 'phone', 'email', 'website', 'twitter', 'abn', 'acn', 'next_collection_at', 'visible', 'facebook', 'instagram', 'linkedin', 'address1', 'address2', 'city', 'zipcode', 'state', 'country'] end @@ -40,7 +40,7 @@ namespace :ofn do [enterprise.name, enterprise.description, enterprise.long_description, enterprise.is_primary_producer, enterprise.is_distributor, enterprise.contact_name, enterprise.phone, enterprise.email, enterprise.website, enterprise.twitter, enterprise.abn, - enterprise.acn, enterprise.pickup_times, enterprise.next_collection_at, + enterprise.acn, enterprise.next_collection_at, enterprise.visible, enterprise.facebook, enterprise.instagram, enterprise.linkedin, enterprise.address.address1, enterprise.address.address2, enterprise.address.city, enterprise.address.zipcode, enterprise.address.state_name, From 135128cf4126bb6481a60c64af524e0b96e6e258 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 10 May 2024 14:19:42 +1000 Subject: [PATCH 151/319] Remove obsolete Enterprise#next_collection_at This was actually shown in one place and represents a user-facing change. But you weren't able to edit the field which means that only very old enterprises would have had this field set and were not able to change it anymore. I searched au-prod and found the following values in the database: - "Friday 31st January" - "From 4pm, Monday 30 September" - "From 5pm-7pm Monday" - "Saturday 27 April 12noon" - "January 31st/February 1st" - "Saturday 1st February" They seem specific to a certain order cycle and have no value as fallback any more. Seems safe to remove. --- app/models/order_cycle.rb | 2 +- app/views/spree/orders/edit.html.haml | 2 -- ...510041829_remove_next_collection_at_from_enterprises.rb | 7 +++++++ lib/tasks/enterprises.rake | 4 ++-- spec/models/order_cycle_spec.rb | 6 +----- 5 files changed, 11 insertions(+), 10 deletions(-) create mode 100644 db/migrate/20240510041829_remove_next_collection_at_from_enterprises.rb diff --git a/app/models/order_cycle.rb b/app/models/order_cycle.rb index 7b71a3a79e..060f75e4f0 100644 --- a/app/models/order_cycle.rb +++ b/app/models/order_cycle.rb @@ -253,7 +253,7 @@ class OrderCycle < ApplicationRecord end def pickup_time_for(distributor) - exchange_for_distributor(distributor)&.pickup_time || distributor.next_collection_at + exchange_for_distributor(distributor)&.pickup_time end def pickup_instructions_for(distributor) diff --git a/app/views/spree/orders/edit.html.haml b/app/views/spree/orders/edit.html.haml index fb50b995eb..30811833b9 100644 --- a/app/views/spree/orders/edit.html.haml +++ b/app/views/spree/orders/edit.html.haml @@ -13,8 +13,6 @@ %strong - if @order.order_cycle = pickup_time @order.order_cycle - - else - = @order.distributor.next_collection_at - content_for :ordercycle_sidebar do .show-for-large-up.large-4.columns diff --git a/db/migrate/20240510041829_remove_next_collection_at_from_enterprises.rb b/db/migrate/20240510041829_remove_next_collection_at_from_enterprises.rb new file mode 100644 index 0000000000..bce671833f --- /dev/null +++ b/db/migrate/20240510041829_remove_next_collection_at_from_enterprises.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class RemoveNextCollectionAtFromEnterprises < ActiveRecord::Migration[7.0] + def change + remove_column :enterprises, :next_collection_at, :string + end +end diff --git a/lib/tasks/enterprises.rake b/lib/tasks/enterprises.rake index 9dd85acd2f..fa735853c2 100644 --- a/lib/tasks/enterprises.rake +++ b/lib/tasks/enterprises.rake @@ -32,7 +32,7 @@ namespace :ofn do def enterprise_header ['name', 'description', 'long_description', 'is_primary_producer', 'is_distributor', 'contact_name', 'phone', 'email', 'website', 'twitter', 'abn', 'acn', - 'next_collection_at', 'visible', 'facebook', 'instagram', 'linkedin', + 'visible', 'facebook', 'instagram', 'linkedin', 'address1', 'address2', 'city', 'zipcode', 'state', 'country'] end @@ -40,7 +40,7 @@ namespace :ofn do [enterprise.name, enterprise.description, enterprise.long_description, enterprise.is_primary_producer, enterprise.is_distributor, enterprise.contact_name, enterprise.phone, enterprise.email, enterprise.website, enterprise.twitter, enterprise.abn, - enterprise.acn, enterprise.next_collection_at, + enterprise.acn, enterprise.visible, enterprise.facebook, enterprise.instagram, enterprise.linkedin, enterprise.address.address1, enterprise.address.address2, enterprise.address.city, enterprise.address.zipcode, enterprise.address.state_name, diff --git a/spec/models/order_cycle_spec.rb b/spec/models/order_cycle_spec.rb index 39095af2f6..b673da05e9 100644 --- a/spec/models/order_cycle_spec.rb +++ b/spec/models/order_cycle_spec.rb @@ -272,7 +272,7 @@ RSpec.describe OrderCycle do @oc = create(:simple_order_cycle) @d1 = create(:enterprise) - @d2 = create(:enterprise, next_collection_at: '2-8pm Friday') + @d2 = create(:enterprise) @e0 = create(:exchange, order_cycle: @oc, sender: create(:enterprise), receiver: @oc.coordinator, incoming: true) @@ -292,10 +292,6 @@ RSpec.describe OrderCycle do it "looks up the pickup time on the exchange when present" do expect(@oc.pickup_time_for(@d1)).to eq('5pm Tuesday') end - - it "returns the distributor's default collection time otherwise" do - expect(@oc.pickup_time_for(@d2)).to eq('2-8pm Friday') - end end describe "finding pickup instructions for a distributor" do From 412c110c65ed6b63882b4714472a380484b2aa81 Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 16 May 2024 10:37:22 +1000 Subject: [PATCH 152/319] Associate label with checkbox Now you can click on the text to tick/untick the box. I've been wanting to do that for ages. --- app/views/spree/admin/tax_settings/edit.html.haml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/views/spree/admin/tax_settings/edit.html.haml b/app/views/spree/admin/tax_settings/edit.html.haml index 18f4c36aa9..9ba2c99880 100644 --- a/app/views/spree/admin/tax_settings/edit.html.haml +++ b/app/views/spree/admin/tax_settings/edit.html.haml @@ -7,8 +7,9 @@ .field.align-center = hidden_field_tag 'preferences[products_require_tax_category]', '0' - = check_box_tag 'preferences[products_require_tax_category]', '1', Spree::Config[:products_require_tax_category] - = label_tag nil, t(:products_require_tax_category) + %label + = check_box_tag 'preferences[products_require_tax_category]', '1', Spree::Config[:products_require_tax_category] + = t(:products_require_tax_category) .form-buttons = button t(:update), 'icon-refresh' From 3e1e7d3a108de1c11d2f284b6e084e65def14a1f Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 16 May 2024 11:12:13 +1000 Subject: [PATCH 153/319] Show error messages and highlight for bulk editing The validation message is on "tax_category", so labels and error messages can use that to show the error state. But the select field has to be "tax_category_id" to work. --- app/views/admin/products_v3/_variant_row.html.haml | 1 + app/views/spree/admin/variants/_form.html.haml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/admin/products_v3/_variant_row.html.haml b/app/views/admin/products_v3/_variant_row.html.haml index 53ea27aad5..98920c72b6 100644 --- a/app/views/admin/products_v3/_variant_row.html.haml +++ b/app/views/admin/products_v3/_variant_row.html.haml @@ -56,6 +56,7 @@ include_blank: t('.none_tax_category'), aria_label: t('.tax_category_field_name'), placeholder_value: t('.search_for_tax_categories'))) + = error_message_on variant, :tax_category %td.align-left -# empty %td.align-right diff --git a/app/views/spree/admin/variants/_form.html.haml b/app/views/spree/admin/variants/_form.html.haml index 76a1ebfafc..f90f15c1f7 100644 --- a/app/views/spree/admin/variants/_form.html.haml +++ b/app/views/spree/admin/variants/_form.html.haml @@ -65,7 +65,7 @@ = f.number_field field, value: value, class: 'fullwidth', step: 0.01 .field - = f.label :tax_category_id, t(:tax_category) + = f.label :tax_category, t(:tax_category), for: :tax_category_id = f.collection_select(:tax_category_id, @tax_categories, :id, :name, { include_blank: t(:none) }, { class: 'select2 fullwidth' }) .field From e0c60aad48ae8d5fc154c21cf3720dd682136a84 Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 16 May 2024 14:21:44 +1000 Subject: [PATCH 154/319] Display red border around invalid selects I developed this while going down a slightly different path. I tested it visually, but the case I tested doesn't exist. I'm confident it will work if we ever have an error on another select though. --- app/webpacker/css/admin_v3/components/tom_select.scss | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/webpacker/css/admin_v3/components/tom_select.scss b/app/webpacker/css/admin_v3/components/tom_select.scss index ddae48cd71..5f0eb481e2 100644 --- a/app/webpacker/css/admin_v3/components/tom_select.scss +++ b/app/webpacker/css/admin_v3/components/tom_select.scss @@ -194,6 +194,13 @@ } } +// Errors +.field_with_errors .ts-wrapper { + .ts-control { + border-color: $color-error; + } +} + // Display as "changed" if sibling select is marked as changed. select.changed + .ts-wrapper { &.single, &.multi { From 3a3dc9eea59da2e8bf5ef31ec32771f4304622e6 Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 16 May 2024 16:17:30 +1000 Subject: [PATCH 155/319] Update all locales with the latest Transifex translations --- config/locales/ar.yml | 5 +++++ config/locales/ca.yml | 5 +++++ config/locales/cy.yml | 5 +++++ config/locales/de_CH.yml | 5 +++++ config/locales/de_DE.yml | 5 +++++ config/locales/el.yml | 3 +++ config/locales/en_AU.yml | 5 +++++ config/locales/en_BE.yml | 5 +++++ config/locales/en_CA.yml | 14 ++++++++++++++ config/locales/en_DE.yml | 5 +++++ config/locales/en_FR.yml | 5 +++++ config/locales/en_GB.yml | 5 +++++ config/locales/en_IE.yml | 5 +++++ config/locales/en_IN.yml | 5 +++++ config/locales/en_NZ.yml | 5 +++++ config/locales/en_PH.yml | 5 +++++ config/locales/en_US.yml | 5 +++++ config/locales/en_ZA.yml | 5 +++++ config/locales/es.yml | 5 +++++ config/locales/es_CO.yml | 5 +++++ config/locales/es_CR.yml | 5 +++++ config/locales/es_US.yml | 5 +++++ config/locales/fil_PH.yml | 5 +++++ config/locales/fr.yml | 5 +++++ config/locales/fr_BE.yml | 5 +++++ config/locales/fr_CA.yml | 13 +++++++++++++ config/locales/fr_CH.yml | 5 +++++ config/locales/fr_CM.yml | 5 +++++ config/locales/hi.yml | 5 +++++ config/locales/hu.yml | 5 +++++ config/locales/it.yml | 5 +++++ config/locales/it_CH.yml | 5 +++++ config/locales/ko.yml | 5 +++++ config/locales/ml.yml | 5 +++++ config/locales/mr.yml | 2 ++ config/locales/nb.yml | 5 +++++ config/locales/nl_BE.yml | 5 +++++ config/locales/pa.yml | 5 +++++ config/locales/pl.yml | 3 +++ config/locales/pt.yml | 5 +++++ config/locales/pt_BR.yml | 5 +++++ config/locales/ru.yml | 5 +++++ config/locales/sv.yml | 4 ++++ config/locales/tr.yml | 5 +++++ config/locales/uk.yml | 5 +++++ 45 files changed, 234 insertions(+) diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 225992f8db..7e3fc63f87 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -477,6 +477,7 @@ ar: edit: تعديل clone: استنساخ delete: حذف + remove: إزالة image: edit: تعديل adjustments: @@ -3870,6 +3871,10 @@ ar: customers: "العملاء" groups: "مجموعات" oidc_settings: "إعدادات OIDC" + overview: "نظرة عامة" + product_import: "استيراد" + enterprise_roles: "الأدوار" + payment_methods: "طرق الدفع" product_properties: index: inherits_properties_checkbox_hint: "وراثة الخصائص من %{supplier}؟ (ما لم يتم تجاوزه أعلاه)" diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 3ed08a8b08..9f20abecbd 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -505,6 +505,7 @@ ca: edit: Editar clone: Clonar delete: Suprimir + remove: Eliminar image: edit: Editar adjustments: @@ -3744,6 +3745,10 @@ ca: enterprise_relationships: "Permisos" customers: "Consumidores" groups: "Grups" + overview: "Visió general" + product_import: "Importa" + enterprise_roles: "Rols" + payment_methods: "Mètodes de Pagament" product_properties: index: inherits_properties_checkbox_hint: "heredar propietats de %{supplier}? (llevat que es sobreescrigui a dalt)" diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 7c34b24325..8cd90a89e5 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -535,6 +535,7 @@ cy: edit: Golygu clone: Clôn delete: Dileu + remove: Dileu image: edit: Golygu adjustments: @@ -3986,6 +3987,10 @@ cy: customers: "Cwsmeriaid" groups: "Grwpiau" oidc_settings: "OIDC Settings" + overview: "Trosolwg" + product_import: "Mewnforio" + enterprise_roles: "Rolau" + payment_methods: "Dulliau Talu" product_properties: index: inherits_properties_checkbox_hint: "Etifeddu eiddo gan %{supplier}? (oni bai ei fod yn cael ei ddiystyru uchod)" diff --git a/config/locales/de_CH.yml b/config/locales/de_CH.yml index 6bed1a6bcb..8d70e7a8fa 100644 --- a/config/locales/de_CH.yml +++ b/config/locales/de_CH.yml @@ -471,6 +471,7 @@ de_CH: edit: Bearbeiten clone: Duplizieren delete: Löschen + remove: Löschen image: edit: Bearbeiten adjustments: @@ -3664,6 +3665,10 @@ de_CH: enterprise_relationships: "Berechtigungen" customers: "Kunden" groups: "Gruppen" + overview: "Einführung" + product_import: "Importieren" + enterprise_roles: "Rollen" + payment_methods: "Zahlungsarten" product_properties: index: inherits_properties_checkbox_hint: "Übernahme der Eigenschaften von %{supplier} (ausser oben überschrieben)?" diff --git a/config/locales/de_DE.yml b/config/locales/de_DE.yml index b30882e2d1..a8c1de21b5 100644 --- a/config/locales/de_DE.yml +++ b/config/locales/de_DE.yml @@ -535,6 +535,7 @@ de_DE: edit: Bearbeiten clone: Duplizieren delete: Löschen + remove: Löschen image: edit: Bearbeiten adjustments: @@ -3925,6 +3926,10 @@ de_DE: customers: "Kunden" groups: "Gruppen" oidc_settings: "OIDC-Einstellungen" + overview: "Einführung" + product_import: "Importieren" + enterprise_roles: "Rollen" + payment_methods: "Zahlungsarten" product_properties: index: inherits_properties_checkbox_hint: "Übernahme der Eigenschaften von %{supplier} (außer oben überschrieben)?" diff --git a/config/locales/el.yml b/config/locales/el.yml index cb07ce25c9..f59c406b5f 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -384,6 +384,7 @@ el: edit: Επεξεργασία clone: Κλώνος delete: Διαγραφή + remove: Αφαίρεση image: edit: Επεξεργασία adjustments: @@ -3290,6 +3291,8 @@ el: enterprise_relationships: "Άδειες" customers: "Πελάτες" groups: "Ομάδες" + product_import: "Εισαγωγή" + payment_methods: "Τρόποι πληρωμής" product_properties: index: inherits_properties_checkbox_hint: "Κληρονομεί ιδιότητες από %{supplier}; (εκτός αν παρακαμφθεί παραπάνω)" diff --git a/config/locales/en_AU.yml b/config/locales/en_AU.yml index 09f74df1b0..bb3be9c036 100644 --- a/config/locales/en_AU.yml +++ b/config/locales/en_AU.yml @@ -346,6 +346,7 @@ en_AU: edit: Edit clone: Clone delete: Delete + remove: Remove image: edit: Edit begins_at: Begins At @@ -3341,6 +3342,10 @@ en_AU: enterprise_relationships: "Permissions" customers: "Customers" groups: "Groups" + overview: "Overview" + product_import: "Import" + enterprise_roles: "Roles" + payment_methods: "Payment Methods" product_properties: index: inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)" diff --git a/config/locales/en_BE.yml b/config/locales/en_BE.yml index bf07d764ef..4fd8e7bd82 100644 --- a/config/locales/en_BE.yml +++ b/config/locales/en_BE.yml @@ -320,6 +320,7 @@ en_BE: edit: Edit clone: Clone delete: Delete + remove: Remove image: edit: Edit begins_at: Begins At @@ -3049,6 +3050,10 @@ en_BE: enterprise_relationships: "Permissions" customers: "Customers" groups: "Groups" + overview: "Overview" + product_import: "Import" + enterprise_roles: "Roles" + payment_methods: "Payment Methods" product_properties: index: inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)" diff --git a/config/locales/en_CA.yml b/config/locales/en_CA.yml index 1c1debf042..17c8e2c3d4 100644 --- a/config/locales/en_CA.yml +++ b/config/locales/en_CA.yml @@ -223,6 +223,10 @@ en_CA: not_available_to_shop: "is not available to %{shop}" card_details: "Card details" card_type: "Card type" + card_type_is: "Card type is" + unrecognized_card_type: "Unrecognized card type" + use_new_cc: "Use a new credit card" + what_is_this: "What is this?" cardholder_name: "Cardholder name" community_forum_url: "Community forum URL" customer_instructions: "Customer instructions" @@ -547,6 +551,7 @@ en_CA: edit: Edit clone: Clone delete: Delete + remove: Remove image: edit: Edit adjustments: @@ -651,6 +656,7 @@ en_CA: status: Status ok: Ok instance_secret_key: Instance Secret Key + instance_publishable_key: Instance Publishable Key account_id: Account ID business_name: Business Name charges_enabled: Charges Enabled @@ -835,6 +841,7 @@ en_CA: error: Unable to delete the variant variant_row: none_tax_category: None + search_for_tax_categories: "Search for tax categories" category_field_name: "Category" tax_category_field_name: "Tax Category" product_row: @@ -2497,6 +2504,7 @@ en_CA: orders_bought_already_confirmed: "* already confirmed" orders_confirm_cancel: "Are you sure you want to cancel this order?" order_processed_successfully: "Your order has been processed successfully" + thank_you_for_your_order: "Thank you for your order" products_cart_distributor_choice: "Distributor for your order:" products_cart_distributor_change: "Your distributor for this order will be changed to %{name} if you add this product to your cart." products_cart_distributor_is: "Your distributor for this order is %{name}." @@ -3720,6 +3728,7 @@ en_CA: editing_tax_category: "Editing tax category" editing_tax_rate: "Editing tax rate" editing_zone: "Editing zone" + editing_state: "Editing Province" expiration: "Expiration" invalid_payment_provider: "Invalid payment provider" items_cannot_be_shipped: "Items cannot be shipped" @@ -3758,6 +3767,7 @@ en_CA: resend: "Resend" back_to_orders_list: "Back to Orders List" back_to_payments_list: "Back To Payments List" + back_to_states_list: "Back To Provinces List" return_authorizations: "Return Authoriations" cannot_create_returns: "Cannot create returns as this order has no shipped units" select_stock: "Select stock" @@ -3987,6 +3997,10 @@ en_CA: customers: "Customers" groups: "Groups" oidc_settings: "OIDC Settings" + overview: "Overview" + product_import: "Import" + enterprise_roles: "Roles" + payment_methods: "Payment Methods" product_properties: index: inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)" diff --git a/config/locales/en_DE.yml b/config/locales/en_DE.yml index 33fbc01816..f87a75416a 100644 --- a/config/locales/en_DE.yml +++ b/config/locales/en_DE.yml @@ -325,6 +325,7 @@ en_DE: edit: Edit clone: Clone delete: Delete + remove: Remove image: edit: Edit begins_at: Begins At @@ -3062,6 +3063,10 @@ en_DE: enterprise_relationships: "Permissions" customers: "Customers" groups: "Groups" + overview: "Overview" + product_import: "Import" + enterprise_roles: "Roles" + payment_methods: "Payment Methods" product_properties: index: inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)" diff --git a/config/locales/en_FR.yml b/config/locales/en_FR.yml index 09934e54af..9f9f0303d8 100644 --- a/config/locales/en_FR.yml +++ b/config/locales/en_FR.yml @@ -551,6 +551,7 @@ en_FR: edit: Edit clone: Clone delete: Delete + remove: Remove image: edit: Edit adjustments: @@ -4000,6 +4001,10 @@ en_FR: customers: "Customers" groups: "Groups" oidc_settings: "OIDC Settings" + overview: "Overview" + product_import: "Import" + enterprise_roles: "Roles" + payment_methods: "Payment Methods" product_properties: index: inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)" diff --git a/config/locales/en_GB.yml b/config/locales/en_GB.yml index 13fb294647..bcec8a14f2 100644 --- a/config/locales/en_GB.yml +++ b/config/locales/en_GB.yml @@ -539,6 +539,7 @@ en_GB: edit: Edit clone: Clone delete: Delete + remove: Remove image: edit: Edit adjustments: @@ -3982,6 +3983,10 @@ en_GB: customers: "Customers" groups: "Groups" oidc_settings: "OIDC Settings" + overview: "Overview" + product_import: "Import" + enterprise_roles: "Roles" + payment_methods: "Payment Methods" product_properties: index: inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)" diff --git a/config/locales/en_IE.yml b/config/locales/en_IE.yml index 094b48b1d1..69cb50d09f 100644 --- a/config/locales/en_IE.yml +++ b/config/locales/en_IE.yml @@ -541,6 +541,7 @@ en_IE: edit: Edit clone: Clone delete: Delete + remove: Remove image: edit: Edit adjustments: @@ -3984,6 +3985,10 @@ en_IE: customers: "Customers" groups: "Groups" oidc_settings: "OIDC Settings" + overview: "Overview" + product_import: "Import" + enterprise_roles: "Roles" + payment_methods: "Payment Methods" product_properties: index: inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)" diff --git a/config/locales/en_IN.yml b/config/locales/en_IN.yml index 16c2f6c5d6..cfd6658e25 100644 --- a/config/locales/en_IN.yml +++ b/config/locales/en_IN.yml @@ -333,6 +333,7 @@ en_IN: edit: Edit clone: Clone delete: Delete + remove: Remove image: edit: Edit begins_at: Begins At @@ -3248,6 +3249,10 @@ en_IN: enterprise_relationships: "Permissions" customers: "Customers" groups: "Groups" + overview: "Overview" + product_import: "Import" + enterprise_roles: "Roles" + payment_methods: "Payment Methods" product_properties: index: inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)" diff --git a/config/locales/en_NZ.yml b/config/locales/en_NZ.yml index f8ee0a5d0b..55f81fd5b5 100644 --- a/config/locales/en_NZ.yml +++ b/config/locales/en_NZ.yml @@ -468,6 +468,7 @@ en_NZ: edit: Edit clone: Clone delete: Delete + remove: Remove image: edit: Edit adjustments: @@ -3580,6 +3581,10 @@ en_NZ: enterprise_relationships: "Permissions" customers: "Customers" groups: "Groups" + overview: "Overview" + product_import: "Import" + enterprise_roles: "Roles" + payment_methods: "Payment Methods" product_properties: index: inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)" diff --git a/config/locales/en_PH.yml b/config/locales/en_PH.yml index a558cc2c4f..6c73facbc3 100644 --- a/config/locales/en_PH.yml +++ b/config/locales/en_PH.yml @@ -332,6 +332,7 @@ en_PH: edit: Edit clone: Clone delete: Delete + remove: Remove image: edit: Edit begins_at: Begins At @@ -3194,6 +3195,10 @@ en_PH: enterprise_relationships: "Permissions" customers: "Customers" groups: "Groups" + overview: "Overview" + product_import: "Import" + enterprise_roles: "Roles" + payment_methods: "Payment Methods" product_properties: index: inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)" diff --git a/config/locales/en_US.yml b/config/locales/en_US.yml index 24ac519e15..fe8b56e096 100644 --- a/config/locales/en_US.yml +++ b/config/locales/en_US.yml @@ -446,6 +446,7 @@ en_US: edit: Edit clone: Clone delete: Delete + remove: Remove image: edit: Edit adjustments: @@ -3595,6 +3596,10 @@ en_US: enterprise_relationships: "Permissions" customers: "Customers" groups: "Groups" + overview: "Overview" + product_import: "Import" + enterprise_roles: "Roles" + payment_methods: "Payment Methods" product_properties: index: inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)" diff --git a/config/locales/en_ZA.yml b/config/locales/en_ZA.yml index fa729e7731..843a3db428 100644 --- a/config/locales/en_ZA.yml +++ b/config/locales/en_ZA.yml @@ -332,6 +332,7 @@ en_ZA: edit: Edit clone: Clone delete: Delete + remove: Remove image: edit: Edit begins_at: Begins At @@ -3124,6 +3125,10 @@ en_ZA: enterprise_relationships: "Permissions" customers: "Customers" groups: "Groups" + overview: "Overview" + product_import: "Import" + enterprise_roles: "Roles" + payment_methods: "Payment Methods" product_properties: index: inherits_properties_checkbox_hint: "Inherit properties from %{supplier}? (unless overridden above)" diff --git a/config/locales/es.yml b/config/locales/es.yml index ef3d731d4c..62df537bfe 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -478,6 +478,7 @@ es: edit: Editar clone: Duplicar delete: Borrar + remove: Eliminar image: edit: Editar adjustments: @@ -3738,6 +3739,10 @@ es: enterprise_relationships: "Permisos" customers: "Consumidoras" groups: "Redes" + overview: "Visión general" + product_import: "Importar" + enterprise_roles: "Roles" + payment_methods: "Métodos de Pago" product_properties: index: inherits_properties_checkbox_hint: "¿Heredar propiedades desde %{supplier}? (a menos que sea anulado arriba)" diff --git a/config/locales/es_CO.yml b/config/locales/es_CO.yml index b421414c80..0ebbe48e8f 100644 --- a/config/locales/es_CO.yml +++ b/config/locales/es_CO.yml @@ -356,6 +356,7 @@ es_CO: edit: Editar clone: Duplicar delete: Borrar + remove: Eliminar image: edit: Editar begins_at: Empieza en @@ -3304,6 +3305,10 @@ es_CO: enterprise_relationships: "Permisos" customers: "Cliente" groups: "Grupos" + overview: "Vista general" + product_import: "Importar" + enterprise_roles: "Roles" + payment_methods: "Métodos de Pago" product_properties: index: inherits_properties_checkbox_hint: "¿Heredar propiedades desde %{supplier}? (a menos que sea anulado arriba)" diff --git a/config/locales/es_CR.yml b/config/locales/es_CR.yml index e921f2e256..70e37d89aa 100644 --- a/config/locales/es_CR.yml +++ b/config/locales/es_CR.yml @@ -468,6 +468,7 @@ es_CR: edit: Editar clone: Duplicar delete: Borrar + remove: Eliminar image: edit: Editar adjustments: @@ -3651,6 +3652,10 @@ es_CR: enterprise_relationships: "Permisos" customers: "Cliente" groups: "Grupos" + overview: "Vista general" + product_import: "Importar" + enterprise_roles: "Roles" + payment_methods: "Métodos de pago" product_properties: index: inherits_properties_checkbox_hint: "¿Heredar propiedades desde %{supplier}? (a menos que sea anulado arriba)" diff --git a/config/locales/es_US.yml b/config/locales/es_US.yml index 7669745129..ccd04577c0 100644 --- a/config/locales/es_US.yml +++ b/config/locales/es_US.yml @@ -445,6 +445,7 @@ es_US: edit: Editar clone: Duplicar delete: Borrar + remove: Eliminar image: edit: Editar adjustments: @@ -3546,6 +3547,10 @@ es_US: enterprise_relationships: "Permisos" customers: "Consumidoras" groups: "Redes" + overview: "Visión general" + product_import: "Importar" + enterprise_roles: "Roles" + payment_methods: "Métodos de Pago" product_properties: index: inherits_properties_checkbox_hint: "¿Heredar propiedades desde %{supplier}? (a menos que sea anulado arriba)" diff --git a/config/locales/fil_PH.yml b/config/locales/fil_PH.yml index 95d65bfc91..cace1d97e1 100644 --- a/config/locales/fil_PH.yml +++ b/config/locales/fil_PH.yml @@ -332,6 +332,7 @@ fil_PH: edit: i-edit clone: Gayahin delete: Tanggalin + remove: Tanggalin image: edit: i-edit begins_at: nagsimula sa @@ -3206,6 +3207,10 @@ fil_PH: enterprise_relationships: "mga pahintulot" customers: "mga customer" groups: "mga grupo" + overview: "pangkalahatang ideya" + product_import: "ilipat" + enterprise_roles: "mga tungkulin" + payment_methods: "Mga Paraan ng Pagbabayad" product_properties: index: inherits_properties_checkbox_hint: "kopyahin ang mga katangian mula sa%{supplier}? (maliban kung napatungan ang nasa itaas)" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index f5dbd08ea0..3fcd49d0b8 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -550,6 +550,7 @@ fr: edit: Modifier clone: Dupliquer delete: Supprimer + remove: Supprimer image: edit: Modifier adjustments: @@ -4057,6 +4058,10 @@ fr: customers: "Acheteurs" groups: "Groupes" oidc_settings: "OIDC" + overview: "Aperçu" + product_import: "Importer" + enterprise_roles: "Roles" + payment_methods: "Méthodes de paiement" product_properties: index: inherits_properties_checkbox_hint: "Hériter des propriétés de %{supplier} ? (non applicable si information de remplacement déjà saisie)" diff --git a/config/locales/fr_BE.yml b/config/locales/fr_BE.yml index a138696097..ce57e7c375 100644 --- a/config/locales/fr_BE.yml +++ b/config/locales/fr_BE.yml @@ -480,6 +480,7 @@ fr_BE: edit: Modifier clone: Dupliquer delete: Supprimer + remove: Supprimer image: edit: Modifier adjustments: @@ -3642,6 +3643,10 @@ fr_BE: enterprise_relationships: "Permissions" customers: "Acheteur·euse·s" groups: "Groupes" + overview: "Aperçu" + product_import: "Importer" + enterprise_roles: "Roles" + payment_methods: "Méthodes de paiement" product_properties: index: inherits_properties_checkbox_hint: "Hériter des propriétés de %{supplier} ? (non applicable si information de remplacement déjà saisie)" diff --git a/config/locales/fr_CA.yml b/config/locales/fr_CA.yml index efb8d0ae1b..9723798a58 100644 --- a/config/locales/fr_CA.yml +++ b/config/locales/fr_CA.yml @@ -223,7 +223,10 @@ fr_CA: not_available_to_shop: "n'est pas disponible pour %{shop}" card_details: "Détalis de la carte" card_type: "Type de carte" + card_type_is: "Type de carte" unrecognized_card_type: "Type de carte non reconnu" + use_new_cc: "Utilisez une nouvelle carte bancaire" + what_is_this: "Qu'est-ce que c'est ?" cardholder_name: "Titulaire de la carte" community_forum_url: "Lien vers le forum" customer_instructions: "Précisions pour l'acheteur" @@ -548,6 +551,7 @@ fr_CA: edit: Modifier clone: Dupliquer delete: Supprimer + remove: Supprimer image: edit: Modifier adjustments: @@ -652,6 +656,7 @@ fr_CA: status: Statut ok: Ok instance_secret_key: Clé Secrète de l'Instance + instance_publishable_key: Clé publique de l'instance account_id: Identifiant Compte business_name: Nom de l'entreprise charges_enabled: Frais activés @@ -837,6 +842,7 @@ fr_CA: error: La variante n'a pas pu être supprimée variant_row: none_tax_category: Aucun + search_for_tax_categories: "Chercher les catégories de taxes" category_field_name: "Catégorie" tax_category_field_name: "Type de taxe" product_row: @@ -2507,6 +2513,7 @@ fr_CA: orders_bought_already_confirmed: "* déjà confirmé" orders_confirm_cancel: "Voulez-vous vraiment annuler cette commande ?" order_processed_successfully: "Votre commande a été traitée avec succès" + thank_you_for_your_order: "Merci pour votre commande" products_cart_distributor_choice: "Distributeur pour votre commande:" products_cart_distributor_change: "Vore distributeur pour cette commande sera dorénavant %{name} si vous ajoutez ce produit à votre panier." products_cart_distributor_is: "Votre distributeur pour cette commande est %{name}." @@ -3767,6 +3774,7 @@ fr_CA: editing_tax_category: "Modifier une catégorie de taxe" editing_tax_rate: "Modifier un taux" editing_zone: "Modifier une zone" + editing_state: "Editer la province" expiration: "Expiration" invalid_payment_provider: "Fournisseur de paiement invalide" items_cannot_be_shipped: "Les produits ne peuvent pas être envoyés" @@ -3805,6 +3813,7 @@ fr_CA: resend: "Renvoyer" back_to_orders_list: "Retour à la liste des commandes" back_to_payments_list: "Retour à la liste des paiements" + back_to_states_list: "Retour à la liste des provinces" return_authorizations: "Autorisations de retours" cannot_create_returns: "Impossible de créer une autorisation de retour car aucun produit n'a été livré pour cette commande." select_stock: "Sélectionner le stock" @@ -4034,6 +4043,10 @@ fr_CA: customers: "Acheteurs" groups: "Groupes" oidc_settings: "OIDC" + overview: "Aperçu" + product_import: "Importer" + enterprise_roles: "Roles" + payment_methods: "Méthodes de paiement" product_properties: index: inherits_properties_checkbox_hint: "Hériter des propriétés de %{supplier}? (non applicable si information de remplacement déjà saisie)" diff --git a/config/locales/fr_CH.yml b/config/locales/fr_CH.yml index e4b9f946af..14753d4ebb 100644 --- a/config/locales/fr_CH.yml +++ b/config/locales/fr_CH.yml @@ -467,6 +467,7 @@ fr_CH: edit: Modifier clone: Dupliquer delete: Supprimer + remove: Supprimer image: edit: Modifier adjustments: @@ -3701,6 +3702,10 @@ fr_CH: enterprise_relationships: "Permissions" customers: "Acheteurs" groups: "Groupes" + overview: "Aperçu" + product_import: "Importer" + enterprise_roles: "Roles" + payment_methods: "Méthodes de paiement" product_properties: index: inherits_properties_checkbox_hint: "Hériter des propriétés de %{supplier} ? (non applicable si information de remplacement déjà saisie)" diff --git a/config/locales/fr_CM.yml b/config/locales/fr_CM.yml index 422036dd54..a787603ad0 100644 --- a/config/locales/fr_CM.yml +++ b/config/locales/fr_CM.yml @@ -404,6 +404,7 @@ fr_CM: edit: Modifier clone: Dupliquer delete: Supprimer + remove: Supprimer image: edit: Modifier adjustments: @@ -3595,6 +3596,10 @@ fr_CM: enterprise_relationships: "Permissions" customers: "Acheteurs" groups: "Groupes" + overview: "Aperçu" + product_import: "Importer" + enterprise_roles: "Roles" + payment_methods: "Méthodes de paiement" product_properties: index: inherits_properties_checkbox_hint: "Hériter des propriétés de %{supplier} ? (non applicable si information de remplacement déjà saisie)" diff --git a/config/locales/hi.yml b/config/locales/hi.yml index a62c17e002..aa5e9e903e 100644 --- a/config/locales/hi.yml +++ b/config/locales/hi.yml @@ -535,6 +535,7 @@ hi: edit: एडिट करें clone: क्लोन delete: हटाएं + remove: मिटाएँ image: edit: एडिट करें adjustments: @@ -3910,6 +3911,10 @@ hi: customers: "ग्राहक" groups: "ग्रुप्स" oidc_settings: "OIDC सेटिंग्स" + overview: "अवलोकन" + product_import: "इम्पोर्ट करें" + enterprise_roles: "भूमिकाएँ" + payment_methods: "भुगतान की विधियाँ" product_properties: index: inherits_properties_checkbox_hint: "%{supplier} से प्रॉपर्टीज़ इन्हेरिट करें? (जब तक कि ऊपर ओवरराइड न किया गया हो)" diff --git a/config/locales/hu.yml b/config/locales/hu.yml index aad97f9268..2e2dea4bee 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -474,6 +474,7 @@ hu: edit: Szerkesztés clone: Klón delete: Töröl + remove: eltávolítás image: edit: Szerkesztés adjustments: @@ -3730,6 +3731,10 @@ hu: enterprise_relationships: "Engedélyek" customers: "Ügyfelek" groups: "Csoportok" + overview: "Áttekintés" + product_import: "Importálás" + enterprise_roles: "Szerepek" + payment_methods: "fizetési módok" product_properties: index: inherits_properties_checkbox_hint: "Tulajdonságokat örököl a következőtől: %{supplier}? (hacsak nincs felülírva)" diff --git a/config/locales/it.yml b/config/locales/it.yml index c2054d5162..604f967242 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -498,6 +498,7 @@ it: edit: Modifica clone: Duplica delete: Annulla + remove: Rimuovi image: edit: Modifica adjustments: @@ -3774,6 +3775,10 @@ it: customers: "Clienti" groups: "Reti" oidc_settings: "Impoostazioni" + overview: "Panoramica" + product_import: "Importazione" + enterprise_roles: "Ruoli" + payment_methods: "Metodi di Pagamento" product_properties: index: inherits_properties_checkbox_hint: "Eredita le proprietà da %{supplier}? (se non sovrascritto)" diff --git a/config/locales/it_CH.yml b/config/locales/it_CH.yml index 8fb4ddb9f2..baeb2f6bde 100644 --- a/config/locales/it_CH.yml +++ b/config/locales/it_CH.yml @@ -445,6 +445,7 @@ it_CH: edit: Modifica clone: Duplica delete: Annulla + remove: Rimuovi image: edit: Modifica adjustments: @@ -3630,6 +3631,10 @@ it_CH: enterprise_relationships: "permessi" customers: "Clienti" groups: "Reti" + overview: "Panoramica" + product_import: "Importazione" + enterprise_roles: "Ruoli" + payment_methods: "Metodi di pagamento" product_properties: index: inherits_properties_checkbox_hint: "Eredita le proprietà da %{supplier}? (se non sovrascritto)" diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 4208b1d1ee..29aaabadd1 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -468,6 +468,7 @@ ko: edit: 편집 clone: 복사 delete: 삭제 + remove: 제거 image: edit: 편집 adjustments: @@ -3596,6 +3597,10 @@ ko: enterprise_relationships: "사용 권한" customers: "소비자" groups: "그룹" + overview: "개요" + product_import: "수입" + enterprise_roles: "역할" + payment_methods: "결제 방법" product_properties: index: inherits_properties_checkbox_hint: "%{supplier} 속성을 상속하시겠습니까? (위에서 재정의하지 않는 경우)" diff --git a/config/locales/ml.yml b/config/locales/ml.yml index 66bc82828b..4e24e31523 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -535,6 +535,7 @@ ml: edit: എഡിറ്റ് ചെയ്യുക clone: ക്ലോൺ delete: ഡിലീറ്റ് ചെയ്യുക + remove: നീക്കം ചെയ്യുക image: edit: എഡിറ്റ് ചെയ്യുക adjustments: @@ -3934,6 +3935,10 @@ ml: customers: "ഉപഭോക്താക്കൾ" groups: "ഗ്രൂപ്പുകൾ" oidc_settings: "ഓഐഡിസി ക്രമീകരണങ്ങൾ" + overview: "അവലോകനം" + product_import: "ഇറക്കുമതി ചെയ്യുക" + enterprise_roles: "കർത്തവ്യങ്ങൾ" + payment_methods: "പേയ്മെന്റ് രീതികൾ" product_properties: index: inherits_properties_checkbox_hint: "%{supplier} ൽ നിന്ന് പ്രോപ്പർട്ടികൾ അവകാശമാക്കണോ? (മുകളിൽ അസാധുവായില്ലെങ്കിൽ)" diff --git a/config/locales/mr.yml b/config/locales/mr.yml index 9396a2a5f3..b90ae1c68f 100644 --- a/config/locales/mr.yml +++ b/config/locales/mr.yml @@ -3837,6 +3837,8 @@ mr: customers: "ग्राहक" groups: "गट" oidc_settings: "OIDC सेटिंग्ज" + product_import: "Import करा" + payment_methods: "पेमेंट पद्धती" product_properties: index: inherits_properties_checkbox_hint: "%{supplier} कडून गुणधर्म मिळवायचे? (वर ओव्हरराईड केल्याशिवाय)" diff --git a/config/locales/nb.yml b/config/locales/nb.yml index a777da2385..cf1009cf18 100644 --- a/config/locales/nb.yml +++ b/config/locales/nb.yml @@ -551,6 +551,7 @@ nb: edit: Rediger clone: Klon delete: Slett + remove: Fjern image: edit: Rediger adjustments: @@ -3996,6 +3997,10 @@ nb: customers: "Kunder" groups: "Grupper" oidc_settings: "OIDC-innstillinger" + overview: "Oversikt" + product_import: "Import" + enterprise_roles: "Roller" + payment_methods: "Betalingsmetoder" product_properties: index: inherits_properties_checkbox_hint: "Arve egenskaper fra %{supplier}? (med mindre overstyrt over)" diff --git a/config/locales/nl_BE.yml b/config/locales/nl_BE.yml index 3b63a8680c..bd4c5fa677 100644 --- a/config/locales/nl_BE.yml +++ b/config/locales/nl_BE.yml @@ -341,6 +341,7 @@ nl_BE: edit: bewerking clone: Kloon delete: 'Uitwissen ' + remove: Verwijderen image: edit: bewerking begins_at: Begint Bij @@ -3202,6 +3203,10 @@ nl_BE: enterprise_relationships: "Toelatingen" customers: "Klanten" groups: "Groepen" + overview: "Overzicht" + product_import: "Importeren" + enterprise_roles: "Rollen" + payment_methods: "Betalingsmethode" product_properties: index: inherits_properties_checkbox_hint: "De kenmerken van 1%{supplier} krijgen ? (niet ter toepassing in geval van invoer van de vervanging)" diff --git a/config/locales/pa.yml b/config/locales/pa.yml index 412bef5dfa..031e3b69ab 100644 --- a/config/locales/pa.yml +++ b/config/locales/pa.yml @@ -528,6 +528,7 @@ pa: edit: ਸੰਪਾਦਿਤ ਕਰੋ clone: ਕਲੋਨ delete: ਹਟਾਓ + remove: Remove image: edit: ਸੰਪਾਦਿਤ ਕਰੋ adjustments: @@ -3804,6 +3805,10 @@ pa: customers: "ਗਾਹਕ" groups: "ਸਮੂਹ" oidc_settings: "OIDC ਸੈਟਿੰਗਾਂ" + overview: "ਸੰਖੇਪ ਜਾਣਕਾਰੀ" + product_import: "ਇਮਪੋਰਟ" + enterprise_roles: "ਭੂਮਿਕਾਵਾਂ" + payment_methods: "ਭੁਗਤਾਨ ਦੇ ਢੰਗ" product_properties: index: inherits_properties_checkbox_hint: "%{supplier} ਤੋਂ ਪ੍ਰੋਪੇਰਟੀਜ਼ ਅਪਣਾਓ? (ਜਦੋਂ ਤੱਕ ਕਿ ਉਪਰ ਓਵਰਰਾਈਡ ਨਾ ਕੀਤਾ ਗਿਆ ਹੋਵੇ)" diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 9cd451f840..daa0fac887 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -337,6 +337,7 @@ pl: edit: Edytuj clone: Kopiuj delete: Usuń + remove: Usuń image: edit: Edytuj begins_at: Początek o @@ -3185,6 +3186,8 @@ pl: enterprise_relationships: "Uprawnienia" customers: "Klienci" groups: "Grupy" + product_import: "Import" + payment_methods: "Metody płatności" product_properties: index: inherits_properties_checkbox_hint: "Odziedziczyć właściwości z %{supplier}? (chyba że zastąpiono powyżej)" diff --git a/config/locales/pt.yml b/config/locales/pt.yml index 9e32432617..694253757f 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -378,6 +378,7 @@ pt: edit: Editar clone: Clonar delete: Apagar + remove: Remover image: edit: Editar begins_at: Começa às @@ -3194,6 +3195,10 @@ pt: enterprise_relationships: "Permissões" customers: "Consumidores/as" groups: "Grupos" + overview: "Visão geral" + product_import: "Importar" + enterprise_roles: "Papeis" + payment_methods: "Métodos de pagamento" product_properties: index: inherits_properties_checkbox_hint: "Herdar propriedades de %{supplier}? (excepto se já alterado em cima)" diff --git a/config/locales/pt_BR.yml b/config/locales/pt_BR.yml index 870fd6fec4..0cf5f26952 100644 --- a/config/locales/pt_BR.yml +++ b/config/locales/pt_BR.yml @@ -406,6 +406,7 @@ pt_BR: edit: Editar clone: Cópia delete: Deletar + remove: Remover image: edit: Editar adjustments: @@ -3487,6 +3488,10 @@ pt_BR: enterprise_relationships: "Permissões" customers: "Compradores" groups: "Grupos" + overview: "Visão geral" + product_import: "Importar" + enterprise_roles: "Funções" + payment_methods: "Métodos de pagamento" product_properties: index: inherits_properties_checkbox_hint: "Herdar propriedades de %{supplier}? (a menos que substituído acima)" diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 985dd74dad..fd00d7e268 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -543,6 +543,7 @@ ru: edit: Изменить clone: Клонировать delete: Удалить + remove: Удалить image: edit: Изменить adjustments: @@ -4039,6 +4040,10 @@ ru: customers: "Клиенты" groups: "Группы" oidc_settings: "Настройки OIDC" + overview: "Введение" + product_import: "Импорт" + enterprise_roles: "Роли" + payment_methods: "Способы Оплаты" product_properties: index: inherits_properties_checkbox_hint: "Наследовать свойства от %{supplier}? (если не отменено выше)" diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 211f9a0674..b7ede42506 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -176,6 +176,7 @@ sv: inherits_properties: "Ärva egenskaper?" actions: edit: Redigera + remove: Ta bort image: edit: Redigera customer: Kund @@ -2212,6 +2213,9 @@ sv: enterprises: "Företag" customers: "Kunder" groups: "Grupper" + overview: "Översikt" + enterprise_roles: "Uppgifter" + payment_methods: "Betalningssätt" properties: index: properties: "Egenskaper" diff --git a/config/locales/tr.yml b/config/locales/tr.yml index fdd9c07361..8f5dcf5221 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -386,6 +386,7 @@ tr: edit: Düzenle clone: Kopyala delete: Sil + remove: Kaldır image: edit: Düzenle adjustments: @@ -3485,6 +3486,10 @@ tr: enterprise_relationships: "İZİNLER" customers: "MÜŞTERİLER" groups: "AĞLAR" + overview: "genel bakış" + product_import: "Aktar" + enterprise_roles: "Roller" + payment_methods: "ÖDEME YÖNTEMLERİ" product_properties: index: inherits_properties_checkbox_hint: "Özellikler %{supplier}'den devralınsın mı? (yukarıda geçersiz kılınmadıkça)" diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 1ae549f00e..f72e1faf02 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -468,6 +468,7 @@ uk: edit: Редагувати clone: Клонувати delete: Видалити + remove: Видалити image: edit: Редагувати adjustments: @@ -3711,6 +3712,10 @@ uk: enterprise_relationships: "Дозволи" customers: "Клієнти" groups: "Групи" + overview: "Огляд" + product_import: "Імпорт" + enterprise_roles: "Ролі" + payment_methods: "Методи оплати" product_properties: index: inherits_properties_checkbox_hint: "Успадкувати властивості від %{supplier}? (якщо не перевизначено вище)" From 79741eac5829351800d01290087d4b21d9ce83b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 May 2024 09:01:30 +0000 Subject: [PATCH 156/319] chore(deps): bump rexml from 3.2.6 to 3.2.8 Bumps [rexml](https://github.com/ruby/rexml) from 3.2.6 to 3.2.8. - [Release notes](https://github.com/ruby/rexml/releases) - [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md) - [Commits](https://github.com/ruby/rexml/compare/v3.2.6...v3.2.8) --- updated-dependencies: - dependency-name: rexml dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5285033fc8..0d8a01b493 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -600,7 +600,8 @@ GEM responders (3.1.1) actionpack (>= 5.2) railties (>= 5.2) - rexml (3.2.6) + rexml (3.2.8) + strscan (>= 3.0.9) roadie (5.2.1) css_parser (~> 1.4) nokogiri (~> 1.15) @@ -758,6 +759,7 @@ GEM stringex (2.8.6) stringio (3.1.0) stripe (11.1.0) + strscan (3.1.0) swd (2.0.3) activesupport (>= 3) attr_required (>= 0.0.5) From 726c52e725ce4333bb267edef9aa85405e272f1c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 May 2024 09:02:01 +0000 Subject: [PATCH 157/319] chore(deps): bump aws-sdk-s3 from 1.147.0 to 1.151.0 Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.147.0 to 1.151.0. - [Release notes](https://github.com/aws/aws-sdk-ruby/releases) - [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-ruby/commits) --- updated-dependencies: - dependency-name: aws-sdk-s3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5285033fc8..3fc097e275 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -156,17 +156,17 @@ GEM awesome_nested_set (3.6.0) activerecord (>= 4.0.0, < 7.2) aws-eventstream (1.3.0) - aws-partitions (1.914.0) - aws-sdk-core (3.192.0) + aws-partitions (1.929.0) + aws-sdk-core (3.196.1) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.8) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.79.0) - aws-sdk-core (~> 3, >= 3.191.0) + aws-sdk-kms (1.81.0) + aws-sdk-core (~> 3, >= 3.193.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.147.0) - aws-sdk-core (~> 3, >= 3.192.0) + aws-sdk-s3 (1.151.0) + aws-sdk-core (~> 3, >= 3.194.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.8) aws-sigv4 (1.8.0) From 58e1dc7b9a5d19450e4e20817be4d41b37f85d3c Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 17 May 2024 11:37:49 +1000 Subject: [PATCH 158/319] Declare rexml as indirect dependency, not direct Reverting 41d56ce98b3743df8ec57d4d94fca2cd73015dba: > This was previously included in Ruby, and has now been extracted. > It's used by activemerchant and selenium and possibly others, > but those gems don't currently declare it as a dependency. This has changed. It's now a dependency of: * activemerchant * rubocop [dev dep only] --- Gemfile | 1 - Gemfile.lock | 1 - 2 files changed, 2 deletions(-) diff --git a/Gemfile b/Gemfile index d4eea771b0..e9adc0d0b3 100644 --- a/Gemfile +++ b/Gemfile @@ -19,7 +19,6 @@ gem 'angular-rails-templates', '>= 0.3.0' gem 'awesome_nested_set' gem 'ransack', '~> 4.1.0' gem 'responders' -gem 'rexml' gem 'webpacker', '~> 5' gem 'i18n' diff --git a/Gemfile.lock b/Gemfile.lock index 0d8a01b493..b08b7d9ae9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -933,7 +933,6 @@ DEPENDENCIES redcarpet redis responders - rexml roadie-rails roo rspec-rails (>= 3.5.2) From ac24725d6cb615ebf86828d73ff858d76591b0ec Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 17 May 2024 14:35:08 +1000 Subject: [PATCH 159/319] Move mail spec precompile assets for it Specs in `spec/lib` don't trigger asset compilation but this particular spec uses a mailer and needs assets. --- spec/{lib/spree/core => mailers}/mail_interceptor_spec.rb | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename spec/{lib/spree/core => mailers}/mail_interceptor_spec.rb (100%) diff --git a/spec/lib/spree/core/mail_interceptor_spec.rb b/spec/mailers/mail_interceptor_spec.rb similarity index 100% rename from spec/lib/spree/core/mail_interceptor_spec.rb rename to spec/mailers/mail_interceptor_spec.rb From 8ccb59a9ab4c5917571af0ddf164a72039a7823f Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Thu, 9 May 2024 14:39:36 +0100 Subject: [PATCH 160/319] included LogDestroyPerformer on product model --- app/controllers/api/v0/products_controller.rb | 1 + app/models/concerns/log_destroy_performer.rb | 1 + app/models/spree/product.rb | 1 + 3 files changed, 3 insertions(+) diff --git a/app/controllers/api/v0/products_controller.rb b/app/controllers/api/v0/products_controller.rb index eead37ca49..1a72047d73 100644 --- a/app/controllers/api/v0/products_controller.rb +++ b/app/controllers/api/v0/products_controller.rb @@ -42,6 +42,7 @@ module Api authorize! :delete, Spree::Product @product = product_finder.find_product authorize! :delete, @product + @product.destroyed_by = current_api_user @product.destroy render json: @product, serializer: Api::Admin::ProductSerializer, status: :no_content end diff --git a/app/models/concerns/log_destroy_performer.rb b/app/models/concerns/log_destroy_performer.rb index 298e0e5012..d53d8ce3bd 100644 --- a/app/models/concerns/log_destroy_performer.rb +++ b/app/models/concerns/log_destroy_performer.rb @@ -6,6 +6,7 @@ module LogDestroyPerformer extend ActiveSupport::Concern included do attr_accessor :destroyed_by + after_destroy :log_who_destroyed def log_who_destroyed diff --git a/app/models/spree/product.rb b/app/models/spree/product.rb index 4fd670f90e..d760c329ec 100755 --- a/app/models/spree/product.rb +++ b/app/models/spree/product.rb @@ -23,6 +23,7 @@ require 'open_food_network/property_merge' module Spree class Product < ApplicationRecord include ProductStock + include LogDestroyPerformer self.belongs_to_required_by_default = false From 826d9eb36d9b5820951e963dd48637432872dba7 Mon Sep 17 00:00:00 2001 From: Cillian O'Ruanaidh Date: Fri, 17 May 2024 14:53:47 +0100 Subject: [PATCH 161/319] Get registration location map working with OSM --- .../registration_controller.js.coffee | 9 ++ app/helpers/map_helper.rb | 4 +- .../registration/steps/_details.html.haml | 5 +- ...ml.haml => _location_map_google.html.haml} | 0 .../steps/_location_map_osm.html.haml | 18 +++ .../controllers/open_street_map_controller.js | 103 ++++++++++++++++++ package.json | 3 + yarn.lock | 27 ++++- 8 files changed, 166 insertions(+), 3 deletions(-) rename app/views/registration/steps/{_location_map.html.haml => _location_map_google.html.haml} (100%) create mode 100644 app/views/registration/steps/_location_map_osm.html.haml create mode 100644 app/webpacker/controllers/open_street_map_controller.js diff --git a/app/assets/javascripts/darkswarm/controllers/registration/registration_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/registration/registration_controller.js.coffee index 5145c05ea1..7d38de19da 100644 --- a/app/assets/javascripts/darkswarm/controllers/registration/registration_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/registration/registration_controller.js.coffee @@ -42,8 +42,17 @@ angular.module('Darkswarm').controller "RegistrationCtrl", ($scope, Registration $scope.toggleAddressConfirmed = -> $scope.addressConfirmed = !$scope.addressConfirmed if $scope.addressConfirmed + $scope.setLatLongIfUsingOpenStreetMap() $scope.enterprise.address.latitude = $scope.latLong.latitude $scope.enterprise.address.longitude = $scope.latLong.longitude else $scope.enterprise.address.latitude = null $scope.enterprise.address.longitude = null + + # When OpenStreetMaps is enabled the latitude and longitude are calculated via a Stimulus + # controller, so they need to be read from data properties to be accessible here. + $scope.setLatLongIfUsingOpenStreetMap = -> + openStreetMap = document.getElementById("open-street-map") + if !$scope.latLong && openStreetMap && openStreetMap.dataset.latitude && openStreetMap.dataset.longitude + $scope.latLong = { latitude: openStreetMap.dataset.latitude, longitude: openStreetMap.dataset.longitude } + diff --git a/app/helpers/map_helper.rb b/app/helpers/map_helper.rb index bc3b66c49c..5952187077 100644 --- a/app/helpers/map_helper.rb +++ b/app/helpers/map_helper.rb @@ -2,7 +2,9 @@ module MapHelper def using_google_maps? - ENV["GOOGLE_MAPS_API_KEY"].present? || google_maps_configured_with_geocoder_api_key? + !ContentConfig.open_street_map_enabled && ( + ENV["GOOGLE_MAPS_API_KEY"].present? || google_maps_configured_with_geocoder_api_key? + ) end private diff --git a/app/views/registration/steps/_details.html.haml b/app/views/registration/steps/_details.html.haml index 45fb0e56b7..eee82d4ee3 100644 --- a/app/views/registration/steps/_details.html.haml +++ b/app/views/registration/steps/_details.html.haml @@ -57,7 +57,10 @@ %span.error{ "ng-show": "details.state.$error.required && submitted" } = t(".state_field_error") - = render 'registration/steps/location_map' if using_google_maps? + - if using_google_maps? + = render 'registration/steps/location_map_google' + - elsif ContentConfig.open_street_map_enabled + = render 'registration/steps/location_map_osm' .row.buttons .small-12.columns diff --git a/app/views/registration/steps/_location_map.html.haml b/app/views/registration/steps/_location_map_google.html.haml similarity index 100% rename from app/views/registration/steps/_location_map.html.haml rename to app/views/registration/steps/_location_map_google.html.haml diff --git a/app/views/registration/steps/_location_map_osm.html.haml b/app/views/registration/steps/_location_map_osm.html.haml new file mode 100644 index 0000000000..c60ffa74f7 --- /dev/null +++ b/app/views/registration/steps/_location_map_osm.html.haml @@ -0,0 +1,18 @@ +%div{ data: { + controller: "open-street-map", + "open-street-map-default-latitude-value": ContentConfig.open_street_map_default_latitude, + "open-street-map-default-longitude-value": ContentConfig.open_street_map_default_longitude, + "open-street-map-provider-name-value": ContentConfig.open_street_map_provider_name, + "open-street-map-provider-options-value": ContentConfig.open_street_map_provider_options + } + } + .center + %input.button.primary{ data: { action: "click->open-street-map#locateAddress" }, type: "button", value: "{{'registration.steps.details.locate_address' | t}}" } + .center{ data: { "open-street-map-target": "dragPinNote" }, style: "display: none" } + %strong {{'registration.steps.details.drag_pin' | t}} + #open-street-map.map-container--registration + + .center{ data: { "open-street-map-target": "confirmAddressField" }, style: "display: none" } + .field + %input{ type: 'checkbox', id: 'confirm_address', name: 'confirm_address', "ng-click": 'toggleAddressConfirmed()' } + %label{ for: 'confirm_address' } {{'registration.steps.details.confirm_address' | t}} diff --git a/app/webpacker/controllers/open_street_map_controller.js b/app/webpacker/controllers/open_street_map_controller.js new file mode 100644 index 0000000000..0c5f983158 --- /dev/null +++ b/app/webpacker/controllers/open_street_map_controller.js @@ -0,0 +1,103 @@ +import { Controller } from "stimulus"; +import L from "leaflet"; +import LeafetProviders from "leaflet-providers"; +import { OpenStreetMapProvider } from 'leaflet-geosearch'; + +export default class extends Controller { + static targets = ["confirmAddressField", "dragPinNote"]; + static values = { + defaultLatitude: Number, + defaultLongitude: Number, + providerName: String, + providerOptions: Object + }; + + connect() { + this.zoomLevel = 6; + this.#displayMapWhenAtRegistrationDetailsStep(); + } + + disconnect() { + this.map.remove(); + } + + async locateAddress() { + const results = await this.provider.search({ query: this.#addressQuery() }); + if(results.length > 0) { + const result = results[0]; + this.#setLatitudeLongitude(result.y, result.x); + this.#addMarker(result.y, result.x); + this.map.setView([result.y, result.x], this.zoomLevel); + this.confirmAddressFieldTarget.style.display = "block"; + this.dragPinNoteTarget.style.display = "block"; + } + } + + #addressQuery() { + const stateField = document.getElementById("enterprise_state"); + const state = stateField.options[stateField.selectedIndex]?.label; + const countryField = document.getElementById("enterprise_country"); + const country = countryField.options[countryField.selectedIndex]?.label; + const city = document.getElementById("enterprise_city")?.value; + const zipcode = document.getElementById("enterprise_zipcode")?.value; + const addressLine1 = document.getElementById("enterprise_address")?.value; + const addressLine2 = document.getElementById("enterprise_address2")?.value; + + // If someone clicks the locate address on map button without filling in their address the + // geocoded address will not be very accurate so don't zoom in too close so it's easier for + // people to see where the marker is. + if(!addressLine1 && !city && !zipcode) { + this.zoomLevel = 6; + } else { + this.zoomLevel = 14; + } + + return [addressLine1, addressLine2, city, state, zipcode, country].filter((value) => !!value).join(", ") + } + + #addMarker(latitude, longitude) { + const icon = L.icon({ iconUrl: "/map_icons/map_003-producer-shop.svg" }); + this.marker = L.marker([latitude, longitude], { + draggable: true, + icon: icon, + }); + + this.marker.on("dragend", (event) => { + const position = event.target.getLatLng(); + this.#setLatitudeLongitude(position.lat, position.lng); + }); + + this.marker.addTo(this.map); + } + + #displayMap() { + this.map = L.map('open-street-map') + L.tileLayer.provider(this.providerNameValue, this.providerOptionsValue).addTo(this.map) + this.map.setView([this.defaultLatitudeValue, this.defaultLongitudeValue], this.zoomLevel) + this.provider = new OpenStreetMapProvider(); + } + + // The connect() method is called before the registration details step is visible, this + // causes the map tiles to render incorrectly. To fix this only display the map when the + // registration details step has been reached. + #displayMapWhenAtRegistrationDetailsStep() { + const observer = new IntersectionObserver( + ([intersectionObserverEntry]) => { + if(intersectionObserverEntry.target.offsetParent !== null) { + this.#displayMap(); + observer.disconnect() + } + }, + { threshold: [0] } + ); + observer.observe(document.getElementById("registration-details")); + } + + // The registration process uses Angular, set latitude and longitude data properties so the + // Angular RegistrationCtrl controller can read and add them to the parameters it uses to create + // new enterprises. + #setLatitudeLongitude(latitude, longitude) { + document.getElementById("open-street-map").dataset.latitude = latitude; + document.getElementById("open-street-map").dataset.longitude = longitude; + } +} diff --git a/package.json b/package.json index 11d984c172..da27441983 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,9 @@ "hotkeys-js": "^3.13.7", "jquery-ui": "1.13.3", "js-big-decimal": "^2.0.7", + "leaflet": "1.9.4", + "leaflet-geosearch": "3.11.1", + "leaflet-providers": "2.0.0", "moment": "^2.30.1", "mrujs": "^1.0.0", "select2": "^4.0.13", diff --git a/yarn.lock b/yarn.lock index ec2125d824..06f8da17a4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1112,6 +1112,13 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== +"@googlemaps/js-api-loader@^1.16.6": + version "1.16.6" + resolved "https://registry.yarnpkg.com/@googlemaps/js-api-loader/-/js-api-loader-1.16.6.tgz#c89970c94b55796d51746c092f0e52953994a171" + integrity sha512-V8p5W9DbPQx74jWUmyYJOerhiB4C+MHekaO0ZRmc6lrOYrvY7+syLhzOWpp55kqSPeNb+qbC2h8i69aLIX6krQ== + dependencies: + fast-deep-equal "^3.1.3" + "@hotwired/stimulus-webpack-helpers@^1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/@hotwired/stimulus-webpack-helpers/-/stimulus-webpack-helpers-1.0.1.tgz#4cd74487adeca576c9865ac2b9fe5cb20cef16dd" @@ -3911,7 +3918,7 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -5707,6 +5714,24 @@ last-call-webpack-plugin@^3.0.0: lodash "^4.17.5" webpack-sources "^1.1.0" +leaflet-geosearch@3.11.1: + version "3.11.1" + resolved "https://registry.yarnpkg.com/leaflet-geosearch/-/leaflet-geosearch-3.11.1.tgz#e35b1e156afef388bbb42543eb56502e9a633192" + integrity sha512-cILLFLmn8C3MtGhaafGqY7CuhUG2+bGyUgfPHgNgW6fs4EvYyiIO88nO2ZqR7Hy6Ba089haLkhODpZR+/fRrPQ== + optionalDependencies: + "@googlemaps/js-api-loader" "^1.16.6" + leaflet "^1.6.0" + +leaflet-providers@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/leaflet-providers/-/leaflet-providers-2.0.0.tgz#dfdab9ca2dccc57c79e1462bc3dd20f78910afcb" + integrity sha512-CWwKEnHd66Qsx0m4o5q5ZOa60s00B91pMxnlr4Y22msubfs7dhbZhdMIz8bvZQkrZqi67ppI1fsZRS6vtrLcOA== + +leaflet@1.9.4, leaflet@^1.6.0: + version "1.9.4" + resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.9.4.tgz#23fae724e282fa25745aff82ca4d394748db7d8d" + integrity sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA== + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" From 1c0a6d12298ca26659b9a6ccc779bb38f96fa934 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Gon=C3=A7alves?= Date: Mon, 20 May 2024 03:55:49 +0100 Subject: [PATCH 162/319] Reintroduced changes made in commit #12443 --- app/views/checkout/_details.html.haml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/views/checkout/_details.html.haml b/app/views/checkout/_details.html.haml index 1918afc5cd..56146d19c0 100644 --- a/app/views/checkout/_details.html.haml +++ b/app/views/checkout/_details.html.haml @@ -96,11 +96,6 @@ #distributor_address.panel - if shipping_method.description.present? = simple_format(html_escape(shipping_method.description)) - %br/ - %br/ - - if @order.order_cycle.pickup_time_for(@order.distributor) - = t :checkout_ready_for - = @order.order_cycle.pickup_time_for(@order.distributor) = f.error_message_on :shipping_method, standalone: true From c960e55437b27a4c19ce019d8cd39b92c6230693 Mon Sep 17 00:00:00 2001 From: David Cook Date: Mon, 20 May 2024 15:51:55 +1000 Subject: [PATCH 163/319] Bump cable_ready and stimulus_reflex again Sigh. --- Gemfile.lock | 4 ++-- package.json | 10 +++++----- yarn.lock | 18 +++++++++--------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1e3f8c9c8a..d47361d0a1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -193,7 +193,7 @@ GEM bullet (7.1.6) activesupport (>= 3.0.0) uniform_notifier (~> 1.11) - cable_ready (5.0.4) + cable_ready (5.0.5) actionpack (>= 5.2) actionview (>= 5.2) activesupport (>= 5.2) @@ -752,7 +752,7 @@ GEM state_machines-activerecord (0.9.0) activerecord (>= 6.0) state_machines-activemodel (>= 0.9.0) - stimulus_reflex (3.5.0) + stimulus_reflex (3.5.1) actioncable (>= 5.2, < 8) actionpack (>= 5.2, < 8) actionview (>= 5.2, < 8) diff --git a/package.json b/package.json index 2b41eaa523..6b92211887 100644 --- a/package.json +++ b/package.json @@ -11,10 +11,11 @@ }, "dependencies": { "@floating-ui/dom": "^1.6.5", + "@hotwired/stimulus": "^3.2", "@hotwired/turbo": "^8.0.4", "@rails/webpacker": "5.4.4", "@stimulus-components/rails-nested-form": "^5.0.0", - "cable_ready": "5.0.4", + "cable_ready": "5.0.5", "debounced": "^0.0.5", "flatpickr": "^4.6.9", "foundation-sites": "^5.5.3", @@ -27,11 +28,10 @@ "shortcut-buttons-flatpickr": "^0.4.0", "stimulus": "^3.2.2", "stimulus-flatpickr": "^1.4.0", - "stimulus_reflex": "3.5.0", + "stimulus_reflex": "3.5.1", "tom-select": "^2.3.1", "trix": "^2.1.1", - "webpack": "~4", - "@hotwired/stimulus": "^3.2" + "webpack": "~4" }, "devDependencies": { "jasmine-core": "~5.1.2", @@ -44,4 +44,4 @@ "pretty-quick": "4.0.0", "webpack-dev-server": "~3" } -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index 72dff437b6..4500b9918a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2444,10 +2444,10 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -cable_ready@5.0.4, cable_ready@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/cable_ready/-/cable_ready-5.0.4.tgz#88b5bff27871be402f6ea049d65126bb1995d147" - integrity sha512-HZLj3SjgEDB4H2GqtKHmg2lOu8YCti0hsPR9XC2mMfz6WOkHK4FWt1/NJ0OIKAcQAEnxEJEtlIgBv6tP1m958g== +cable_ready@5.0.5, cable_ready@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/cable_ready/-/cable_ready-5.0.5.tgz#45dd12ae5b3c5c53a1b42c10785e79ff87a5be22" + integrity sha512-qPC6zaI8h59BzMH3MxtpuMC+H33VJTA2eVddL6fZSWz01jJ2Y3okld01oYWQoKwE2yle/tvHbyuhoKxD4mhEuw== dependencies: morphdom "2.6.1" @@ -8373,14 +8373,14 @@ stimulus@^3.2.2: "@hotwired/stimulus" "^3.2.2" "@hotwired/stimulus-webpack-helpers" "^1.0.0" -stimulus_reflex@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/stimulus_reflex/-/stimulus_reflex-3.5.0.tgz#63726b85ad9d03fbebe93d580ca9a8e1d210e7eb" - integrity sha512-+zD1E8AQJS0Ugjs+fpBjcnFBDzRBXYt6oT+e6cRV/yT1usl1SRrCEon+6+mbbqnZfK7+oXd3jVj7QuE65YLqbQ== +stimulus_reflex@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/stimulus_reflex/-/stimulus_reflex-3.5.1.tgz#fb9c548667e01b8dc7141187c73abfe1aa25472a" + integrity sha512-Bwsuerfh8ca6kp7MKlUgzYAmeflqoBzSpb25M4i+h3FsmAfPl4rUNN6T8v1d6JPqAPAVQRUL/wtDHumLtpETFw== dependencies: "@hotwired/stimulus" "^3" "@rails/actioncable" "^6 || ^7" - cable_ready "^5.0.4" + cable_ready "^5.0.5" stream-browserify@^2.0.1: version "2.0.2" From 621a95e913e4f72e7388b761b9ad44cfc98bf6dd Mon Sep 17 00:00:00 2001 From: isidzukuri Date: Sat, 18 May 2024 14:18:35 +0300 Subject: [PATCH 164/319] Remove discourse --- .env | 8 -- .github/ISSUE_TEMPLATE/feature-template.md | 19 +--- .rubocop_todo.yml | 10 -- app/controllers/application_controller.rb | 1 - app/controllers/discourse_sso_controller.rb | 52 --------- app/helpers/discourse_helper.rb | 27 ----- app/views/shared/menu/_signed_in.html.haml | 6 - .../menu/_signed_in_offcanvas.html.haml | 7 -- config/routes.rb | 3 - lib/discourse/single_sign_on.rb | 107 ------------------ 10 files changed, 1 insertion(+), 239 deletions(-) delete mode 100644 app/controllers/discourse_sso_controller.rb delete mode 100644 app/helpers/discourse_helper.rb delete mode 100644 lib/discourse/single_sign_on.rb diff --git a/.env b/.env index 3182c16226..7ecc2646d5 100644 --- a/.env +++ b/.env @@ -42,14 +42,6 @@ SMTP_PASSWORD="f00d" # Javascript error reporting via Bugsnag. # BUGSNAG_JS_KEY="" -# SingleSignOn login for Discourse -# -# DISCOURSE_SSO_SECRET should be a random string. It must be the same as provided to your Discourse instance. -# DISCOURSE_SSO_SECRET="" -# -# DISCOURSE_URL must be the URL of your Discourse instance. -# DISCOURSE_URL="https://noticeboard.openfoodnetwork.org.au" - # see="https://developers.google.com/maps/documentation/javascript/get-api-key # GOOGLE_MAPS_API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # see https://developers.google.com/maps/documentation/javascript/localization#Region diff --git a/.github/ISSUE_TEMPLATE/feature-template.md b/.github/ISSUE_TEMPLATE/feature-template.md index 9fb6cc1741..0bf772760a 100644 --- a/.github/ISSUE_TEMPLATE/feature-template.md +++ b/.github/ISSUE_TEMPLATE/feature-template.md @@ -9,27 +9,10 @@ assignees: '' --- ## What is the problem we are solving - + ## Success factors = expected outcome ## Useful information for inception - -## Link to the "Product Development - Backlog" item in Discourse - - Add a custom footer - Pages 70 -Home -Development environment setup - -macOS (Sierra, HighSierra and Mojave) -OS X (El Capitan) -OS X (Mavericks) -Ubuntu -On Heroku -Rubocop -General guidelines - -Spree Commerce customisation diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 14d29848c8..228257f7ca 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -6,11 +6,6 @@ # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. -# Offense count: 2 -Lint/DuplicateMethods: - Exclude: - - 'lib/discourse/single_sign_on.rb' - # Offense count: 16 # Configuration parameters: AllowComments, AllowEmptyLambdas. Lint/EmptyBlock: @@ -104,7 +99,6 @@ Metrics/AbcSize: - 'app/models/spree/order/checkout.rb' - 'app/models/spree/preferences/preferable_class_methods.rb' - 'app/models/spree/return_authorization.rb' - - 'lib/discourse/single_sign_on.rb' - 'lib/open_food_network/order_cycle_form_applicator.rb' - 'lib/open_food_network/order_cycle_permissions.rb' - 'lib/spree/core/controller_helpers/order.rb' @@ -205,7 +199,6 @@ Metrics/CyclomaticComplexity: - 'app/models/spree/tax_rate.rb' - 'app/models/spree/variant.rb' - 'app/models/spree/zone.rb' - - 'lib/discourse/single_sign_on.rb' - 'lib/open_food_network/enterprise_issue_validator.rb' - 'lib/reporting/reports/xero_invoices/base.rb' - 'lib/spree/core/controller_helpers/order.rb' @@ -227,7 +220,6 @@ Metrics/MethodLength: - 'app/models/spree/order/checkout.rb' - 'app/models/spree/payment/processing.rb' - 'app/models/spree/preferences/preferable_class_methods.rb' - - 'lib/discourse/single_sign_on.rb' - 'lib/open_food_network/order_cycle_form_applicator.rb' - 'lib/open_food_network/order_cycle_permissions.rb' - 'lib/reporting/reports/enterprise_fee_summary/scope.rb' @@ -1013,7 +1005,6 @@ Style/SlicingWithRange: - 'app/helpers/spree/admin/navigation_helper.rb' - 'app/services/embedded_page_service.rb' - 'engines/order_management/app/services/order_management/subscriptions/validator.rb' - - 'lib/discourse/single_sign_on.rb' # Offense count: 25 # This cop supports unsafe autocorrection (--autocorrect-all). @@ -1021,7 +1012,6 @@ Style/SlicingWithRange: Style/StringConcatenation: Exclude: - 'app/controllers/admin/stripe_connect_settings_controller.rb' - - 'app/helpers/discourse_helper.rb' - 'app/helpers/enterprises_helper.rb' - 'app/helpers/spree/admin/base_helper.rb' - 'app/mailers/spree/user_mailer.rb' diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index f0bc1c0255..8c5675b217 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -28,7 +28,6 @@ class ApplicationController < ActionController::Base helper 'injection' helper 'markdown' helper 'footer_links' - helper 'discourse' helper 'checkout' helper 'link' helper 'terms_and_conditions' diff --git a/app/controllers/discourse_sso_controller.rb b/app/controllers/discourse_sso_controller.rb deleted file mode 100644 index 8ac609e931..0000000000 --- a/app/controllers/discourse_sso_controller.rb +++ /dev/null @@ -1,52 +0,0 @@ -# frozen_string_literal: true - -require 'discourse/single_sign_on' - -class DiscourseSsoController < ApplicationController - include SharedHelper - include DiscourseHelper - - before_action :require_config - - def login - if require_activation? - redirect_to discourse_url - else - redirect_to discourse_login_url - end - end - - def sso - if spree_current_user - begin - redirect_to sso_url - rescue TypeError - render plain: "Bad SingleSignOn request.", status: :bad_request - end - else - redirect_to login_path - end - end - - private - - def sso_url - secret = discourse_sso_secret! - sso = Discourse::SingleSignOn.parse(request.query_string, secret) - sso.email = spree_current_user.email - sso.username = spree_current_user.login - sso.external_id = spree_current_user.id - sso.sso_secret = secret - sso.admin = admin_user? - sso.require_activation = require_activation? - sso.to_url(discourse_sso_url) - end - - def require_config - raise ActionController::RoutingError, 'Not Found' unless discourse_configured? - end - - def require_activation? - !admin_user? && !spree_current_user.confirmed? - end -end diff --git a/app/helpers/discourse_helper.rb b/app/helpers/discourse_helper.rb deleted file mode 100644 index 28b45209a2..0000000000 --- a/app/helpers/discourse_helper.rb +++ /dev/null @@ -1,27 +0,0 @@ -# frozen_string_literal: true - -module DiscourseHelper - def discourse_configured? - discourse_url.present? - end - - def discourse_url - ENV.fetch('DISCOURSE_URL', nil) - end - - def discourse_login_url - discourse_url + '/login' - end - - def discourse_sso_url - discourse_url + '/session/sso_login' - end - - def discourse_url! - discourse_url || raise('Missing Discourse URL') - end - - def discourse_sso_secret! - ENV['DISCOURSE_SSO_SECRET'] || raise('Missing SSO secret') - end -end diff --git a/app/views/shared/menu/_signed_in.html.haml b/app/views/shared/menu/_signed_in.html.haml index 34b7bcfc06..059580c1a2 100644 --- a/app/views/shared/menu/_signed_in.html.haml +++ b/app/views/shared/menu/_signed_in.html.haml @@ -1,9 +1,3 @@ -- if discourse_configured? - %li - %a{href: main_app.discourse_login_path, target: '_blank'} - %span.nav-primary - = t 'label_notices' - %li.user-menu.has-dropdown.not-click %a{href: "#", class: "top-bar--menu-item-with-icon"} diff --git a/app/views/shared/menu/_signed_in_offcanvas.html.haml b/app/views/shared/menu/_signed_in_offcanvas.html.haml index c6f0e6be8a..e5ec28bef4 100644 --- a/app/views/shared/menu/_signed_in_offcanvas.html.haml +++ b/app/views/shared/menu/_signed_in_offcanvas.html.haml @@ -1,10 +1,3 @@ -- if discourse_configured? - %li.li-menu - %a{href: main_app.discourse_login_path, target: '_blank'} - %span.nav-primary - %i.ofn-i_025-notepad - = t 'label_notices' - - if admin_user? or enterprise_user? %li %a{href: spree.admin_dashboard_path, target:'_blank'} diff --git a/config/routes.rb b/config/routes.rb index ba182c9607..7537dd4615 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -11,9 +11,6 @@ Openfoodnetwork::Application.routes.draw do get "/login", to: redirect("/#/login") get '/unauthorized', :to => 'home#unauthorized', :as => :unauthorized - get "/discourse/login", to: "discourse_sso#login" - get "/discourse/sso", to: "discourse_sso#sso" - get "/map", to: "map#index", as: :map get "/sell", to: "home#sell", as: :sell diff --git a/lib/discourse/single_sign_on.rb b/lib/discourse/single_sign_on.rb deleted file mode 100644 index 5e2db79461..0000000000 --- a/lib/discourse/single_sign_on.rb +++ /dev/null @@ -1,107 +0,0 @@ -# frozen_string_literal: true - -# This class is the reference implementation of a SSO provider from Discourse. - -module Discourse - class SingleSignOn - ACCESSORS = [:nonce, :name, :username, :email, :avatar_url, :avatar_force_update, - :require_activation, :about_me, :external_id, :return_sso_url, :admin, :moderator, - :suppress_welcome_message].freeze - FIXNUMS = [].freeze - BOOLS = [:avatar_force_update, :admin, :moderator, :require_activation, - :suppress_welcome_message].freeze - NONCE_EXPIRY_TIME = 10.minutes - - attr_accessor(*ACCESSORS, :sso_secret, :sso_url) - - def self.sso_secret - raise "sso_secret not implemented on class, be sure to set it on instance" - end - - def self.sso_url - raise "sso_url not implemented on class, be sure to set it on instance" - end - - def self.parse(payload, sso_secret = nil) - sso = new - sso.sso_secret = sso_secret if sso_secret - - parsed = Rack::Utils.parse_query(payload) - if sso.sign(parsed["sso"]) != parsed["sig"] - diags = "\n\nsso: #{parsed['sso']}\n\nsig: #{parsed['sig']}\n\n" \ - "expected sig: #{sso.sign(parsed['sso'])}" - raise "Bad signature for payload #{diags}" unless parsed["sso"] =~ %r{[^a-zA-Z0-9=\r\n/+]}m - - raise "The SSO field should be Base64 encoded, using only A-Z, a-z, 0-9, +, /, " \ - "and = characters. Your input contains characters we don't understand as Base64, " \ - "see http://en.wikipedia.org/wiki/Base64 #{diags}" - - end - - decoded = Base64.decode64(parsed["sso"]) - decoded_hash = Rack::Utils.parse_query(decoded) - - ACCESSORS.each do |k| - val = decoded_hash[k.to_s] - val = val.to_i if FIXNUMS.include? k - if BOOLS.include? k - val = ["true", "false"].include?(val) ? val == "true" : nil - end - sso.public_send("#{k}=", val) - end - - decoded_hash.each do |k, v| - # 1234567 - # custom. - # - if k[0..6] == "custom." - field = k[7..-1] - sso.custom_fields[field] = v - end - end - - sso - end - - def sso_secret - @sso_secret || self.class.sso_secret - end - - def sso_url - @sso_url || self.class.sso_url - end - - def custom_fields - @custom_fields ||= {} - end - - def sign(payload) - OpenSSL::HMAC.hexdigest("sha256", sso_secret, payload) - end - - def to_url(base_url = nil) - base = (base_url || sso_url).to_s - "#{base}#{base.include?('?') ? '&' : '?'}#{payload}" - end - - def payload - payload = Base64.encode64(unsigned_payload) - "sso=#{CGI.escape(payload)}&sig=#{sign(payload)}" - end - - def unsigned_payload - payload = {} - ACCESSORS.each do |k| - next if (val = public_send k).nil? - - payload[k] = val - end - - @custom_fields&.each do |k, v| - payload["custom.#{k}"] = v.to_s - end - - Rack::Utils.build_query(payload) - end - end -end From b9a0c1cc8788ec8f9e8fbb572df4ddd0e9eb4375 Mon Sep 17 00:00:00 2001 From: isidzukuri Date: Tue, 21 May 2024 08:59:20 +0300 Subject: [PATCH 165/319] revert feature-template.md --- .github/ISSUE_TEMPLATE/feature-template.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/feature-template.md b/.github/ISSUE_TEMPLATE/feature-template.md index 0bf772760a..9fb6cc1741 100644 --- a/.github/ISSUE_TEMPLATE/feature-template.md +++ b/.github/ISSUE_TEMPLATE/feature-template.md @@ -9,10 +9,27 @@ assignees: '' --- ## What is the problem we are solving - + ## Success factors = expected outcome ## Useful information for inception + +## Link to the "Product Development - Backlog" item in Discourse + + Add a custom footer + Pages 70 +Home +Development environment setup + +macOS (Sierra, HighSierra and Mojave) +OS X (El Capitan) +OS X (Mavericks) +Ubuntu +On Heroku +Rubocop +General guidelines + +Spree Commerce customisation From f0f2754d7f2a27754e9890a05edcd728b8aeaf69 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 21 May 2024 16:33:49 +1000 Subject: [PATCH 166/319] Remove now-unused translation --- config/locales/en.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index b6d63a5632..f1e6d5c4a4 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2192,7 +2192,6 @@ en: label_account: "Account" label_more: "Show more" label_less: "Show less" - label_notices: "Notices" cart_items: "items" cart_headline: "Your shopping cart" From 39f1eac300327411b1acb9f6d100f8bc0244c86b Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 21 May 2024 14:32:11 +1000 Subject: [PATCH 167/319] Move invoices specs to the invoices spec file The orders file is too big and causes a bottleneck for parallelising specs. Maybe they should be merged with the above specs, but I'm not familiar enough to know for sure. --- spec/system/admin/order_spec.rb | 161 -------------------- spec/system/admin/orders/invoices_spec.rb | 175 ++++++++++++++++++++++ 2 files changed, 175 insertions(+), 161 deletions(-) diff --git a/spec/system/admin/order_spec.rb b/spec/system/admin/order_spec.rb index b0b08badee..5a0ff97a0b 100644 --- a/spec/system/admin/order_spec.rb +++ b/spec/system/admin/order_spec.rb @@ -1140,165 +1140,4 @@ RSpec.describe ' end end end - - describe "Legal Invoices", feature: :invoices do - before do - login_as user - end - - describe "for order states" do - context "complete" do - let!(:order1) { - create(:order_with_totals_and_distribution, user:, distributor:, - order_cycle:, state: 'complete', - payment_state: 'balance_due', - customer_id: customer.id) - } - - context "editing the order" do - before do - visit spree.edit_admin_order_path(order1) - end - - it "displays the invoice tab" do - expect(page).to have_content "Complete".upcase - expect(page).to have_content "Invoices".upcase - end - end - - context "visiting the invoices tab" do - let!(:table_header) { - [ - "Date/Time", - "Invoice Number", - "Amount", - "Status", - "File", - ].join(" ").upcase - } - - let(:invoice_number){ "#{order.distributor_id}-1" } - let(:table_contents) { - [ - Invoice.first.created_at.strftime('%B %d, %Y').to_s, - invoice_number, - "0.0", - "Active", - "Download" - ].join(" ") - } - let(:download_href) { - "#{spree.print_admin_order_path(order1)}?invoice_id=#{Invoice.last.id}" - } - - before do - Spree::Config[:enterprise_number_required_on_invoices?] = false - visit spree.admin_order_invoices_path(order1) - end - - it "displays the invoices table" do - # with no invoices, only the table header is displayed - expect(page).to have_css "table.index" - expect(page).to have_content "#{customer.first_name} #{customer.last_name} -" - expect(page.find("table").text).to have_content(table_header) - - # the New invoice button + the warning should be visible - expect(page).to have_link "Create or Update Invoice" - expect(page).to have_content "The order has changed since the last invoice update." - click_link "Create or Update Invoice" - - # and disappear after clicking - expect(page).not_to have_link "Create or Update Invoice" - expect(page).not_to have_content "The order has changed since the last invoice update." - - # creating an invoice, displays a second row - expect(page.find("table").text).to have_content(table_contents) - - # with a valid invoice download link - expect(page).to have_link("Download", - href: download_href) - end - - context "the Create or Update Invoice button" do - context "when an ABN number is mandatory for invoices but not present" do - before do - Spree::Config[:enterprise_number_required_on_invoices?] = true - end - - it "displays a warning that an ABN is required when it's clicked" do - visit spree.admin_order_invoices_path(order1) - message = accept_prompt { click_link "Create or Update Invoice" } - distributor = order1.distributor - expect(message) - .to eq "#{distributor.name} must have a valid ABN before invoices can be used." - end - end - end - end - end - - context "resumed" do - let!(:order2) { - create(:order_with_totals_and_distribution, user:, distributor:, - order_cycle:, state: 'resumed', - payment_state: 'balance_due') - } - before do - visit spree.edit_admin_order_path(order2) - end - - it "displays the invoice tab" do - expect(page).to have_content "Resumed".upcase - expect(page).to have_content "Invoices".upcase - end - end - - context "canceled" do - let!(:order3) { - create(:order_with_totals_and_distribution, user:, distributor:, - order_cycle:, state: 'canceled', - payment_state: 'balance_due') - } - before do - visit spree.edit_admin_order_path(order3) - end - - it "displays the invoice tab" do - expect(page).to have_content "Cancelled".upcase - expect(page).to have_content "Invoices".upcase - end - end - - context "cart" do - let!(:order_empty) { - create(:order_with_line_items, user:, distributor:, order_cycle:, - line_items_count: 0) - } - before do - visit spree.edit_admin_order_path(order_empty) - end - - it "should not display the invoice tab" do - expect(page).to have_content "Cart".upcase - expect(page).not_to have_content "Invoices".upcase - end - end - - context "payment" do - let!(:order4) do - create(:order_ready_for_payment, user:, distributor:, - order_cycle:, - payment_state: 'balance_due') - end - before do - visit spree.edit_admin_order_path(order4) - end - - it "should not display the invoice tab" do - expect(page).to have_content "Payment".upcase - expect(page).not_to have_content "Invoices".upcase - end - end - end - end end diff --git a/spec/system/admin/orders/invoices_spec.rb b/spec/system/admin/orders/invoices_spec.rb index b5ade9edc9..b101a28a7a 100644 --- a/spec/system/admin/orders/invoices_spec.rb +++ b/spec/system/admin/orders/invoices_spec.rb @@ -211,3 +211,178 @@ RSpec.describe ' end end end + +RSpec.describe "Invoice order states", feature: :invoices do + let(:user) { create(:user) } + let(:product) { create(:simple_product) } + let(:distributor) { create(:distributor_enterprise, owner: user, charges_sales_tax: true) } + let(:order_cycle) do + create(:simple_order_cycle, name: 'One', distributors: [distributor], + variants: [product.variants.first]) + end + let(:order) do + create(:order_with_totals_and_distribution, user:, distributor:, + order_cycle:, state: 'complete', + payment_state: 'balance_due') + end + let(:customer) { order.customer } + + before do + order.finalize! + + login_as user + end + + context "complete" do + let!(:order1) { + create(:order_with_totals_and_distribution, user:, distributor:, + order_cycle:, state: 'complete', + payment_state: 'balance_due', + customer_id: customer.id) + } + + context "editing the order" do + before do + visit spree.edit_admin_order_path(order1) + end + + it "displays the invoice tab" do + expect(page).to have_content "Complete".upcase + expect(page).to have_content "Invoices".upcase + end + end + + context "visiting the invoices tab" do + let!(:table_header) { + [ + "Date/Time", + "Invoice Number", + "Amount", + "Status", + "File", + ].join(" ").upcase + } + + let(:invoice_number){ "#{order.distributor_id}-1" } + let(:table_contents) { + [ + Invoice.first.created_at.strftime('%B %d, %Y').to_s, + invoice_number, + "0.0", + "Active", + "Download" + ].join(" ") + } + let(:download_href) { + "#{spree.print_admin_order_path(order1)}?invoice_id=#{Invoice.last.id}" + } + + before do + Spree::Config[:enterprise_number_required_on_invoices?] = false + visit spree.admin_order_invoices_path(order1) + end + + it "displays the invoices table" do + # with no invoices, only the table header is displayed + expect(page).to have_css "table.index" + expect(page).to have_content "#{customer.first_name} #{customer.last_name} -" + expect(page.find("table").text).to have_content(table_header) + + # the New invoice button + the warning should be visible + expect(page).to have_link "Create or Update Invoice" + expect(page).to have_content "The order has changed since the last invoice update." + click_link "Create or Update Invoice" + + # and disappear after clicking + expect(page).not_to have_link "Create or Update Invoice" + expect(page).not_to have_content "The order has changed since the last invoice update." + + # creating an invoice, displays a second row + expect(page.find("table").text).to have_content(table_contents) + + # with a valid invoice download link + expect(page).to have_link("Download", + href: download_href) + end + + context "the Create or Update Invoice button" do + context "when an ABN number is mandatory for invoices but not present" do + before do + Spree::Config[:enterprise_number_required_on_invoices?] = true + end + + it "displays a warning that an ABN is required when it's clicked" do + visit spree.admin_order_invoices_path(order1) + message = accept_prompt { click_link "Create or Update Invoice" } + distributor = order1.distributor + expect(message) + .to eq "#{distributor.name} must have a valid ABN before invoices can be used." + end + end + end + end + end + + context "resumed" do + let!(:order2) { + create(:order_with_totals_and_distribution, user:, distributor:, + order_cycle:, state: 'resumed', + payment_state: 'balance_due') + } + before do + visit spree.edit_admin_order_path(order2) + end + + it "displays the invoice tab" do + expect(page).to have_content "Resumed".upcase + expect(page).to have_content "Invoices".upcase + end + end + + context "canceled" do + let!(:order3) { + create(:order_with_totals_and_distribution, user:, distributor:, + order_cycle:, state: 'canceled', + payment_state: 'balance_due') + } + before do + visit spree.edit_admin_order_path(order3) + end + + it "displays the invoice tab" do + expect(page).to have_content "Cancelled".upcase + expect(page).to have_content "Invoices".upcase + end + end + + context "cart" do + let!(:order_empty) { + create(:order_with_line_items, user:, distributor:, order_cycle:, + line_items_count: 0) + } + before do + visit spree.edit_admin_order_path(order_empty) + end + + it "should not display the invoice tab" do + expect(page).to have_content "Cart".upcase + expect(page).not_to have_content "Invoices".upcase + end + end + + context "payment" do + let!(:order4) do + create(:order_ready_for_payment, user:, distributor:, + order_cycle:, + payment_state: 'balance_due') + end + before do + visit spree.edit_admin_order_path(order4) + end + + it "should not display the invoice tab" do + expect(page).to have_content "Payment".upcase + expect(page).not_to have_content "Invoices".upcase + end + end +end From 818c0306c6d85f0f3a10d2587b1a8e5f534845dc Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Fri, 17 May 2024 19:00:15 +0100 Subject: [PATCH 168/319] Updates paypal feature spec to consider new checkout flow --- .../consumer/shopping/checkout_paypal_spec.rb | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/spec/system/consumer/shopping/checkout_paypal_spec.rb b/spec/system/consumer/shopping/checkout_paypal_spec.rb index 07bc98c309..8368867e2c 100644 --- a/spec/system/consumer/shopping/checkout_paypal_spec.rb +++ b/spec/system/consumer/shopping/checkout_paypal_spec.rb @@ -4,9 +4,9 @@ require "system_helper" RSpec.describe "Check out with Paypal" do include ShopWorkflow - include CheckoutRequestsHelper include AuthenticationHelper include PaypalHelper + include CheckoutHelper let(:distributor) { create(:distributor_enterprise) } let(:supplier) { create(:supplier_enterprise) } @@ -47,10 +47,12 @@ RSpec.describe "Check out with Paypal" do end shared_examples "checking out with paypal" do |user_type| - pending user_type.to_s do + context user_type.to_s do before do fill_out_details - fill_out_form(free_shipping.name, paypal.name, save_default_addresses: false) + fill_out_billing_address + proceed_to_payment + proceed_to_summary end it "completes the checkout after successful Paypal payment" do @@ -65,7 +67,7 @@ RSpec.describe "Check out with Paypal" do ) stub_paypal_confirm - place_order + click_on "Complete order" expect(page).to have_content "Your order has been processed successfully" expect(order.reload.state).to eq "complete" @@ -75,14 +77,14 @@ RSpec.describe "Check out with Paypal" do it "fails with an error message" do stub_paypal_response success: false - place_order + click_on "Complete order" expect(page).to have_content "PayPal failed." end end end describe "shared_examples" do - pending "as a guest user" do + context "as a guest user" do before do visit checkout_path checkout_as_guest @@ -90,7 +92,7 @@ RSpec.describe "Check out with Paypal" do it_behaves_like "checking out with paypal", "as guest" end - pending "as a logged in user" do + context "as a logged in user" do before do login_as user visit checkout_path From 1d11f8c85b08f96a2d7c58bf93c2453c35a63fe4 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 21 May 2024 16:55:17 +1000 Subject: [PATCH 169/319] Move bulk order actions to separate spec file This was another large file, potentially causing a bottleneck. All the order setup is duplicated from the other file which is a bit of shame, but I think it makes sense. --- spec/system/admin/orders/bulk_actions_spec.rb | 473 ++++++++++++++++++ spec/system/admin/orders_spec.rb | 378 -------------- 2 files changed, 473 insertions(+), 378 deletions(-) create mode 100644 spec/system/admin/orders/bulk_actions_spec.rb diff --git a/spec/system/admin/orders/bulk_actions_spec.rb b/spec/system/admin/orders/bulk_actions_spec.rb new file mode 100644 index 0000000000..e93cfe4b5f --- /dev/null +++ b/spec/system/admin/orders/bulk_actions_spec.rb @@ -0,0 +1,473 @@ +# frozen_string_literal: true + +require "system_helper" + +RSpec.describe ' + As an administrator + I want to perform bulk order actions +' do + include AuthenticationHelper + include WebHelper + + let(:owner) { create(:user) } + let(:owner2) { create(:user) } + let(:customer) { create(:user) } + let(:customer2) { create(:user) } + let(:customer3) { create(:user) } + let(:customer4) { create(:user) } + let(:customer5) { create(:user) } + let(:billing_address) { create(:address, :randomized) } + let(:billing_address2) { create(:address, :randomized) } + let(:billing_address3) { create(:address, :randomized) } + let(:billing_address4) { create(:address, :randomized) } + let(:billing_address5) { create(:address, :randomized) } + let(:product) { create(:simple_product) } + let(:distributor) { + create(:distributor_enterprise, owner:, with_payment_and_shipping: true, + charges_sales_tax: true) + } + let(:distributor2) { create(:distributor_enterprise_with_tax, owner:) } + let(:distributor3) { + create(:distributor_enterprise, owner:, with_payment_and_shipping: true, + charges_sales_tax: true) + } + let(:distributor4) { + create(:distributor_enterprise, owner:, with_payment_and_shipping: true, + charges_sales_tax: true) + } + let(:distributor5) { create(:distributor_enterprise, owner: owner2, charges_sales_tax: true) } + let!(:shipping_method) { + create(:shipping_method_with, :pickup, name: "pick_up", + distributors: [distributor, distributor2, distributor3]) + } + let!(:shipping_method2) { + create(:shipping_method_with, :pickup, name: "delivery", + distributors: [distributor4, distributor5]) + } + let(:order_cycle) do + create(:simple_order_cycle, name: 'One', distributors: [distributor, distributor2, + distributor3, distributor4], + variants: [product.variants.first]) + end + + context "with a complete order" do + let(:order) do + create(:order_with_totals_and_distribution, user: customer, distributor:, + order_cycle:, + state: 'complete', payment_state: 'balance_due', + bill_address_id: billing_address.id) + end + + let!(:order_cycle2) { + create(:simple_order_cycle, name: 'Two', orders_close_at: 2.weeks.from_now) + } + let!(:order_cycle3) { + create(:simple_order_cycle, name: 'Three', orders_close_at: 3.weeks.from_now) + } + let!(:order_cycle4) { + create(:simple_order_cycle, name: 'Four', orders_close_at: 4.weeks.from_now) + } + let!(:order_cycle5) do + create(:simple_order_cycle, name: 'Five', coordinator: distributor5, + distributors: [distributor5], variants: [product.variants.first]) + end + + let!(:order2) { + create(:order_ready_to_ship, user: customer2, distributor: distributor2, + order_cycle: order_cycle2, completed_at: 2.days.ago, + bill_address_id: billing_address2.id) + } + let!(:order3) { + create(:order_with_credit_payment, user: customer3, distributor: distributor3, + order_cycle: order_cycle3, + bill_address_id: billing_address3.id) + } + let!(:order4) { + create(:order_with_credit_payment, user: customer4, distributor: distributor4, + order_cycle: order_cycle4, + bill_address_id: billing_address4.id) + } + let!(:order5) { + create(:order_ready_to_ship, user: customer5, distributor: distributor5, + order_cycle: order_cycle5, + bill_address_id: billing_address5.id) + } + + context "as a super admin" do + before do + login_as_admin + visit spree.admin_orders_path + end + + context "can bulk send invoices per email" do + before do + Spree::Config[:enable_invoices?] = true + Spree::Config[:enterprise_number_required_on_invoices?] = false + end + + context "with multiple orders with differents states" do + before do + order2.update(state: "complete") + order3.update(state: "resumed") + order4.update(state: "canceled") + order5.update(state: "payment") + end + + it "can bulk send invoices per email, but only for the 'complete' or 'resumed' ones" do + within "#listing_orders" do + page.find("input[name='bulk_ids[]'][value='#{order2.id}']").click + page.find("input[name='bulk_ids[]'][value='#{order3.id}']").click + page.find("input[name='bulk_ids[]'][value='#{order4.id}']").click + page.find("input[name='bulk_ids[]'][value='#{order5.id}']").click + end + + page.find("span.icon-reorder", text: "ACTIONS").click + within ".ofn-drop-down .menu" do + page.find("span", text: "Send Invoices").click + end + + expect(page).to have_content "This will email customer invoices " \ + "for all selected complete orders." + expect(page).to have_content "Are you sure you want to proceed?" + + within ".reveal-modal" do + expect { + find_button("Confirm").click + }.to enqueue_job(ActionMailer::MailDeliveryJob).exactly(:twice) + end + + expect(page).to have_content "Invoice emails sent for 2 orders." + end + end + + it "can bulk send confirmation email from 2 orders" do + page.find("#listing_orders tbody tr:nth-child(1) input[name='bulk_ids[]']").click + page.find("#listing_orders tbody tr:nth-child(2) input[name='bulk_ids[]']").click + + page.find("span.icon-reorder", text: "ACTIONS").click + within ".ofn-drop-down .menu" do + page.find("span", text: "Resend Confirmation").click + end + + expect(page).to have_content "Are you sure you want to proceed?" + + within ".reveal-modal" do + expect { + find_button("Confirm").click + }.to enqueue_job(ActionMailer::MailDeliveryJob).exactly(:twice) + end + + expect(page).to have_content "Confirmation emails sent for 2 orders." + end + end + + context "can bulk print invoices" do + let(:order4_selector){ "#order_#{order4.id} input[name='bulk_ids[]']" } + let(:order5_selector){ "#order_#{order5.id} input[name='bulk_ids[]']" } + + shared_examples "can bulk print invoices from 2 orders" do + it "bulk prints invoices in pdf format" do + page.find(order4_selector).click + page.find(order5_selector).click + + page.find("span.icon-reorder", text: "ACTIONS").click + within ".ofn-drop-down .menu" do + expect { + page.find("span", text: "Print Invoices").click # Prints invoices in bulk + }.to enqueue_job(BulkInvoiceJob).exactly(:once) + end + + expect(page).to have_content "Compiling Invoices" + expect(page).to have_content "Please wait until the PDF is ready " \ + "before closing this modal." + + # we don't run Sidekiq in test environment, so we need to manually run enqueued jobs + # to generate PDF files, and change the modal accordingly + perform_enqueued_jobs(only: BulkInvoiceJob) + + expect(page).to have_content "Bulk Invoice created" + + within ".modal-content" do + expect(page).to have_link(class: "button", text: "VIEW FILE", href: /invoices/) + + invoice_content = extract_pdf_content + + expect(invoice_content).to have_content("TAX INVOICE", count: 2) + expect(invoice_content).to have_content(order4.number.to_s) + expect(invoice_content).to have_content(order5.number.to_s) + expect(invoice_content).to have_content(distributor4.name.to_s) + expect(invoice_content).to have_content(distributor5.name.to_s) + expect(invoice_content).to have_content(order_cycle4.name.to_s) + expect(invoice_content).to have_content(order_cycle5.name.to_s) + end + end + end + + shared_examples "should ignore the non invoiceable order" do + it "bulk prints invoices in pdf format" do + page.find(order4_selector).click + page.find(order5_selector).click + + page.find("span.icon-reorder", text: "ACTIONS").click + within ".ofn-drop-down .menu" do + expect { + page.find("span", text: "Print Invoices").click # Prints invoices in bulk + }.to enqueue_job(BulkInvoiceJob).exactly(:once) + end + + expect(page).to have_content "Compiling Invoices" + expect(page).to have_content "Please wait until the PDF is ready " \ + "before closing this modal." + + perform_enqueued_jobs(only: BulkInvoiceJob) + + expect(page).to have_content "Bulk Invoice created" + + within ".modal-content" do + expect(page).to have_link(class: "button", text: "VIEW FILE", + href: /invoices/) + + invoice_content = extract_pdf_content + + expect(invoice_content).to have_content("TAX INVOICE", count: 1) + expect(invoice_content).not_to have_content(order4.number.to_s) + expect(invoice_content).to have_content(order5.number.to_s) + expect(invoice_content).not_to have_content(distributor4.name.to_s) + expect(invoice_content).to have_content(distributor5.name.to_s) + expect(invoice_content).not_to have_content(order_cycle4.name.to_s) + expect(invoice_content).to have_content(order_cycle5.name.to_s) + end + end + end + + context "ABN is not required" do + before do + allow(Spree::Config).to receive(:enterprise_number_required_on_invoices?) + .and_return false + end + + it_behaves_like "can bulk print invoices from 2 orders" + + context "with legal invoices feature", feature: :invoices do + it_behaves_like "can bulk print invoices from 2 orders" + end + + context "one of the two orders is not invoiceable" do + before do + order4.cancel! + end + + it_behaves_like "should ignore the non invoiceable order" + context "with legal invoices feature", feature: :invoices do + it_behaves_like "should ignore the non invoiceable order" + end + end + + context "ordering by customer name" do + context "ascending" do + let!(:surnames) { + [order2.name.gsub(/.* /, ""), order3.name.gsub(/.* /, ""), + order4.name.gsub(/.* /, ""), order5.name.gsub(/.* /, "")].sort + } + it "orders by customer name ascending" do + page.find('a', text: "NAME").click # orders alphabetically (asc) + sleep(0.5) # waits for column sorting + + page.find("#selectAll").click + + print_all_invoices + + invoice_content = extract_pdf_content + + expect( + invoice_content.join + ).to match(/#{surnames[0]}.*#{surnames[1]}.*#{surnames[2]}.*#{surnames[3]}/m) + end + end + context "descending" do + let!(:surnames) { + [order2.name.gsub(/.* /, ""), order3.name.gsub(/.* /, ""), + order4.name.gsub(/.* /, ""), order5.name.gsub(/.* /, "")].sort.reverse + } + it "order by customer name descending" do + page.find('a', text: "NAME").click # orders alphabetically (asc) + sleep(0.5) # waits for column sorting + page.find('a', text: "NAME").click # orders alphabetically (desc) + sleep(0.5) # waits for column sorting + + page.find("#selectAll").click + + print_all_invoices + + invoice_content = extract_pdf_content + + expect( + invoice_content.join + ).to match(/#{surnames[0]}.*#{surnames[1]}.*#{surnames[2]}.*#{surnames[3]}/m) + end + end + end + end + context "ABN is required" do + before do + allow(Spree::Config).to receive(:enterprise_number_required_on_invoices?) + .and_return true + end + context "All the distributors setup the ABN" do + before do + order4.distributor.update(abn: "123456789") + order5.distributor.update(abn: "987654321") + end + context "all the orders are invoiceable (completed/resumed)" do + it_behaves_like "can bulk print invoices from 2 orders" + context "with legal invoices feature", feature: :invoices do + it_behaves_like "can bulk print invoices from 2 orders" + end + end + + context "one of the two orders is not invoiceable" do + before do + order4.cancel! + end + + it_behaves_like "should ignore the non invoiceable order" + context "with legal invoices feature", feature: :invoices do + it_behaves_like "should ignore the non invoiceable order" + end + end + end + context "the distributor of one of the order didn't set the ABN" do + before do + order4.distributor.update(abn: "123456789") + order5.distributor.update(abn: nil) + end + + shared_examples "should not print the invoice" do + it "should render a warning message" do + page.find(order4_selector).click + page.find(order5_selector).click + + page.find("span.icon-reorder", text: "ACTIONS").click + within ".ofn-drop-down .menu" do + expect { + page.find("span", text: "Print Invoices").click # Prints invoices in bulk + }.not_to enqueue_job(BulkInvoiceJob) + end + + expect(page).not_to have_content "Compiling Invoices" + expect(page).not_to have_content "Please wait until the PDF is ready " \ + "before closing this modal." + + expect(page).to have_content "#{ + order5.distributor.name + } must have a valid ABN before invoices can be used." + end + end + it_behaves_like "should not print the invoice" + context "with legal invoices feature", feature: :invoices do + it_behaves_like "should not print the invoice" + end + end + end + end + it "can bulk cancel 2 orders" do + page.find("#listing_orders tbody tr:nth-child(1) input[name='bulk_ids[]']").click + page.find("#listing_orders tbody tr:nth-child(2) input[name='bulk_ids[]']").click + + page.find("span.icon-reorder", text: "ACTIONS").click + within ".ofn-drop-down .menu" do + page.find("span", text: "Cancel Orders").click + end + + expect(page).to have_content "Are you sure you want to proceed?" + expect(page).to have_content "This will cancel the current order." + + within ".reveal-modal" do + uncheck "Send a cancellation email to the customer" + expect { + find_button("Cancel").click # Cancels the cancel action + }.not_to enqueue_job(ActionMailer::MailDeliveryJob).exactly(:twice) + end + + page.find("span.icon-reorder", text: "ACTIONS").click + within ".ofn-drop-down .menu" do + page.find("span", text: "Cancel Orders").click + end + + within ".reveal-modal" do + expect { + find_button("Confirm").click # Confirms the cancel action + }.not_to enqueue_job(ActionMailer::MailDeliveryJob).exactly(:twice) + end + + expect(page).to have_content("CANCELLED", count: 2) + end + end + + context "for a hub manager" do + before do + login_as owner2 + visit spree.admin_orders_path + end + + it "displays the orders for the respective distributor" do + expect(page).to have_content order5.number # displays the only order for distributor5 + expect(page).not_to have_content order.number + expect(page).not_to have_content order2.number + expect(page).not_to have_content order3.number + expect(page).not_to have_content order4.number + end + + it "cannot send emails to orders if permission have been revoked in the meantime" do + page.find("#listing_orders tbody tr:nth-child(1) input[name='bulk_ids[]']").click + # Find the clicked order + order = Spree::Order.find_by( + id: page.find("#listing_orders tbody tr:nth-child(1) input[name='bulk_ids[]']").value + ) + # Revoke permission for the current user on that specific order by changing its owners + order.update_attribute(:distributor, distributor) + order.update_attribute(:order_cycle, order_cycle) + + page.find("span.icon-reorder", text: "ACTIONS").click + within ".ofn-drop-down .menu" do + page.find("span", text: "Resend Confirmation").click + end + + expect(page).to have_content "Are you sure you want to proceed?" + + within ".reveal-modal" do + expect { + find_button("Confirm").click + }.not_to enqueue_job(ActionMailer::MailDeliveryJob) + end + end + end + end + + def extract_pdf_content + # Extract last part of invoice URL + link = page.find(class: "button", text: "VIEW FILE") + filename = link[:href].match %r{/invoices/.*} + + # Load invoice temp file directly instead of downloading + reader = PDF::Reader.new("tmp/#{filename}.pdf") + reader.pages.map(&:text) + end + + def print_all_invoices + page.find("span.icon-reorder", text: "ACTIONS").click + within ".ofn-drop-down .menu" do + expect { + page.find("span", text: "Print Invoices").click # Prints invoices in bulk + }.to enqueue_job(BulkInvoiceJob).exactly(:once) + end + + expect(page).to have_content "Compiling Invoices" + expect(page).to have_content "Please wait until the PDF is ready " \ + "before closing this modal." + + perform_enqueued_jobs(only: BulkInvoiceJob) + + expect(page).to have_content "Bulk Invoice created" + end +end diff --git a/spec/system/admin/orders_spec.rb b/spec/system/admin/orders_spec.rb index a2ce6a82a0..deedf07e3f 100644 --- a/spec/system/admin/orders_spec.rb +++ b/spec/system/admin/orders_spec.rb @@ -504,358 +504,6 @@ RSpec.describe ' end end - context "bulk actions" do - context "as a super admin" do - before do - login_as_admin - visit spree.admin_orders_path - end - - context "can bulk send invoices per email" do - before do - Spree::Config[:enable_invoices?] = true - Spree::Config[:enterprise_number_required_on_invoices?] = false - end - - context "with multiple orders with differents states" do - before do - order2.update(state: "complete") - order3.update(state: "resumed") - order4.update(state: "canceled") - order5.update(state: "payment") - end - - it "can bulk send invoices per email, but only for the 'complete' or 'resumed' ones" do - within "#listing_orders" do - page.find("input[name='bulk_ids[]'][value='#{order2.id}']").click - page.find("input[name='bulk_ids[]'][value='#{order3.id}']").click - page.find("input[name='bulk_ids[]'][value='#{order4.id}']").click - page.find("input[name='bulk_ids[]'][value='#{order5.id}']").click - end - - page.find("span.icon-reorder", text: "ACTIONS").click - within ".ofn-drop-down .menu" do - page.find("span", text: "Send Invoices").click - end - - expect(page).to have_content "This will email customer invoices " \ - "for all selected complete orders." - expect(page).to have_content "Are you sure you want to proceed?" - - within ".reveal-modal" do - expect { - find_button("Confirm").click - }.to enqueue_job(ActionMailer::MailDeliveryJob).exactly(:twice) - end - - expect(page).to have_content "Invoice emails sent for 2 orders." - end - end - - it "can bulk send confirmation email from 2 orders" do - page.find("#listing_orders tbody tr:nth-child(1) input[name='bulk_ids[]']").click - page.find("#listing_orders tbody tr:nth-child(2) input[name='bulk_ids[]']").click - - page.find("span.icon-reorder", text: "ACTIONS").click - within ".ofn-drop-down .menu" do - page.find("span", text: "Resend Confirmation").click - end - - expect(page).to have_content "Are you sure you want to proceed?" - - within ".reveal-modal" do - expect { - find_button("Confirm").click - }.to enqueue_job(ActionMailer::MailDeliveryJob).exactly(:twice) - end - - expect(page).to have_content "Confirmation emails sent for 2 orders." - end - end - - context "can bulk print invoices" do - let(:order4_selector){ "#order_#{order4.id} input[name='bulk_ids[]']" } - let(:order5_selector){ "#order_#{order5.id} input[name='bulk_ids[]']" } - - shared_examples "can bulk print invoices from 2 orders" do - it "bulk prints invoices in pdf format" do - page.find(order4_selector).click - page.find(order5_selector).click - - page.find("span.icon-reorder", text: "ACTIONS").click - within ".ofn-drop-down .menu" do - expect { - page.find("span", text: "Print Invoices").click # Prints invoices in bulk - }.to enqueue_job(BulkInvoiceJob).exactly(:once) - end - - expect(page).to have_content "Compiling Invoices" - expect(page).to have_content "Please wait until the PDF is ready " \ - "before closing this modal." - - # we don't run Sidekiq in test environment, so we need to manually run enqueued jobs - # to generate PDF files, and change the modal accordingly - perform_enqueued_jobs(only: BulkInvoiceJob) - - expect(page).to have_content "Bulk Invoice created" - - within ".modal-content" do - expect(page).to have_link(class: "button", text: "VIEW FILE", href: /invoices/) - - invoice_content = extract_pdf_content - - expect(invoice_content).to have_content("TAX INVOICE", count: 2) - expect(invoice_content).to have_content(order4.number.to_s) - expect(invoice_content).to have_content(order5.number.to_s) - expect(invoice_content).to have_content(distributor4.name.to_s) - expect(invoice_content).to have_content(distributor5.name.to_s) - expect(invoice_content).to have_content(order_cycle4.name.to_s) - expect(invoice_content).to have_content(order_cycle5.name.to_s) - end - end - end - - shared_examples "should ignore the non invoiceable order" do - it "bulk prints invoices in pdf format" do - page.find(order4_selector).click - page.find(order5_selector).click - - page.find("span.icon-reorder", text: "ACTIONS").click - within ".ofn-drop-down .menu" do - expect { - page.find("span", text: "Print Invoices").click # Prints invoices in bulk - }.to enqueue_job(BulkInvoiceJob).exactly(:once) - end - - expect(page).to have_content "Compiling Invoices" - expect(page).to have_content "Please wait until the PDF is ready " \ - "before closing this modal." - - perform_enqueued_jobs(only: BulkInvoiceJob) - - expect(page).to have_content "Bulk Invoice created" - - within ".modal-content" do - expect(page).to have_link(class: "button", text: "VIEW FILE", - href: /invoices/) - - invoice_content = extract_pdf_content - - expect(invoice_content).to have_content("TAX INVOICE", count: 1) - expect(invoice_content).not_to have_content(order4.number.to_s) - expect(invoice_content).to have_content(order5.number.to_s) - expect(invoice_content).not_to have_content(distributor4.name.to_s) - expect(invoice_content).to have_content(distributor5.name.to_s) - expect(invoice_content).not_to have_content(order_cycle4.name.to_s) - expect(invoice_content).to have_content(order_cycle5.name.to_s) - end - end - end - - context "ABN is not required" do - before do - allow(Spree::Config).to receive(:enterprise_number_required_on_invoices?) - .and_return false - end - - it_behaves_like "can bulk print invoices from 2 orders" - - context "with legal invoices feature", feature: :invoices do - it_behaves_like "can bulk print invoices from 2 orders" - end - - context "one of the two orders is not invoiceable" do - before do - order4.cancel! - end - - it_behaves_like "should ignore the non invoiceable order" - context "with legal invoices feature", feature: :invoices do - it_behaves_like "should ignore the non invoiceable order" - end - end - - context "ordering by customer name" do - context "ascending" do - let!(:surnames) { - [order2.name.gsub(/.* /, ""), order3.name.gsub(/.* /, ""), - order4.name.gsub(/.* /, ""), order5.name.gsub(/.* /, "")].sort - } - it "orders by customer name ascending" do - page.find('a', text: "NAME").click # orders alphabetically (asc) - sleep(0.5) # waits for column sorting - - page.find("#selectAll").click - - print_all_invoices - - invoice_content = extract_pdf_content - - expect( - invoice_content.join - ).to match(/#{surnames[0]}.*#{surnames[1]}.*#{surnames[2]}.*#{surnames[3]}/m) - end - end - context "descending" do - let!(:surnames) { - [order2.name.gsub(/.* /, ""), order3.name.gsub(/.* /, ""), - order4.name.gsub(/.* /, ""), order5.name.gsub(/.* /, "")].sort.reverse - } - it "order by customer name descending" do - page.find('a', text: "NAME").click # orders alphabetically (asc) - sleep(0.5) # waits for column sorting - page.find('a', text: "NAME").click # orders alphabetically (desc) - sleep(0.5) # waits for column sorting - - page.find("#selectAll").click - - print_all_invoices - - invoice_content = extract_pdf_content - - expect( - invoice_content.join - ).to match(/#{surnames[0]}.*#{surnames[1]}.*#{surnames[2]}.*#{surnames[3]}/m) - end - end - end - end - context "ABN is required" do - before do - allow(Spree::Config).to receive(:enterprise_number_required_on_invoices?) - .and_return true - end - context "All the distributors setup the ABN" do - before do - order4.distributor.update(abn: "123456789") - order5.distributor.update(abn: "987654321") - end - context "all the orders are invoiceable (completed/resumed)" do - it_behaves_like "can bulk print invoices from 2 orders" - context "with legal invoices feature", feature: :invoices do - it_behaves_like "can bulk print invoices from 2 orders" - end - end - - context "one of the two orders is not invoiceable" do - before do - order4.cancel! - end - - it_behaves_like "should ignore the non invoiceable order" - context "with legal invoices feature", feature: :invoices do - it_behaves_like "should ignore the non invoiceable order" - end - end - end - context "the distributor of one of the order didn't set the ABN" do - before do - order4.distributor.update(abn: "123456789") - order5.distributor.update(abn: nil) - end - - shared_examples "should not print the invoice" do - it "should render a warning message" do - page.find(order4_selector).click - page.find(order5_selector).click - - page.find("span.icon-reorder", text: "ACTIONS").click - within ".ofn-drop-down .menu" do - expect { - page.find("span", text: "Print Invoices").click # Prints invoices in bulk - }.not_to enqueue_job(BulkInvoiceJob) - end - - expect(page).not_to have_content "Compiling Invoices" - expect(page).not_to have_content "Please wait until the PDF is ready " \ - "before closing this modal." - - expect(page).to have_content "#{ - order5.distributor.name - } must have a valid ABN before invoices can be used." - end - end - it_behaves_like "should not print the invoice" - context "with legal invoices feature", feature: :invoices do - it_behaves_like "should not print the invoice" - end - end - end - end - it "can bulk cancel 2 orders" do - page.find("#listing_orders tbody tr:nth-child(1) input[name='bulk_ids[]']").click - page.find("#listing_orders tbody tr:nth-child(2) input[name='bulk_ids[]']").click - - page.find("span.icon-reorder", text: "ACTIONS").click - within ".ofn-drop-down .menu" do - page.find("span", text: "Cancel Orders").click - end - - expect(page).to have_content "Are you sure you want to proceed?" - expect(page).to have_content "This will cancel the current order." - - within ".reveal-modal" do - uncheck "Send a cancellation email to the customer" - expect { - find_button("Cancel").click # Cancels the cancel action - }.not_to enqueue_job(ActionMailer::MailDeliveryJob).exactly(:twice) - end - - page.find("span.icon-reorder", text: "ACTIONS").click - within ".ofn-drop-down .menu" do - page.find("span", text: "Cancel Orders").click - end - - within ".reveal-modal" do - expect { - find_button("Confirm").click # Confirms the cancel action - }.not_to enqueue_job(ActionMailer::MailDeliveryJob).exactly(:twice) - end - - expect(page).to have_content("CANCELLED", count: 2) - end - end - - context "for a hub manager" do - before do - login_as owner2 - visit spree.admin_orders_path - end - - it "displays the orders for the respective distributor" do - expect(page).to have_content order5.number # displays the only order for distributor5 - expect(page).not_to have_content order.number - expect(page).not_to have_content order2.number - expect(page).not_to have_content order3.number - expect(page).not_to have_content order4.number - end - - it "cannot send emails to orders if permission have been revoked in the meantime" do - page.find("#listing_orders tbody tr:nth-child(1) input[name='bulk_ids[]']").click - # Find the clicked order - order = Spree::Order.find_by( - id: page.find("#listing_orders tbody tr:nth-child(1) input[name='bulk_ids[]']").value - ) - # Revoke permission for the current user on that specific order by changing its owners - order.update_attribute(:distributor, distributor) - order.update_attribute(:order_cycle, order_cycle) - - page.find("span.icon-reorder", text: "ACTIONS").click - within ".ofn-drop-down .menu" do - page.find("span", text: "Resend Confirmation").click - end - - expect(page).to have_content "Are you sure you want to proceed?" - - within ".reveal-modal" do - expect { - find_button("Confirm").click - }.not_to enqueue_job(ActionMailer::MailDeliveryJob) - end - end - end - end - context "pagination" do before do login_as_admin @@ -1131,30 +779,4 @@ RSpec.describe ' expect(find("input.datepicker").value).to be_empty end end - def extract_pdf_content - # Extract last part of invoice URL - link = page.find(class: "button", text: "VIEW FILE") - filename = link[:href].match %r{/invoices/.*} - - # Load invoice temp file directly instead of downloading - reader = PDF::Reader.new("tmp/#{filename}.pdf") - reader.pages.map(&:text) - end - - def print_all_invoices - page.find("span.icon-reorder", text: "ACTIONS").click - within ".ofn-drop-down .menu" do - expect { - page.find("span", text: "Print Invoices").click # Prints invoices in bulk - }.to enqueue_job(BulkInvoiceJob).exactly(:once) - end - - expect(page).to have_content "Compiling Invoices" - expect(page).to have_content "Please wait until the PDF is ready " \ - "before closing this modal." - - perform_enqueued_jobs(only: BulkInvoiceJob) - - expect(page).to have_content "Bulk Invoice created" - end end From 85165369a243774064a448ce52a147c76758a51e Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 21 May 2024 17:01:12 +1000 Subject: [PATCH 170/319] Move run runner over for system specs. --- .github/workflows/build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1b553c7b74..e49c391133 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -106,10 +106,10 @@ jobs: # [n] - where the n is a number of parallel jobs you want to run your tests on. # Use a higher number if you have slow tests to split them between more parallel jobs. # Remember to update the value of the `ci_node_index` below to (0..n-1). - ci_node_total: [5] + ci_node_total: [4] # Indexes for parallel jobs (starting from zero). # E.g. use [0, 1] for 2 parallel jobs, [0, 1, 2] for 3 parallel jobs, etc. - ci_node_index: [0, 1, 2, 3, 4] + ci_node_index: [0, 1, 2, 3] steps: - uses: actions/checkout@v3 @@ -165,10 +165,10 @@ jobs: # [n] - where the n is a number of parallel jobs you want to run your tests on. # Use a higher number if you have slow tests to split them between more parallel jobs. # Remember to update the value of the `ci_node_index` below to (0..n-1). - ci_node_total: [13] + ci_node_total: [14] # Indexes for parallel jobs (starting from zero). # E.g. use [0, 1] for 2 parallel jobs, [0, 1, 2] for 3 parallel jobs, etc. - ci_node_index: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] + ci_node_index: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] steps: - uses: actions/checkout@v3 From 5ff89a279cc63b003f2b8d4861676e9b6e22325e Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 21 May 2024 17:05:08 +1000 Subject: [PATCH 171/319] Use Spring to save on subsequent boot times Each time we run a rails command, it can take some time to load up (I think it was 20s). We run two commands (db setup, then rspec), so the second one should be faster now. --- .github/workflows/build.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e49c391133..66f7d5a3cc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -65,7 +65,7 @@ jobs: - name: Set up database run: | - bundle exec rake db:create db:schema:load + bin/rake db:create db:schema:load - name: Run tests env: @@ -83,7 +83,7 @@ jobs: KNAPSACK_PRO_TEST_FILE_PATTERN: "{spec/controllers/**/*_spec.rb}" run: | git show --no-patch # the commit being tested (which is often a merge due to actions/checkout@v3) - bundle exec rake knapsack_pro:rspec + bin/rake knapsack_pro:rspec models: runs-on: ubuntu-22.04 @@ -125,7 +125,7 @@ jobs: - name: Set up database run: | - bundle exec rake db:create db:schema:load + bin/rake db:create db:schema:load - name: Run tests env: @@ -142,7 +142,7 @@ jobs: #KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES: true KNAPSACK_PRO_TEST_FILE_PATTERN: "{spec/models/**/*_spec.rb}" run: | - bundle exec rake knapsack_pro:rspec + bin/rake knapsack_pro:rspec system_admin: runs-on: ubuntu-22.04 @@ -191,7 +191,7 @@ jobs: - name: Set up database run: | - bundle exec rake db:create db:schema:load + bin/rake db:create db:schema:load - name: Run tests @@ -210,7 +210,7 @@ jobs: KNAPSACK_PRO_TEST_FILE_PATTERN: "{spec/system/admin/**/*_spec.rb}" run: | - bundle exec rake knapsack_pro:queue:rspec + bin/rake knapsack_pro:queue:rspec - name: Archive failed tests screenshots if: failure() @@ -268,7 +268,7 @@ jobs: - name: Set up database run: | - bundle exec rake db:create db:schema:load + bin/rake db:create db:schema:load - name: Run tests @@ -287,7 +287,7 @@ jobs: KNAPSACK_PRO_TEST_FILE_PATTERN: "{spec/system/consumer/**/*_spec.rb}" run: | - bundle exec rake knapsack_pro:queue:rspec + bin/rake knapsack_pro:queue:rspec - name: Archive failed tests screenshots if: failure() @@ -346,7 +346,7 @@ jobs: - name: Set up database run: | - bundle exec rake db:create db:schema:load + bin/rake db:create db:schema:load - name: Run tests @@ -365,7 +365,7 @@ jobs: KNAPSACK_PRO_TEST_FILE_PATTERN: "{spec/lib/**/*_spec.rb,spec/migrations/**/*_spec.rb,spec/serializers/**/*_spec.rb,engines/**/*_spec.rb}" run: | - bundle exec rake knapsack_pro:rspec + bin/rake knapsack_pro:rspec - name: Archive failed tests screenshots if: failure() @@ -424,7 +424,7 @@ jobs: - name: Set up database run: | - bundle exec rake db:create db:schema:load + bin/rake db:create db:schema:load - name: Run tests env: @@ -441,7 +441,7 @@ jobs: #KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES: true KNAPSACK_PRO_TEST_FILE_EXCLUDE_PATTERN: "{engines/**/*_spec.rb,spec/models/**/*_spec.rb,spec/controllers/**/*_spec.rb,spec/serializers/**/*_spec.rb,spec/lib/**/*_spec.rb,spec/migrations/**/*_spec.rb,spec/system/**/*_spec.rb}" run: | - bundle exec rake knapsack_pro:rspec + bin/rake knapsack_pro:rspec non_knapsack_jest_karma: runs-on: ubuntu-22.04 @@ -475,7 +475,7 @@ jobs: run: yarn install --frozen-lockfile - name: Run JS tests - run: bundle exec rake karma:run + run: bin/rake karma:run - name: Run jest tests run: yarn jest From b935a0e8d9ea2268fc6ab67ba8011f02eac2ee46 Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 22 May 2024 15:07:16 +1000 Subject: [PATCH 172/319] [add gem] turbo-rails This gives us a nice 'turbo_stream' format helper. --- Gemfile | 2 ++ Gemfile.lock | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/Gemfile b/Gemfile index e9adc0d0b3..3d2eb53489 100644 --- a/Gemfile +++ b/Gemfile @@ -105,6 +105,8 @@ gem 'sidekiq-scheduler' gem "cable_ready", "5.0.1" gem "stimulus_reflex", "3.5.0.rc3" +gem "turbo-rails" + gem 'combine_pdf' gem 'wicked_pdf' gem 'wkhtmltopdf-binary' diff --git a/Gemfile.lock b/Gemfile.lock index bdc08a2fdd..7bda8159e8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -772,6 +772,10 @@ GEM timecop (0.9.8) timeout (0.4.1) ttfunk (1.7.0) + turbo-rails (2.0.5) + actionpack (>= 6.0.0) + activejob (>= 6.0.0) + railties (>= 6.0.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) @@ -960,6 +964,7 @@ DEPENDENCIES stringex (~> 2.8.5) stripe timecop + turbo-rails valid_email2 validates_lengths_from_database vcr From 3fcc9ac1fadd97d289752df9548a1067995be9bd Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 22 May 2024 15:14:26 +1000 Subject: [PATCH 173/319] Move product image edit modal to Turbo Stream MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Didn't even need to touch the controller, because data-turbo-stream tells it to render the turbo_stream format ✨ But you might notice that it doesn't redirect to the right return_url yet. Let's see if we can use more Turbo to avoid the page refresh.. TODO: also handle empty images --- app/reflexes/products_reflex.rb | 12 ------------ .../admin/products_v3/_edit_image.html.haml | 17 ----------------- .../admin/products_v3/_product_row.html.haml | 9 +++++---- app/views/admin/products_v3/index.html.haml | 2 +- .../spree/admin/images/edit.turbo_stream.haml | 18 ++++++++++++++++++ config/locales/en.yml | 9 +++++---- 6 files changed, 29 insertions(+), 38 deletions(-) delete mode 100644 app/views/admin/products_v3/_edit_image.html.haml create mode 100644 app/views/spree/admin/images/edit.turbo_stream.haml diff --git a/app/reflexes/products_reflex.rb b/app/reflexes/products_reflex.rb index 74a0b49873..4c8aabc0d2 100644 --- a/app/reflexes/products_reflex.rb +++ b/app/reflexes/products_reflex.rb @@ -49,18 +49,6 @@ class ProductsReflex < ApplicationReflex fetch_and_render_products_with_flash end - def edit_image - id = current_id_from_element(element) - product = product_finder(id).find_product - image = product.image - - image = Spree::Image.new(viewable: product) if product.image.blank? - - morph "#modal-component", - render(partial: "admin/products_v3/edit_image", - locals: { product:, image:, return_url: url }) - end - private def init_filters_params diff --git a/app/views/admin/products_v3/_edit_image.html.haml b/app/views/admin/products_v3/_edit_image.html.haml deleted file mode 100644 index 57fccaac76..0000000000 --- a/app/views/admin/products_v3/_edit_image.html.haml +++ /dev/null @@ -1,17 +0,0 @@ -= render ModalComponent.new id: "#modal_edit_product_image_#{image.id}", instant: true, close_button: false, modal_class: :fit do - %h2= t(".title") - - -# Display image in the same way it appears in the shopfront popup - %p= image_tag image.persisted? ? image.url(:large) : Spree::Image.default_image_url(:large), width: 433, height: 433 - - -# Submit to controller, because StimulusReflex doesn't support file uploads - = form_for [:admin, product, image], - html: { multipart: true }, data: { controller: "form" } do |f| - %input{ type: :hidden, name: :return_url, value: return_url} - = f.hidden_field :viewable_id, value: product.id - - .modal-actions.justify-end - %input{ class: "secondary relaxed", type: 'button', value: t('.close'), "data-action": "click->modal#close" } - -# label.button provides a handy shortcut to open the file selector on click. Unfortunately this trick isn't keyboard accessible though.. - = f.label :attachment, t(".upload"), class: "button primary relaxed icon-upload-alt" - = f.file_field :attachment, accept: "image/*", style: "display: none", "data-action": "change->form#submit" diff --git a/app/views/admin/products_v3/_product_row.html.haml b/app/views/admin/products_v3/_product_row.html.haml index f82ef26933..5cd0cc8db1 100644 --- a/app/views/admin/products_v3/_product_row.html.haml +++ b/app/views/admin/products_v3/_product_row.html.haml @@ -1,7 +1,8 @@ -%td.with-image - %a.image-field{ href: admin_product_images_path(product), data: { controller: "modal", reflex: "click->products#edit_image", "current-id": product.id} } - = image_tag product.image&.url(:mini) || Spree::Image.default_image_url(:mini), width: 40, height: 40 - .button.secondary.mini= t('admin.products_page.image.edit') +%td.with-image{ id: "image-#{product.id}" } + - if product.image.present? # todo: handle blank img + %a.image-field{ href: edit_admin_product_image_path(product.id, product.image.id), 'data-turbo-stream': true } + = image_tag product.image&.url(:mini) || Spree::Image.default_image_url(:mini), width: 40, height: 40 + .button.secondary.mini= t('admin.products_page.image.edit') %td.field.align-left.header.naked_inputs = f.hidden_field :id = f.text_field :name, 'aria-label': t('admin.products_page.columns.name') diff --git a/app/views/admin/products_v3/index.html.haml b/app/views/admin/products_v3/index.html.haml index 5087feddc2..668a8527a4 100644 --- a/app/views/admin/products_v3/index.html.haml +++ b/app/views/admin/products_v3/index.html.haml @@ -19,4 +19,4 @@ - %w[product variant].each do |object_type| = render partial: 'delete_modal', locals: { object_type: } #modal-component - + #edit_image_modal diff --git a/app/views/spree/admin/images/edit.turbo_stream.haml b/app/views/spree/admin/images/edit.turbo_stream.haml new file mode 100644 index 0000000000..4cadb68988 --- /dev/null +++ b/app/views/spree/admin/images/edit.turbo_stream.haml @@ -0,0 +1,18 @@ += turbo_stream.update "edit_image_modal" do + = render ModalComponent.new id: "#modal_edit_product_image", instant: true, close_button: false, modal_class: :fit do + %h2= t(".title") + + -# Display image in the same way it appears in the shopfront popup + %p= image_tag @image.persisted? ? @image.url(:large) : Spree::Image.default_image_url(:large), width: 433, height: 433 + + -# Submit to controller + = form_for [:admin, @product, @image], + html: { multipart: true }, data: { controller: "form" } do |f| + %input{ type: :hidden, name: :return_url, value: request.referer } + = f.hidden_field :viewable_id, value: @product.id + + .modal-actions.justify-end + %input{ class: "secondary relaxed", type: 'button', value: t('.close'), "data-action": "click->modal#close" } + -# label.button provides a handy shortcut to open the file selector on click. Unfortunately this trick isn't keyboard accessible though.. + = f.label :attachment, t(".upload"), class: "button primary relaxed icon-upload-alt" + = f.file_field :attachment, accept: "image/*", style: "display: none", "data-action": "change->form#submit" diff --git a/config/locales/en.yml b/config/locales/en.yml index b6d63a5632..a705c300b8 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -899,10 +899,6 @@ en: new_variant: New variant bulk_update: success: Changes saved - edit_image: - title: Edit product photo - close: Back - upload: Upload photo delete_product: success: Successfully deleted the product error: Unable to delete the product @@ -4148,6 +4144,11 @@ See the %{link} to find out more about %{sitename}'s features and to start using must_be_int: "must be an integer" admin: + images: + edit: + title: Edit product photo + close: Back + upload: Upload photo mail_methods: send_testmail: "Send test email" testmail: From 536b5608ab5aa51363b6ef0c5fe12cefcb8e2ccf Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 22 May 2024 16:54:41 +1000 Subject: [PATCH 174/319] Show edit form for new images --- app/controllers/admin/products_v3_controller.rb | 2 ++ app/controllers/spree/admin/images_controller.rb | 5 ++++- app/helpers/admin/products_helper.rb | 13 +++++++++++++ app/views/admin/products_v3/_product_row.html.haml | 7 +++---- 4 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 app/helpers/admin/products_helper.rb diff --git a/app/controllers/admin/products_v3_controller.rb b/app/controllers/admin/products_v3_controller.rb index f8cdc339c2..77098ee7bb 100644 --- a/app/controllers/admin/products_v3_controller.rb +++ b/app/controllers/admin/products_v3_controller.rb @@ -2,6 +2,8 @@ module Admin class ProductsV3Controller < Spree::Admin::BaseController + helper ProductsHelper + before_action :init_filters_params before_action :init_pagination_params diff --git a/app/controllers/spree/admin/images_controller.rb b/app/controllers/spree/admin/images_controller.rb index 0e0890a229..28ef28bbcb 100644 --- a/app/controllers/spree/admin/images_controller.rb +++ b/app/controllers/spree/admin/images_controller.rb @@ -17,7 +17,10 @@ module Spree def new @url_filters = ::ProductFilters.new.extract(request.query_parameters) - render layout: !request.xhr? + respond_with do |format| + format.turbo_stream { render :edit } + format.all { render layout: !request.xhr? } + end end def edit diff --git a/app/helpers/admin/products_helper.rb b/app/helpers/admin/products_helper.rb new file mode 100644 index 0000000000..e29b378342 --- /dev/null +++ b/app/helpers/admin/products_helper.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +module Admin + module ProductsHelper + def product_image_form_path(product) + if product.image.present? + edit_admin_product_image_path(product.id, product.image.id) + else + new_admin_product_image_path(product.id) + end + end + end +end diff --git a/app/views/admin/products_v3/_product_row.html.haml b/app/views/admin/products_v3/_product_row.html.haml index 5cd0cc8db1..706a3ec7ed 100644 --- a/app/views/admin/products_v3/_product_row.html.haml +++ b/app/views/admin/products_v3/_product_row.html.haml @@ -1,8 +1,7 @@ %td.with-image{ id: "image-#{product.id}" } - - if product.image.present? # todo: handle blank img - %a.image-field{ href: edit_admin_product_image_path(product.id, product.image.id), 'data-turbo-stream': true } - = image_tag product.image&.url(:mini) || Spree::Image.default_image_url(:mini), width: 40, height: 40 - .button.secondary.mini= t('admin.products_page.image.edit') + %a.image-field{ href: product_image_form_path(product), 'data-turbo-stream': true } + = image_tag product.image&.url(:mini) || Spree::Image.default_image_url(:mini), width: 40, height: 40 + .button.secondary.mini= t('admin.products_page.image.edit') %td.field.align-left.header.naked_inputs = f.hidden_field :id = f.text_field :name, 'aria-label': t('admin.products_page.columns.name') From 46cd60aa3caf62b164df0b9977f468ae5f7ea037 Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Fri, 17 May 2024 15:32:55 +0200 Subject: [PATCH 175/319] Fix RedundantPresenceValidationOnBelongs on two files - presence: true is redundant since Rails 5.0 BUT applies with new default config of belongs_to_required_by_default to true. Lots of files with belongs_to_required_by_default = false (backward compatibility). So: deleting this setting implies to adding optional: true - added 'NOT NULL' constraints so model constraints match with contraints on DB tables. - corresponding migration files to match AR Models & DB tables - rake tasks to check corrupt data (ie: NULL/nil in id fields) - updated the todo --- .rubocop_todo.yml | 4 +--- app/models/spree/tax_rate.rb | 5 +---- app/models/variant_override.rb | 4 ---- ...7121235_require_tax_category_on_tax_rate.rb | 5 +++++ db/schema.rb | 4 ++-- ...heck_missing_required_ids_in_tax_rates.rake | 18 ++++++++++++++++++ 6 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 db/migrate/20240517121235_require_tax_category_on_tax_rate.rb create mode 100644 lib/tasks/data/check_missing_required_ids_in_tax_rates.rake diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 14d29848c8..a2c635f20a 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -650,16 +650,14 @@ Rails/RedundantActiveRecordAllMethod: - 'app/models/spree/variant.rb' - 'spec/system/admin/product_import_spec.rb' -# Offense count: 9 +# Offense count: 7 # This cop supports unsafe autocorrection (--autocorrect-all). Rails/RedundantPresenceValidationOnBelongsTo: Exclude: - 'app/models/spree/line_item.rb' - 'app/models/spree/order.rb' - - 'app/models/spree/tax_rate.rb' - 'app/models/subscription_line_item.rb' - 'app/models/tag_rule.rb' - - 'app/models/variant_override.rb' # Offense count: 1 # This cop supports unsafe autocorrection (--autocorrect-all). diff --git a/app/models/spree/tax_rate.rb b/app/models/spree/tax_rate.rb index d7d91a7b73..af8d82f12d 100644 --- a/app/models/spree/tax_rate.rb +++ b/app/models/spree/tax_rate.rb @@ -14,17 +14,14 @@ end module Spree class TaxRate < ApplicationRecord - self.belongs_to_required_by_default = false - acts_as_paranoid include CalculatedAdjustments - belongs_to :zone, class_name: "Spree::Zone", inverse_of: :tax_rates + belongs_to :zone, class_name: "Spree::Zone", inverse_of: :tax_rates, optional: true belongs_to :tax_category, class_name: "Spree::TaxCategory", inverse_of: :tax_rates has_many :adjustments, as: :originator, dependent: nil validates :amount, presence: true, numericality: true - validates :tax_category, presence: true validates_with DefaultTaxZoneValidator scope :by_zone, ->(zone) { where(zone_id: zone) } diff --git a/app/models/variant_override.rb b/app/models/variant_override.rb index af0dbd92fb..ea5dca61b2 100644 --- a/app/models/variant_override.rb +++ b/app/models/variant_override.rb @@ -6,15 +6,11 @@ class VariantOverride < ApplicationRecord extend Spree::LocalizedNumber include StockSettingsOverrideValidation - self.belongs_to_required_by_default = false - acts_as_taggable belongs_to :hub, class_name: 'Enterprise' belongs_to :variant, class_name: 'Spree::Variant' - validates :hub, presence: true - validates :variant, presence: true # Default stock can be nil, indicating stock should not be reset or zero, meaning reset to zero. # Need to ensure this can be set by the user. validates :default_stock, numericality: { greater_than_or_equal_to: 0 }, allow_nil: true diff --git a/db/migrate/20240517121235_require_tax_category_on_tax_rate.rb b/db/migrate/20240517121235_require_tax_category_on_tax_rate.rb new file mode 100644 index 0000000000..4bc80ca713 --- /dev/null +++ b/db/migrate/20240517121235_require_tax_category_on_tax_rate.rb @@ -0,0 +1,5 @@ +class RequireTaxCategoryOnTaxRate < ActiveRecord::Migration[7.0] + def change + change_column_null :spree_tax_rates, :tax_category_id, false + end +end diff --git a/db/schema.rb b/db/schema.rb index 1cbb2938fa..99bd4c313c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_05_01_075735) do +ActiveRecord::Schema[7.0].define(version: 2024_05_17_121235) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" enable_extension "plpgsql" @@ -871,7 +871,7 @@ ActiveRecord::Schema[7.0].define(version: 2024_05_01_075735) do create_table "spree_tax_rates", id: :serial, force: :cascade do |t| t.decimal "amount", precision: 8, scale: 5 t.integer "zone_id" - t.integer "tax_category_id" + t.integer "tax_category_id", null: false t.datetime "created_at", precision: nil, null: false t.datetime "updated_at", precision: nil, null: false t.boolean "included_in_price", default: false diff --git a/lib/tasks/data/check_missing_required_ids_in_tax_rates.rake b/lib/tasks/data/check_missing_required_ids_in_tax_rates.rake new file mode 100644 index 0000000000..b2133d8fa6 --- /dev/null +++ b/lib/tasks/data/check_missing_required_ids_in_tax_rates.rake @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +namespace :ofn do + namespace :data do + desc 'Checking missing required ids in Spree::TaxRate' + task check_missing_required_missing_ids_in_spree_tax_rates: :environment do + puts 'Checking for null tax_category_id' + ids = Spree::TaxRate.where(tax_category_id: nil).pluck(:id) + + if ids.empty? + puts 'No NULL tax_category_id found in spree_tax_rates' + else + puts 'NULL tax_category_ids s have been found in spree_tax_rates:' + print ids + end + end + end +end From 5ccecdd9ff3404b17ff71444633d5b489d4853cf Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Wed, 22 May 2024 20:38:11 +0100 Subject: [PATCH 176/319] Removes deprecation strikethrough from enterprise fees with tax report by producer --- lib/reporting/reports/list.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/reporting/reports/list.rb b/lib/reporting/reports/list.rb index 0af1ab3f69..a2dd38efc3 100644 --- a/lib/reporting/reports/list.rb +++ b/lib/reporting/reports/list.rb @@ -62,8 +62,7 @@ module Reporting ], [ i18n_translate('enterprise_fees_with_tax_report_by_producer'), - :enterprise_fees_with_tax_report_by_producer, - { deprecated: true }, # Not supported until specific details are finalised. + :enterprise_fees_with_tax_report_by_producer ], ] end From 73218fab05807a65a6f8b85ce8d722b24e3da9ae Mon Sep 17 00:00:00 2001 From: Ana Nunes da Silva Date: Wed, 22 May 2024 22:40:24 +0100 Subject: [PATCH 177/319] Sanitize read and write long description in enterprise group --- app/models/enterprise_group.rb | 10 ++++++++++ spec/models/enterprise_group_spec.rb | 12 ++++++++++++ 2 files changed, 22 insertions(+) diff --git a/app/models/enterprise_group.rb b/app/models/enterprise_group.rb index c6160fb404..47a0ef4303 100644 --- a/app/models/enterprise_group.rb +++ b/app/models/enterprise_group.rb @@ -74,6 +74,16 @@ class EnterpriseGroup < ApplicationRecord permalink end + # Remove any unsupported HTML. + def long_description + HtmlSanitizer.sanitize(super) + end + + # Remove any unsupported HTML. + def long_description=(html) + super(HtmlSanitizer.sanitize(html)) + end + private def sanitize_permalink diff --git a/spec/models/enterprise_group_spec.rb b/spec/models/enterprise_group_spec.rb index 8902e7cb4e..aa2c10f2ed 100644 --- a/spec/models/enterprise_group_spec.rb +++ b/spec/models/enterprise_group_spec.rb @@ -118,4 +118,16 @@ RSpec.describe EnterpriseGroup do end end end + + describe "serialisation" do + it "sanitises HTML in long_description" do + subject.long_description = "Hello dearest monster." + expect(subject.long_description).to eq "Hello alert dearest monster." + end + + it "sanitises existing HTML in long_description" do + subject[:long_description] = "Hello dearest monster." + expect(subject.long_description).to eq "Hello alert dearest monster." + end + end end From be79016753636f98f3d78814c459dc8ff01cd203 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 23 May 2024 09:08:05 +1000 Subject: [PATCH 178/319] Remove now obsolete check in rake task --- ...heck_missing_required_ids_in_tax_rates.rake | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 lib/tasks/data/check_missing_required_ids_in_tax_rates.rake diff --git a/lib/tasks/data/check_missing_required_ids_in_tax_rates.rake b/lib/tasks/data/check_missing_required_ids_in_tax_rates.rake deleted file mode 100644 index b2133d8fa6..0000000000 --- a/lib/tasks/data/check_missing_required_ids_in_tax_rates.rake +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -namespace :ofn do - namespace :data do - desc 'Checking missing required ids in Spree::TaxRate' - task check_missing_required_missing_ids_in_spree_tax_rates: :environment do - puts 'Checking for null tax_category_id' - ids = Spree::TaxRate.where(tax_category_id: nil).pluck(:id) - - if ids.empty? - puts 'No NULL tax_category_id found in spree_tax_rates' - else - puts 'NULL tax_category_ids s have been found in spree_tax_rates:' - print ids - end - end - end -end From 665273ce2fd383b18efda9609bace313063a2df0 Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 22 May 2024 16:29:02 +1000 Subject: [PATCH 179/319] [wip] Attempt to update edited image in-place with Turbo Stream but it doesn't quite work. Maybe we can force it with JS (https://www.writesoftwarewell.com/process-turbo-stream-javascript/) --- app/controllers/spree/admin/images_controller.rb | 8 +++++++- app/views/admin/products_v3/_product_image.html.haml | 3 +++ app/views/admin/products_v3/_product_row.html.haml | 4 +--- app/views/spree/admin/images/edit.turbo_stream.haml | 6 +++--- app/views/spree/admin/images/update.turbo_stream.haml | 2 ++ 5 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 app/views/admin/products_v3/_product_image.html.haml create mode 100644 app/views/spree/admin/images/update.turbo_stream.haml diff --git a/app/controllers/spree/admin/images_controller.rb b/app/controllers/spree/admin/images_controller.rb index 28ef28bbcb..6084972102 100644 --- a/app/controllers/spree/admin/images_controller.rb +++ b/app/controllers/spree/admin/images_controller.rb @@ -3,6 +3,8 @@ module Spree module Admin class ImagesController < ::Admin::ResourceController + helper ::Admin::ProductsHelper + # This will make resource controller redirect correctly after deleting product images. # This can be removed after upgrading to Spree 2.1. # See here https://github.com/spree/spree/commit/334a011d2b8e16355e4ae77ae07cd93f7cbc8fd1 @@ -50,7 +52,11 @@ module Spree if @object.update(permitted_resource_params) flash[:success] = flash_message_for(@object, :successfully_updated) - redirect_to location_after_save + + respond_with do |format| + format.html { redirect_to location_after_save } + format.turbo_stream + end else respond_with(@object) end diff --git a/app/views/admin/products_v3/_product_image.html.haml b/app/views/admin/products_v3/_product_image.html.haml new file mode 100644 index 0000000000..cc3e77d141 --- /dev/null +++ b/app/views/admin/products_v3/_product_image.html.haml @@ -0,0 +1,3 @@ +%a.image-field{ href: product_image_form_path(product), 'data-turbo-stream': true } + = image_tag product.image&.url(:mini) || Spree::Image.default_image_url(:mini), width: 40, height: 40 + .button.secondary.mini= t('admin.products_page.image.edit') diff --git a/app/views/admin/products_v3/_product_row.html.haml b/app/views/admin/products_v3/_product_row.html.haml index 706a3ec7ed..0908652009 100644 --- a/app/views/admin/products_v3/_product_row.html.haml +++ b/app/views/admin/products_v3/_product_row.html.haml @@ -1,7 +1,5 @@ %td.with-image{ id: "image-#{product.id}" } - %a.image-field{ href: product_image_form_path(product), 'data-turbo-stream': true } - = image_tag product.image&.url(:mini) || Spree::Image.default_image_url(:mini), width: 40, height: 40 - .button.secondary.mini= t('admin.products_page.image.edit') + = render partial: "product_image", locals: { product: } %td.field.align-left.header.naked_inputs = f.hidden_field :id = f.text_field :name, 'aria-label': t('admin.products_page.columns.name') diff --git a/app/views/spree/admin/images/edit.turbo_stream.haml b/app/views/spree/admin/images/edit.turbo_stream.haml index 4cadb68988..89dbb89bdf 100644 --- a/app/views/spree/admin/images/edit.turbo_stream.haml +++ b/app/views/spree/admin/images/edit.turbo_stream.haml @@ -5,9 +5,9 @@ -# Display image in the same way it appears in the shopfront popup %p= image_tag @image.persisted? ? @image.url(:large) : Spree::Image.default_image_url(:large), width: 433, height: 433 - -# Submit to controller + -# Submit as turbo stream to avoid full page reload. But turbo is ignoring it??!! = form_for [:admin, @product, @image], - html: { multipart: true }, data: { controller: "form" } do |f| + html: { multipart: true }, data: { controller: "form", 'turbo-stream': true } do |f| %input{ type: :hidden, name: :return_url, value: request.referer } = f.hidden_field :viewable_id, value: @product.id @@ -15,4 +15,4 @@ %input{ class: "secondary relaxed", type: 'button', value: t('.close'), "data-action": "click->modal#close" } -# label.button provides a handy shortcut to open the file selector on click. Unfortunately this trick isn't keyboard accessible though.. = f.label :attachment, t(".upload"), class: "button primary relaxed icon-upload-alt" - = f.file_field :attachment, accept: "image/*", style: "display: none", "data-action": "change->form#submit" + = f.file_field :attachment, accept: "image/*", style: "display: none", "data-action": "change->form#submit change->modal#close" diff --git a/app/views/spree/admin/images/update.turbo_stream.haml b/app/views/spree/admin/images/update.turbo_stream.haml new file mode 100644 index 0000000000..88638b3403 --- /dev/null +++ b/app/views/spree/admin/images/update.turbo_stream.haml @@ -0,0 +1,2 @@ += turbo_stream.update "image-#{@product.id}" do + = render partial: "admin/products_v3/product_image", locals: { product: @product } From 05f0b935487fd16f3882e1861f84283e4ae81598 Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 23 May 2024 11:23:26 +1000 Subject: [PATCH 180/319] Use requestSubmit to allow JS events Yay, now it works. Not sure the best way to show loading yet. - currently the Turbo loading indicator shows which is better than nothing (blue bar at top) - ideally we could show a small spinner over the image thumbnail. need to write some stimulus to hook into turbo lifecycle I guess. - or we could activate the frame-level loading overlay. refactor loading_controller a bit so that it's applied on the container, then hopefully we can just call change->loading#showLoading. the turbo_stream response could dectivate it. --- app/views/spree/admin/images/edit.turbo_stream.haml | 5 +++-- app/webpacker/controllers/form_controller.js | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/views/spree/admin/images/edit.turbo_stream.haml b/app/views/spree/admin/images/edit.turbo_stream.haml index 89dbb89bdf..d2ffe7dd53 100644 --- a/app/views/spree/admin/images/edit.turbo_stream.haml +++ b/app/views/spree/admin/images/edit.turbo_stream.haml @@ -5,9 +5,10 @@ -# Display image in the same way it appears in the shopfront popup %p= image_tag @image.persisted? ? @image.url(:large) : Spree::Image.default_image_url(:large), width: 433, height: 433 - -# Submit as turbo stream to avoid full page reload. But turbo is ignoring it??!! + -# Submit as turbo stream to avoid full page reload. + -# TODO: show loading indicator. = form_for [:admin, @product, @image], - html: { multipart: true }, data: { controller: "form", 'turbo-stream': true } do |f| + html: { multipart: true }, data: { controller: "form" } do |f| %input{ type: :hidden, name: :return_url, value: request.referer } = f.hidden_field :viewable_id, value: @product.id diff --git a/app/webpacker/controllers/form_controller.js b/app/webpacker/controllers/form_controller.js index aaac9db4ec..54354d340f 100644 --- a/app/webpacker/controllers/form_controller.js +++ b/app/webpacker/controllers/form_controller.js @@ -2,6 +2,8 @@ import { Controller } from "stimulus"; export default class FormController extends Controller { submit() { - this.element.submit(); + // Validate and submit the form, using the default submit button. Raises JS events. + // Ref: https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/requestSubmit + this.element.requestSubmit(); } } From 55ac816a87898d23427fdace10c1cd757dfeba5b Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 23 May 2024 11:50:15 +1000 Subject: [PATCH 181/319] Show success message Phew, that was really easy. And now the existing feature spec still Just Works. --- app/views/spree/admin/images/update.turbo_stream.haml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/spree/admin/images/update.turbo_stream.haml b/app/views/spree/admin/images/update.turbo_stream.haml index 88638b3403..169bf5c89f 100644 --- a/app/views/spree/admin/images/update.turbo_stream.haml +++ b/app/views/spree/admin/images/update.turbo_stream.haml @@ -1,2 +1,3 @@ = turbo_stream.update "image-#{@product.id}" do = render partial: "admin/products_v3/product_image", locals: { product: @product } + = render partial: "admin/shared/flashes", locals: { flashes: flash } if defined? flash From 7b9577b547153c63bdb6e6fcbaf8035b9c567159 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 23 May 2024 13:43:24 +1000 Subject: [PATCH 182/319] Allow only enterprise managers to connect apps Otherwise it doesn't work because non-managers, like super admins, are not authorised to access enterprise data via the DFC API. --- app/helpers/admin/enterprises_helper.rb | 4 ++++ .../admin/enterprises/form/_connected_apps.html.haml | 4 +++- config/locales/en.yml | 1 + spec/system/admin/enterprises/connected_apps_spec.rb | 10 ++++++++++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/helpers/admin/enterprises_helper.rb b/app/helpers/admin/enterprises_helper.rb index e78029c762..bf39ee199b 100644 --- a/app/helpers/admin/enterprises_helper.rb +++ b/app/helpers/admin/enterprises_helper.rb @@ -14,6 +14,10 @@ module Admin producers.size == 1 ? producers.first.id : nil end + def can_connect_apps?(enterprise) + enterprise.in?(spree_current_user.enterprises) + end + def enterprise_side_menu_items(enterprise) is_shop = enterprise.sells != "none" show_properties = !!enterprise.is_primary_producer diff --git a/app/views/admin/enterprises/form/_connected_apps.html.haml b/app/views/admin/enterprises/form/_connected_apps.html.haml index b8e6be9fae..81dfb240a4 100644 --- a/app/views/admin/enterprises/form/_connected_apps.html.haml +++ b/app/views/admin/enterprises/form/_connected_apps.html.haml @@ -6,7 +6,9 @@ %p= t ".tagline" %div - if enterprise.connected_apps.empty? - = button_to t(".enable"), admin_enterprise_connected_apps_path(enterprise.id), method: :post + = button_to t(".enable"), admin_enterprise_connected_apps_path(enterprise.id), method: :post, disabled: !can_connect_apps?(enterprise) + -# This is only seen by super-admins: + %em= t(".need_to_be_manager") unless can_connect_apps?(enterprise) - elsif enterprise.connected_apps.connecting.present? %button{ disabled: true } %i.spinner.fa.fa-spin.fa-circle-o-notch diff --git a/config/locales/en.yml b/config/locales/en.yml index b6d63a5632..f1eebb5247 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1357,6 +1357,7 @@ en: enable: "Allow data sharing" disable: "Stop sharing" loading: "Loading" + need_to_be_manager: "Only managers can connect apps." note: | Your Open Food Network account is connected to Discover Regenerative. Add or update information on your Discover Regenerative listing here. diff --git a/spec/system/admin/enterprises/connected_apps_spec.rb b/spec/system/admin/enterprises/connected_apps_spec.rb index 23bf8d4fe0..652982b0ed 100644 --- a/spec/system/admin/enterprises/connected_apps_spec.rb +++ b/spec/system/admin/enterprises/connected_apps_spec.rb @@ -50,4 +50,14 @@ RSpec.describe "Connected Apps", feature: :connected_apps, vcr: true do expect(page).not_to have_content "account is connected" expect(page).not_to have_link "Manage listing" end + + it "can't be enabled by non-manager" do + login_as create(:admin_user) + + visit "#{edit_admin_enterprise_path(enterprise)}#/connected_apps_panel" + expect(page).to have_content "Discover Regenerative" + + expect(page).to have_button("Allow data sharing", disabled: true) + expect(page).to have_content "Only managers can connect apps." + end end From f14945c155e819ec9c36c6789b69bea5f7e9b3c5 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 3 May 2024 15:02:46 +1000 Subject: [PATCH 183/319] More realistic test env for translations Most production servers don't use the source locale `en`. Even if the default language is English, they use a local variant like `en_AU` or `en_GB` to customise some of the translations. However the environment is configured, the app should always fallback to `en` if no other translation is available. --- .env | 4 ++-- spec/base_spec_helper.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.env b/.env index 3182c16226..5cdc06d8bd 100644 --- a/.env +++ b/.env @@ -10,10 +10,10 @@ TIMEZONE="Melbourne" DEFAULT_COUNTRY_CODE="AU" # Locale for translation. -LOCALE="en" +LOCALE="en_AU" # For multilingual - ENV doesn't have array so pass it as string with commas -AVAILABLE_LOCALES="en,es" +AVAILABLE_LOCALES="en_AU,es" # Spree zone. CHECKOUT_ZONE="Australia" diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb index 6a307e9c3c..fcb68b76d6 100644 --- a/spec/base_spec_helper.rb +++ b/spec/base_spec_helper.rb @@ -141,7 +141,7 @@ RSpec.configure do |config| # Reset locale for all specs. config.around(:each) do |example| - I18n.with_locale(:en) { example.run } + I18n.with_locale(:en_AU) { example.run } end # Reset all feature toggles to prevent leaking. From 968456e5e04e77257e2c13e0aa04c0e764524cee Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 23 May 2024 15:10:24 +1000 Subject: [PATCH 184/319] Create special locale for test environment So hopefully we'll notice if our fallback mechanism fails. --- .env.development | 5 +++++ .env.test | 3 +++ config/locales/en_TEST.yml | 12 ++++++++++++ 3 files changed, 20 insertions(+) create mode 100644 config/locales/en_TEST.yml diff --git a/.env.development b/.env.development index 1605f8ffba..68640acf21 100644 --- a/.env.development +++ b/.env.development @@ -5,6 +5,11 @@ # # cp .env.development .env.local +# Locale for translation. Using a locale other than `en` tests the +# successful fallback to `en`. You will also see up-to-date text used +# in production +LOCALE="en_AU" + VERBOSE_QUERY_LOGS=true SECRET_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" diff --git a/.env.test b/.env.test index 09881648aa..c0097a0416 100644 --- a/.env.test +++ b/.env.test @@ -1,6 +1,9 @@ # ENV vars for the test environment # Override locally with `.env.test.local` +# Locale for translation. +LOCALE="en_TEST" + OFN_REDIS_JOBS_URL="redis://localhost:6379/2" SECRET_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" diff --git a/config/locales/en_TEST.yml b/config/locales/en_TEST.yml new file mode 100644 index 0000000000..6aa6e4e7ec --- /dev/null +++ b/config/locales/en_TEST.yml @@ -0,0 +1,12 @@ +# Test language file +# --------------------- +# +# All production environments set their own locale. The source locale `en.yml` +# is used as a fallback but no server is using it directly. +# +# Using this test locale reflects that setup more realistically and means that +# we include fallback translations in our tests. +# +en: + # Overridden here due to a bug in spree i18n (Issue #870, and issue #1800) + language_name: "English" # Localised name of this language From b9c7be769a4a195fb53eecfeb37b07d11166bc91 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 23 May 2024 15:51:43 +1000 Subject: [PATCH 185/319] Fixup db schema.rb It looks like I forgot to commit the latest change in 46cd60aa3c. --- db/schema.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/db/schema.rb b/db/schema.rb index a8d9dafdcf..d279b1931b 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -204,7 +204,6 @@ ActiveRecord::Schema[7.0].define(version: 2024_05_17_121235) do t.string "abn", limit: 255 t.string "acn", limit: 255 t.integer "address_id" - t.string "next_collection_at", limit: 255 t.datetime "created_at", precision: nil, null: false t.datetime "updated_at", precision: nil, null: false t.string "facebook", limit: 255 From d27cd18f563bdad2f98f36d9609a651d16388c7f Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Sat, 27 Jan 2024 11:38:23 +0100 Subject: [PATCH 186/319] Force start date before end date with range mode flatpickr - modify view to get a flatpickr component in range mode - modify spec to take into account range mode --- app/views/admin/reports/_date_range_form.html.haml | 9 ++++----- spec/system/admin/reports/orders_and_fulfillment_spec.rb | 7 ++++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/views/admin/reports/_date_range_form.html.haml b/app/views/admin/reports/_date_range_form.html.haml index 0afa600cae..ccd8151de9 100644 --- a/app/views/admin/reports/_date_range_form.html.haml +++ b/app/views/admin/reports/_date_range_form.html.haml @@ -6,8 +6,7 @@ .row.date-range-filter .alpha.two.columns= label_tag nil, t(:date_range) - .omega.fourteen.columns - = f.text_field "#{field}_gt", :class => 'datetimepicker datepicker-from', :placeholder => t(:start), data: { controller: "flatpickr", "flatpickr-enable-time-value": true, "flatpickr-default-date-value": "startOfDay" }, value: start_date - %span.range-divider - %i.icon-arrow-right - = f.text_field "#{field}_lt", :class => 'datetimepicker datepicker-to', :placeholder => t(:stop), data: { controller: "flatpickr", "flatpickr-enable-time-value": true, "flatpickr-default-date-value": "endOfDay" }, value: end_date + .omega.fourteen.columns{ data: { controller: "flatpickr", "flatpickr-mode-value": "range" } } + = text_field_tag nil, nil, class: "datepicker", data: { "flatpickr-target": "instance", action: "flatpickr_clear@window->flatpickr#clear" } + = text_field_tag "q[#{field}_gt]", nil, data: { "flatpickr-target": "start" }, style: "display: none", value: start_date + = text_field_tag "q[#{field}_lt]", nil, data: { "flatpickr-target": "end" }, style: "display: none", value: end_date diff --git a/spec/system/admin/reports/orders_and_fulfillment_spec.rb b/spec/system/admin/reports/orders_and_fulfillment_spec.rb index 4be6589234..0b40a3eaa2 100644 --- a/spec/system/admin/reports/orders_and_fulfillment_spec.rb +++ b/spec/system/admin/reports/orders_and_fulfillment_spec.rb @@ -125,8 +125,8 @@ RSpec.describe "Orders And Fulfillment" do it "is precise to time of day, not just date" do # When I generate a customer report # with a timeframe that includes one order but not the other - pick_datetime "#q_completed_at_gt", datetime_start1 - pick_datetime "#q_completed_at_lt", datetime_end + find("input.datepicker").click + select_dates_from_daterangepicker datetime_start1, datetime_end find("#display_summary_row").set(false) # hides the summary rows run_report @@ -141,7 +141,8 @@ RSpec.describe "Orders And Fulfillment" do # 2 rows for order1 + 1 summary row # setting a time interval to include both orders - pick_datetime "#q_completed_at_gt", datetime_start2 + find("input.datepicker").click + select_dates_from_daterangepicker datetime_start2, Time.zone.now run_report # Then I should see the rows for both orders expect(all('table.report__table tbody tr').count).to eq(5) From 72301f3ad89c870620ba80a700bacd8f58654c47 Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Thu, 1 Feb 2024 20:03:04 +0100 Subject: [PATCH 187/319] Add Time in flatpickr control --- app/views/admin/reports/_date_range_form.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/reports/_date_range_form.html.haml b/app/views/admin/reports/_date_range_form.html.haml index ccd8151de9..afe261d295 100644 --- a/app/views/admin/reports/_date_range_form.html.haml +++ b/app/views/admin/reports/_date_range_form.html.haml @@ -6,7 +6,7 @@ .row.date-range-filter .alpha.two.columns= label_tag nil, t(:date_range) - .omega.fourteen.columns{ data: { controller: "flatpickr", "flatpickr-mode-value": "range" } } + .omega.fourteen.columns{ data: { controller: "flatpickr", "flatpickr-mode-value": "range", "flatpickr-enable-time-value": true , "flatpickr-default-hour": 0 } } = text_field_tag nil, nil, class: "datepicker", data: { "flatpickr-target": "instance", action: "flatpickr_clear@window->flatpickr#clear" } = text_field_tag "q[#{field}_gt]", nil, data: { "flatpickr-target": "start" }, style: "display: none", value: start_date = text_field_tag "q[#{field}_lt]", nil, data: { "flatpickr-target": "end" }, style: "display: none", value: end_date From 396ea65bc6ea8d42329dcb691d6e832dc9c70c4d Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Thu, 1 Feb 2024 21:09:06 +0100 Subject: [PATCH 188/319] Bugfix on spec --- spec/system/admin/reports/orders_and_fulfillment_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/system/admin/reports/orders_and_fulfillment_spec.rb b/spec/system/admin/reports/orders_and_fulfillment_spec.rb index 0b40a3eaa2..971484492a 100644 --- a/spec/system/admin/reports/orders_and_fulfillment_spec.rb +++ b/spec/system/admin/reports/orders_and_fulfillment_spec.rb @@ -127,6 +127,7 @@ RSpec.describe "Orders And Fulfillment" do # with a timeframe that includes one order but not the other find("input.datepicker").click select_dates_from_daterangepicker datetime_start1, datetime_end + find(".shortcut-buttons-flatpickr-button").click # closes flatpickr find("#display_summary_row").set(false) # hides the summary rows run_report From 3451be40433bb41374ba48ad41ec6a4361fa3db4 Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Thu, 23 May 2024 08:26:14 +0200 Subject: [PATCH 189/319] Increasing the placeholder size --- app/views/admin/reports/_date_range_form.html.haml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/views/admin/reports/_date_range_form.html.haml b/app/views/admin/reports/_date_range_form.html.haml index afe261d295..040344e622 100644 --- a/app/views/admin/reports/_date_range_form.html.haml +++ b/app/views/admin/reports/_date_range_form.html.haml @@ -6,7 +6,9 @@ .row.date-range-filter .alpha.two.columns= label_tag nil, t(:date_range) - .omega.fourteen.columns{ data: { controller: "flatpickr", "flatpickr-mode-value": "range", "flatpickr-enable-time-value": true , "flatpickr-default-hour": 0 } } - = text_field_tag nil, nil, class: "datepicker", data: { "flatpickr-target": "instance", action: "flatpickr_clear@window->flatpickr#clear" } - = text_field_tag "q[#{field}_gt]", nil, data: { "flatpickr-target": "start" }, style: "display: none", value: start_date - = text_field_tag "q[#{field}_lt]", nil, data: { "flatpickr-target": "end" }, style: "display: none", value: end_date + .omega.fourteen.columns + .field-block.omega.four.columns + .date-range-fields{ data: { controller: "flatpickr", "flatpickr-mode-value": "range", "flatpickr-enable-time-value": true , "flatpickr-default-hour": 0 } } + = text_field_tag nil, nil, class: "datepicker fullwidth", data: { "flatpickr-target": "instance", action: "flatpickr_clear@window->flatpickr#clear" } + = text_field_tag "q[#{field}_gt]", nil, data: { "flatpickr-target": "start" }, style: "display: none", value: start_date + = text_field_tag "q[#{field}_lt]", nil, data: { "flatpickr-target": "end" }, style: "display: none", value: end_date From 8c0e20f53c7012860c4360ec2da2d34cca59253b Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Thu, 23 May 2024 10:07:56 +0200 Subject: [PATCH 190/319] Deleting some used one-shot rake taskes - in relation to: Fix Rubocop Rails issues #11482 - and Require belongs_to associations by default #11297 - and #12407 #12428 etc. --- .../check_missing_country_id_in_state.rake | 18 ------------ ...sing_order_id_in_return_authorization.rake | 18 ------------ ...perty_in_joint_table_product_property.rake | 18 ------------ ...k_missing_required_ids_in_stock_items.rake | 28 ------------------- ...ssing_required_ids_in_stock_movements.rake | 28 ------------------- 5 files changed, 110 deletions(-) delete mode 100644 lib/tasks/data/check_missing_country_id_in_state.rake delete mode 100644 lib/tasks/data/check_missing_order_id_in_return_authorization.rake delete mode 100644 lib/tasks/data/check_missing_property_in_joint_table_product_property.rake delete mode 100644 lib/tasks/data/check_missing_required_ids_in_stock_items.rake delete mode 100644 lib/tasks/data/check_missing_required_ids_in_stock_movements.rake diff --git a/lib/tasks/data/check_missing_country_id_in_state.rake b/lib/tasks/data/check_missing_country_id_in_state.rake deleted file mode 100644 index 0b56f49a71..0000000000 --- a/lib/tasks/data/check_missing_country_id_in_state.rake +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -namespace :ofn do - namespace :data do - desc 'Checking missing country_id in Spree::State' - task check_missing_country_id_in_spree_states: :environment do - puts 'Checking for null country_id' - ids = Spree::State.where(country_id: nil).pluck(:id) - - if ids.empty? - puts 'No NULL country_id found in spree_states' - else - puts 'NULL country_ids s have been found in spree_states:' - print ids - end - end - end -end diff --git a/lib/tasks/data/check_missing_order_id_in_return_authorization.rake b/lib/tasks/data/check_missing_order_id_in_return_authorization.rake deleted file mode 100644 index d69bdb9bff..0000000000 --- a/lib/tasks/data/check_missing_order_id_in_return_authorization.rake +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -namespace :ofn do - namespace :data do - desc 'Checking order_id in ReturnAuthorization' - task check_missing_order_id_in_return_authorizations: :environment do - puts 'Checking for null order_id' - ids = Spree::ReturnAuthorization.where(order_id: nil).pluck(:id) - - if ids.empty? - puts 'No NULL order_id found in spree_return_authorizations' - else - puts 'NULL order_id s have been found in spree_return_authorizations:' - print ids - end - end - end -end diff --git a/lib/tasks/data/check_missing_property_in_joint_table_product_property.rake b/lib/tasks/data/check_missing_property_in_joint_table_product_property.rake deleted file mode 100644 index 52949e83c6..0000000000 --- a/lib/tasks/data/check_missing_property_in_joint_table_product_property.rake +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -namespace :ofn do - namespace :data do - desc 'Checking missing property_id in ProductProperty' - task check_missing_property_in_joint_table_product_property: :environment do - puts 'Checking for null property_id' - ids = Spree::ProductProperty.where(property_id: nil).pluck(:id) - - if ids.empty? - puts 'No NULL property_id found in spree_product_properties' - else - puts 'NULL property_ids s have been found in spree_product_properties:' - print ids - end - end - end -end diff --git a/lib/tasks/data/check_missing_required_ids_in_stock_items.rake b/lib/tasks/data/check_missing_required_ids_in_stock_items.rake deleted file mode 100644 index e265a012b4..0000000000 --- a/lib/tasks/data/check_missing_required_ids_in_stock_items.rake +++ /dev/null @@ -1,28 +0,0 @@ -# frozen_string_literal: true - -namespace :ofn do - namespace :data do - desc 'Checking missing required ids in Spree::StockItem' - task check_missing_required_missing_ids_in_spree_stock_items: :environment do - puts 'Checking for null stock_location_id' - ids = Spree::StockItem.where(stock_location_id: nil).pluck(:id) - - if ids.empty? - puts 'No NULL stock_location_id found in spree_stock_items' - else - puts 'NULL stock_location_ids s have been found in spree_stock_items:' - print ids - end - - puts 'Checking for null variant_id' - ids = Spree::StockItem.where(variant_id: nil).pluck(:id) - - if ids.empty? - puts 'No NULL variant_id found in spree_stock_items' - else - puts 'NULL variant_ids s have been found in spree_stock_items:' - print ids - end - end - end -end diff --git a/lib/tasks/data/check_missing_required_ids_in_stock_movements.rake b/lib/tasks/data/check_missing_required_ids_in_stock_movements.rake deleted file mode 100644 index 56442255aa..0000000000 --- a/lib/tasks/data/check_missing_required_ids_in_stock_movements.rake +++ /dev/null @@ -1,28 +0,0 @@ -# frozen_string_literal: true - -namespace :ofn do - namespace :data do - desc 'Checking missing required ids in Spree::StockMovement' - task check_missing_required_missing_ids_in_spree_stock_movements: :environment do - puts 'Checking for null stock_item_id' - ids = Spree::StockMovement.where(stock_item_id: nil).pluck(:id) - - if ids.empty? - puts 'No NULL stock_item_id found in spree_stock_movements' - else - puts 'NULL stock_item_ids s have been found in spree_stock_movements:' - print ids - end - - puts 'Checking for null quantity' - ids = Spree::StockMovement.where(quantity: nil).pluck(:id) - - if ids.empty? - puts 'No NULL quantity found in spree_stock_movements' - else - puts 'NULL quantity s have been found in spree_stock_movements:' - print ids - end - end - end -end From e740fb8f6e72a93e374c0370022d9981f3ddfd60 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 23 May 2024 14:24:16 +0500 Subject: [PATCH 191/319] 12398: add turbo-rails --- Gemfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 94f0e62398..668ad01fbd 100644 --- a/Gemfile +++ b/Gemfile @@ -104,7 +104,8 @@ gem 'sidekiq-scheduler' gem "cable_ready" gem "stimulus_reflex" - +gem "cable_ready", "5.0.1" +gem "stimulus_reflex", "3.5.0.rc3" gem "turbo-rails" gem 'combine_pdf' From e5b9e078740030b9ec008bf211e11f83fab8e877 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 23 May 2024 14:27:13 +0500 Subject: [PATCH 192/319] 12398: update confirm_modal to use button_to form submission --- app/components/confirm_modal_component.rb | 4 +++- .../confirm_modal_component.html.haml | 7 ++++++- app/views/admin/products_v3/_delete_modal.html.haml | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/components/confirm_modal_component.rb b/app/components/confirm_modal_component.rb index 8149a729e3..7034db03c6 100644 --- a/app/components/confirm_modal_component.rb +++ b/app/components/confirm_modal_component.rb @@ -12,7 +12,8 @@ class ConfirmModalComponent < ModalComponent confirm_button_class: :primary, confirm_button_text: I18n.t('js.admin.modals.confirm'), cancel_button_text: I18n.t('js.admin.modals.cancel'), - actions_alignment_class: 'justify-space-around' + actions_alignment_class: 'justify-space-around', + confirm_submit_method: nil ) super(id:, close_button: true) @confirm_actions = confirm_actions @@ -24,6 +25,7 @@ class ConfirmModalComponent < ModalComponent @confirm_button_text = confirm_button_text @cancel_button_text = cancel_button_text @actions_alignment_class = actions_alignment_class + @confirm_submit_method = confirm_submit_method end private diff --git a/app/components/confirm_modal_component/confirm_modal_component.html.haml b/app/components/confirm_modal_component/confirm_modal_component.html.haml index 1184602a67..210bc724a8 100644 --- a/app/components/confirm_modal_component/confirm_modal_component.html.haml +++ b/app/components/confirm_modal_component/confirm_modal_component.html.haml @@ -7,4 +7,9 @@ %div{ class: "modal-actions #{@actions_alignment_class}" } %input{ class: "button icon-plus #{close_button_class}", type: 'button', value: @cancel_button_text, "data-action": "click->modal#close" } - %input{ id: 'modal-confirm-button', class: "button icon-plus #{@confirm_button_class}", type: 'button', value: @confirm_button_text, "data-action": @confirm_actions, "data-reflex": @confirm_reflexes } + - # TODO: This if block needs to be removed when we completely get rid of Reflex + - # The button's form action will be dynamically set when the modal is opened via modal-link-controller + - if @confirm_submit_method + = button_to @confirm_button_text, '', id: 'modal-confirm-button', method: @confirm_submit_method, data: { action: @confirm_actions } + - else + %input{ id: 'modal-confirm-button', class: "button icon-plus #{@confirm_button_class}", type: 'button', value: @confirm_button_text, "data-action": @confirm_actions, "data-reflex": @confirm_reflexes } diff --git a/app/views/admin/products_v3/_delete_modal.html.haml b/app/views/admin/products_v3/_delete_modal.html.haml index 40b6fbd32d..ca0987ab4e 100644 --- a/app/views/admin/products_v3/_delete_modal.html.haml +++ b/app/views/admin/products_v3/_delete_modal.html.haml @@ -7,6 +7,7 @@ actions_alignment_class: 'justify-end', confirm_reflexes: "click->products#delete_#{object_type}", confirm_actions: "click->modal#close", + confirm_submit_method: :delete, ) = render delete_modal do %h2.margin-bottom-20.black-text From 53fb77eb2336665ee3f93f18917c99ea4c97e5b0 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 23 May 2024 14:30:28 +0500 Subject: [PATCH 193/319] 12398: add destroy action with turbo stream --- app/controllers/admin/products_v3_controller.rb | 8 ++++++++ app/views/admin/products_v3/destroy.turbo_stream.haml | 1 + config/routes/admin.rb | 2 ++ 3 files changed, 11 insertions(+) create mode 100644 app/views/admin/products_v3/destroy.turbo_stream.haml diff --git a/app/controllers/admin/products_v3_controller.rb b/app/controllers/admin/products_v3_controller.rb index 77098ee7bb..90505150fd 100644 --- a/app/controllers/admin/products_v3_controller.rb +++ b/app/controllers/admin/products_v3_controller.rb @@ -31,6 +31,14 @@ module Admin end end + # will update this in further commits + def destroy + @product = Spree::Product.find(params[:id]) + respond_with do |format| + format.turbo_stream + end + end + def index_url(params) "/admin/products?#{params.to_query}" # todo: fix routing so this can be automaticly generated end diff --git a/app/views/admin/products_v3/destroy.turbo_stream.haml b/app/views/admin/products_v3/destroy.turbo_stream.haml new file mode 100644 index 0000000000..8f19c2fdfe --- /dev/null +++ b/app/views/admin/products_v3/destroy.turbo_stream.haml @@ -0,0 +1 @@ += turbo_stream.remove dom_id(@product) diff --git a/config/routes/admin.rb b/config/routes/admin.rb index c82fb18315..3d4665eea2 100644 --- a/config/routes/admin.rb +++ b/config/routes/admin.rb @@ -75,6 +75,8 @@ Openfoodnetwork::Application.routes.draw do # This might be easier to arrange once we rename the controller to plain old "products" post '/products/bulk_update', to: 'products_v3#bulk_update' get '/products', to: 'products_v3#index' + # we already have DELETE admin/products/:id here + delete 'products_v3/:id', to: 'products_v3#destroy', as: 'product_destroy' end resources :variant_overrides do From 6659ffe5301faa5966fe75932fec1d5f6febd431 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 23 May 2024 14:32:38 +0500 Subject: [PATCH 194/319] 12398: update modal-link-controller to dynamically set form action as per the selected product to delete --- .../admin/products_v3/_product_row.html.haml | 2 +- app/views/admin/products_v3/_table.html.haml | 2 +- .../controllers/modal_link_controller.js | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/views/admin/products_v3/_product_row.html.haml b/app/views/admin/products_v3/_product_row.html.haml index 0908652009..0dd86aa73b 100644 --- a/app/views/admin/products_v3/_product_row.html.haml +++ b/app/views/admin/products_v3/_product_row.html.haml @@ -43,5 +43,5 @@ = link_to t('admin.products_page.actions.clone'), clone_admin_product_path(product), 'data-turbo': false %a{ "data-controller": "modal-link", "data-action": "click->modal-link#setModalDataSetOnConfirm click->modal-link#open", "data-modal-link-target-value": "product-delete-modal", "class": "delete", - "data-modal-link-modal-dataset-value": {'data-current-id': product.id}.to_json } + "data-modal-link-modal-dataset-value": {'data-current-id': product.id, 'data-path': admin_product_destroy_path(product)}.to_json } = t('admin.products_page.actions.delete') diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 27d5d7434f..92f8ded399 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -63,7 +63,7 @@ %th.align-right= t('admin.products_page.columns.actions') - products.each_with_index do |product, product_index| = form.fields_for("products", product, index: product_index) do |product_form| - %tbody.relaxed{ data: { 'record-id': product_form.object.id, + %tbody.relaxed{ id: dom_id(product), data: { 'record-id': product_form.object.id, controller: "nested-form product", action: 'rails-nested-form:add->bulk-form#registerElements rails-nested-form:remove->bulk-form#toggleFormChanged' } } %tr diff --git a/app/webpacker/controllers/modal_link_controller.js b/app/webpacker/controllers/modal_link_controller.js index 9eb765c35f..c77e2864fe 100644 --- a/app/webpacker/controllers/modal_link_controller.js +++ b/app/webpacker/controllers/modal_link_controller.js @@ -17,6 +17,9 @@ export default class extends Controller { const modalId = this.targetValue; const moodalConfirmButtonQuery = `#${modalId} #modal-confirm-button`; const confirmButton = document.querySelector(moodalConfirmButtonQuery); + + this.#setPathToFormAction(confirmButton); + Object.keys(this.modalDatasetValue).forEach((datasetKey) => { confirmButton.setAttribute(datasetKey, this.modalDatasetValue[datasetKey]); }); @@ -30,4 +33,16 @@ export default class extends Controller { getIdentifier() { return "modal"; } + + #setPathToFormAction(confirmButton) { + const isSubmitButton = confirmButton.type === 'submit'; + const path = this.modalDatasetValue['data-path']; + + if(isSubmitButton && path){ + const form = confirmButton.parentElement; + form.setAttribute('action', path); + + delete this.modalDatasetValue['data-path']; + } + } } From 48615f1325f1c233cd3c9780f0401760f62f93cd Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 24 May 2024 01:20:08 +0500 Subject: [PATCH 195/319] 12398: fix rebasing mistake --- Gemfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index 668ad01fbd..94f0e62398 100644 --- a/Gemfile +++ b/Gemfile @@ -104,8 +104,7 @@ gem 'sidekiq-scheduler' gem "cable_ready" gem "stimulus_reflex" -gem "cable_ready", "5.0.1" -gem "stimulus_reflex", "3.5.0.rc3" + gem "turbo-rails" gem 'combine_pdf' From 039b0d80ee8578115659c1cba75fb94d9a9db13a Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 24 May 2024 01:55:21 +0500 Subject: [PATCH 196/319] 12398: implement the destroy action for products --- app/controllers/admin/products_v3_controller.rb | 17 +++++++++++++++-- .../admin/products_v3/destroy.turbo_stream.haml | 1 + 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/controllers/admin/products_v3_controller.rb b/app/controllers/admin/products_v3_controller.rb index 90505150fd..52d26bd924 100644 --- a/app/controllers/admin/products_v3_controller.rb +++ b/app/controllers/admin/products_v3_controller.rb @@ -31,12 +31,25 @@ module Admin end end - # will update this in further commits def destroy - @product = Spree::Product.find(params[:id]) + @product = ProductScopeQuery.new( + spree_current_user, + { id: params[:id] } + ).find_product + + if @product.destroy + flash[:success] = I18n.t('admin.products_v3.delete_product.success') + else + flash[:error] = I18n.t('admin.products_v3.delete_product.error') + end + respond_with do |format| format.turbo_stream end + + # using flash with turbo stream doesn't clear it because the page is not refreshed. + # so upon refreshing the page, the flash message appears again + flash.discard end def index_url(params) diff --git a/app/views/admin/products_v3/destroy.turbo_stream.haml b/app/views/admin/products_v3/destroy.turbo_stream.haml index 8f19c2fdfe..f517ebc6cd 100644 --- a/app/views/admin/products_v3/destroy.turbo_stream.haml +++ b/app/views/admin/products_v3/destroy.turbo_stream.haml @@ -1 +1,2 @@ = turbo_stream.remove dom_id(@product) += render partial: "admin/shared/flashes", locals: { flashes: flash } if defined? flash \ No newline at end of file From 2bdf8e2853a03980e5c503e10edda96d78f08d56 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 24 May 2024 02:40:34 +0500 Subject: [PATCH 197/319] rename destroy.turbo_stream to make it more generic --- app/controllers/admin/products_v3_controller.rb | 6 +++--- app/views/admin/products_v3/destroy.turbo_stream.haml | 2 -- 2 files changed, 3 insertions(+), 5 deletions(-) delete mode 100644 app/views/admin/products_v3/destroy.turbo_stream.haml diff --git a/app/controllers/admin/products_v3_controller.rb b/app/controllers/admin/products_v3_controller.rb index 52d26bd924..b4968e0a2f 100644 --- a/app/controllers/admin/products_v3_controller.rb +++ b/app/controllers/admin/products_v3_controller.rb @@ -32,19 +32,19 @@ module Admin end def destroy - @product = ProductScopeQuery.new( + @record = ProductScopeQuery.new( spree_current_user, { id: params[:id] } ).find_product - if @product.destroy + if @record.destroy flash[:success] = I18n.t('admin.products_v3.delete_product.success') else flash[:error] = I18n.t('admin.products_v3.delete_product.error') end respond_with do |format| - format.turbo_stream + format.turbo_stream { render :destroy_product_variant } end # using flash with turbo stream doesn't clear it because the page is not refreshed. diff --git a/app/views/admin/products_v3/destroy.turbo_stream.haml b/app/views/admin/products_v3/destroy.turbo_stream.haml deleted file mode 100644 index f517ebc6cd..0000000000 --- a/app/views/admin/products_v3/destroy.turbo_stream.haml +++ /dev/null @@ -1,2 +0,0 @@ -= turbo_stream.remove dom_id(@product) -= render partial: "admin/shared/flashes", locals: { flashes: flash } if defined? flash \ No newline at end of file From a0f290c09f140235282442b70e711b76528a8e9a Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 24 May 2024 02:41:51 +0500 Subject: [PATCH 198/319] 12398: add turbo stream to delete variants --- app/controllers/admin/products_v3_controller.rb | 17 +++++++++++++++++ .../admin/products_v3/_product_row.html.haml | 2 +- app/views/admin/products_v3/_table.html.haml | 2 +- .../admin/products_v3/_variant_row.html.haml | 2 +- .../destroy_product_variant.turbo_stream.haml | 3 +++ config/routes/admin.rb | 1 + 6 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 app/views/admin/products_v3/destroy_product_variant.turbo_stream.haml diff --git a/app/controllers/admin/products_v3_controller.rb b/app/controllers/admin/products_v3_controller.rb index b4968e0a2f..15d12d3849 100644 --- a/app/controllers/admin/products_v3_controller.rb +++ b/app/controllers/admin/products_v3_controller.rb @@ -52,6 +52,23 @@ module Admin flash.discard end + def destroy_variant + @record = Spree::Variant.active.find(params[:id]) + authorize! :delete, @record + + if VariantDeleter.new.delete(@record) + flash[:success] = I18n.t('admin.products_v3.delete_variant.success') + else + flash[:error] = I18n.t('admin.products_v3.delete_variant.error') + end + + respond_with do |format| + format.turbo_stream { render :destroy_product_variant } + end + + flash.discard + end + def index_url(params) "/admin/products?#{params.to_query}" # todo: fix routing so this can be automaticly generated end diff --git a/app/views/admin/products_v3/_product_row.html.haml b/app/views/admin/products_v3/_product_row.html.haml index 0dd86aa73b..0e16514257 100644 --- a/app/views/admin/products_v3/_product_row.html.haml +++ b/app/views/admin/products_v3/_product_row.html.haml @@ -43,5 +43,5 @@ = link_to t('admin.products_page.actions.clone'), clone_admin_product_path(product), 'data-turbo': false %a{ "data-controller": "modal-link", "data-action": "click->modal-link#setModalDataSetOnConfirm click->modal-link#open", "data-modal-link-target-value": "product-delete-modal", "class": "delete", - "data-modal-link-modal-dataset-value": {'data-current-id': product.id, 'data-path': admin_product_destroy_path(product)}.to_json } + "data-modal-link-modal-dataset-value": {'data-path': admin_product_destroy_path(product)}.to_json } = t('admin.products_page.actions.delete') diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 92f8ded399..464130d181 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -71,7 +71,7 @@ - product.variants.each_with_index do |variant, variant_index| = form.fields_for("products][#{product_index}][variants_attributes][", variant, index: variant_index) do |variant_form| - %tr.condensed{ 'data-controller': "variant", 'class': "nested-form-wrapper", 'data-new-record': variant.new_record? ? "true" : false } + %tr.condensed{ id: dom_id(variant), 'data-controller': "variant", 'class': "nested-form-wrapper", 'data-new-record': variant.new_record? ? "true" : false } = render partial: 'variant_row', locals: { variant:, f: variant_form, category_options:, tax_category_options: } = form.fields_for("products][#{product_index}][variants_attributes][NEW_RECORD", product.variants.build) do |new_variant_form| diff --git a/app/views/admin/products_v3/_variant_row.html.haml b/app/views/admin/products_v3/_variant_row.html.haml index f60b2522eb..02f23b8eeb 100644 --- a/app/views/admin/products_v3/_variant_row.html.haml +++ b/app/views/admin/products_v3/_variant_row.html.haml @@ -66,7 +66,7 @@ - if variant.product.variants.size > 1 %a{ "data-controller": "modal-link", "data-action": "click->modal-link#setModalDataSetOnConfirm click->modal-link#open", "data-modal-link-target-value": "variant-delete-modal", "class": "delete", - "data-modal-link-modal-dataset-value": {'data-current-id': variant.id}.to_json } + "data-modal-link-modal-dataset-value": {'data-path': admin_destroy_variant_path(variant)}.to_json } = t('admin.products_page.actions.delete') - else %a{ 'data-action': "nested-form#remove", class: 'delete' } diff --git a/app/views/admin/products_v3/destroy_product_variant.turbo_stream.haml b/app/views/admin/products_v3/destroy_product_variant.turbo_stream.haml new file mode 100644 index 0000000000..74c600fe84 --- /dev/null +++ b/app/views/admin/products_v3/destroy_product_variant.turbo_stream.haml @@ -0,0 +1,3 @@ +- # @record can either be Product or Variant += turbo_stream.remove dom_id(@record) += render partial: "admin/shared/flashes", locals: { flashes: flash } if defined? flash diff --git a/config/routes/admin.rb b/config/routes/admin.rb index 3d4665eea2..21caa2b677 100644 --- a/config/routes/admin.rb +++ b/config/routes/admin.rb @@ -77,6 +77,7 @@ Openfoodnetwork::Application.routes.draw do get '/products', to: 'products_v3#index' # we already have DELETE admin/products/:id here delete 'products_v3/:id', to: 'products_v3#destroy', as: 'product_destroy' + delete 'products_v3/destroy_variant/:id', to: 'products_v3#destroy_variant', as: 'destroy_variant' end resources :variant_overrides do From 6a59d06de1cea3dd2cccd2d2143e9b4c831f6846 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 24 May 2024 02:45:26 +0500 Subject: [PATCH 199/319] remove delete methods from products reflex --- app/reflexes/products_reflex.rb | 35 --------- spec/reflexes/products_reflex_spec.rb | 100 -------------------------- 2 files changed, 135 deletions(-) delete mode 100644 spec/reflexes/products_reflex_spec.rb diff --git a/app/reflexes/products_reflex.rb b/app/reflexes/products_reflex.rb index 4c8aabc0d2..7d107af4a4 100644 --- a/app/reflexes/products_reflex.rb +++ b/app/reflexes/products_reflex.rb @@ -21,34 +21,6 @@ class ProductsReflex < ApplicationReflex fetch_and_render_products_with_flash end - def delete_product - id = current_id_from_element(element) - product = product_finder(id).find_product - authorize! :delete, product - - if product.destroy - flash[:success] = I18n.t('admin.products_v3.delete_product.success') - else - flash[:error] = I18n.t('admin.products_v3.delete_product.error') - end - - fetch_and_render_products_with_flash - end - - def delete_variant - id = current_id_from_element(element) - variant = Spree::Variant.active.find(id) - authorize! :delete, variant - - if VariantDeleter.new.delete(variant) - flash[:success] = I18n.t('admin.products_v3.delete_variant.success') - else - flash[:error] = I18n.t('admin.products_v3.delete_variant.error') - end - - fetch_and_render_products_with_flash - end - private def init_filters_params @@ -203,11 +175,4 @@ class ProductsReflex < ApplicationReflex .to_h.with_indifferent_access end - def product_finder(id) - ProductScopeQuery.new(current_user, { id: }) - end - - def current_id_from_element(element) - element.dataset.current_id - end end diff --git a/spec/reflexes/products_reflex_spec.rb b/spec/reflexes/products_reflex_spec.rb deleted file mode 100644 index f0c74f2641..0000000000 --- a/spec/reflexes/products_reflex_spec.rb +++ /dev/null @@ -1,100 +0,0 @@ -# frozen_string_literal: true - -require "reflex_helper" - -RSpec.describe ProductsReflex, type: :reflex, feature: :admin_style_v3 do - let(:current_user) { create(:admin_user) } # todo: set up an enterprise user to test permissions - let(:context) { - { url: admin_products_url, connection: { current_user: } } - } - let(:flash) { {} } - - before do - pending "fix spec" - # Mock flash, because stimulus_reflex_testing doesn't support sessions - allow_any_instance_of(described_class).to receive(:flash).and_return(flash) - end - - describe '#delete_product' do - let(:product) { create(:simple_product) } - let(:action_name) { :delete_product } - - subject { build_reflex(method_name: action_name, **context) } - - before { subject.element.dataset.current_id = product.id } - - context 'given that the current user is admin' do - let(:current_user) { create(:admin_user) } - - it 'should successfully delete the product' do - subject.run(action_name) - product.reload - expect(product.deleted_at).not_to be_nil - expect(flash[:success]).to eq('Successfully deleted the product') - end - - it 'should be failed to delete the product' do - # mock db query failure - allow_any_instance_of(Spree::Product).to receive(:destroy).and_return(false) - subject.run(action_name) - product.reload - expect(product.deleted_at).to be_nil - expect(flash[:error]).to eq('Unable to delete the product') - end - end - - context 'given that the current user is not admin' do - let(:current_user) { create(:user) } - - it 'should raise the access denied exception' do - expect { subject.run(action_name) }.to raise_exception(CanCan::AccessDenied) - end - end - end - - describe '#delete_variant' do - let(:variant) { create(:variant) } - let(:action_name) { :delete_variant } - - subject { build_reflex(method_name: action_name, **context) } - - before { subject.element.dataset.current_id = variant.id } - - context 'given that the current user is admin' do - let(:current_user) { create(:admin_user) } - - it 'should successfully delete the variant' do - subject.run(action_name) - variant.reload - expect(variant.deleted_at).not_to be_nil - expect(flash[:success]).to eq('Successfully deleted the variant') - end - - it 'should be failed to delete the product' do - # mock db query failure - allow_any_instance_of(Spree::Variant).to receive(:destroy).and_return(false) - subject.run(action_name) - variant.reload - expect(variant.deleted_at).to be_nil - expect(flash[:error]).to eq('Unable to delete the variant') - end - end - - context 'given that the current user is not admin' do - let(:current_user) { create(:user) } - - it 'should raise the access denied exception' do - expect { subject.run(action_name) }.to raise_exception(CanCan::AccessDenied) - end - end - end -end - -# Build and run a reflex using the context -# Parameters can be added with params: option -# For more options see https://github.com/podia/stimulus_reflex_testing#usage -def run_reflex(method_name, opts = {}) - build_reflex(method_name:, **context.merge(opts)).tap{ |reflex| - reflex.run(method_name) - } -end From 4e8896d655a4f1e364c9554508a4fe1ce98dc449 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 24 May 2024 08:17:08 +1000 Subject: [PATCH 200/319] Clearer naming of helper method --- app/helpers/admin/enterprises_helper.rb | 2 +- app/views/admin/enterprises/form/_connected_apps.html.haml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/helpers/admin/enterprises_helper.rb b/app/helpers/admin/enterprises_helper.rb index bf39ee199b..e9d337c7c0 100644 --- a/app/helpers/admin/enterprises_helper.rb +++ b/app/helpers/admin/enterprises_helper.rb @@ -14,7 +14,7 @@ module Admin producers.size == 1 ? producers.first.id : nil end - def can_connect_apps?(enterprise) + def managed_by_user?(enterprise) enterprise.in?(spree_current_user.enterprises) end diff --git a/app/views/admin/enterprises/form/_connected_apps.html.haml b/app/views/admin/enterprises/form/_connected_apps.html.haml index 81dfb240a4..f2870da01f 100644 --- a/app/views/admin/enterprises/form/_connected_apps.html.haml +++ b/app/views/admin/enterprises/form/_connected_apps.html.haml @@ -6,9 +6,9 @@ %p= t ".tagline" %div - if enterprise.connected_apps.empty? - = button_to t(".enable"), admin_enterprise_connected_apps_path(enterprise.id), method: :post, disabled: !can_connect_apps?(enterprise) + = button_to t(".enable"), admin_enterprise_connected_apps_path(enterprise.id), method: :post, disabled: !managed_by_user?(enterprise) -# This is only seen by super-admins: - %em= t(".need_to_be_manager") unless can_connect_apps?(enterprise) + %em= t(".need_to_be_manager") unless managed_by_user?(enterprise) - elsif enterprise.connected_apps.connecting.present? %button{ disabled: true } %i.spinner.fa.fa-spin.fa-circle-o-notch From 5bc6d16f34995f1ff8c5cb9122ce875e37681c1b Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Fri, 24 May 2024 08:22:20 +0200 Subject: [PATCH 201/319] Fix redundant presence validation on belongs part V - presence: true is redundant since Rails 5.0 BUT applies with new default config of belongs_to_required_by_default to true. Lots of files with belongs_to_required_by_default = false (backward compatibility). So: deleting this setting implies to adding optional: true --- .rubocop_todo.yml | 4 +--- app/models/subscription_line_item.rb | 4 ---- app/models/tag_rule.rb | 4 ---- spec/models/subscription_line_item_spec.rb | 4 ++-- spec/models/tag_rule_spec.rb | 2 +- 5 files changed, 4 insertions(+), 14 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index a2c635f20a..2fe6e29f41 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -650,14 +650,12 @@ Rails/RedundantActiveRecordAllMethod: - 'app/models/spree/variant.rb' - 'spec/system/admin/product_import_spec.rb' -# Offense count: 7 +# Offense count: 4 # This cop supports unsafe autocorrection (--autocorrect-all). Rails/RedundantPresenceValidationOnBelongsTo: Exclude: - 'app/models/spree/line_item.rb' - 'app/models/spree/order.rb' - - 'app/models/subscription_line_item.rb' - - 'app/models/tag_rule.rb' # Offense count: 1 # This cop supports unsafe autocorrection (--autocorrect-all). diff --git a/app/models/subscription_line_item.rb b/app/models/subscription_line_item.rb index a4a0b1ede5..20a98d7ceb 100644 --- a/app/models/subscription_line_item.rb +++ b/app/models/subscription_line_item.rb @@ -1,13 +1,9 @@ # frozen_string_literal: true class SubscriptionLineItem < ApplicationRecord - self.belongs_to_required_by_default = false - belongs_to :subscription, inverse_of: :subscription_line_items belongs_to :variant, -> { with_deleted }, class_name: 'Spree::Variant' - validates :subscription, presence: true - validates :variant, presence: true validates :quantity, presence: true, numericality: { only_integer: true } default_scope { order('id ASC') } diff --git a/app/models/tag_rule.rb b/app/models/tag_rule.rb index cdff7315b0..a6b5ae4bb6 100644 --- a/app/models/tag_rule.rb +++ b/app/models/tag_rule.rb @@ -1,14 +1,10 @@ # frozen_string_literal: true class TagRule < ApplicationRecord - self.belongs_to_required_by_default = false - belongs_to :enterprise preference :customer_tags, :string, default: "" - validates :enterprise, presence: true - scope :for, ->(enterprise) { where(enterprise_id: enterprise) } scope :prioritised, -> { order('priority ASC') } diff --git a/spec/models/subscription_line_item_spec.rb b/spec/models/subscription_line_item_spec.rb index 7aef546a5d..473c04a1a5 100644 --- a/spec/models/subscription_line_item_spec.rb +++ b/spec/models/subscription_line_item_spec.rb @@ -5,11 +5,11 @@ require 'spec_helper' RSpec.describe SubscriptionLineItem, model: true do describe "validations" do it "requires a subscription" do - expect(subject).to validate_presence_of :subscription + expect(subject).to belong_to :subscription end it "requires a variant" do - expect(subject).to validate_presence_of :variant + expect(subject).to belong_to :variant end it "requires a integer for quantity" do diff --git a/spec/models/tag_rule_spec.rb b/spec/models/tag_rule_spec.rb index 16e2c78ff8..738263cf34 100644 --- a/spec/models/tag_rule_spec.rb +++ b/spec/models/tag_rule_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' RSpec.describe TagRule, type: :model do describe "validations" do it "requires a enterprise" do - expect(subject).to validate_presence_of(:enterprise) + expect(subject).to belong_to(:enterprise) end end end From 0bfa9fe997913817f14dd91dd6fc10e9ca1d1e0c Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Fri, 24 May 2024 09:49:20 +0100 Subject: [PATCH 202/319] Update all locales with the latest Transifex translations --- config/locales/ar.yml | 6 +- config/locales/ca.yml | 6 +- config/locales/cy.yml | 10 +- config/locales/de_CH.yml | 9 +- config/locales/de_DE.yml | 6 +- config/locales/el.yml | 6 +- config/locales/en_AU.yml | 6 +- config/locales/en_BE.yml | 6 +- config/locales/en_CA.yml | 10 +- config/locales/en_DE.yml | 6 +- config/locales/en_FR.yml | 10 +- config/locales/en_GB.yml | 10 +- config/locales/en_IE.yml | 10 +- config/locales/en_IN.yml | 6 +- config/locales/en_NZ.yml | 6 +- config/locales/en_PH.yml | 6 +- config/locales/en_US.yml | 6 +- config/locales/en_ZA.yml | 6 +- config/locales/es.yml | 6 +- config/locales/es_CO.yml | 6 +- config/locales/es_CR.yml | 6 +- config/locales/es_US.yml | 6 +- config/locales/fil_PH.yml | 6 +- config/locales/fr.yml | 10 +- config/locales/fr_BE.yml | 6 +- config/locales/fr_CA.yml | 10 +- config/locales/fr_CH.yml | 6 +- config/locales/fr_CM.yml | 6 +- config/locales/hi.yml | 6 +- config/locales/hu.yml | 192 ++++++++++++++++++++++++-------------- config/locales/it.yml | 6 +- config/locales/it_CH.yml | 6 +- config/locales/ko.yml | 6 +- config/locales/ml.yml | 6 +- config/locales/mr.yml | 1 - config/locales/nb.yml | 10 +- config/locales/nl_BE.yml | 10 +- config/locales/pa.yml | 6 +- config/locales/pl.yml | 6 +- config/locales/pt.yml | 6 +- config/locales/pt_BR.yml | 6 +- config/locales/ru.yml | 10 +- config/locales/sv.yml | 6 +- config/locales/tr.yml | 6 +- config/locales/uk.yml | 6 +- 45 files changed, 275 insertions(+), 219 deletions(-) diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 7e3fc63f87..c8b774b070 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -707,8 +707,6 @@ ar: clear_search: مسح البحث table: new_variant: نوع جديد - edit_image: - close: عودة variant_row: none_tax_category: لا شيء category_field_name: "الفئة" @@ -1897,7 +1895,6 @@ ar: label_account: "الحساب" label_more: "أظهر المزيد" label_less: "عرض أقل" - label_notices: "إشعارات" cart_items: "العناصر" cart_headline: "سلة التسوق الخاصة بك" total: "مجموع" @@ -3844,6 +3841,9 @@ ar: validation: must_be_int: "يجب أن يكون رقما صحيحا" admin: + images: + edit: + close: عودة mail_methods: send_testmail: "إرسال بريد إلكتروني تجريبي" testmail: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 9f20abecbd..4a1c94853e 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -773,8 +773,6 @@ ca: new_variant: Nova variant bulk_update: success: Canvis guardats - edit_image: - close: Enrere variant_row: none_tax_category: Cap category_field_name: "Categoria" @@ -1906,7 +1904,6 @@ ca: label_account: "Compte" label_more: "Mostrar més" label_less: "Mostra menys" - label_notices: "Avisos" cart_items: "articles" cart_headline: "La teva cistella" total: "Total" @@ -3719,6 +3716,9 @@ ca: validation: must_be_int: "ha de ser un nombre enter" admin: + images: + edit: + close: Enrere mail_methods: send_testmail: "Enviar correu electrònic de prova" testmail: diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 8cd90a89e5..f6c7a9260e 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -805,10 +805,6 @@ cy: new_variant: Amrywiolyn newydd bulk_update: success: Cadwyd y newidiadau - edit_image: - title: Golygu llun y cynnyrch - close: Yn ôl - upload: Lanlwytho llun delete_product: success: Llwyddwyd i ddileu’r cynnyrch error: Yn methu dileu’r cynnyrch @@ -2039,7 +2035,6 @@ cy: label_account: "Cyfrif" label_more: "Dangos mwy" label_less: "Dangos llai" - label_notices: "Hysbysiadau" cart_items: "eitemau" cart_headline: "Eich troli siopa" total: "Cyfanswm" @@ -3960,6 +3955,11 @@ cy: validation: must_be_int: "mae'n rhaid cael cyfanrif" admin: + images: + edit: + title: Golygu llun y cynnyrch + close: Yn ôl + upload: Lanlwytho llun mail_methods: send_testmail: "Anfon ebost prawf" testmail: diff --git a/config/locales/de_CH.yml b/config/locales/de_CH.yml index 8d70e7a8fa..1f4225b82c 100644 --- a/config/locales/de_CH.yml +++ b/config/locales/de_CH.yml @@ -698,8 +698,6 @@ de_CH: no_products_found: Keine Produkte gefunden. table: new_variant: Neue Produktvariante - edit_image: - close: Zurück variant_row: none_tax_category: Keine category_field_name: "Kategorie" @@ -1736,6 +1734,7 @@ de_CH: abn: "MWST nr." acn: "St.-Nr.:" invoice_issued_on: "Rechnungsdatum:" + order_number: "Bestellnummer:" date_of_transaction: "Bestelldatum:" menu_1_title: "Einkaufen" menu_1_url: "/shops" @@ -1818,7 +1817,6 @@ de_CH: label_account: "Konto" label_more: "Mehr anzeigen" label_less: "Weniger anzeigen" - label_notices: "Ankündigungen" cart_items: "Artikel" cart_headline: "Ihr Warenkorb" total: "Summe" @@ -2691,6 +2689,7 @@ de_CH: report_header_total_tax: "Summe Steuern (%{currency_symbol})" report_header_total_excl_tax: "Summe exkl. Steuern (%{currency_symbol})" report_header_total_incl_tax: "Summe inkl. Steuern (%{currency_symbol})" + report_header_total_orders: "Anzahl der Bestellungen" report_header_enterprise: Unternehmen report_header_enterprise_fee_name: Name report_header_enterprise_fee_type: Art @@ -3639,6 +3638,9 @@ de_CH: validation: must_be_int: "muss eine ganze Zahl sein" admin: + images: + edit: + close: Zurück mail_methods: send_testmail: "Test-E-Mail senden" testmail: @@ -3758,6 +3760,7 @@ de_CH: from: "Von" to: "Rechnungsempfänger" shipping: "Lieferung" + order_number: "Bestellnummer" payments_list: date_time: "Datum/Uhrzeit" payment_method: "Zahlungsart" diff --git a/config/locales/de_DE.yml b/config/locales/de_DE.yml index a8c1de21b5..a9bb23dd3c 100644 --- a/config/locales/de_DE.yml +++ b/config/locales/de_DE.yml @@ -795,8 +795,6 @@ de_DE: new_variant: Neue Produktvariante bulk_update: success: Die Änderungen wurden gespeichert. - edit_image: - close: Zurück variant_row: none_tax_category: Nichts category_field_name: "Kategorie" @@ -2022,7 +2020,6 @@ de_DE: label_account: "Konto" label_more: "Mehr anzeigen" label_less: "Weniger anzeigen" - label_notices: "Ankündigungen" cart_items: "Artikel" cart_headline: "Ihr Warenkorb" total: "Summe" @@ -3899,6 +3896,9 @@ de_DE: validation: must_be_int: "muss eine ganze Zahl sein" admin: + images: + edit: + close: Zurück mail_methods: send_testmail: "Test-E-Mail senden" testmail: diff --git a/config/locales/el.yml b/config/locales/el.yml index f59c406b5f..9d86099491 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -593,8 +593,6 @@ el: producers: label: Παραγωγοί search: Αναζήτηση - edit_image: - close: Πίσω variant_row: none_tax_category: Κανένας category_field_name: "Κατηγορία" @@ -1568,7 +1566,6 @@ el: label_account: "Λογαριασμός" label_more: "Εμφάνισε κι άλλα" label_less: "Εμφάνισε λιγότερα" - label_notices: "Ειδοποίηση" cart_items: "προϊόντα" cart_headline: "Το καλάθι αγορών σου" total: "Σύνολο" @@ -3265,6 +3262,9 @@ el: validation: must_be_int: "πρέπει να είναι ακέραιος" admin: + images: + edit: + close: Πίσω mail_methods: send_testmail: "Αποστολή δοκιμαστικού email" testmail: diff --git a/config/locales/en_AU.yml b/config/locales/en_AU.yml index bb3be9c036..4c1fa3fd90 100644 --- a/config/locales/en_AU.yml +++ b/config/locales/en_AU.yml @@ -557,8 +557,6 @@ en_AU: clear_search: Clear search table: new_variant: New variant - edit_image: - close: Back variant_row: none_tax_category: None category_field_name: "Category" @@ -1599,7 +1597,6 @@ en_AU: label_account: "Account" label_more: "Show more" label_less: "Show less" - label_notices: "Notices" cart_items: "items" cart_headline: "Your shopping cart" total: "Total" @@ -3322,6 +3319,9 @@ en_AU: header: store: Store admin: + images: + edit: + close: Back subscriptions: number: "Number" tab: diff --git a/config/locales/en_BE.yml b/config/locales/en_BE.yml index 4fd8e7bd82..a46d2ec807 100644 --- a/config/locales/en_BE.yml +++ b/config/locales/en_BE.yml @@ -518,8 +518,6 @@ en_BE: search: Search table: new_variant: New variant - edit_image: - close: Back variant_row: none_tax_category: None category_field_name: "Category" @@ -1475,7 +1473,6 @@ en_BE: label_account: "Account" label_more: "Show more" label_less: "Show less" - label_notices: "Notices" cart_items: "items" cart_headline: "Your shopping cart" total: "Total" @@ -3030,6 +3027,9 @@ en_BE: header: store: Store admin: + images: + edit: + close: Back subscriptions: number: "Number" tab: diff --git a/config/locales/en_CA.yml b/config/locales/en_CA.yml index 17c8e2c3d4..58e7bfb041 100644 --- a/config/locales/en_CA.yml +++ b/config/locales/en_CA.yml @@ -829,10 +829,6 @@ en_CA: new_variant: New variant bulk_update: success: Changes saved - edit_image: - title: Edit product photo - close: Back - upload: Upload photo delete_product: success: Successfully deleted the product error: Unable to delete the product @@ -2092,7 +2088,6 @@ en_CA: label_account: "Account" label_more: "Show more" label_less: "Show less" - label_notices: "Notices" cart_items: "items" cart_headline: "Your shopping cart" total: "Total" @@ -3970,6 +3965,11 @@ en_CA: validation: must_be_int: "must be an integer" admin: + images: + edit: + title: Edit product photo + close: Back + upload: Upload photo mail_methods: send_testmail: "Send test email" testmail: diff --git a/config/locales/en_DE.yml b/config/locales/en_DE.yml index f87a75416a..9168b2148a 100644 --- a/config/locales/en_DE.yml +++ b/config/locales/en_DE.yml @@ -523,8 +523,6 @@ en_DE: search: Search table: new_variant: New variant - edit_image: - close: Back variant_row: none_tax_category: None category_field_name: "Category" @@ -1485,7 +1483,6 @@ en_DE: label_account: "Account" label_more: "Show more" label_less: "Show less" - label_notices: "Notices" cart_items: "items" cart_headline: "Your shopping cart" total: "Total" @@ -3043,6 +3040,9 @@ en_DE: header: store: Store admin: + images: + edit: + close: Back subscriptions: number: "Number" tab: diff --git a/config/locales/en_FR.yml b/config/locales/en_FR.yml index 9f9f0303d8..f5a35bc6c6 100644 --- a/config/locales/en_FR.yml +++ b/config/locales/en_FR.yml @@ -829,10 +829,6 @@ en_FR: new_variant: New variant bulk_update: success: Changes saved - edit_image: - title: Edit product photo - close: Back - upload: Upload photo delete_product: success: Successfully deleted the product error: Unable to delete the product @@ -2095,7 +2091,6 @@ en_FR: label_account: "Account" label_more: "Show more" label_less: "Show less" - label_notices: "Notices" cart_items: "items" cart_headline: "Your shopping cart" total: "Total" @@ -3974,6 +3969,11 @@ en_FR: validation: must_be_int: "must be an integer" admin: + images: + edit: + title: Edit product photo + close: Back + upload: Upload photo mail_methods: send_testmail: "Send test email" testmail: diff --git a/config/locales/en_GB.yml b/config/locales/en_GB.yml index bcec8a14f2..4e5db18c11 100644 --- a/config/locales/en_GB.yml +++ b/config/locales/en_GB.yml @@ -812,10 +812,6 @@ en_GB: new_variant: New variant bulk_update: success: Changes saved - edit_image: - title: Edit product photo - close: Back - upload: Upload photo delete_product: success: Successfully deleted the product error: Unable to delete the product @@ -2074,7 +2070,6 @@ en_GB: label_account: "Account" label_more: "Show more" label_less: "Show less" - label_notices: "Community Forum" cart_items: "items" cart_headline: "Your shopping cart" total: "Total" @@ -3956,6 +3951,11 @@ en_GB: validation: must_be_int: "must be an integer" admin: + images: + edit: + title: Edit product photo + close: Back + upload: Upload photo mail_methods: send_testmail: "Send test email" testmail: diff --git a/config/locales/en_IE.yml b/config/locales/en_IE.yml index 69cb50d09f..4e2b0771a7 100644 --- a/config/locales/en_IE.yml +++ b/config/locales/en_IE.yml @@ -814,10 +814,6 @@ en_IE: new_variant: New variant bulk_update: success: Changes saved - edit_image: - title: Edit product photo - close: Back - upload: Upload photo delete_product: success: Successfully deleted the product error: Unable to delete the product @@ -2076,7 +2072,6 @@ en_IE: label_account: "Account" label_more: "Show more" label_less: "Show less" - label_notices: "Community Forum" cart_items: "items" cart_headline: "Your shopping cart" total: "Total" @@ -3958,6 +3953,11 @@ en_IE: validation: must_be_int: "must be an integer" admin: + images: + edit: + title: Edit product photo + close: Back + upload: Upload photo mail_methods: send_testmail: "Send test email" testmail: diff --git a/config/locales/en_IN.yml b/config/locales/en_IN.yml index cfd6658e25..554bfff26e 100644 --- a/config/locales/en_IN.yml +++ b/config/locales/en_IN.yml @@ -541,8 +541,6 @@ en_IN: clear_search: Clear search table: new_variant: New variant - edit_image: - close: Back variant_row: none_tax_category: None category_field_name: "Category" @@ -1542,7 +1540,6 @@ en_IN: label_account: "Account" label_more: "Show more" label_less: "Show less" - label_notices: "Community Forum" cart_items: "items" cart_headline: "Your shopping cart" total: "Total" @@ -3229,6 +3226,9 @@ en_IN: header: store: Store admin: + images: + edit: + close: Back subscriptions: number: "Number" tab: diff --git a/config/locales/en_NZ.yml b/config/locales/en_NZ.yml index 55f81fd5b5..89ce78b137 100644 --- a/config/locales/en_NZ.yml +++ b/config/locales/en_NZ.yml @@ -694,8 +694,6 @@ en_NZ: clear_search: Clear search table: new_variant: New variant - edit_image: - close: Back variant_row: none_tax_category: None category_field_name: "Category" @@ -1816,7 +1814,6 @@ en_NZ: label_account: "Account" label_more: "Show more" label_less: "Show less" - label_notices: "Notices" cart_items: "items" cart_headline: "Your shopping cart" total: "Total" @@ -3561,6 +3558,9 @@ en_NZ: header: store: Store admin: + images: + edit: + close: Back subscriptions: number: "Number" tab: diff --git a/config/locales/en_PH.yml b/config/locales/en_PH.yml index 6c73facbc3..e17980febf 100644 --- a/config/locales/en_PH.yml +++ b/config/locales/en_PH.yml @@ -533,8 +533,6 @@ en_PH: search: Search table: new_variant: New variant - edit_image: - close: Back variant_row: none_tax_category: None category_field_name: "Category" @@ -1521,7 +1519,6 @@ en_PH: label_account: "Account" label_more: "Show more" label_less: "Show less" - label_notices: "Notices" cart_items: "items" cart_headline: "Your shopping cart" total: "Total" @@ -3175,6 +3172,9 @@ en_PH: header: store: Store admin: + images: + edit: + close: Back subscriptions: number: "Number" tab: diff --git a/config/locales/en_US.yml b/config/locales/en_US.yml index fe8b56e096..f1ba7d41aa 100644 --- a/config/locales/en_US.yml +++ b/config/locales/en_US.yml @@ -672,8 +672,6 @@ en_US: clear_search: Clear search table: new_variant: New variant - edit_image: - close: Back variant_row: none_tax_category: None category_field_name: "Category" @@ -1768,7 +1766,6 @@ en_US: label_account: "Account" label_more: "Show more" label_less: "Show less" - label_notices: "Notices" cart_items: "items" cart_headline: "Your shopping cart" total: "Total" @@ -3570,6 +3567,9 @@ en_US: validation: must_be_int: "must be an integer" admin: + images: + edit: + close: Back mail_methods: send_testmail: "Send test email" testmail: diff --git a/config/locales/en_ZA.yml b/config/locales/en_ZA.yml index 843a3db428..3511b7ae8f 100644 --- a/config/locales/en_ZA.yml +++ b/config/locales/en_ZA.yml @@ -537,8 +537,6 @@ en_ZA: clear_search: Clear search table: new_variant: New variant - edit_image: - close: Back variant_row: none_tax_category: None category_field_name: "Category" @@ -1523,7 +1521,6 @@ en_ZA: label_account: "Account" label_more: "Show more" label_less: "Show less" - label_notices: "Community Forum" cart_items: "items" cart_headline: "Your shopping cart" total: "Total" @@ -3105,6 +3102,9 @@ en_ZA: header: store: Store admin: + images: + edit: + close: Back subscriptions: number: "Number" tab: diff --git a/config/locales/es.yml b/config/locales/es.yml index 62df537bfe..96dcab40fe 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -713,8 +713,6 @@ es: reset: Desechar Cambios save: Guardar Cambios new_variant: Nueva variante - edit_image: - close: Atrás variant_row: none_tax_category: Ninguno category_field_name: "Categoría" @@ -1868,7 +1866,6 @@ es: label_account: "Cuenta" label_more: "Mostrar más" label_less: "Mostrar menos" - label_notices: "Noticias" cart_items: "elementos" cart_headline: "Su carrito de compras" total: "Total" @@ -3713,6 +3710,9 @@ es: validation: must_be_int: "debe ser un entero" admin: + images: + edit: + close: Atrás mail_methods: send_testmail: "Enviar correo electrónico de prueba" testmail: diff --git a/config/locales/es_CO.yml b/config/locales/es_CO.yml index 0ebbe48e8f..599cc1115b 100644 --- a/config/locales/es_CO.yml +++ b/config/locales/es_CO.yml @@ -561,8 +561,6 @@ es_CO: search: Buscar table: new_variant: Nueva variante - edit_image: - close: Atrás variant_row: none_tax_category: Ninguno category_field_name: "Categoría" @@ -1570,7 +1568,6 @@ es_CO: label_account: "Cuenta" label_more: "Mostrar más" label_less: "Mostrar menos" - label_notices: "Noticias" cart_items: "Elementos" cart_headline: "Su carrito de compras" total: "Total" @@ -3285,6 +3282,9 @@ es_CO: header: store: Tienda admin: + images: + edit: + close: Atrás subscriptions: number: "Número" tab: diff --git a/config/locales/es_CR.yml b/config/locales/es_CR.yml index 70e37d89aa..35a5fc90d9 100644 --- a/config/locales/es_CR.yml +++ b/config/locales/es_CR.yml @@ -698,8 +698,6 @@ es_CR: clear_search: Borrar búsqueda table: new_variant: Nueva variante - edit_image: - close: Atrás variant_row: none_tax_category: Ninguno category_field_name: "Categoría" @@ -1825,7 +1823,6 @@ es_CR: label_account: "Cuenta" label_more: "Mostrar más" label_less: "Mostrar menos" - label_notices: "Noticias" cart_items: "Elementos" cart_headline: "Su carrito de compras" total: "Total" @@ -3631,6 +3628,9 @@ es_CR: header: store: Tienda admin: + images: + edit: + close: Atrás unit_price_tooltip: "El precio unitario aumenta la transparencia al permitir que sus clientes comparen fácilmente los precios entre diferentes productos y tamaños de empaque. Tenga en cuenta que el precio unitario final que se muestra en la tienda puede diferir, ya que incluye impuestos y tarifas." subscriptions: number: "Número" diff --git a/config/locales/es_US.yml b/config/locales/es_US.yml index ccd04577c0..033369229a 100644 --- a/config/locales/es_US.yml +++ b/config/locales/es_US.yml @@ -670,8 +670,6 @@ es_US: clear_search: Limpiar la búsqueda table: new_variant: Nueva variante - edit_image: - close: Atrás variant_row: none_tax_category: Ninguno category_field_name: "Categoría" @@ -1726,7 +1724,6 @@ es_US: label_account: "Cuenta" label_more: "Mostrar más" label_less: "Mostrar menos" - label_notices: "Noticias" cart_items: "elementos" cart_headline: "Su carrito de compras" total: "Total" @@ -3521,6 +3518,9 @@ es_US: validation: must_be_int: "debe ser un entero" admin: + images: + edit: + close: Atrás mail_methods: send_testmail: "Enviar email de prueba" testmail: diff --git a/config/locales/fil_PH.yml b/config/locales/fil_PH.yml index cace1d97e1..29aae4c87f 100644 --- a/config/locales/fil_PH.yml +++ b/config/locales/fil_PH.yml @@ -534,8 +534,6 @@ fil_PH: search: hanapin table: new_variant: bagong uri - edit_image: - close: bumalik variant_row: none_tax_category: wala category_field_name: "kategorya" @@ -1523,7 +1521,6 @@ fil_PH: label_account: "Account" label_more: "ipakita ang iba pa" label_less: "huwag ipakita ang lahat" - label_notices: "mga abiso" cart_items: "mga item" cart_headline: "Ang iyong shopping cart" total: "kabuuan" @@ -3187,6 +3184,9 @@ fil_PH: header: store: tindahan admin: + images: + edit: + close: bumalik subscriptions: number: "Bilang" tab: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 3fcd49d0b8..12f0fe154c 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -829,10 +829,6 @@ fr: new_variant: Nouvelle variante bulk_update: success: Changements sauvegardés - edit_image: - title: Modifier la photo du produit - close: Retour - upload: Télécharger la photo delete_product: success: Le produit a bien été supprimé error: Le produit n'a pas pu être supprimé @@ -2100,7 +2096,6 @@ fr: label_account: "Compte" label_more: "Afficher plus" label_less: "Masquer" - label_notices: "Informations" cart_items: "Produits" cart_headline: "Votre panier" total: "Total" @@ -4031,6 +4026,11 @@ fr: validation: must_be_int: "doit être un entier" admin: + images: + edit: + title: Modifier la photo du produit + close: Retour + upload: Télécharger la photo mail_methods: send_testmail: "Envoyer un e-mail de test" testmail: diff --git a/config/locales/fr_BE.yml b/config/locales/fr_BE.yml index ce57e7c375..ed48f6004d 100644 --- a/config/locales/fr_BE.yml +++ b/config/locales/fr_BE.yml @@ -709,8 +709,6 @@ fr_BE: clear_search: Effacer recherche table: new_variant: Nouvelle variante - edit_image: - close: Retour variant_row: none_tax_category: Aucun category_field_name: "Catégorie" @@ -1870,7 +1868,6 @@ fr_BE: label_account: "Compte" label_more: "Afficher plus" label_less: "Masquer" - label_notices: "Informations" cart_items: "Produits" cart_headline: "Votre panier" total: "Total" @@ -3618,6 +3615,9 @@ fr_BE: header: store: Aperçu admin: + images: + edit: + close: Retour mail_methods: send_testmail: "Envoyer un e-mail de test" testmail: diff --git a/config/locales/fr_CA.yml b/config/locales/fr_CA.yml index 9723798a58..32e382dc7e 100644 --- a/config/locales/fr_CA.yml +++ b/config/locales/fr_CA.yml @@ -830,10 +830,6 @@ fr_CA: new_variant: Nouvelle variante bulk_update: success: Changements sauvegardés - edit_image: - title: Modifier la photo du produit - close: Retour - upload: Télécharger la photo delete_product: success: Le produit a bien été supprimé error: Le produit n'a pas pu être supprimé @@ -2101,7 +2097,6 @@ fr_CA: label_account: "Compte" label_more: "Afficher plus" label_less: "Masquer" - label_notices: "Informations" cart_items: "Produits" cart_headline: "Votre panier" total: "Total" @@ -4016,6 +4011,11 @@ fr_CA: validation: must_be_int: "doit être un entier" admin: + images: + edit: + title: Modifier la photo du produit + close: Retour + upload: Télécharger la photo mail_methods: send_testmail: "Envoyer un e-mail de test" testmail: diff --git a/config/locales/fr_CH.yml b/config/locales/fr_CH.yml index 14753d4ebb..005351987e 100644 --- a/config/locales/fr_CH.yml +++ b/config/locales/fr_CH.yml @@ -692,8 +692,6 @@ fr_CH: clear_search: Annuler la recherche table: new_variant: Nouvelle variante - edit_image: - close: Retour variant_row: none_tax_category: Aucun category_field_name: "Catégorie" @@ -1811,7 +1809,6 @@ fr_CH: label_account: "Compte" label_more: "Afficher plus" label_less: "Masquer" - label_notices: "Informations" cart_items: "Produits" cart_headline: "Votre panier" total: "Total" @@ -3676,6 +3673,9 @@ fr_CH: validation: must_be_int: "doit être un entier" admin: + images: + edit: + close: Retour mail_methods: send_testmail: "Envoyer un e-mail de test" testmail: diff --git a/config/locales/fr_CM.yml b/config/locales/fr_CM.yml index a787603ad0..b17ad8e5ab 100644 --- a/config/locales/fr_CM.yml +++ b/config/locales/fr_CM.yml @@ -629,8 +629,6 @@ fr_CM: clear_search: Annuler la recherche table: new_variant: Nouvelle variante - edit_image: - close: Retour variant_row: none_tax_category: Aucun category_field_name: "Catégorie" @@ -1721,7 +1719,6 @@ fr_CM: label_account: "Compte" label_more: "Afficher plus" label_less: "Masquer" - label_notices: "Informations" cart_items: "Produits" cart_headline: "Votre panier" total: "Total" @@ -3570,6 +3567,9 @@ fr_CM: validation: must_be_int: "doit être un entier" admin: + images: + edit: + close: Retour mail_methods: send_testmail: "Envoyer un e-mail de test" testmail: diff --git a/config/locales/hi.yml b/config/locales/hi.yml index aa5e9e903e..6958aec8f7 100644 --- a/config/locales/hi.yml +++ b/config/locales/hi.yml @@ -790,8 +790,6 @@ hi: reset: परिवर्तनों को अस्वीकार करें save: परिवर्तन सेव करें new_variant: नया वैरिएंट - edit_image: - close: वापस जाएं variant_row: none_tax_category: कोई नहीं category_field_name: "श्रेणी" @@ -2014,7 +2012,6 @@ hi: label_account: "अकाउंट" label_more: "और दिखाएं" label_less: "कम दिखाएं" - label_notices: "नोटिस" cart_items: "आइटम्स" cart_headline: "आपका शॉपिंग कार्ट" total: "कुल" @@ -3884,6 +3881,9 @@ hi: validation: must_be_int: "पूर्णांक होना ही चाहिए" admin: + images: + edit: + close: वापस जाएं mail_methods: send_testmail: "टेस्ट ईमेल भेजें" testmail: diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 2e2dea4bee..602b9da313 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -8,12 +8,12 @@ hu: spree/order/ship_address: address1: "Szállítási cím (utca és házszám)" address2: "Szállítási cím 2. sor" - city: "Szállítási cím város" - country: "Szállítási cím ország" + city: "Szállítási cím Város" + country: "Szállítási cím Ország" phone: "Telefonszám" firstname: "Keresztnév" lastname: "Vezetéknév" - zipcode: "Szállítási cím irányítószám" + zipcode: "Szállítási cím Irányítószám" spree/order/bill_address: address1: "Számlázási cím (Utca és Házszám)" zipcode: "Számlázási cím Irányítószám" @@ -40,12 +40,12 @@ hu: state: Ország source: Forrás spree/product: - name: "termék név" + name: "Termék Név" price: "Ár" primary_taxon: "Termékkategória" supplier: "Termelő" shipping_category_id: "Szállítási mód" - variant_unit: "Változatos egység" + variant_unit: "Változat egysége" variant_unit_name: "Változat egység neve" unit_value: "Egység értéke" spree/variant: @@ -58,11 +58,17 @@ hu: verification_value: "Ellenőrző érték" year: "Év" order_cycle: - orders_close_at: Lezárási dátum + orders_close_at: Lezárás dátuma variant_override: count_on_hand: "Készlet" + enterprise: + white_label_logo_link: "A főoldalon használt logo linkje" errors: models: + spree/image: + attributes: + attachment: + integrity_error: "a betöltés nem sikerült. Kérjük, ellenőrizze, hogy a fájl nem sérült-e, és próbálja meg újra." spree/user: attributes: email: @@ -180,14 +186,14 @@ hu: spree_user: cannot_be_blank: "A felhasználói jelszó mező nem lehet üres. Adjon meg egy jelszót." confirmations: - send_instructions: "Néhány percen belül e-mailt fog kapni a fiók megerősítéséhez szükséges utasításokkal." + send_instructions: "Néhány percen belül e-mailt fogsz kapni a fiók megerősítéséhez szükséges utasításokkal." failed_to_send: "Hiba történt a megerősítő e-mail elküldése közben." resend_confirmation_email: "Küldd újra a megerősítő email-t." confirmed: "Köszönjük, hogy megerősítette e-mailjét! Most már bejelentkezhet." not_confirmed: "Az e-mail címét nem sikerült megerősíteni. Talán már befejezte ezt a lépést?" user_confirmations: spree_user: - send_instructions: "Néhány percen belül e-mailt fog kapni a fiók megerősítéséhez szükséges utasításokkal." + send_instructions: "Néhány percen belül e-mailt fogsz kapni a fiók megerősítéséhez szükséges utasításokkal." confirmation_sent: "E-mail visszaigazolás elküldve" confirmation_not_sent: "Hiba a megerősítő e-mail küldésekor" user_registrations: @@ -204,13 +210,15 @@ hu: success: logged_in_succesfully: "Sikeresen bejelentkeztél" sessions: - signed_out: "Sikeresen kijelentkezett." - already_signed_out: "Sikeresen kijelentkezett." + signed_out: "Sikeresen kijelentkeztél." + already_signed_out: "Sikeresen kijelentkeztél." user_passwords: spree_user: updated_not_active: "Jelszava visszaállításra került, de e-mail-címét még nem erősítették meg." updated: "Jelszavad sikeresen megváltozott, és bejelentkeztél." - send_instructions: "Néhány percen belül e-mailt fog kapni a fiók megerősítéséhez szükséges utasításokkal." + send_instructions: "Néhány percen belül e-mailt fogsz kapni a fiók megerősítéséhez szükséges utasításokkal." + oidc: + failure: "Nem tudtál bejelentkezni: %{error}" home_page_alert_html: "Kezdőlap figyelmeztető HTML" hub_signup_case_studies_html: "Átvételi pont regisztrációs esettanulmányok HTML" hub_signup_detail_html: "Átvételi pont regisztrációs részletek HTML" @@ -237,9 +245,9 @@ hu: open_street_map_provider_name: "Nyissa meg az Utcatérkép-szolgáltató nevét" open_street_map_provider_options: "Nyissa meg az Utcatérkép-szolgáltató beállításait" producer_signup_case_studies_html: "Termelői regisztrációs esettanulmányok HTML" - producer_signup_detail_html: "Termelői regisztrációs részletek HTML" + producer_signup_detail_html: "Termelői regisztráció részletek HTML" producer_signup_pricing_table_html: "Termelői regisztrációs ártáblázat HTML" - producers_social: "Szociális szövetkezetek" + producers_social: "Termelői szövetkezet" resume_order: "Rendelés folytatása" sku: "SKU" subtotal: "Részösszeg" @@ -323,7 +331,7 @@ hu: welcome_to: "Üdvözli az" site_meta_description: "Az alapoktól kezdjük. A gazdálkodókkal és termelőkkel, akik készen állnak arra, hogy büszkén és őszintén elmondják történeteiket. A forgalmazókkal, akik készen állnak arra, hogy tisztességesen és becsületesen összekapcsolják az embereket a termékekkel. Azokkal a vásárlókkal, akik hisznek abban, hogy jobb heti vásárlási döntések…" search_by_name: Keresés név vagy település szerint... - producers_join: Az ausztrál termelők most már csatlakozhatnak az Open Food Networkhöz. + producers_join: Az ausztrál termelők most már csatlakozhatnak az Open Food Network-höz. charges_sales_tax: Áfaköteles? business_address: "Vállalkozás címe" print_invoice: "Számla nyomtatása" @@ -338,7 +346,10 @@ hu: confirm_send_invoice: "Erről a megrendelésről számlát küldünk a vásárlónak. Biztos, hogy akarod folytatni?" confirm_resend_order_confirmation: "Biztos, hogy újra el akarja küldeni a rendelést visszaigazoló e-mailt?" invoice: "Számla" + invoices: "Számlák" + file: "File" active: "Aktív" + download: "Letöltés" cancelled: "Törölve" more: "Több" say_no: "Nem" @@ -396,6 +407,7 @@ hu: none: Egyik sem notes: Megjegyzések error: Hiba + voucher: Utalvány processing_payment: "Fizetés feldolgozása..." no_pending_payments: "Nincsenek függőben lévő kifizetések" invalid_payment_state: "Érvénytelen fizetési állapot: %{state}" @@ -444,6 +456,7 @@ hu: title: Kategóriák producers: title: Termelők + selected_producers: "%{count}termelő kiválasztva" colums: Oszlopok columns: name: Név @@ -684,7 +697,7 @@ hu: back_to_products_list: "Vissza a termékek listájához" editing_product: "Termék szerkesztése" tabs: - product_details: "termék leírás" + product_details: "Termék leírás" group_buy_options: "Csoportos vásárlási lehetőségek" images: "Képek" variants: "Változatok" @@ -701,6 +714,8 @@ hu: heading: "Változat törlése" confirmation_text: "Változat törlése" filters: + search_for_producers: Keresés termelőre + all_producers: Minden termelő producers: label: Termelők categories: @@ -718,8 +733,6 @@ hu: new_variant: Új variáns bulk_update: success: Változtatások mentve - edit_image: - close: Vissza delete_product: success: Sikeresen törölte a terméket error: A terméket nem lehet törölni @@ -878,7 +891,7 @@ hu: invoice_email_sent: 'Számla e-mail elküldve' order_email_resent: 'megrendelés e-mailje újra el lett küldve' bulk_management: - tip: "Ezen az oldalon módosíthatja a termékek mennyiségét több rendelés esetén. Szükség esetén a termékek teljes egészében eltávolíthatók a megrendelésekből." + tip: "Ezen az oldalon módosíthatod a termékek mennyiségét több rendelés esetén. Szükség esetén a termékek teljes egészében eltávolíthatók a megrendelésekből." shared: "Megosztott erőforrás?" order_no: "Rendelési szám." order_date: "Elkészült:" @@ -1129,7 +1142,7 @@ hu: managers: Menedzserek managers_tip: A többi felhasználó, aki jogosult a vállalkozás kezelésére. invite_manager: "Menedzser meghívása" - invite_manager_tip: "Hívjon meg egy nem regisztrált felhasználót, hogy regisztráljon, és legyen a vállalkozás vezetője." + invite_manager_tip: "Hívj meg egy nem regisztrált felhasználót, hogy regisztráljon, és legyen a tagja az Open Food Network hálózatának." add_unregistered_user: "Nem regisztrált felhasználó hozzáadása" email_confirmed: "E-mail megerősítve" email_not_confirmed: "Az e-mail cím nincs megerősítve" @@ -1137,8 +1150,18 @@ hu: rate: Mérték customers: Vevő active: Aktív? + white_label: + white_label_logo_link_label: "A főoldalon használt logo linkje" connected_apps: loading: "Betöltés" + description_html: | +

+ Termelők bemutathatják regeneratív tanúsítványukat, gazdálkodási gyakorlatukat és egyéb tevékenységüket a profiljukban. Ez egyszerűsíti a vásárlók számára, hogy megtalálják a regeneratív gyakorlatokkal előállított termékeket, és kapcsolatba lépjenek az termelőkkel.

+

+ Tudj meg többet a Regeneratív gyakorlatokról. + +

actions: edit_profile: Beállítások properties: Tulajdonságok @@ -1165,10 +1188,10 @@ hu: producer_shop_description_text2: A Termelői átvételi pont kizárólag a saját termékeid értékesítésére szolgál. Ha más termékeit szeretnéd értékesíteni, válaszd a „Termelő Átvételi pont” lehetőséget. producer_hub: Termelő Átvételi pont producer_hub_text: Saját és mások termékeinek értékesítése - producer_hub_description_text: Termelői átvételi pontként értékesítheted saját termékeidet, valamint más vállalkozásoktól átvett termékeket is az Open Food Network oldalán. + producer_hub_description_text: 'Az Open Food Network gerincét az átvételi pontok adják. Amennyiben termelő vagy, átvételi pontként értékesítheted saját termékeidet, de más termelőktől, vállalkozásoktól átvett termékeket is. ' profile: Csak profil get_listing: Szerezzen listát - profile_description_text: Az emberek megtalálhatják és kapcsolatba léphetnek Önnel az Open Food Network-en. Vállalkozása látható lesz a térképen, és kereshető lesz a listákban. + profile_description_text: Az Open Food Network-ön keresztül megtalálnak a fogyasztók és kapcsolatba is léphetnek veled. Vállalkozásod látható lesz a térképen, és kereshető lesz a listákban. hub_shop: Átvételi pont árusítóhely hub_shop_text: Adj el másoktól származó termékeket hub_shop_description_text: Termelői átvételi pontként értékesítheted saját termékeidet, valamint más vállalkozásoktól átvett termékeket is az Open Food Network oldalán. @@ -1195,7 +1218,7 @@ hu: title: Új Vállalkozás back_link: Vissza a vállalkozások listájához welcome: - welcome_title: Üdvözöljük az Open Food Networkben! + welcome_title: Üdvözölünk az Open Food Network-ben! welcome_text: Sikeresen létrehozta a next_step: Következő lépés choose_starting_point: 'Válaszd ki csomagját:''' @@ -1246,7 +1269,7 @@ hu: distributor: "Elosztó" products: "Termékek" tags: "Címkék" - delivery_details: "szállítás részletei" + delivery_details: "Szállítás részletei" fees: "Díjak" next: "Következő" previous: "Előző" @@ -1614,6 +1637,7 @@ hu: message_html: "Már van rendelése ehhez a rendelési ciklushoz. Tekintse meg a %{kosarat}, hogy megtekinthesse a korábban megrendelt tételeket. A tételeket törölheti is, amíg a rendelési ciklus nyitva van." step1: contact_information: + title: Kapcsolat email: label: Email phone: @@ -1659,18 +1683,21 @@ hu: use_new_card: Adja meg kártyaazonosítóit save_card: Mentse el a kártyát későbbi használatra create_new_card: vagy adja meg alább az új kártyaadatokat - explaination: Megrendelését a következő lépésben tekintheti át és erősítheti meg, amely tartalmazza a végső költségeket. + explaination: A következő lépésben megtekintheted és megerősítheted megrendelésedet, amely tartalmazza a várható költségeket. Amennyiben "valtozoar" jelölésű terméket rendeltél, a végösszeg a pontos súly függvényében változhat. submit: Következő - Megrendelés összegzése - cancel: Vissza az Ön adataihoz + cancel: Vissza az adataidhoz step3: delivery_details: title: Szállítás részletei edit: Szerkesztés address: Szállítási cím + instructions: Megjegyzések payment_method: title: Fizetési mód edit: Szerkesztés + instructions: Megjegyzések order: + title: A megrendelés részletei edit: Szerkesztés terms_and_conditions: message_html: "Elfogadom az eladó %{terms_and_conditions_link} feltételeit." @@ -1680,15 +1707,15 @@ hu: all_terms_and_conditions: message_html: "Elfogadom az eladó %{terms_and_conditions_link} és a platform %{tos_link} feltételeit." terms_and_conditions: "Felhasználási feltételek" - submit: Teljes rendelés + submit: Rendelés elküldése cancel: Vissza a Fizetési módhoz errors: - saving_failed: "A mentés nem sikerült, kérjük, frissítse a kiemelt mezőket." + saving_failed: "A mentés nem sikerült, kérjük, frissítsd a kiemelt mezőket." terms_not_accepted: Kérjük, fogadja el az Általános Szerződési Feltételeket required: A mező nem lehet üres invalid_number: "Adjon meg egy érvényes telefonszámot" invalid_email: "Kérjük valós e-mail címet adjon meg" - select_a_shipping_method: Válasszon szállítási módot + select_a_shipping_method: Válassz szállítási módot! select_a_payment_method: Válassz fizetési módot no_shipping_methods_available: Szállítási lehetőségek hiánya miatt a fizetés nem lehetséges. Kérjük, lépjen kapcsolatba az üzlet tulajdonosával. voucher_not_found: Nem található @@ -1722,12 +1749,12 @@ hu: register: "Itt regisztrálj" footer: footer_secure: "Biztonságos és megbízható." - footer_secure_text: "Az Open Food Network mindenhol SSL-titkosítást (2048 bites RSA) használ, hogy vásárlási és fizetési adatait bizalmasan kezelje. Szervereink nem tárolják hitelkártyaadatait, és a fizetéseket PCI-kompatibilis szolgáltatások dolgozzák fel." + footer_secure_text: "Az Open Food Network mindenhol SSL-titkosítást (2048 bites RSA) használ, hogy vásárlási és fizetési adataidat bizalmasan kezelje. Szervereink nem tárolják hitelkártya adataidat, és a fizetéseket PCI-kompatibilis szolgáltatások dolgozzák fel." footer_contact_headline: "Kapcsolat" footer_contact_email: "Küldj egy emailt nekünk" footer_nav_headline: "Navigáció" footer_join_headline: "Csatlakozz hozzánk" - footer_join_body: "Hozz létre egy listát, üzletet vagy csoportkönyvtárat az Open Food Networkön." + footer_join_body: "Hozz létre egy termelői profilt, élelmiszerközösséget, vagy fogyasztói csoportot az Open Food Network oldalán." footer_join_cta: "Tovább olvasok!" footer_legal_call: "Olvasd el a mi" footer_legal_visit: "Elérhetőségünk" @@ -1779,7 +1806,7 @@ hu: menu_2_title: "Térkép" menu_2_url: "/map" menu_3_title: "Termelők" - menu_3_url: "/producers" + menu_3_url: "/termelők" menu_4_title: "Csoportok" menu_4_url: "/groups" menu_5_title: "Rólunk" @@ -1855,7 +1882,6 @@ hu: label_account: "fiók" label_more: "Mutass többet" label_less: "Mutass kevesebbet" - label_notices: "Megjegyzések" cart_items: "tételeket" cart_headline: "Kosár" total: "Összesen" @@ -1903,7 +1929,7 @@ hu: cookie_matomo_heatmap_desc: "Matomo Heatmap & Session Recording cookie." cookie_matomo_ignore_desc: "A cookie-k segítségével kizárják a felhasználót a nyomon követésből." disabling_cookies_header: "Figyelmeztetés a cookie-k letiltására" - disabling_cookies_desc: "Felhasználóként bármikor engedélyezheti, blokkolhatja vagy törölheti az Open Food Network vagy bármely más webhely cookie-jait, amikor csak akarja, a böngésző beállítási vezérlőjén keresztül. Minden böngészőnek más operátora van. Itt vannak a linkek:" + disabling_cookies_desc: "Felhasználóként bármikor engedélyezheted, blokkolhatod vagy törölheted az Open Food Network vagy bármely más webhely cookie-jait a böngésző beállításaiban. Minden böngészőnek más a működése. Itt vannak a linkek:" disabling_cookies_firefox_link: "https://support.mozilla.org/en-US/kb/enable-and-disable-cookies-website-preferences" disabling_cookies_chrome_link: "https://support.google.com/chrome/answer/95647" disabling_cookies_ie_link: "https://support.microsoft.com/en-us/help/17442/windows-internet-explorer-delete-manage-cookies" @@ -1927,14 +1953,14 @@ hu: brandstory_part6: "Mindannyian szeretjük az ételt. Most már az élelmezési rendszerünket is szerethetjük." system_headline: "A vásárlás lépései" system_step1: "1. Keresés" - system_step1_text: "Böngészhetsz közvetlenül a gazdák, vagy a bevásárlóközösségek kínálatában. Kereshetsz a lakhelyed, a termelő, élelmiszertípus és termesztési mód szerint." + system_step1_text: "Böngészhetsz közvetlenül a gazdák, vagy a bevásárlóközösségek kínálatában. Kereshetsz a lakhelyed, a termelő, élelmiszertípus, és termesztési mód szerint." system_step2: "2. Vásárlás" - system_step2_text: "Pakold meg a bevásárlókosarad helyi termelőktől származó termékekkel. Vásárolj olyan élelmiszert, amelynek ismered az eredetét, és tudod hogyan állították elő." + system_step2_text: "Alakítsd át a fogyasztási szokásaidat! Pakold meg a bevásárlókosarad helyi termelőktől származó termékekkel. Vásárolj olyan élelmiszert, amelynek ismered az eredetét, és tudod hogyan állították elő." system_step3: "3. Átvétel / kiszállítás" - system_step3_text: "Válaszd a kiszállítást, vagy a személyesebb kapcsolat érdekében, keresd fel a termelőt, vagy az átvételi pontot." - cta_headline: "Bevásárlás, amellyel jobb hellyé teszed a világot." + system_step3_text: "Válaszd a kiszállítást, vagy a személyesebb kapcsolat érdekében keresd fel a termelőt, vagy az átvételi pontot." + cta_headline: "A jövőnk fenntartható élelmiszerhálózata." cta_label: "Tovább a termelőkhöz, átvételi pontokhoz." - stats_headline: "Termelők és vásárlók közösségét építjük." + stats_headline: "Termelők és fogyasztók közösségét építjük." stats_producers: "élelmiszer-termelők" stats_shops: "élelmiszerátvételi pontok" stats_shoppers: "élelmiszervásárlók" @@ -1944,7 +1970,7 @@ hu: checkout_order_ready: Átvételi időpont checkout_hide: Elrejt checkout_expand: Kinyit - checkout_headline: "Rendben, készen áll a fizetésre?" + checkout_headline: "Rendben, készen állsz a fizetésre?" checkout_as_guest: "Rendelés regisztráció nélkül" checkout_details: "Személyes adatok" checkout_billing: "Számlázási információ" @@ -1971,7 +1997,7 @@ hu: order_delivery_on: Kiszállítás order_delivery_address: Szállítási cím order_delivery_time: Szállítási idő - order_special_instructions: "Az Ön megjegyzései:" + order_special_instructions: "Megjegyzés:" order_pickup_time: Átvétel időpontja order_pickup_instructions: Átvételi információk order_produce: Összesen @@ -1983,8 +2009,8 @@ hu: order_hub_info: Átvételi pont Info order_back_to_store: Vissza a átvételi pontba order_back_to_cart: Vissza a kosárba - order_back_to_website: Vissza a Webhelyre - bom_tip: "Ezen az oldalon módosíthatja a termékek mennyiségét több rendelés esetén. Szükség esetén a termékek teljes egészében eltávolíthatók a megrendelésekből." + order_back_to_website: Vissza az Átadó pont oldalára + bom_tip: "Ezen az oldalon módosíthatod a termékek mennyiségét több rendelés esetén. Szükség esetén a termékek teljes egészében eltávolíthatók a megrendelésekből." unsaved_changes_warning: "A nem mentett módosítások léteznek, és ha folytatja, elvesznek." unsaved_changes_error: "A piros szegélyű mezők hibákat tartalmaznak." products: "Termékek" @@ -1998,7 +2024,7 @@ hu: email_confirmation_click_link: "Kérjük, kattintson az alábbi linkre az e-mail-cím megerősítéséhez és a profil beállításának folytatásához." email_confirmation_link_label: "Erősítse meg ezt az e-mail címet »" email_confirmation_help_html: "Az e-mail-cím megerősítése után hozzáférhet a vállalkozás adminisztrációs fiókjához. Tekintse meg a %{link} webhelyet, hogy többet megtudjon %{sitename} szolgáltatásairól, és elkezdhesse használni profilját vagy online áruházát." - email_confirmation_notice_unexpected: "Azért kaptad ezt az üzenetet, mert regisztráltál a(z) %{sitename} webhelyen, vagy egy olyan személy, akit valószínűleg ismersz, meghívta a regisztrációra. Ha nem érti, miért kapta ezt az e-mailt, kérjük, írjon a %{contact} címre." + email_confirmation_notice_unexpected: "Azért kaptad ezt az üzenetet, mert regisztráltál a(z) %{sitename} webhelyen, vagy egy olyan személy, akit valószínűleg ismersz, meghívott. Ha nem érted, miért kaptad ezt az e-mailt, kérjük, írj a %{contact} címre." email_social: "Kapcsolatba lép velünk:" email_contact: "Küldj egy emailt nekünk:" email_signoff: "Egészségére," @@ -2021,6 +2047,7 @@ hu: email_payment_paid: FIZETETT email_payment_not_paid: NEM FIZETETT email_payment_description: Fizetési információk + email_payment_summary: Fizetési összesítő email_payment_method: "Fizetés:" email_so_placement_intro_html: "Új rendelése van a %{distributor}-nál" email_so_placement_details_html: "Megrendelés részletei:" @@ -2046,7 +2073,7 @@ hu: email_shipping_collection_details: Gyűjtemény részletei email_shipping_collection_time: "Átvétel időpontja:" email_shipping_collection_instructions: "Átvételi információk:" - email_special_instructions: "Az Ön megjegyzései:" + email_special_instructions: "Megjegyzés:" email_signup_greeting: Helló! email_signup_welcome: "Üdvözöljük a %{sitename} oldalon!" email_signup_confirmed_email: "Köszönjük, hogy megerősítette e-mailjét." @@ -2058,7 +2085,7 @@ hu: invited_to_manage: "Meghívást kaptál, hogy kezeld a(z) %{enterprise} %{instance} szolgáltatást." confirm_your_email: "Egy megerősítő linket tartalmazó e-mailt kellett volna kapnia, vagy hamarosan kapni fog. Addig nem férhetsz hozzá %{enterprise} profiljához, amíg meg nem erősíted az e-mail címedet." set_a_password: "Ezután a rendszer kéri, hogy állítson be egy jelszót, mielőtt felügyelheti a vállalkozásot." - mistakenly_sent: "Nem tudja, miért kapta ezt az e-mailt? További információért forduljon %{owner_email}-hoz." + mistakenly_sent: "Nem tudod, miért kaptad ezt az e-mailt? További információért fordulj %{owner_email}-hoz." producer_mail_greeting: "kedves" producer_mail_text_before: "Alább megtalálja a rendelési ciklusra vonatkozó frissítést:" producer_mail_order_text: "Íme a termékei megrendelésének összefoglalása:" @@ -2066,7 +2093,7 @@ hu: producer_mail_signoff: "Köszönet és jókívánságok" producer_mail_order_customer_text: "Itt található a rendelések összegzése ügyfelek szerint csoportosítva" shopping_oc_closed: A rendelések lezárva - shopping_oc_closed_description: "Kérjük, várja meg, amíg a következő ciklus megnyílik (vagy lépjen kapcsolatba velünk közvetlenül, hogy tudjuk-e fogadni a késedelmes rendeléseket)" + shopping_oc_closed_description: "Kérjük, várd meg, amíg a következő ciklus megnyílik (vagy lépj kapcsolatba velünk közvetlenül, hogy tudjuk-e fogadni a a ciklus zárása utáni rendeléseket)" shopping_oc_last_closed: "Az utolsó ciklus %{distance_of_time} előtt zárult" shopping_oc_next_open: "A következő ciklus %{distance_of_time} múlva kezdődik" shopping_oc_select: "Válassz..." @@ -2080,7 +2107,7 @@ hu: shopping_contact_web: "Kapcsolat" shopping_contact_social: "Kövesse" shopping_groups_part_of: "része:" - shopping_producers_of_hub: "%{hub}termelői:" + shopping_producers_of_hub: "%{hub} termelői:" enterprises_next_closing: "A következő rendelés lezárása" enterprises_currently_open: "A rendelések jelenleg nyitva vannak" enterprises_ready_for: "Nyitás" @@ -2153,7 +2180,7 @@ hu: groups_contact_email: Küldj egy emailt nekünk groups_contact_website: Látogasd meg weboldalunkat groups_contact_facebook: Kövess minket Facebookon - groups_signup_title: Regisztráljon csoportként + groups_signup_title: Regisztrálj csoportként groups_signup_headline: Csoportok regisztráció groups_signup_intro: "Egyedülálló platform vagyunk az együttműködésen alapuló marketinghez, amely a legegyszerűbb módja annak, hogy tagjai és érdekelt felei új piacokat érjenek el. Mi non-profit, megfizethető és egyszerű szervezet vagyunk." groups_signup_email: Küldj egy emailt nekünk @@ -2183,7 +2210,7 @@ hu: producers_filter_property: Tulajdonság producers_title: Termelők producers_headline: Keress helyi termelőket - producers_signup_title: Regisztráljon termelőként + producers_signup_title: Regisztrálj termelőként producers_signup_headline: Élelmiszer-termelők, felhatalmazott. producers_signup_motivation: Adja el ételeit, és mesélje el történeteit változatos új piacokon. Takarítson meg időt és pénzt minden rezsinél. Kockázat nélkül támogatjuk az innovációt. Kiegyenlítettük a játékteret. producers_signup_send: Csatlakozz most @@ -2203,8 +2230,8 @@ hu: name_or_sku: "NÉV VAGY Cikkszám" register_title: Regisztráció sell_title: "Regisztráció" - sell_headline: "Csatlakozzon az Open Food Network-hez!" - sell_motivation: "Mutasd be gyönyörű ételeidet." + sell_headline: "Csatlakozz az Open Food Network-höz!" + sell_motivation: "Mutasd be termékeidet, tedd elérhetővé a fogyasztók számára." sell_producers: "Termelők" sell_hubs: "Átvételi pontok" sell_groups: "Csoportok" @@ -2218,7 +2245,7 @@ hu: shops_title: Átadópontok shops_headline: Bevásárlás, másképpen. shops_text: Rendelési ciklusokban dolgozunk. A növénytermesztés, az állattenyésztés, az élelem előállítása ciklikus folyamat. Így nálunk az áruátadás is ciklusokban történik, pont ahogy a növények is hétről hétre, és eltérő ütemben fejlődnek. Ha lezárt rendelési ciklust találsz valahol, nézd meg, ki van-e írva a rendelési ciklus nyitásának időpontja. Ha nem, látogass vissza később az adott termelőhöz, közösséghez. - shops_signup_title: Regisztráljon átvételi pontként + shops_signup_title: Regisztrálj átvételi pontként shops_signup_headline: Élelmiszer-központok, korlátlan. shops_signup_motivation: Bármi legyen is a modelled, támogatunk téged. Azonban változol, veled vagyunk. Mi non-profit, független," és nyílt forráskódú. Mi vagyunk azok a szoftverpartnerek, akikről álmodott. shops_signup_action: Csatlakozz most @@ -2387,7 +2414,7 @@ hu: question: "Termelő vagy?" yes_producer: "Igen, termelő vagyok" no_producer: "Nem, nem vagyok termelő" - producer_field_error: "Kérem, válasszon egyet. Termelő vagy?" + producer_field_error: "Kérjük, válassz egyet. Termelő vagy?" yes_producer_help: "Akkor vagy termelő, ha termeszted, tenyészted, főzöd, sütöd, erjeszted, stb. a termékeidet." no_producer_help: "Ha nem vagy termelő, akkor valószínűleg olyan valaki vagy, aki élelmiszert ad el, vagy ad át. Lehetsz egy csomópont, szövetkezet, vásárlási csoport, kiskereskedő, nagykereskedő, stb. megbízottja / képviselője." create_profile: "Profil létrehozása" @@ -2536,7 +2563,7 @@ hu: distributor: "Elosztó" enterprise_fees: "Vállalkozási díjak" process_my_order: "Rendelésem feldolgozása" - delivery_instructions: Szállítási útmutató + delivery_instructions: Szállítási utasítások delivery_method: szállítási mód fee_type: "Díjtípus" tax_category: "Adókategória" @@ -2592,7 +2619,7 @@ hu: spree_admin_single_enterprise_alert_mail_confirmation: "Kérjük, erősítse meg az e-mail címet" spree_admin_single_enterprise_alert_mail_sent: "E-mailt küldtünk a címre" spree_admin_overview_action_required: "Cselekvést kíván" - spree_admin_overview_check_your_inbox: "Kérjük, nézze meg beérkezett üzeneteit a további utasításokért. Köszönjük!" + spree_admin_overview_check_your_inbox: "Kérjük, nézd meg beérkezett üzeneteid a további utasításokért. Köszönjük!" spree_admin_unit_value: Egységérték spree_admin_unit_description: Egység leírása spree_admin_variant_unit: Változatos egység @@ -2752,6 +2779,7 @@ hu: report_header_supplier: Termelő report_header_producer: Termelő report_header_producer_suburb: Termelő település + report_header_producer_tax_status: Termelő adókategóriája report_header_unit: Mértékegység report_header_group_buy_unit_quantity: Csoportos vásárlási egység mennyisége report_header_cost: Költség @@ -2914,6 +2942,7 @@ hu: new_payment: "Új fizetés" date_completed: "Teljesítés dátuma" amount: "Összeg" + invoice_file: "File" state_names: ready: Kész pending: Függőben levő @@ -3078,16 +3107,12 @@ hu: is adhatnak át a vásárlóknak az átadóponton. non_producer: Nem termelő non_producer_text1: > - Non-termelős do not produce any food themselves, meaning that they cannot - create: A nem termelők maguk nem állítanak elő élelmiszert, vagyis nem - tudnak létrehozni their own products for sale through the Open Food - Network.: saját termékeiket az Open Food Networkön keresztül értékesítik. + A nem-termelők maguk nem állítanak elő élelmiszert, vagyis nem tudják + feltölteni saját termékeiket, és az Open Food Networkön keresztül értékesíteni. non_producer_text2: > - Instead, non-termelős specialise in linking termelős to the end eater, - whether it: Helyette," nem termelők arra specializálódtak, hogy összekapcsolják - a termelőket a végfogyasztóval", hogy az be by aggregating, grading, - packing, selling or delivering food.: összesítésével legyen, osztályozás, - csomagolás, élelmiszer értékesítése vagy szállítása. + A nem-termelők arra specializálódtak, hogy összekapcsolják a termelőket + a fogyasztóval akár olyan módon, hogy összegyűjtik a rendeléseket, vagy + szortírozzák, csomagolják, szállítják. producer_desc: Élelmiszer termelők producer_example: például. TERMELŐK, PÉKEK, SÖRÖZŐK, KÉSZÍTŐK non_producer_desc: Minden más élelmiszeripari vállalkozás @@ -3285,8 +3310,8 @@ hu: users: order: "Rendelés" registration: - welcome_to_ofn: "Üdvözöljük az Open Food Networkben!" - signup_or_login: "Kezdje regisztrációval (vagy bejelentkezéssel)" + welcome_to_ofn: "Üdvözöljük az Open Food Network-ben!" + signup_or_login: "Kezd a regisztrációval (vagy bejelentkezéssel)" have_an_account: "Már van fiókja?" action_login: "Jelentkezzen be most." stripe_elements: @@ -3705,6 +3730,9 @@ hu: validation: must_be_int: "egész számnak kell lennie" admin: + images: + edit: + close: Vissza mail_methods: send_testmail: "Küldj teszt e-mailt" testmail: @@ -3840,7 +3868,7 @@ hu: order_total: "Rendelés Összesen" overview: enterprises_header: - ofn_with_tip: A vállalkozások termelők és/vagy központok, és az Open Food Network szervezeti egységei. + ofn_with_tip: A termelők, kisvállalkozások, élelmiszer központok, élelmiszer közösségek, termelői piacok az Open Food Network szervezeti egységei. enterprise_row: has_no_enterprise_fees: "nincs vállalkozási díja" has_no_payment_methods: "nincs fizetési mód" @@ -4130,7 +4158,7 @@ hu: order_summary_canceled_html: "Megrendelés összegzése" details: "Itt vannak a megrendelt termékek részletei:" unpaid_order: "Megrendelését nem fizették ki, így a visszatérítés nem történt" - paid_order: "Megrendelését kifizették, így %{distributor} visszatérítette a teljes összeget" + paid_order: "Megrendelésed kifizették, így %{distributor} visszatérítette a teljes összeget" credit_order: "Megrendelését kifizették, így jóváírásra került a számláján" subject: "Megrendelés törlése" cancel_email_for_shop: @@ -4172,6 +4200,8 @@ hu: thanks: "Köszönjük üzletét." track_information: "Követési információ: %{tracking}" track_link: "! Követő link: %{url}" + picked_up_instructions: "Az Ön megrendelését %{distributor}termelőtől felvettük." + picked_up_subject: "Átvételi értesítés/megjegyzés" test_mailer: test_email: greeting: "Gratulálunk!" @@ -4219,10 +4249,24 @@ hu: users: api_keys: regenerate_key: "Kulcs újragenerálása" + title: API kulcs + webhook_endpoints: + title: Webhook végpontok + description: A rendszerben bekövetkező események webhookokat indíthatnak külső rendszerek felé. + event_types: + order_cycle_opened: Rendelési ciklus megnyitva + event_type: + header: Esemény típusa + url: + header: Végpont URL + create_placeholder: Adja meg a távoli webhook végpont URL-címét + developer_settings: + title: Fejlesztői beállítások form: account_settings: Fiók beállítások show: tabs: + developer_settings: Fejlesztői beállítások orders: Megrendelések cards: Bankkártyák transactions: Tranzakciók @@ -4253,6 +4297,7 @@ hu: total: Összesen paid?: Fizetett? status: Állapot + completed: Elkészült cancelled: Törölve saved_cards: default?: Alapértelmezett? @@ -4264,6 +4309,7 @@ hu: authorised_shops: shop_name: "Átvételi pont neve" allow_charges?: "Engedélyezi a terhelést az alapértelmezett kártyára?" + no_default_saved_cards_tooltip: Egy hitelkártyát alapértelmezettként kell megjelölnie a terhelések engedélyezéséhez. localized_number: invalid_format: formátuma érvénytelen. Kérjük, adjon meg egy számot. api: @@ -4280,14 +4326,16 @@ hu: key_generated: "Kulcs generálva" key_cleared: "Kulcs törölve" shipment: - cannot_ready: "Nem lehet kész a szállítás." + cannot_ready: "Nem áll készen a szállításra." invalid_taxonomy_id: "Érvénytelen termék kategória azonosító." + toggle_api_key_view: "API-kulcs nézet megjelenítése a felhasználó számára" activerecord: models: spree/payment: one: Fizetés other: Kifizetések unit: Mértékegység + per_unit: egységenként datetime: distance_in_words: about_x_hours: @@ -4328,10 +4376,16 @@ hu: one: "1 év" other: "%{count} év" components: + multiple_checked_select: + filter_placeholder: "Szűrési lehetőségek" search_input: placeholder: Keresés selector_with_filter: + selected_items: "%{count}kiválasztva" search_placeholder: Keresés pagination: next: Következő previous: Előző + invisible_captcha: + sentence_for_humans: "Kérjük hagyja üresen" + timestamp_error_message: "Kérjük, próbálja meg 5 másodperc múlva." diff --git a/config/locales/it.yml b/config/locales/it.yml index 604f967242..b422787326 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -728,8 +728,6 @@ it: clear_search: Pulisci ricerca table: new_variant: Nuova variante - edit_image: - close: Indietro variant_row: none_tax_category: Nessuno category_field_name: "Categoria" @@ -1877,7 +1875,6 @@ it: label_account: "Account" label_more: "Mostra di più" label_less: "Mostra meno" - label_notices: "Avvisi" cart_items: "articoli" cart_headline: "Il tuo carrello" total: "Totale" @@ -3748,6 +3745,9 @@ it: validation: must_be_int: "deve essere un numero intero" admin: + images: + edit: + close: Indietro mail_methods: send_testmail: "Invia mail prova" testmail: diff --git a/config/locales/it_CH.yml b/config/locales/it_CH.yml index baeb2f6bde..a471011864 100644 --- a/config/locales/it_CH.yml +++ b/config/locales/it_CH.yml @@ -670,8 +670,6 @@ it_CH: clear_search: Pulisci ricerca table: new_variant: Nuova variante - edit_image: - close: Indietro variant_row: none_tax_category: Nessuno category_field_name: "Categoria" @@ -1776,7 +1774,6 @@ it_CH: label_account: "Account" label_more: "Mostra di più" label_less: "Mostra meno" - label_notices: "Avvisi" cart_items: "articoli" cart_headline: "Il tuo carrello" total: "Totale" @@ -3605,6 +3602,9 @@ it_CH: validation: must_be_int: "deve essere un numero intero" admin: + images: + edit: + close: Indietro mail_methods: send_testmail: "Invia mail prova" testmail: diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 29aaabadd1..d12529c825 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -693,8 +693,6 @@ ko: clear_search: 검색 지우기 table: new_variant: 새로운 변경사항 - edit_image: - close: 뒤로 variant_row: none_tax_category: None category_field_name: "목록" @@ -1805,7 +1803,6 @@ ko: label_account: "계정" label_more: "더 보기" label_less: "적게 표시" - label_notices: "공지사항" cart_items: "항목" cart_headline: "당신의 쇼핑 카트" total: "총합" @@ -3571,6 +3568,9 @@ ko: validation: must_be_int: "정수여야 합니다" admin: + images: + edit: + close: 뒤로 mail_methods: send_testmail: "테스트 이메일 보내기" testmail: diff --git a/config/locales/ml.yml b/config/locales/ml.yml index 4e24e31523..15a9234e9a 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -795,8 +795,6 @@ ml: new_variant: പുതിയ വേരിയന്റ് bulk_update: success: മാറ്റങ്ങൾ സേവ് ചെയ്തു. - edit_image: - close: തിരികെ variant_row: none_tax_category: ഒന്നുമില്ല category_field_name: "വിഭാഗം" @@ -2027,7 +2025,6 @@ ml: label_account: "അക്കൗണ്ട്" label_more: "കൂടുതൽ കാണിക്കുക" label_less: "കുറച്ചുമാത്രം കാണിക്കുക" - label_notices: "അറിയിപ്പുകൾ" cart_items: "ഇനങ്ങൾ" cart_headline: "നിങ്ങളുടെ ഷോപ്പിംഗ് കാർട്ട്" total: "ആകെ" @@ -3908,6 +3905,9 @@ ml: validation: must_be_int: "ഒരു പൂർണ്ണസംഖ്യ ആയിരിക്കണം" admin: + images: + edit: + close: തിരികെ mail_methods: send_testmail: "ടെസ്റ്റ് ഇമെയിൽ അയയ്ക്കുക" testmail: diff --git a/config/locales/mr.yml b/config/locales/mr.yml index b90ae1c68f..9a80956de5 100644 --- a/config/locales/mr.yml +++ b/config/locales/mr.yml @@ -1941,7 +1941,6 @@ mr: label_account: "खाते" label_more: "अजून दाखवा" label_less: "कमी दाखवा" - label_notices: "नोटीस" cart_items: "वस्तू" cart_headline: "तुमची शॉपिंग कार्ट" total: "एकूण" diff --git a/config/locales/nb.yml b/config/locales/nb.yml index cf1009cf18..b6e8a8f6a6 100644 --- a/config/locales/nb.yml +++ b/config/locales/nb.yml @@ -829,10 +829,6 @@ nb: new_variant: Ny variant bulk_update: success: Endringer lagret - edit_image: - title: Rediger produktbilde - close: Tilbake - upload: Last opp bilde delete_product: success: Produktet ble slettet error: Kan ikke slette produktet @@ -2094,7 +2090,6 @@ nb: label_account: "Konto" label_more: "Vis mer" label_less: "Vis mindre" - label_notices: "Meldinger" cart_items: "Elementer" cart_headline: "Din handlekurv" total: "Sum" @@ -3970,6 +3965,11 @@ nb: validation: must_be_int: "må være et heltall" admin: + images: + edit: + title: Rediger produktbilde + close: Tilbake + upload: Last opp bilde mail_methods: send_testmail: "Send test-epost" testmail: diff --git a/config/locales/nl_BE.yml b/config/locales/nl_BE.yml index bd4c5fa677..a91597ee5e 100644 --- a/config/locales/nl_BE.yml +++ b/config/locales/nl_BE.yml @@ -550,8 +550,6 @@ nl_BE: clear_search: Verwijder zoektermen table: new_variant: Nieuw variant - edit_image: - close: achterstevoren variant_row: none_tax_category: Geen enkele category_field_name: "Categorie" @@ -1422,8 +1420,8 @@ nl_BE: cart_sidebar: checkout: "Kassa" edit_cart: "Winkelwagen aanpassen" - items_in_cart_singular: "%{num}items in uw winkelkwagentje" - items_in_cart_plural: "%{num}items in uw winkelkwagentje" + items_in_cart_singular: "%{num} items in uw winkelwagentje" + items_in_cart_plural: "%{num} items in uw winkelwagentje" close: "Sluit" cart_empty: "Uw winkelwagen is leeg" take_me_shopping: "Neem me shoppen!" @@ -1563,7 +1561,6 @@ nl_BE: label_account: "Account" label_more: "Toon meer" label_less: "Toon minder" - label_notices: "Info" cart_items: "Artikels" cart_headline: "Je winkelwagentje" total: "Totaal" @@ -3183,6 +3180,9 @@ nl_BE: header: store: Zicht koper admin: + images: + edit: + close: achterstevoren subscriptions: number: "Nummer" tab: diff --git a/config/locales/pa.yml b/config/locales/pa.yml index 031e3b69ab..59aea3be31 100644 --- a/config/locales/pa.yml +++ b/config/locales/pa.yml @@ -774,8 +774,6 @@ pa: new_variant: ਨਵਾਂ ਵੇਰੀਐਂਟ bulk_update: success: ਬਦਲਾਵ ਸੇਵ ਕੀਤੇ ਗਏ।' - edit_image: - close: ਵਾਪਸ variant_row: none_tax_category: ਕੋਈ ਨਹੀਂ category_field_name: "ਸ਼੍ਰੇਣੀ" @@ -1989,7 +1987,6 @@ pa: label_account: "ਖਾਤਾ" label_more: "ਹੋਰ ਵਿਖਾਓ" label_less: "ਘੱਟ ਵਿਖਾਓ" - label_notices: "ਨੋਟਿਸ" cart_items: "ਆਈਟਮਾਂ" cart_headline: "ਤੁਹਾਡਾ ਸ਼ਾਪਿੰਗ ਕਾਰਟ" total: "ਕੁੱਲ" @@ -3778,6 +3775,9 @@ pa: validation: must_be_int: "ਇੱਕ ਪੂਰਨ ਅੰਕ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ" admin: + images: + edit: + close: ਵਾਪਸ mail_methods: send_testmail: "ਟੈਸਟ ਈਮੇਲ ਭੇਜੋ" testmail: diff --git a/config/locales/pl.yml b/config/locales/pl.yml index daa0fac887..21d8f6bc9f 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -524,8 +524,6 @@ pl: producers: label: Producenci search: Szukaj - edit_image: - close: Wstecz variant_row: none_tax_category: Nic category_field_name: "Kategoria" @@ -1453,7 +1451,6 @@ pl: label_account: "Konto" label_more: "Pokaż więcej" label_less: "Pokaż mniej" - label_notices: "Powiadomienia" cart_items: "przedmiotów" cart_headline: "Twój Koszyk" total: "Razem" @@ -3166,6 +3163,9 @@ pl: header: store: Sklep admin: + images: + edit: + close: Wstecz subscriptions: number: "Numer zamówienia" tab: diff --git a/config/locales/pt.yml b/config/locales/pt.yml index 694253757f..31b97e968c 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -586,8 +586,6 @@ pt: search: Procurar table: new_variant: Nova variante - edit_image: - close: Voltar variant_row: none_tax_category: Nenhum category_field_name: "Categoria" @@ -1580,7 +1578,6 @@ pt: label_account: "Conta" label_more: "Mostrar mais" label_less: "Mostrar menos" - label_notices: "Avisos" cart_items: "itens" cart_headline: "O seu carrinho de compras" total: "Total" @@ -3175,6 +3172,9 @@ pt: header: store: Loja admin: + images: + edit: + close: Voltar subscriptions: number: "Número" tab: diff --git a/config/locales/pt_BR.yml b/config/locales/pt_BR.yml index 0cf5f26952..7551be99ca 100644 --- a/config/locales/pt_BR.yml +++ b/config/locales/pt_BR.yml @@ -627,8 +627,6 @@ pt_BR: sort: pagination: clear_search: Nova busca - edit_image: - close: Voltar variant_row: none_tax_category: Nenhum category_field_name: "Categoria" @@ -1660,7 +1658,6 @@ pt_BR: label_account: "Conta" label_more: "Mostrar mais" label_less: "Mostrar menos" - label_notices: "Avisos" cart_items: "itens" cart_headline: "seu carrinho de compras" total: "Total" @@ -3462,6 +3459,9 @@ pt_BR: validation: must_be_int: "deve ser um número integral " admin: + images: + edit: + close: Voltar mail_methods: send_testmail: "Enviar email de teste" testmail: diff --git a/config/locales/ru.yml b/config/locales/ru.yml index fd00d7e268..a48c846721 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -822,10 +822,6 @@ ru: new_variant: Новый вариант bulk_update: success: Изменения сохранены - edit_image: - title: Изменить фотографию товара - close: Назад - upload: Загрузить фото delete_product: success: Товар успешно удален error: Невозможно удалить товар @@ -2082,7 +2078,6 @@ ru: label_account: "Профиль" label_more: "Показать больше" label_less: "Показать меньше" - label_notices: "Уведомления" cart_items: "позиции" cart_headline: "Ваша корзина" total: "Всего" @@ -4013,6 +4008,11 @@ ru: validation: must_be_int: "должно быть целым числом" admin: + images: + edit: + title: Изменить фотографию товара + close: Назад + upload: Загрузить фото mail_methods: send_testmail: "Отправить тестовое письмо" testmail: diff --git a/config/locales/sv.yml b/config/locales/sv.yml index b7ede42506..881e1d637c 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -326,8 +326,6 @@ sv: producers: label: 'Producenter ' search: Sök - edit_image: - close: Backa variant_row: none_tax_category: Ingen category_field_name: "Kategori" @@ -991,7 +989,6 @@ sv: label_account: "Konto" label_more: "Visa mer" label_less: "Visa mindre" - label_notices: "Anmälan" cart_headline: "Din varukorg" total: "Summa " cart_updating: "Uppdatera din varukorg" @@ -2200,6 +2197,9 @@ sv: messages: blank: "kan inte vara blank" admin: + images: + edit: + close: Backa tab: dashboard: "Panel" bulk_order_management: "Hantera flera beställningar" diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 8f5dcf5221..4d58cb5e1a 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -611,8 +611,6 @@ tr: clear_search: Aramayı temizle table: new_variant: Yeni Çeşit - edit_image: - close: Geri variant_row: none_tax_category: SATIŞ YAPMIYOR category_field_name: "Kategori" @@ -1670,7 +1668,6 @@ tr: label_account: "Hesap" label_more: "Daha fazla göster" label_less: "Daha az göster" - label_notices: "Uyarılar" cart_items: "Ürünler" cart_headline: "Alışveriş sepetiniz" total: "Toplam" @@ -3460,6 +3457,9 @@ tr: validation: must_be_int: "tam sayı olmak zorunda" admin: + images: + edit: + close: Geri mail_methods: send_testmail: "Deneme e-postası gönder" testmail: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index f72e1faf02..bb439ae6de 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -696,8 +696,6 @@ uk: clear_search: Очистити пошук table: new_variant: Новий варіант - edit_image: - close: Назад variant_row: none_tax_category: Жодного category_field_name: "Категорія" @@ -1823,7 +1821,6 @@ uk: label_account: "Обліковий запис" label_more: "Показати більше" label_less: "Показувати менше" - label_notices: "Повідомлення" cart_items: "Товари" cart_headline: "Ваш кошик для покупок" total: "Всього" @@ -3686,6 +3683,9 @@ uk: validation: must_be_int: "має бути цілим числом" admin: + images: + edit: + close: Назад mail_methods: send_testmail: "Надіслати тестовий електронний лист" testmail: From 9cd5f5aaa0d030035a25c31a02c6affd00cb4d41 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 09:13:06 +0000 Subject: [PATCH 203/319] chore(deps-dev): bump knapsack_pro from 7.2.0 to 7.4.0 Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 7.2.0 to 7.4.0. - [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md) - [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v7.2.0...v7.4.0) --- updated-dependencies: - dependency-name: knapsack_pro dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 205621294a..3e15cb0006 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -397,7 +397,7 @@ GEM activesupport (>= 4.2) jwt (2.8.1) base64 - knapsack_pro (7.2.0) + knapsack_pro (7.4.0) rake language_server-protocol (3.17.0.3) launchy (3.0.0) From 850385a8d377b63ea9b7cf981c9d69003c9249e9 Mon Sep 17 00:00:00 2001 From: Cillian O'Ruanaidh Date: Fri, 24 May 2024 11:14:43 +0100 Subject: [PATCH 204/319] Add tests to make sure the appropriate map is loaded e.g. Open Street Map or Google --- spec/helpers/map_helper_spec.rb | 27 +++++++++++++++++++ .../steps/_details.html.haml_spec.rb | 20 ++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 spec/helpers/map_helper_spec.rb create mode 100644 spec/views/registration/steps/_details.html.haml_spec.rb diff --git a/spec/helpers/map_helper_spec.rb b/spec/helpers/map_helper_spec.rb new file mode 100644 index 0000000000..950fbeef6c --- /dev/null +++ b/spec/helpers/map_helper_spec.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: false + +require 'spec_helper' + +RSpec.describe MapHelper, type: :helper do + describe "#using_google_maps?" do + it "returns true when a GOOGLE_MAPS_API_KEY is present" do + stub_environment_variable("GOOGLE_MAPS_API_KEY", "ABC") + + expect(helper.using_google_maps?).to eq true + end + + it "returns false if Open Street Map is enabled, even if a GOOGLE_MAPS_API_KEY is present" do + stub_environment_variable("GOOGLE_MAPS_API_KEY", "ABC") + ContentConfig.open_street_map_enabled = true + + expect(helper.using_google_maps?).to eq false + end + end + + private + + def stub_environment_variable(key, value) + allow(ENV).to receive(:[]).and_call_original # Allow non-stubbed calls to ENV to proceed + allow(ENV).to receive(:[]).with(key).and_return(value) + end +end diff --git a/spec/views/registration/steps/_details.html.haml_spec.rb b/spec/views/registration/steps/_details.html.haml_spec.rb new file mode 100644 index 0000000000..b903b5d748 --- /dev/null +++ b/spec/views/registration/steps/_details.html.haml_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require "spec_helper" + +RSpec.describe "registration/steps/_details.html.haml" do + subject { render } + + it "uses Google Maps when it is enabled" do + allow(view).to receive_messages(using_google_maps?: true) + + is_expected.to match // + end + + it "uses OpenStreetMap when it is enabled" do + ContentConfig.open_street_map_enabled = true + allow(view).to receive_messages(using_google_maps?: false) + + is_expected.to match /
/ + end +end From 46fdeefa1455a673f67f6524fb9de9f3f003257f Mon Sep 17 00:00:00 2001 From: Cillian O'Ruanaidh Date: Fri, 24 May 2024 11:24:57 +0100 Subject: [PATCH 205/319] Make sure OSM map is not enabled in test environment in case it abuses OSM tile servers --- app/webpacker/controllers/open_street_map_controller.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/webpacker/controllers/open_street_map_controller.js b/app/webpacker/controllers/open_street_map_controller.js index 0c5f983158..38103565df 100644 --- a/app/webpacker/controllers/open_street_map_controller.js +++ b/app/webpacker/controllers/open_street_map_controller.js @@ -71,6 +71,11 @@ export default class extends Controller { } #displayMap() { + // Don't initialise map in test environment because that could possibly abuse OSM tile servers + if(process.env.RAILS_ENV == "test") { + return false; + } + this.map = L.map('open-street-map') L.tileLayer.provider(this.providerNameValue, this.providerOptionsValue).addTo(this.map) this.map.setView([this.defaultLatitudeValue, this.defaultLongitudeValue], this.zoomLevel) From b2f20db90ad924bcc0564680f29f567626a836e3 Mon Sep 17 00:00:00 2001 From: Cillian O'Ruanaidh Date: Fri, 24 May 2024 11:43:00 +0100 Subject: [PATCH 206/319] Remove redundant spec type offence from MapHelper spec --- spec/helpers/map_helper_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/helpers/map_helper_spec.rb b/spec/helpers/map_helper_spec.rb index 950fbeef6c..a75921a1b1 100644 --- a/spec/helpers/map_helper_spec.rb +++ b/spec/helpers/map_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe MapHelper, type: :helper do +RSpec.describe MapHelper do describe "#using_google_maps?" do it "returns true when a GOOGLE_MAPS_API_KEY is present" do stub_environment_variable("GOOGLE_MAPS_API_KEY", "ABC") From fb0be1c7f36e365ab36519d391de33a755b2c96d Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Sat, 25 May 2024 15:13:59 +0100 Subject: [PATCH 207/319] Adds tests around using the page - with no products - column display dropdown - listing products with several variants --- .../system/admin/products_v3/products_spec.rb | 125 +++++++++++++++++- 1 file changed, 122 insertions(+), 3 deletions(-) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 757be44d02..fb739b2cac 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -18,9 +18,128 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi let(:categories_search_selector) { 'input[placeholder="Search for categories"]' } let(:tax_categories_search_selector) { 'input[placeholder="Search for tax categories"]' } - it "can see the new product page" do - visit admin_products_url - expect(page).to have_content "Bulk Edit Products" + describe "with no products" do + before { visit admin_products_url } + it "can see the new product page" do + expect(page).to have_content "Bulk Edit Products" + expect(page).to have_text "No products found" + # displays buttons to add products with the correct links + expect(page).to have_link(class: "button", text: "New Product", href: "/admin/products/new") + expect(page).to have_link(class: "button", text: "Import multiple products", + href: "/admin/products/import") + end + end + + describe "using the page" do + describe "using column display dropdown" do + let(:product) { create(:simple_product) } + + before do + pending "Pending implementation, issue #11055" + login_as_admin + visit spree.admin_products_path + end + + it "shows a column display dropdown, which shows a list of columns when clicked" do + expect(page).to have_selector "th", text: "NAME" + expect(page).to have_selector "th", text: "PRODUCER" + expect(page).to have_selector "th", text: "PRICE" + expect(page).to have_selector "th", text: "ON HAND" + + toggle_columns /^.{0,1}Producer$/i + + expect(page).not_to have_selector "th", text: "PRODUCER" + expect(page).to have_selector "th", text: "NAME" + expect(page).to have_selector "th", text: "PRICE" + expect(page).to have_selector "th", text: "ON HAND" + end + end + end + + describe "listing" do + let!(:p1) { create(:product) } + let!(:p2) { create(:product) } + + before do + visit admin_products_url + end + + it "displays a list of products" do + within ".products" do + # displays table header + expect(page).to have_selector "th", text: "Name" + expect(page).to have_selector "th", text: "SKU" + expect(page).to have_selector "th", text: "Unit scale" + expect(page).to have_selector "th", text: "Unit" + expect(page).to have_selector "th", text: "Price" + expect(page).to have_selector "th", text: "On Hand" + expect(page).to have_selector "th", text: "Producer" + expect(page).to have_selector "th", text: "Category" + expect(page).to have_selector "th", text: "Tax Category" + expect(page).to have_selector "th", text: "Inherits Properties?" + expect(page).to have_selector "th", text: "Actions" + + # displays product list + expect(page).to have_field("_products_0_name", with: p1.name.to_s) + expect(page).to have_field("_products_1_name", with: p2.name.to_s) + end + end + + it "displays a select box for suppliers, with the appropriate supplier selected" do + pending( "[BUU] Change producer, unit type, category and tax category #11060" ) + s1 = FactoryBot.create(:supplier_enterprise) + s2 = FactoryBot.create(:supplier_enterprise) + s3 = FactoryBot.create(:supplier_enterprise) + p1 = FactoryBot.create(:product, supplier: s2) + p2 = FactoryBot.create(:product, supplier: s3) + + visit spree.admin_products_path + + expect(page).to have_select "producer_id", with_options: [s1.name, s2.name, s3.name], + selected: s2.name + expect(page).to have_select "producer_id", with_options: [s1.name, s2.name, s3.name], + selected: s3.name + end + + context "with several variants" do + let!(:variant1) { p1.variants.first } + let!(:variant2) { p2.variants.first } + let!(:variant3) { create(:variant, product: p2, on_demand: false, on_hand: 4) } + + before do + variant1.update!(on_hand: 0, on_demand: true) + variant2.update!(on_hand: 16, on_demand: false) + visit spree.admin_products_path + end + + it "displays an on hand count in a span for each product" do + expect(page).to have_content "On demand" + expect(page).not_to have_content "20" # does not display the total stock + expect(page).to have_content "16" # displays the stock for variant_2 + expect(page).to have_content "4" # displays the stock for variant_3 + end + end + + it "displays a select box for the unit of measure for the product's variants" do + pending( "[BUU] Change producer, unit type and tax category #11060" ) + p = FactoryBot.create(:product, variant_unit: 'weight', variant_unit_scale: 1, + variant_unit_name: '') + + visit spree.admin_products_path + + expect(page).to have_select "variant_unit_with_scale", selected: "Weight (g)" + end + + it "displays a text field for the item name when unit is set to 'Items'" do + pending( "[BUU] Change producer, unit type and tax category #11060" ) + p = FactoryBot.create(:product, variant_unit: 'items', variant_unit_scale: nil, + variant_unit_name: 'packet') + + visit spree.admin_products_path + + expect(page).to have_select "variant_unit_with_scale", selected: "Items" + expect(page).to have_field "variant_unit_name", with: "packet" + end end describe "sorting" do From 80a682e2f505057a9cfdb5ee314e30ac56551f97 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Sat, 25 May 2024 15:59:10 +0100 Subject: [PATCH 208/319] Updates tests around product and variant search Adds test for a non-existing product Adds test for variant search Improves tests with multiple variants --- .../system/admin/products_v3/products_spec.rb | 44 ++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index fb739b2cac..e025e8dcda 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -208,11 +208,13 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi end describe "search" do - # TODO: explicitly test with multiple products, to ensure incorrect products don't show. - # TODO: test with multiple variants, to ensure distinct query reponse context "product has searchable term" do # create a product with a name that can be searched let!(:product_by_name) { create(:simple_product, name: "searchable product") } + let!(:variant_a) { + create(:variant, product_id: product_by_name.id, display_name: "Medium box") + } + let!(:variant_b) { create(:variant, product_id: product_by_name.id, display_name: "Big box") } it "can search for a product" do create_products 1 @@ -221,7 +223,39 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi search_for "searchable product" expect(page).to have_field "search_term", with: "searchable product" - # expect(page).to have_content "1 product found for your search criteria." + expect(page).to have_content "1 products found for your search criteria." + expect_products_count_to_be 1 + end + + it "with multiple products" do + create_products 2 + visit admin_products_url + + # returns no results, if the product does not exist + search_for "a product which does not exist" + + expect(page).to have_field "search_term", with: "a product which does not exist" + expect(page).to have_content "No products found for your search criteria" + expect_products_count_to_be 0 + + # returns the existing product + search_for "searchable product" + + expect(page).to have_field "search_term", with: "searchable product" + expect(page).to have_content "1 products found for your search criteria." + expect_products_count_to_be 1 + end + + it "can search variant names" do + create_products 1 + visit admin_products_url + + expect_products_count_to_be 2 + + search_for "Big box" + + expect(page).to have_field "search_term", with: "Big box" + expect(page).to have_content "1 products found for your search criteria." expect_products_count_to_be 1 end @@ -238,7 +272,7 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi expect_per_page_to_be 15 expect_products_count_to_be 1 search_for "searchable product" - # expect(page).to have_content "1 product found for your search criteria." + expect(page).to have_content "1 products found for your search criteria." expect_products_count_to_be 1 end @@ -248,7 +282,7 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi search_for "searchable product" expect(page).to have_field "search_term", with: "searchable product" - # expect(page).to have_content "1 product found for your search criteria." + expect(page).to have_content "1 products found for your search criteria." expect_products_count_to_be 1 expect(page).to have_field "Name", with: product_by_name.name From c711387c5ab341e5a3f9d381a5f6b947c1092b57 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Sun, 26 May 2024 17:18:03 +0100 Subject: [PATCH 209/319] Removes pending test case - covered in: - Changing producers, category and tax category, done in 15ee4f6 - Updating Unit value, done in 49226ff Removes comment about errors for empty variant_unit_name I think this was done in commit f05d27b Would you agree @dacook? --- spec/system/admin/products_v3/products_spec.rb | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index e025e8dcda..31e4fc4e9e 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -85,22 +85,6 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi end end - it "displays a select box for suppliers, with the appropriate supplier selected" do - pending( "[BUU] Change producer, unit type, category and tax category #11060" ) - s1 = FactoryBot.create(:supplier_enterprise) - s2 = FactoryBot.create(:supplier_enterprise) - s3 = FactoryBot.create(:supplier_enterprise) - p1 = FactoryBot.create(:product, supplier: s2) - p2 = FactoryBot.create(:product, supplier: s3) - - visit spree.admin_products_path - - expect(page).to have_select "producer_id", with_options: [s1.name, s2.name, s3.name], - selected: s2.name - expect(page).to have_select "producer_id", with_options: [s1.name, s2.name, s3.name], - selected: s3.name - end - context "with several variants" do let!(:variant1) { p1.variants.first } let!(:variant2) { p2.variants.first } @@ -397,7 +381,6 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi end # Unit popout - # TODO: prevent empty value fill_in "Unit value", with: "" click_button "Save changes" # attempt to save or close the popout expect(page).to have_field "Unit value", with: "" # popout is still open From 7565825b612e25261f68bfb6baf77898b7bc6557 Mon Sep 17 00:00:00 2001 From: isidzukuri Date: Fri, 24 May 2024 11:56:16 +0300 Subject: [PATCH 210/319] Do not commit to db unchanged products is bulk save --- app/services/sets/product_set.rb | 8 ++++-- spec/services/sets/product_set_spec.rb | 38 ++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/app/services/sets/product_set.rb b/app/services/sets/product_set.rb index ba3fb40240..d72e391beb 100644 --- a/app/services/sets/product_set.rb +++ b/app/services/sets/product_set.rb @@ -67,11 +67,12 @@ module Sets product.assign_attributes(product_related_attrs) + return true unless product.changed? + validate_presence_of_unit_value_in_product(product) - changed = product.changed? success = product.errors.empty? && product.save - count_result(success && changed) + count_result(success) success end @@ -104,7 +105,8 @@ module Sets def create_or_update_variant(product, variant_attributes) variant = find_model(product.variants, variant_attributes[:id]) if variant.present? - variant.update(variant_attributes.except(:id)) + variant.assign_attributes(variant_attributes.except(:id)) + variant.update(variant_attributes.except(:id)) if variant.changed? else variant = create_variant(product, variant_attributes) end diff --git a/spec/services/sets/product_set_spec.rb b/spec/services/sets/product_set_spec.rb index b60dd0f2a5..3d2181c493 100644 --- a/spec/services/sets/product_set_spec.rb +++ b/spec/services/sets/product_set_spec.rb @@ -134,6 +134,27 @@ RSpec.describe Sets::ProductSet do end end end + + context "when product attributes are not changed" do + let(:collection_hash) { + { 0 => { id: product.id, name: product.name } } + } + + it 'returns true' do + is_expected.to eq true + end + + it 'does not increase saved_count' do + subject + expect(product_set.saved_count).to eq 0 + end + + it 'does not update any product by calling save' do + expect_any_instance_of(Spree::Product).not_to receive(:save) + + subject + end + end end describe "updating a product's variants" do @@ -190,6 +211,23 @@ RSpec.describe Sets::ProductSet do include_examples "nothing saved" end + context "when attributes are not changed" do + let(:variant_attributes) { { sku: variant.sku } } + + before { variant } + + it 'updates product by calling save' do + expect_any_instance_of(Spree::Variant).not_to receive(:save) + + subject + end + + it 'does not increase saved_count' do + subject + expect(product_set.saved_count).to eq 0 + end + end + context "when products attributes are also updated" do let(:product_attributes) { { sku: "prod_sku" } From c71eb2d6b56c6168dfb7c962194ebd4e0640d874 Mon Sep 17 00:00:00 2001 From: David Cook Date: Mon, 27 May 2024 10:19:37 +1000 Subject: [PATCH 211/319] Remove duplicate assign --- app/services/sets/product_set.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/sets/product_set.rb b/app/services/sets/product_set.rb index d72e391beb..04138eedbc 100644 --- a/app/services/sets/product_set.rb +++ b/app/services/sets/product_set.rb @@ -106,7 +106,7 @@ module Sets variant = find_model(product.variants, variant_attributes[:id]) if variant.present? variant.assign_attributes(variant_attributes.except(:id)) - variant.update(variant_attributes.except(:id)) if variant.changed? + variant.save if variant.changed? else variant = create_variant(product, variant_attributes) end From 4f287ffe05632d65da7cb84f91b595385da1211c Mon Sep 17 00:00:00 2001 From: David Cook Date: Mon, 27 May 2024 16:38:55 +1000 Subject: [PATCH 212/319] When dropdown fields don't allow blank, but are blank, show as changed They were already counted as changed by the javascript, but didn't have a 'changed' class to indicate it. The reason they are 'changed', is because the dropdown has no blank option, and is forced to select the first item in the list. This is purely to cover the case of invalid data, but should help a lot when debugging data issues. I don't think it's any less efficient, because the extra 'classList.toggle' calls don't do anything on unchanged fields. --- .../controllers/bulk_form_controller.js | 16 ++++-- .../stimulus/bulk_form_controller_test.js | 53 +++++++++++++++++++ 2 files changed, 64 insertions(+), 5 deletions(-) diff --git a/app/webpacker/controllers/bulk_form_controller.js b/app/webpacker/controllers/bulk_form_controller.js index 0af566b271..bd1ab3b854 100644 --- a/app/webpacker/controllers/bulk_form_controller.js +++ b/app/webpacker/controllers/bulk_form_controller.js @@ -63,7 +63,7 @@ export default class BulkFormController extends Controller { // For each record, check if any fields are changed // TODO: optimise basd on current state. if field is changed, but form already changed, no need to update (and vice versa) const changedRecordCount = Object.values(this.recordElements).filter((elements) => - elements.some(this.#isChanged), + elements.some(this.#checkIsChanged.bind(this)), ).length; this.formChanged = changedRecordCount > 0 || this.errorValue; @@ -131,11 +131,17 @@ export default class BulkFormController extends Controller { }); } - #isChanged(element) { - if(!element.isConnected) { - return false; + // Check if changed, and mark with class if it is. + #checkIsChanged(element) { + if(!element.isConnected) return false; - } else if (element.type == "checkbox") { + const changed = this.#isChanged(element); + element.classList.toggle("changed", changed); + return changed; + } + + #isChanged(element) { + if (element.type == "checkbox") { return element.defaultChecked !== undefined && element.checked != element.defaultChecked; } else if (element.type == "select-one") { diff --git a/spec/javascripts/stimulus/bulk_form_controller_test.js b/spec/javascripts/stimulus/bulk_form_controller_test.js index 82d83c7271..2f1e8ea429 100644 --- a/spec/javascripts/stimulus/bulk_form_controller_test.js +++ b/spec/javascripts/stimulus/bulk_form_controller_test.js @@ -99,6 +99,59 @@ describe("BulkFormController", () => { expect(input1b.classList).not.toContain('changed'); expect(input2.classList).toContain('changed'); }); + + describe("select not include_blank", () => { + beforeEach(() => { + document.body.innerHTML = ` +
+
+ +
+ +
+ `; + }); + + it("shows as changed", () => { + // Expect select to show changed (select-one always has something selected) + expect(select1.classList).toContain('changed'); + + // Change selection + select1.options[0].selected = false; + select1.options[1].selected = true; + select1.dispatchEvent(new Event("input")); + expect(select1.classList).toContain('changed'); + }); + }); + + describe("select-one with include_blank", () => { + beforeEach(() => { + document.body.innerHTML = ` +
+
+ +
+ +
+ `; + }); + + it("does not show as changed", () => { + expect(select1.classList).not.toContain('changed'); + + // Change selection + select1.options[0].selected = false; + select1.options[1].selected = true; + select1.dispatchEvent(new Event("input")); + expect(select1.classList).toContain('changed'); + }); + }); }) describe("activating sections, and showing a summary", () => { From f70dd585332636954f7aae056bf53cc050c395da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 May 2024 09:50:38 +0000 Subject: [PATCH 213/319] chore(deps-dev): bump webmock from 3.23.0 to 3.23.1 Bumps [webmock](https://github.com/bblimke/webmock) from 3.23.0 to 3.23.1. - [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md) - [Commits](https://github.com/bblimke/webmock/compare/v3.23.0...v3.23.1) --- updated-dependencies: - dependency-name: webmock dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 3e15cb0006..a1fe9fab7f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -822,7 +822,7 @@ GEM activesupport faraday (~> 2.0) faraday-follow_redirects - webmock (3.23.0) + webmock (3.23.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) From fb07794cf3e71916e88fb5b763caeb0009ee7c7b Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Tue, 28 May 2024 01:10:30 +0500 Subject: [PATCH 214/319] 12398: add slide-out animation --- app/components/confirm_modal_component.rb | 4 +- .../confirm_modal_component.html.haml | 7 +-- .../admin/products_v3_controller.rb | 8 ++- .../admin/products_v3/_delete_modal.html.haml | 5 +- .../admin/products_v3/_product_row.html.haml | 2 +- .../admin/products_v3/_variant_row.html.haml | 2 +- .../destroy_product_variant.turbo_stream.haml | 7 ++- .../controllers/modal_link_controller.js | 15 ------ .../controllers/products_controller.js | 49 +++++++++++++++++++ app/webpacker/css/admin/products_v3.scss | 15 ++++++ 10 files changed, 81 insertions(+), 33 deletions(-) diff --git a/app/components/confirm_modal_component.rb b/app/components/confirm_modal_component.rb index 7034db03c6..8149a729e3 100644 --- a/app/components/confirm_modal_component.rb +++ b/app/components/confirm_modal_component.rb @@ -12,8 +12,7 @@ class ConfirmModalComponent < ModalComponent confirm_button_class: :primary, confirm_button_text: I18n.t('js.admin.modals.confirm'), cancel_button_text: I18n.t('js.admin.modals.cancel'), - actions_alignment_class: 'justify-space-around', - confirm_submit_method: nil + actions_alignment_class: 'justify-space-around' ) super(id:, close_button: true) @confirm_actions = confirm_actions @@ -25,7 +24,6 @@ class ConfirmModalComponent < ModalComponent @confirm_button_text = confirm_button_text @cancel_button_text = cancel_button_text @actions_alignment_class = actions_alignment_class - @confirm_submit_method = confirm_submit_method end private diff --git a/app/components/confirm_modal_component/confirm_modal_component.html.haml b/app/components/confirm_modal_component/confirm_modal_component.html.haml index 210bc724a8..1184602a67 100644 --- a/app/components/confirm_modal_component/confirm_modal_component.html.haml +++ b/app/components/confirm_modal_component/confirm_modal_component.html.haml @@ -7,9 +7,4 @@ %div{ class: "modal-actions #{@actions_alignment_class}" } %input{ class: "button icon-plus #{close_button_class}", type: 'button', value: @cancel_button_text, "data-action": "click->modal#close" } - - # TODO: This if block needs to be removed when we completely get rid of Reflex - - # The button's form action will be dynamically set when the modal is opened via modal-link-controller - - if @confirm_submit_method - = button_to @confirm_button_text, '', id: 'modal-confirm-button', method: @confirm_submit_method, data: { action: @confirm_actions } - - else - %input{ id: 'modal-confirm-button', class: "button icon-plus #{@confirm_button_class}", type: 'button', value: @confirm_button_text, "data-action": @confirm_actions, "data-reflex": @confirm_reflexes } + %input{ id: 'modal-confirm-button', class: "button icon-plus #{@confirm_button_class}", type: 'button', value: @confirm_button_text, "data-action": @confirm_actions, "data-reflex": @confirm_reflexes } diff --git a/app/controllers/admin/products_v3_controller.rb b/app/controllers/admin/products_v3_controller.rb index 15d12d3849..80eefbaca7 100644 --- a/app/controllers/admin/products_v3_controller.rb +++ b/app/controllers/admin/products_v3_controller.rb @@ -37,14 +37,16 @@ module Admin { id: params[:id] } ).find_product + status = :ok if @record.destroy flash[:success] = I18n.t('admin.products_v3.delete_product.success') else flash[:error] = I18n.t('admin.products_v3.delete_product.error') + status = :internal_server_error end respond_with do |format| - format.turbo_stream { render :destroy_product_variant } + format.turbo_stream { render :destroy_product_variant, status: } end # using flash with turbo stream doesn't clear it because the page is not refreshed. @@ -56,14 +58,16 @@ module Admin @record = Spree::Variant.active.find(params[:id]) authorize! :delete, @record + status = :ok if VariantDeleter.new.delete(@record) flash[:success] = I18n.t('admin.products_v3.delete_variant.success') else flash[:error] = I18n.t('admin.products_v3.delete_variant.error') + status = :internal_server_error end respond_with do |format| - format.turbo_stream { render :destroy_product_variant } + format.turbo_stream { render :destroy_product_variant, status: } end flash.discard diff --git a/app/views/admin/products_v3/_delete_modal.html.haml b/app/views/admin/products_v3/_delete_modal.html.haml index ca0987ab4e..87208c5dbe 100644 --- a/app/views/admin/products_v3/_delete_modal.html.haml +++ b/app/views/admin/products_v3/_delete_modal.html.haml @@ -5,9 +5,8 @@ cancel_button_text: t("#{base_translation_key}.cancellation_text"), confirm_button_class: :red, actions_alignment_class: 'justify-end', - confirm_reflexes: "click->products#delete_#{object_type}", - confirm_actions: "click->modal#close", - confirm_submit_method: :delete, + controller: "products", + confirm_actions: "click->products#delete_#{object_type} click->modal#close", ) = render delete_modal do %h2.margin-bottom-20.black-text diff --git a/app/views/admin/products_v3/_product_row.html.haml b/app/views/admin/products_v3/_product_row.html.haml index 0e16514257..d009b544ed 100644 --- a/app/views/admin/products_v3/_product_row.html.haml +++ b/app/views/admin/products_v3/_product_row.html.haml @@ -43,5 +43,5 @@ = link_to t('admin.products_page.actions.clone'), clone_admin_product_path(product), 'data-turbo': false %a{ "data-controller": "modal-link", "data-action": "click->modal-link#setModalDataSetOnConfirm click->modal-link#open", "data-modal-link-target-value": "product-delete-modal", "class": "delete", - "data-modal-link-modal-dataset-value": {'data-path': admin_product_destroy_path(product)}.to_json } + "data-modal-link-modal-dataset-value": {'data-delete-path': admin_product_destroy_path(product)}.to_json } = t('admin.products_page.actions.delete') diff --git a/app/views/admin/products_v3/_variant_row.html.haml b/app/views/admin/products_v3/_variant_row.html.haml index 02f23b8eeb..3b3b38ac54 100644 --- a/app/views/admin/products_v3/_variant_row.html.haml +++ b/app/views/admin/products_v3/_variant_row.html.haml @@ -66,7 +66,7 @@ - if variant.product.variants.size > 1 %a{ "data-controller": "modal-link", "data-action": "click->modal-link#setModalDataSetOnConfirm click->modal-link#open", "data-modal-link-target-value": "variant-delete-modal", "class": "delete", - "data-modal-link-modal-dataset-value": {'data-path': admin_destroy_variant_path(variant)}.to_json } + "data-modal-link-modal-dataset-value": {'data-delete-path': admin_destroy_variant_path(variant)}.to_json } = t('admin.products_page.actions.delete') - else %a{ 'data-action': "nested-form#remove", class: 'delete' } diff --git a/app/views/admin/products_v3/destroy_product_variant.turbo_stream.haml b/app/views/admin/products_v3/destroy_product_variant.turbo_stream.haml index 74c600fe84..6ea1bc1a8f 100644 --- a/app/views/admin/products_v3/destroy_product_variant.turbo_stream.haml +++ b/app/views/admin/products_v3/destroy_product_variant.turbo_stream.haml @@ -1,3 +1,6 @@ - # @record can either be Product or Variant -= turbo_stream.remove dom_id(@record) -= render partial: "admin/shared/flashes", locals: { flashes: flash } if defined? flash +- unless flash[:error] + = turbo_stream.remove(dom_id(@record)) +-# Without +formats+ option here, by default render is trying to render the equivalant turbo stream +-# It's strange that it works just fine if I remove the +unless+ above += render(partial: 'admin/shared/flashes', locals: { flashes: flash }, formats: [:html]) diff --git a/app/webpacker/controllers/modal_link_controller.js b/app/webpacker/controllers/modal_link_controller.js index c77e2864fe..9eb765c35f 100644 --- a/app/webpacker/controllers/modal_link_controller.js +++ b/app/webpacker/controllers/modal_link_controller.js @@ -17,9 +17,6 @@ export default class extends Controller { const modalId = this.targetValue; const moodalConfirmButtonQuery = `#${modalId} #modal-confirm-button`; const confirmButton = document.querySelector(moodalConfirmButtonQuery); - - this.#setPathToFormAction(confirmButton); - Object.keys(this.modalDatasetValue).forEach((datasetKey) => { confirmButton.setAttribute(datasetKey, this.modalDatasetValue[datasetKey]); }); @@ -33,16 +30,4 @@ export default class extends Controller { getIdentifier() { return "modal"; } - - #setPathToFormAction(confirmButton) { - const isSubmitButton = confirmButton.type === 'submit'; - const path = this.modalDatasetValue['data-path']; - - if(isSubmitButton && path){ - const form = confirmButton.parentElement; - form.setAttribute('action', path); - - delete this.modalDatasetValue['data-path']; - } - } } diff --git a/app/webpacker/controllers/products_controller.js b/app/webpacker/controllers/products_controller.js index 9ec3ac1a86..8396d9edf7 100644 --- a/app/webpacker/controllers/products_controller.js +++ b/app/webpacker/controllers/products_controller.js @@ -17,6 +17,14 @@ export default class extends ApplicationController { this.hideLoading(); } + delete_product() { + this.#deleteByRecordType('product'); + } + + delete_variant() { + this.#deleteByRecordType('variant'); + } + showLoading = () => { if (this.getLoadingController()) { this.getLoadingController().showLoading(); @@ -39,4 +47,45 @@ export default class extends ApplicationController { "loading" )); }; + + // +recordType+ can either be 'product' or 'variant' + #deleteByRecordType(recordType) { + const deletePath = document.querySelector(`#${recordType}-delete-modal #modal-confirm-button`).getAttribute('data-delete-path'); + const elementToBeRemoved = this.#getElementToBeRemoved(deletePath, recordType); + + const handleSlideOutAnimationEnd = async () => { + const csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content'); + + try { + const response = await fetch(deletePath, { + method: 'DELETE', + headers: { + Accept: 'text/vnd.turbo-stream.html', + 'X-CSRF-Token': csrfToken, + } + }); + // need to render the turboStream message, that's why not throwing error here + if(response.status === 500) elementToBeRemoved.classList.remove('slide-out'); + + const responseTurboStream = await response.text(); + Turbo.renderStreamMessage(responseTurboStream); + } catch(error) { + console.error(error.message); + elementToBeRemoved.classList.remove('slide-out'); + } + finally { + elementToBeRemoved.removeEventListener('animationend', handleSlideOutAnimationEnd); + } + }; + + elementToBeRemoved.classList.add('slide-out'); + elementToBeRemoved.addEventListener('animationend', handleSlideOutAnimationEnd); + }; + + #getElementToBeRemoved(path, recordType) { + const recordId = path.substring(path.lastIndexOf('/') + 1); + const elementDomId = `${recordType}_${recordId}`; + + return document.getElementById(elementDomId); + }; } diff --git a/app/webpacker/css/admin/products_v3.scss b/app/webpacker/css/admin/products_v3.scss index a06019bebb..2b277f0e33 100644 --- a/app/webpacker/css/admin/products_v3.scss +++ b/app/webpacker/css/admin/products_v3.scss @@ -413,4 +413,19 @@ } } } + + @keyframes slideOutLeft { + from { + transform: translateX(0); + opacity: 1; + } + to { + transform: translateX(-100%); + opacity: 0; + } + } + + .slide-out { + animation: slideOutLeft 0.5s forwards; + } } From 35c2297d55700541bbd3fa7b33244bf8db7f6226 Mon Sep 17 00:00:00 2001 From: David Cook Date: Mon, 27 May 2024 10:21:49 +1000 Subject: [PATCH 215/319] Detect changes in price Price is actually an association with lots of custom methods to make it look like a field, and so changes were ignored. Now this issue is fixed, perhaps it should be moved to a concern.. Note, there are other delegated fields: product name and description may be assigned from the variant. But there's no hooks to save the prroduct, so I didn't include it when checking for changes. --- app/models/spree/variant.rb | 5 +++++ spec/models/spree/variant_spec.rb | 22 ++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/app/models/spree/variant.rb b/app/models/spree/variant.rb index 294c1edfe0..78e5819107 100644 --- a/app/models/spree/variant.rb +++ b/app/models/spree/variant.rb @@ -199,6 +199,11 @@ module Spree price_in(currency).try(:amount) end + def changed? + # Changes to price are saved after_save + super || default_price.changed? + end + # can_supply? is implemented in VariantStock def in_stock?(quantity = 1) can_supply?(quantity) diff --git a/spec/models/spree/variant_spec.rb b/spec/models/spree/variant_spec.rb index 832cb6d931..3cea5ba96f 100644 --- a/spec/models/spree/variant_spec.rb +++ b/spec/models/spree/variant_spec.rb @@ -58,6 +58,28 @@ RSpec.describe Spree::Variant do end end + describe "#changed?" do + subject(:variant) { create(:variant) } + + it { is_expected.not_to be_changed } + + it "is changed when basic fields are changed" do + subject.display_name = "blah" + expect(subject).to be_changed + end + + describe "default_price" do + it "price" do + subject.price = 100 + expect(subject).to be_changed + end + it "currency" do + subject.currency = "USD" + expect(subject).to be_changed + end + end + end + context "price parsing" do context "price=" do context "with decimal point" do From 90c71c6a1a8391e5b7a2e24027bc1940834370f2 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 28 May 2024 11:38:41 +1000 Subject: [PATCH 216/319] Remove unused method --- app/models/spree/price.rb | 4 ---- app/models/spree/variant.rb | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/app/models/spree/price.rb b/app/models/spree/price.rb index 668f53b6b9..0c2d12c285 100644 --- a/app/models/spree/price.rb +++ b/app/models/spree/price.rb @@ -24,10 +24,6 @@ module Spree amount end - def price_changed? - amount_changed? - end - def price=(price) self[:amount] = parse_price(price) end diff --git a/app/models/spree/variant.rb b/app/models/spree/variant.rb index 78e5819107..9a48caf0b5 100644 --- a/app/models/spree/variant.rb +++ b/app/models/spree/variant.rb @@ -49,7 +49,7 @@ module Spree has_many :prices, class_name: 'Spree::Price', dependent: :destroy - delegate :display_price, :display_amount, :price, :price_changed?, :price=, + delegate :display_price, :display_amount, :price, :price=, :currency, :currency=, to: :find_or_build_default_price From c94bd9231101dc41c691fdb738deb357cdf8f14f Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 22 Mar 2024 13:49:51 +1100 Subject: [PATCH 217/319] Simplify DFC request retry logic Big thanks to David Cook for a much better pattern. --- .../dfc_provider/app/services/dfc_request.rb | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/engines/dfc_provider/app/services/dfc_request.rb b/engines/dfc_provider/app/services/dfc_request.rb index 8de0108d99..76ff6e2064 100644 --- a/engines/dfc_provider/app/services/dfc_request.rb +++ b/engines/dfc_provider/app/services/dfc_request.rb @@ -16,30 +16,34 @@ class DfcRequest def get(url) response = request(url) - return response.body if response.status == 200 + if response.status != 200 && token_stale? + refresh_access_token! + response = request(url) + end - return "" if @user.oidc_account.updated_at > 15.minutes.ago - - refresh_access_token! - - response = request(url) response.body end private def request(url) - connection = Faraday.new( + only_public_connections do + connection.get(url) + end + end + + def token_stale? + @user.oidc_account.updated_at < 15.minutes.ago + end + + def connection + Faraday.new( request: { timeout: 30 }, headers: { 'Content-Type' => 'application/json', 'Authorization' => "Bearer #{@user.oidc_account.token}", } ) - - only_public_connections do - connection.get(url) - end end def only_public_connections(&) From 635234a889fe498407c7fdf3f8ecb3dea5ec561c Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 22 Mar 2024 14:21:14 +1100 Subject: [PATCH 218/319] Enable POSTing DFC data --- .../admin/dfc_product_imports_controller.rb | 2 +- engines/dfc_provider/app/services/dfc_request.rb | 16 ++++++++++------ .../spec/services/dfc_request_spec.rb | 15 ++++++++++++--- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/app/controllers/admin/dfc_product_imports_controller.rb b/app/controllers/admin/dfc_product_imports_controller.rb index 1b3f8dfb88..8dc580afbd 100644 --- a/app/controllers/admin/dfc_product_imports_controller.rb +++ b/app/controllers/admin/dfc_product_imports_controller.rb @@ -20,7 +20,7 @@ module Admin catalog_url = params.require(:catalog_url) - json_catalog = DfcRequest.new(spree_current_user).get(catalog_url) + json_catalog = DfcRequest.new(spree_current_user).call(catalog_url) graph = DfcIo.import(json_catalog) # * First step: import all products for given enterprise. diff --git a/engines/dfc_provider/app/services/dfc_request.rb b/engines/dfc_provider/app/services/dfc_request.rb index 76ff6e2064..949ec23bad 100644 --- a/engines/dfc_provider/app/services/dfc_request.rb +++ b/engines/dfc_provider/app/services/dfc_request.rb @@ -13,12 +13,12 @@ class DfcRequest @user = user end - def get(url) - response = request(url) + def call(url, data = nil) + response = request(url, data) - if response.status != 200 && token_stale? + if response.status >= 400 && token_stale? refresh_access_token! - response = request(url) + response = request(url, data) end response.body @@ -26,9 +26,13 @@ class DfcRequest private - def request(url) + def request(url, data = nil) only_public_connections do - connection.get(url) + if data + connection.post(url, data) + else + connection.get(url) + end end end diff --git a/engines/dfc_provider/spec/services/dfc_request_spec.rb b/engines/dfc_provider/spec/services/dfc_request_spec.rb index d1e82d17ef..ea17ae02af 100644 --- a/engines/dfc_provider/spec/services/dfc_request_spec.rb +++ b/engines/dfc_provider/spec/services/dfc_request_spec.rb @@ -12,7 +12,16 @@ RSpec.describe DfcRequest do stub_request(:get, "http://example.net/api"). to_return(status: 200, body: '{"@context":"/"}') - expect(api.get("http://example.net/api")).to eq '{"@context":"/"}' + expect(api.call("http://example.net/api")).to eq '{"@context":"/"}' + end + + it "posts a DFC document" do + json = '{"name":"new season apples"}' + stub_request(:post, "http://example.net/api"). + with(body: json). + to_return(status: 201) # Created + + expect(api.call("http://example.net/api", json)).to eq "" end it "refreshes the access token on fail", vcr: true do @@ -30,7 +39,7 @@ RSpec.describe DfcRequest do account.updated_at = 1.day.ago expect { - api.get("http://example.net/api") + api.call("http://example.net/api") }.to change { account.token }.and change { @@ -44,7 +53,7 @@ RSpec.describe DfcRequest do user.oidc_account.updated_at = 1.minute.ago - expect(api.get("http://example.net/api")).to eq "" + expect(api.call("http://example.net/api")).to eq "" # Trying to reach the OIDC server via network request to refresh the token # would raise errors because we didn't setup Webmock or VCR. From 1f006627094ef321e7b1e9ae0c9e435d63f28d3e Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 23 May 2024 17:02:49 +1000 Subject: [PATCH 219/319] Add service to access FDC API The current implementation of the FDC is not adhering to the DFC standard. The difference is added in this compatibility layer. This should be temporary code. The FDC dev team should change their API in their next development cycle. --- .../dfc_provider/app/services/fdc_request.rb | 33 +++ .../spec/services/fdc_request_spec.rb | 36 +++ ...e_access_token_and_retrieves_a_catalog.yml | 206 ++++++++++++++++++ spec/support/vcr_setup.rb | 5 + 4 files changed, 280 insertions(+) create mode 100644 engines/dfc_provider/app/services/fdc_request.rb create mode 100644 engines/dfc_provider/spec/services/fdc_request_spec.rb create mode 100644 spec/fixtures/vcr_cassettes/FdcRequest/refreshes_the_access_token_and_retrieves_a_catalog.yml diff --git a/engines/dfc_provider/app/services/fdc_request.rb b/engines/dfc_provider/app/services/fdc_request.rb new file mode 100644 index 0000000000..5252cff85a --- /dev/null +++ b/engines/dfc_provider/app/services/fdc_request.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require "private_address_check" +require "private_address_check/tcpsocket_ext" + +# Request a JSON document from the FDC API with authentication. +# +# Currently, the API doesn't quite comply with the DFC standard and we need +# to authenticate a little bit differently. +# +# And then we get slightly different data as well. +class FdcRequest < DfcRequest + # Override main method to POST authorization data. + def call(url, data = {}) + response = request(url, auth_data.merge(data).to_json) + + if response.status >= 400 && token_stale? + refresh_access_token! + response = request(url, auth_data.merge(data).to_json) + end + + response.body + end + + private + + def auth_data + { + userId: @user.oidc_account.uid, + accessToken: @user.oidc_account.token, + } + end +end diff --git a/engines/dfc_provider/spec/services/fdc_request_spec.rb b/engines/dfc_provider/spec/services/fdc_request_spec.rb new file mode 100644 index 0000000000..c1f59d40f8 --- /dev/null +++ b/engines/dfc_provider/spec/services/fdc_request_spec.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require_relative "../spec_helper" + +RSpec.describe FdcRequest do + subject(:api) { FdcRequest.new(user) } + + let(:user) { build(:oidc_user) } + let(:account) { user.oidc_account } + let(:url) { + "https://food-data-collaboration-produc-fe870152f634.herokuapp.com/fdc/products?shop=test-hodmedod.myshopify.com" + } + + it "refreshes the access token and retrieves a catalog", vcr: true do + # A refresh is only attempted if the token is stale. + account.uid = "testdfc@protonmail.com" + account.refresh_token = ENV.fetch("OPENID_REFRESH_TOKEN") + account.updated_at = 1.day.ago + + response = nil + expect { + response = api.call(url) + }.to change { + account.token + }.and change { + account.refresh_token + } + + json = JSON.parse(response) + expect(json["message"]).to eq "Products retrieved successfully" + + graph = DfcIo.import(json["products"]) + products = graph.select { |s| s.semanticType == "dfc-b:SuppliedProduct" } + expect(products).to be_present + end +end diff --git a/spec/fixtures/vcr_cassettes/FdcRequest/refreshes_the_access_token_and_retrieves_a_catalog.yml b/spec/fixtures/vcr_cassettes/FdcRequest/refreshes_the_access_token_and_retrieves_a_catalog.yml new file mode 100644 index 0000000000..636e061690 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/FdcRequest/refreshes_the_access_token_and_retrieves_a_catalog.yml @@ -0,0 +1,206 @@ +--- +http_interactions: +- request: + method: post + uri: https://food-data-collaboration-produc-fe870152f634.herokuapp.com/fdc/products?shop=test-hodmedod.myshopify.com + body: + encoding: UTF-8 + string: '{"userId":"testdfc@protonmail.com","accessToken":null}' + headers: + Content-Type: + - application/json + Authorization: + - "" + User-Agent: + - Faraday v2.9.0 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 403 + message: Forbidden + headers: + Server: + - Cowboy + Report-To: + - '{"group":"heroku-nel","max_age":3600,"endpoints":[{"url":"https://nel.heroku.com/reports?ts=1716515324&sid=812dcc77-0bd0-43b1-a5f1-b25750382959&s=QHSHL9RlLovwwwatlK4mrZMZ6powGfrf8MG7QDavBV4%3D"}]}' + Reporting-Endpoints: + - heroku-nel=https://nel.heroku.com/reports?ts=1716515324&sid=812dcc77-0bd0-43b1-a5f1-b25750382959&s=QHSHL9RlLovwwwatlK4mrZMZ6powGfrf8MG7QDavBV4%3D + Nel: + - '{"report_to":"heroku-nel","max_age":3600,"success_fraction":0.005,"failure_fraction":0.05,"response_headers":["Via"]}' + Connection: + - keep-alive + X-Powered-By: + - Express + Access-Control-Allow-Origin: + - "*" + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '62' + Etag: + - W/"3e-3yNPCMU4MDQmKmieGPWfDcA/0Eg" + Date: + - Fri, 24 May 2024 01:48:44 GMT + Via: + - 1.1 vegur + body: + encoding: UTF-8 + string: '{"message":"User access denied","error":"User not authorized"}' + recorded_at: Fri, 24 May 2024 01:48:44 GMT +- request: + method: get + uri: https://login.lescommuns.org/auth/realms/data-food-consortium/.well-known/openid-configuration + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - SWD 2.0.3 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Date: + - Fri, 24 May 2024 01:48:46 GMT + Content-Type: + - application/json;charset=UTF-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Vary: + - Accept-Encoding + Set-Cookie: + - AUTH_SESSION_ID=1716515327.317.9431.725800|6055218c9898cae39f8ffd531999e49a; + Path=/; Secure; HttpOnly + Cache-Control: + - no-cache, must-revalidate, no-transform, no-store + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=15724800; includeSubDomains + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + body: + encoding: ASCII-8BIT + string: '{"issuer":"https://login.lescommuns.org/auth/realms/data-food-consortium","authorization_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/auth","token_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token","introspection_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token/introspect","userinfo_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/userinfo","end_session_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/logout","frontchannel_logout_session_supported":true,"frontchannel_logout_supported":true,"jwks_uri":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/certs","check_session_iframe":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/login-status-iframe.html","grant_types_supported":["authorization_code","implicit","refresh_token","password","client_credentials","urn:openid:params:grant-type:ciba","urn:ietf:params:oauth:grant-type:device_code"],"acr_values_supported":["0","1"],"response_types_supported":["code","none","id_token","token","id_token + token","code id_token","code token","code id_token token"],"subject_types_supported":["public","pairwise"],"id_token_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"id_token_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"id_token_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"userinfo_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512","none"],"userinfo_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"userinfo_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"request_object_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512","none"],"request_object_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"request_object_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"response_modes_supported":["query","fragment","form_post","query.jwt","fragment.jwt","form_post.jwt","jwt"],"registration_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/clients-registrations/openid-connect","token_endpoint_auth_methods_supported":["private_key_jwt","client_secret_basic","client_secret_post","tls_client_auth","client_secret_jwt"],"token_endpoint_auth_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"introspection_endpoint_auth_methods_supported":["private_key_jwt","client_secret_basic","client_secret_post","tls_client_auth","client_secret_jwt"],"introspection_endpoint_auth_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"authorization_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"authorization_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"authorization_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"claims_supported":["aud","sub","iss","auth_time","name","given_name","family_name","preferred_username","email","acr"],"claim_types_supported":["normal"],"claims_parameter_supported":true,"scopes_supported":["openid","microprofile-jwt","phone","roles","profile","email","address","web-origins","acr","offline_access"],"request_parameter_supported":true,"request_uri_parameter_supported":true,"require_request_uri_registration":true,"code_challenge_methods_supported":["plain","S256"],"tls_client_certificate_bound_access_tokens":true,"revocation_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/revoke","revocation_endpoint_auth_methods_supported":["private_key_jwt","client_secret_basic","client_secret_post","tls_client_auth","client_secret_jwt"],"revocation_endpoint_auth_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"backchannel_logout_supported":true,"backchannel_logout_session_supported":true,"device_authorization_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/auth/device","backchannel_token_delivery_modes_supported":["poll","ping"],"backchannel_authentication_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/ciba/auth","backchannel_authentication_request_signing_alg_values_supported":["PS384","ES384","RS384","ES256","RS256","ES512","PS256","PS512","RS512"],"require_pushed_authorization_requests":false,"pushed_authorization_request_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/par/request","mtls_endpoint_aliases":{"token_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token","revocation_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/revoke","introspection_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token/introspect","device_authorization_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/auth/device","registration_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/clients-registrations/openid-connect","userinfo_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/userinfo","pushed_authorization_request_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/par/request","backchannel_authentication_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/ciba/auth"},"authorization_response_iss_parameter_supported":true}' + recorded_at: Fri, 24 May 2024 01:48:46 GMT +- request: + method: post + uri: https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token + body: + encoding: UTF-8 + string: grant_type=refresh_token&refresh_token= + headers: + User-Agent: + - Rack::OAuth2 (2.2.1) + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Date: + - Fri, 24 May 2024 01:48:47 GMT + Content-Type: + - application/json + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Vary: + - Accept-Encoding + Set-Cookie: + - AUTH_SESSION_ID=1716515328.538.9431.297717|6055218c9898cae39f8ffd531999e49a; + Path=/; Secure; HttpOnly + Cache-Control: + - no-store + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=15724800; includeSubDomains + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + body: + encoding: ASCII-8BIT + string: '{"access_token":"","expires_in":1800,"refresh_expires_in":31373710,"refresh_token":"","token_type":"Bearer","id_token":"","not-before-policy":0,"session_state":"cfaa4a60-c2aa-4590-9fdf-a117f23d564f","scope":"openid + profile email"}' + recorded_at: Fri, 24 May 2024 01:48:47 GMT +- request: + method: post + uri: https://food-data-collaboration-produc-fe870152f634.herokuapp.com/fdc/products?shop=test-hodmedod.myshopify.com + body: + encoding: UTF-8 + string: '{"userId":"testdfc@protonmail.com","accessToken":""}' + headers: + Content-Type: + - application/json + Authorization: + - "" + User-Agent: + - Faraday v2.9.0 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - Cowboy + Report-To: + - '{"group":"heroku-nel","max_age":3600,"endpoints":[{"url":"https://nel.heroku.com/reports?ts=1716515329&sid=812dcc77-0bd0-43b1-a5f1-b25750382959&s=db8%2Bqll%2F9ViX4tDoArQRI69fIFO5okGU%2F86h1whY9lM%3D"}]}' + Reporting-Endpoints: + - heroku-nel=https://nel.heroku.com/reports?ts=1716515329&sid=812dcc77-0bd0-43b1-a5f1-b25750382959&s=db8%2Bqll%2F9ViX4tDoArQRI69fIFO5okGU%2F86h1whY9lM%3D + Nel: + - '{"report_to":"heroku-nel","max_age":3600,"success_fraction":0.005,"failure_fraction":0.05,"response_headers":["Via"]}' + Connection: + - keep-alive + X-Powered-By: + - Express + Access-Control-Allow-Origin: + - "*" + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '41179' + Etag: + - W/"a0db-ySojxiWOF5gtH86VVAw3VoRbZ/o" + Date: + - Fri, 24 May 2024 01:48:49 GMT + Via: + - 1.1 vegur + body: + encoding: ASCII-8BIT + string: !binary |- + eyJwcm9kdWN0cyI6IntcIkBjb250ZXh0XCI6XCJodHRwczovL3d3dy5kYXRhZm9vZGNvbnNvcnRpdW0ub3JnXCIsXCJAZ3JhcGhcIjpbe1wiQGlkXCI6XCJfOmI0M1wiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpLaWxvZ3JhbVwiLFwiZGZjLWI6dmFsdWVcIjpcIjAuNFwifSx7XCJAaWRcIjpcIl86YjQ0XCIsXCJAdHlwZVwiOlwiZGZjLWI6UHJpY2VcIixcImRmYy1iOlZBVHJhdGVcIjpcIjBcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOkV1cm9cIixcImRmYy1iOnZhbHVlXCI6XCIyLjA5XCJ9LHtcIkBpZFwiOlwiXzpiNDVcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06S2lsb2dyYW1cIixcImRmYy1iOnZhbHVlXCI6XCIwLjRcIn0se1wiQGlkXCI6XCJfOmI0NlwiLFwiQHR5cGVcIjpcImRmYy1iOlByaWNlXCIsXCJkZmMtYjpWQVRyYXRlXCI6XCIwXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpFdXJvXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMS4xOVwifSx7XCJAaWRcIjpcIl86YjQ3XCIsXCJAdHlwZVwiOlwiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWVcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOktpbG9ncmFtXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMC41XCJ9LHtcIkBpZFwiOlwiXzpiNDhcIixcIkB0eXBlXCI6XCJkZmMtYjpQcmljZVwiLFwiZGZjLWI6VkFUcmF0ZVwiOlwiMFwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06RXVyb1wiLFwiZGZjLWI6dmFsdWVcIjpcIjEuNjlcIn0se1wiQGlkXCI6XCJfOmI0OVwiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpLaWxvZ3JhbVwiLFwiZGZjLWI6dmFsdWVcIjpcIjAuNFwifSx7XCJAaWRcIjpcIl86YjUwXCIsXCJAdHlwZVwiOlwiZGZjLWI6UHJpY2VcIixcImRmYy1iOlZBVHJhdGVcIjpcIjBcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOkV1cm9cIixcImRmYy1iOnZhbHVlXCI6XCIxLjM5XCJ9LHtcIkBpZFwiOlwiXzpiNTFcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06S2lsb2dyYW1cIixcImRmYy1iOnZhbHVlXCI6XCIwLjE3NVwifSx7XCJAaWRcIjpcIl86YjUyXCIsXCJAdHlwZVwiOlwiZGZjLWI6UHJpY2VcIixcImRmYy1iOlZBVHJhdGVcIjpcIjBcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOkV1cm9cIixcImRmYy1iOnZhbHVlXCI6XCIyLjg5XCJ9LHtcIkBpZFwiOlwiXzpiNTNcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06S2lsb2dyYW1cIixcImRmYy1iOnZhbHVlXCI6XCIwLjRcIn0se1wiQGlkXCI6XCJfOmI1NFwiLFwiQHR5cGVcIjpcImRmYy1iOlByaWNlXCIsXCJkZmMtYjpWQVRyYXRlXCI6XCIwXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpFdXJvXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMC45OVwifSx7XCJAaWRcIjpcIl86YjU1XCIsXCJAdHlwZVwiOlwiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWVcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOktpbG9ncmFtXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMC4zXCJ9LHtcIkBpZFwiOlwiXzpiNTZcIixcIkB0eXBlXCI6XCJkZmMtYjpQcmljZVwiLFwiZGZjLWI6VkFUcmF0ZVwiOlwiMFwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06RXVyb1wiLFwiZGZjLWI6dmFsdWVcIjpcIjIuOTlcIn0se1wiQGlkXCI6XCJfOmI1N1wiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpLaWxvZ3JhbVwiLFwiZGZjLWI6dmFsdWVcIjpcIjQuOFwifSx7XCJAaWRcIjpcIl86YjU4XCIsXCJAdHlwZVwiOlwiZGZjLWI6UHJpY2VcIixcImRmYy1iOlZBVHJhdGVcIjpcIjBcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOkV1cm9cIixcImRmYy1iOnZhbHVlXCI6XCIxOC44NVwifSx7XCJAaWRcIjpcIl86YjU5XCIsXCJAdHlwZVwiOlwiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWVcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOktpbG9ncmFtXCIsXCJkZmMtYjp2YWx1ZVwiOlwiNC44XCJ9LHtcIkBpZFwiOlwiXzpiNjBcIixcIkB0eXBlXCI6XCJkZmMtYjpQcmljZVwiLFwiZGZjLWI6VkFUcmF0ZVwiOlwiMFwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06RXVyb1wiLFwiZGZjLWI6dmFsdWVcIjpcIjcuNDJcIn0se1wiQGlkXCI6XCJfOmI2MVwiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpLaWxvZ3JhbVwiLFwiZGZjLWI6dmFsdWVcIjpcIjVcIn0se1wiQGlkXCI6XCJfOmI2MlwiLFwiQHR5cGVcIjpcImRmYy1iOlByaWNlXCIsXCJkZmMtYjpWQVRyYXRlXCI6XCIwXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpFdXJvXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMTIuNjBcIn0se1wiQGlkXCI6XCJfOmI2M1wiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpLaWxvZ3JhbVwiLFwiZGZjLWI6dmFsdWVcIjpcIjQuOFwifSx7XCJAaWRcIjpcIl86YjY0XCIsXCJAdHlwZVwiOlwiZGZjLWI6UHJpY2VcIixcImRmYy1iOlZBVHJhdGVcIjpcIjBcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOkV1cm9cIixcImRmYy1iOnZhbHVlXCI6XCI4Ljc2XCJ9LHtcIkBpZFwiOlwiXzpiNjVcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06S2lsb2dyYW1cIixcImRmYy1iOnZhbHVlXCI6XCIxLjA1XCJ9LHtcIkBpZFwiOlwiXzpiNjZcIixcIkB0eXBlXCI6XCJkZmMtYjpQcmljZVwiLFwiZGZjLWI6VkFUcmF0ZVwiOlwiMFwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06RXVyb1wiLFwiZGZjLWI6dmFsdWVcIjpcIjEzLjA1XCJ9LHtcIkBpZFwiOlwiXzpiNjdcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06S2lsb2dyYW1cIixcImRmYy1iOnZhbHVlXCI6XCI0LjhcIn0se1wiQGlkXCI6XCJfOmI2OFwiLFwiQHR5cGVcIjpcImRmYy1iOlByaWNlXCIsXCJkZmMtYjpWQVRyYXRlXCI6XCIwXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpFdXJvXCIsXCJkZmMtYjp2YWx1ZVwiOlwiNi43NlwifSx7XCJAaWRcIjpcIl86YjY5XCIsXCJAdHlwZVwiOlwiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWVcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOktpbG9ncmFtXCIsXCJkZmMtYjp2YWx1ZVwiOlwiM1wifSx7XCJAaWRcIjpcIl86YjcwXCIsXCJAdHlwZVwiOlwiZGZjLWI6UHJpY2VcIixcImRmYy1iOlZBVHJhdGVcIjpcIjBcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOkV1cm9cIixcImRmYy1iOnZhbHVlXCI6XCIxNS45MFwifSx7XCJAaWRcIjpcIl86YjcxXCIsXCJAdHlwZVwiOlwiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWVcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOlBpZWNlXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMTJcIn0se1wiQGlkXCI6XCJfOmI3MlwiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpQaWVjZVwiLFwiZGZjLWI6dmFsdWVcIjpcIjFcIn0se1wiQGlkXCI6XCJfOmI3M1wiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpQaWVjZVwiLFwiZGZjLWI6dmFsdWVcIjpcIjEyXCJ9LHtcIkBpZFwiOlwiXzpiNzRcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06UGllY2VcIixcImRmYy1iOnZhbHVlXCI6XCIxXCJ9LHtcIkBpZFwiOlwiXzpiNzVcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06UGllY2VcIixcImRmYy1iOnZhbHVlXCI6XCIxMFwifSx7XCJAaWRcIjpcIl86Yjc2XCIsXCJAdHlwZVwiOlwiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWVcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOlBpZWNlXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMVwifSx7XCJAaWRcIjpcIl86Yjc3XCIsXCJAdHlwZVwiOlwiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWVcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOlBpZWNlXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMTJcIn0se1wiQGlkXCI6XCJfOmI3OFwiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpQaWVjZVwiLFwiZGZjLWI6dmFsdWVcIjpcIjFcIn0se1wiQGlkXCI6XCJfOmI3OVwiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpQaWVjZVwiLFwiZGZjLWI6dmFsdWVcIjpcIjZcIn0se1wiQGlkXCI6XCJfOmI4MFwiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpQaWVjZVwiLFwiZGZjLWI6dmFsdWVcIjpcIjFcIn0se1wiQGlkXCI6XCJfOmI4MVwiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpQaWVjZVwiLFwiZGZjLWI6dmFsdWVcIjpcIjEyXCJ9LHtcIkBpZFwiOlwiXzpiODJcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06UGllY2VcIixcImRmYy1iOnZhbHVlXCI6XCIxXCJ9LHtcIkBpZFwiOlwiXzpiODNcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06UGllY2VcIixcImRmYy1iOnZhbHVlXCI6XCIxMFwifSx7XCJAaWRcIjpcIl86Yjg0XCIsXCJAdHlwZVwiOlwiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWVcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOlBpZWNlXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY0Njc2MzVcIixcIkB0eXBlXCI6XCJkZmMtYjpTdXBwbGllZFByb2R1Y3RcIixcImRmYy1iOmRlc2NyaXB0aW9uXCI6XCI8dGFibGUgd2lkdGg9XFxcIjEwMCVcXFwiPlxcbjx0Ym9keT5cXG48dHIgc3R5bGU9XFxcImJvcmRlcjogMHB4O1xcXCI+XFxuPHRkIGJnY29sb3I9XFxcIiNkNmZiZWRcXFwiIHN0eWxlPVxcXCJjb2xvcjogIzAwMDAwMDsgYm9yZGVyOiAwcHg7XFxcIj48c3Ryb25nPlRoZXkncmUgYmFjayE8L3N0cm9uZz48L3RkPlxcbjwvdHI+XFxuPC90Ym9keT5cXG48L3RhYmxlPlxcbjxwPjxzdHJvbmc+VGhpbmsgYmFrZWQgYmVhbnMgYXJlIEJyaXRpc2g/IFRoZXkgYXJlIG5vdyEgV2UgdXNlIG9ubHkgQnJpdGlzaC1ncm93biBmYXZhIGJlYW5zIC0gQnJpdGFpbidzIG9yaWdpbmFsIGJlYW4sIGdyb3duIGhlcmUgc2luY2UgdGhlIElyb24gQWdlLiBPdXIgQmFrZWQgQnJpdGlzaCBCZWFucyBhcmUgZGVsaWNpb3VzbHkgZGlmZmVyZW50LCB3aXRoIGxhcmdlIG1lYXR5IGZhdmEgYmVhbnMgaW4gYSB0YXN0eSB0b21hdG8gc2F1Y2UuPC9zdHJvbmc+PC9wPlxcbjxwPjxzdHJvbmc+PGEgdGl0bGU9XFxcIldoYXQgYXJlIGZhdmEgYmVhbnM/IEFyZW4ndCB0aGV5IGp1c3QgYnJvYWQgYmVhbnM/XFxcIiBocmVmPVxcXCIvYmxvZ3MvbmV3cy93aGF0LWFyZS1mYXZhLWJlYW5zLWFyZS10aGV5LWp1c3QtYnJvYWQtYmVhbnNcXFwiIGRhdGEtbWNlLWZyYWdtZW50PVxcXCIxXFxcIiBkYXRhLW1jZS1ocmVmPVxcXCIvYmxvZ3MvbmV3cy93aGF0LWFyZS1mYXZhLWJlYW5zLWFyZS10aGV5LWp1c3QtYnJvYWQtYmVhbnNcXFwiPldoYXQgYXJlIGZhdmEgYmVhbnM/IEZpbmQgb3V0IGhlcmUuLi48L2E+PC9zdHJvbmc+PC9wPlxcbjwhLS0gc3BsaXQgLS0+PGgzPkNvbXBsZXRlIFByb2R1Y3QgRGV0YWlsczwvaDM+PHA+T3VyIEJha2VkIEJyaXRpc2ggQmVhbnMgYXJlIGNvb2tlZCBhbmQgcmVhZHkgdG8gZWF0LCBob3Qgb3IgY29sZC4gVGhleSdyZSBnb29kIHNlcnZlZCBvbiB0b2FzdCBidXQgYWxzbyBkZWxpY2lvdXMgYWRkZWQgdG8gc3Rld3MsIGN1cnJpZXMgb3IgY2Fzc2Vyb2xlcy4gT3IgZXZlbiBpbiBhIHBpZS48L3A+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+Q29va2luZyBpbnN0cnVjdGlvbnM8L2g1PlxcbjxwPjxzdHJvbmc+Q29va2luZyBvbiB0aGUgSG9iPC9zdHJvbmc+PGJyPkVtcHR5IGNvbnRlbnRzIGludG8gc2F1Y2VwYW4uIEhlYXQgZ2VudGx5IGZvciA0LTUgbWludXRlcyB3aGlsZSBzdGlycmluZy4gRm9yIGJlc3QgZmxhdm91ciBkbyBub3QgYm9pbCBvciBvdmVyY29vay4gRG8gbm90IHJlaGVhdC48L3A+XFxuPHA+PHN0cm9uZz5NaWNyb3dhdmUgQ29va2luZzwvc3Ryb25nPjxicj5FbXB0eSBjb250ZW50cyBpbnRvIGEgbm9uLW1ldGFsbGljIGJvd2wgYW5kIGNvdmVyLiBIZWF0IGZvciAyIHRvIDMgbWludXRlcywgc3RpcnJpbmcgaGFsZndheS4gQ2hlY2sgdGhlIGZvb2QgaXMgaG90LCBzdGlyIHdlbGwgYW5kIHNlcnZlLiBEbyBub3QgcmVoZWF0LjwvcD5cXG48aDUgY2xhc3M9XFxcInByb2R1Y3QtZGV0YWlsLXRpdGxlXFxcIj5UbyBTdG9yZTwvaDU+XFxuPHA+U3RvcmUgaW4gYSBjb29sLCBkcnkgcGxhY2UuIE9uY2Ugb3BlbmVkLCB0cmFuc2ZlciBjb250ZW50cyB0byBhIG5vbi1tZXRhbGxpYyBjb250YWluZXIsIGNvdmVyIHJlZnJpZ2VyYXRlIGFuZCB1c2Ugd2l0aCAyIGRheXMuPC9wPlxcbjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPkluZ3JlZGllbnRzPC9oNT5cXG48cD5GYXZhIEJlYW5zIChCcm9hZCBCZWFucykgKDQyJSksIFdhdGVyLCBUb21hdG8gUHVyZWUsIFN1Z2FyLCBNb2RpZmllZCBNYWl6ZSBTdGFyY2gsIFNhbHQsIEhlcmJzICZhbXA7IFNwaWNlcywgQ29uY2VudHJhdGVkIExlbW9uIEp1aWNlPC9wPlxcbjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPkFsbGVyZ3kgaW5mb3JtYXRpb248L2g1PlxcbjxwPk5vIEFsbGVyZ2VuczwvcD5cXG48dGFibGUgd2lkdGg9XFxcIjEwMCVcXFwiPlxcbjx0Ym9keT5cXG48dHI+XFxuPHRkPjxzdHJvbmc+VHlwaWNhbCB2YWx1ZXM8L3N0cm9uZz48L3RkPlxcbjx0ZD48c3Ryb25nPlBlciAxMDBnPC9zdHJvbmc+PC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+RW5lcmd5PC90ZD5cXG48dGQ+Mjkya0ogKDY5a2NhbCk8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5GYXQ8L3RkPlxcbjx0ZD4wLjRnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+b2Ygd2hpY2ggc2F0dXJhdGVzPC90ZD5cXG48dGQ+MC4xZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkNhcmJvaHlkcmF0ZTwvdGQ+XFxuPHRkPjEwLjFnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+b2Ygd2hpY2ggc3VnYXJzPC90ZD5cXG48dGQ+NC42ZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkZpYnJlPC90ZD5cXG48dGQ+NWc8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5Qcm90ZWluPC90ZD5cXG48dGQ+NGc8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5TYWx0PC90ZD5cXG48dGQ+MC42ZzwvdGQ+XFxuPC90cj5cXG48L3Rib2R5PlxcbjwvdGFibGU+PGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+TW9yZTwvaDU+XFxuPHA+RGVsaWNpb3VzLCBudXRyaXRpb3VzIGFuZCBnb29kIGZvciB0aGUgc29pbCwgZmF2YSBiZWFucyBhcmUgYSB2YXJpZXR5IG9mIGJyb2FkIGJlYW4sIFZpY2lhIGZhYmEsIGxlZnQgdG8gcmlwZW4gYW5kIGRyeSBiZWZvcmUgaGFydmVzdC4gVGhleeKAmXJlIGFsc28ga25vd24gYXMgZmllbGQgYmVhbnMsIGhvcnNlIGJlYW5zLCBXaW5kc29yIGJlYW5zIG9yIGZ1bC48L3A+XFxuPHA+U3VpdGFibGUgZm9yIHZlZ2FucyBhbmQgdmVnZXRhcmlhbnM8L3A+XFxuXCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiNDNcIixcImRmYy1iOmltYWdlXCI6XCJodHRwczovL2Nkbi5zaG9waWZ5LmNvbS9zL2ZpbGVzLzEvMDczMS84NDgzLzc5MzkvcHJvZHVjdHMvUGFjay1DYW4tQmFrZWQtQmVhbnMtMTgwMHg2Xzk4M3g2NTZfNTEzNzU4ZTYtMjYxNi00Njg3LWE4YjItYmE2ZGRlODY0OTIzLmpwZz92PTE2Nzc3NjA3NzhcIixcImRmYy1iOm5hbWVcIjpcIkJha2VkIEJyaXRpc2ggQmVhbnMgLSBSZXRhaWwgY2FuLCA0MDBnIChjYW4pXCIsXCJkZmMtYjpyZWZlcmVuY2VkQnlcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY0Njc2MzUvY2F0YWxvZ0l0ZW1cIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NDY3NjM1L2NhdGFsb2dJdGVtXCIsXCJAdHlwZVwiOlwiZGZjLWI6Q2F0YWxvZ0l0ZW1cIixcImRmYy1iOm9mZmVyZWRUaHJvdWdoXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NDY3NjM1L29mZmVyXCIsXCJkZmMtYjpza3VcIjpcIk5DQkIvVDRcIixcImRmYy1iOnN0b2NrTGltaXRhdGlvblwiOlwiLTFcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NDY3NjM1L29mZmVyXCIsXCJAdHlwZVwiOlwiZGZjLWI6T2ZmZXJcIixcImRmYy1iOmhhc1ByaWNlXCI6e1wiQGlkXCI6XCJfOmI0NFwifX0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NDY3NjM1L3BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcIkB0eXBlXCI6XCJkZmMtYjpBc1BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcImRmYy1iOmNvbnN1bWVzXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NDY3NjM1XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiNzFcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NDY3NjM1L3BsYW5uZWRQcm9kdWN0aW9uRmxvd1wiLFwiQHR5cGVcIjpcImRmYy1iOkFzUGxhbm5lZFByb2R1Y3Rpb25GbG93XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiNzJcIixcImRmYy1iOnByb2R1Y2VzXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NTAwNDAzXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjQ2NzYzNS90cmFuc2Zvcm1hdGlvblwiLFwiQHR5cGVcIjpcImRmYy1iOkFzUGxhbm5lZFRyYW5zZm9ybWF0aW9uXCIsXCJkZmMtYjpoYXNJbmNvbWVcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY0Njc2MzUvcGxhbm5lZENvbnN1bXB0aW9uRmxvd1wiLFwiZGZjLWI6aGFzT3V0Y29tZVwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjQ2NzYzNS9wbGFubmVkUHJvZHVjdGlvbkZsb3dcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NTAwNDAzXCIsXCJAdHlwZVwiOlwiZGZjLWI6U3VwcGxpZWRQcm9kdWN0XCIsXCJkZmMtYjpkZXNjcmlwdGlvblwiOlwiPHRhYmxlIHdpZHRoPVxcXCIxMDAlXFxcIj5cXG48dGJvZHk+XFxuPHRyIHN0eWxlPVxcXCJib3JkZXI6IDBweDtcXFwiPlxcbjx0ZCBiZ2NvbG9yPVxcXCIjZDZmYmVkXFxcIiBzdHlsZT1cXFwiY29sb3I6ICMwMDAwMDA7IGJvcmRlcjogMHB4O1xcXCI+PHN0cm9uZz5UaGV5J3JlIGJhY2shPC9zdHJvbmc+PC90ZD5cXG48L3RyPlxcbjwvdGJvZHk+XFxuPC90YWJsZT5cXG48cD48c3Ryb25nPlRoaW5rIGJha2VkIGJlYW5zIGFyZSBCcml0aXNoPyBUaGV5IGFyZSBub3chIFdlIHVzZSBvbmx5IEJyaXRpc2gtZ3Jvd24gZmF2YSBiZWFucyAtIEJyaXRhaW4ncyBvcmlnaW5hbCBiZWFuLCBncm93biBoZXJlIHNpbmNlIHRoZSBJcm9uIEFnZS4gT3VyIEJha2VkIEJyaXRpc2ggQmVhbnMgYXJlIGRlbGljaW91c2x5IGRpZmZlcmVudCwgd2l0aCBsYXJnZSBtZWF0eSBmYXZhIGJlYW5zIGluIGEgdGFzdHkgdG9tYXRvIHNhdWNlLjwvc3Ryb25nPjwvcD5cXG48cD48c3Ryb25nPjxhIHRpdGxlPVxcXCJXaGF0IGFyZSBmYXZhIGJlYW5zPyBBcmVuJ3QgdGhleSBqdXN0IGJyb2FkIGJlYW5zP1xcXCIgaHJlZj1cXFwiL2Jsb2dzL25ld3Mvd2hhdC1hcmUtZmF2YS1iZWFucy1hcmUtdGhleS1qdXN0LWJyb2FkLWJlYW5zXFxcIiBkYXRhLW1jZS1mcmFnbWVudD1cXFwiMVxcXCIgZGF0YS1tY2UtaHJlZj1cXFwiL2Jsb2dzL25ld3Mvd2hhdC1hcmUtZmF2YS1iZWFucy1hcmUtdGhleS1qdXN0LWJyb2FkLWJlYW5zXFxcIj5XaGF0IGFyZSBmYXZhIGJlYW5zPyBGaW5kIG91dCBoZXJlLi4uPC9hPjwvc3Ryb25nPjwvcD5cXG48IS0tIHNwbGl0IC0tPjxoMz5Db21wbGV0ZSBQcm9kdWN0IERldGFpbHM8L2gzPjxwPk91ciBCYWtlZCBCcml0aXNoIEJlYW5zIGFyZSBjb29rZWQgYW5kIHJlYWR5IHRvIGVhdCwgaG90IG9yIGNvbGQuIFRoZXkncmUgZ29vZCBzZXJ2ZWQgb24gdG9hc3QgYnV0IGFsc28gZGVsaWNpb3VzIGFkZGVkIHRvIHN0ZXdzLCBjdXJyaWVzIG9yIGNhc3Nlcm9sZXMuIE9yIGV2ZW4gaW4gYSBwaWUuPC9wPlxcbjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPkNvb2tpbmcgaW5zdHJ1Y3Rpb25zPC9oNT5cXG48cD48c3Ryb25nPkNvb2tpbmcgb24gdGhlIEhvYjwvc3Ryb25nPjxicj5FbXB0eSBjb250ZW50cyBpbnRvIHNhdWNlcGFuLiBIZWF0IGdlbnRseSBmb3IgNC01IG1pbnV0ZXMgd2hpbGUgc3RpcnJpbmcuIEZvciBiZXN0IGZsYXZvdXIgZG8gbm90IGJvaWwgb3Igb3ZlcmNvb2suIERvIG5vdCByZWhlYXQuPC9wPlxcbjxwPjxzdHJvbmc+TWljcm93YXZlIENvb2tpbmc8L3N0cm9uZz48YnI+RW1wdHkgY29udGVudHMgaW50byBhIG5vbi1tZXRhbGxpYyBib3dsIGFuZCBjb3Zlci4gSGVhdCBmb3IgMiB0byAzIG1pbnV0ZXMsIHN0aXJyaW5nIGhhbGZ3YXkuIENoZWNrIHRoZSBmb29kIGlzIGhvdCwgc3RpciB3ZWxsIGFuZCBzZXJ2ZS4gRG8gbm90IHJlaGVhdC48L3A+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+VG8gU3RvcmU8L2g1PlxcbjxwPlN0b3JlIGluIGEgY29vbCwgZHJ5IHBsYWNlLiBPbmNlIG9wZW5lZCwgdHJhbnNmZXIgY29udGVudHMgdG8gYSBub24tbWV0YWxsaWMgY29udGFpbmVyLCBjb3ZlciByZWZyaWdlcmF0ZSBhbmQgdXNlIHdpdGggMiBkYXlzLjwvcD5cXG48aDUgY2xhc3M9XFxcInByb2R1Y3QtZGV0YWlsLXRpdGxlXFxcIj5JbmdyZWRpZW50czwvaDU+XFxuPHA+RmF2YSBCZWFucyAoQnJvYWQgQmVhbnMpICg0MiUpLCBXYXRlciwgVG9tYXRvIFB1cmVlLCBTdWdhciwgTW9kaWZpZWQgTWFpemUgU3RhcmNoLCBTYWx0LCBIZXJicyAmYW1wOyBTcGljZXMsIENvbmNlbnRyYXRlZCBMZW1vbiBKdWljZTwvcD5cXG48aDUgY2xhc3M9XFxcInByb2R1Y3QtZGV0YWlsLXRpdGxlXFxcIj5BbGxlcmd5IGluZm9ybWF0aW9uPC9oNT5cXG48cD5ObyBBbGxlcmdlbnM8L3A+XFxuPHRhYmxlIHdpZHRoPVxcXCIxMDAlXFxcIj5cXG48dGJvZHk+XFxuPHRyPlxcbjx0ZD48c3Ryb25nPlR5cGljYWwgdmFsdWVzPC9zdHJvbmc+PC90ZD5cXG48dGQ+PHN0cm9uZz5QZXIgMTAwZzwvc3Ryb25nPjwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkVuZXJneTwvdGQ+XFxuPHRkPjI5MmtKICg2OWtjYWwpPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+RmF0PC90ZD5cXG48dGQ+MC40ZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPm9mIHdoaWNoIHNhdHVyYXRlczwvdGQ+XFxuPHRkPjAuMWc8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5DYXJib2h5ZHJhdGU8L3RkPlxcbjx0ZD4xMC4xZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPm9mIHdoaWNoIHN1Z2FyczwvdGQ+XFxuPHRkPjQuNmc8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5GaWJyZTwvdGQ+XFxuPHRkPjVnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+UHJvdGVpbjwvdGQ+XFxuPHRkPjRnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+U2FsdDwvdGQ+XFxuPHRkPjAuNmc8L3RkPlxcbjwvdHI+XFxuPC90Ym9keT5cXG48L3RhYmxlPjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPk1vcmU8L2g1PlxcbjxwPkRlbGljaW91cywgbnV0cml0aW91cyBhbmQgZ29vZCBmb3IgdGhlIHNvaWwsIGZhdmEgYmVhbnMgYXJlIGEgdmFyaWV0eSBvZiBicm9hZCBiZWFuLCBWaWNpYSBmYWJhLCBsZWZ0IHRvIHJpcGVuIGFuZCBkcnkgYmVmb3JlIGhhcnZlc3QuIFRoZXnigJlyZSBhbHNvIGtub3duIGFzIGZpZWxkIGJlYW5zLCBob3JzZSBiZWFucywgV2luZHNvciBiZWFucyBvciBmdWwuPC9wPlxcbjxwPlN1aXRhYmxlIGZvciB2ZWdhbnMgYW5kIHZlZ2V0YXJpYW5zPC9wPlxcblwiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86YjU3XCIsXCJkZmMtYjppbWFnZVwiOlwiaHR0cHM6Ly9jZG4uc2hvcGlmeS5jb20vcy9maWxlcy8xLzA3MzEvODQ4My83OTM5L3Byb2R1Y3RzL1BhY2stQ2FuLUJha2VkLUJlYW5zLTE4MDB4Nl85ODN4NjU2XzUxMzc1OGU2LTI2MTYtNDY4Ny1hOGIyLWJhNmRkZTg2NDkyMy5qcGc/dj0xNjc3NzYwNzc4XCIsXCJkZmMtYjpuYW1lXCI6XCJCYWtlZCBCcml0aXNoIEJlYW5zIC0gQ2FzZSwgMTIgeCA0MDBnIChjYW4pXCIsXCJkZmMtYjpyZWZlcmVuY2VkQnlcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY1MDA0MDMvY2F0YWxvZ0l0ZW1cIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NTAwNDAzL2NhdGFsb2dJdGVtXCIsXCJAdHlwZVwiOlwiZGZjLWI6Q2F0YWxvZ0l0ZW1cIixcImRmYy1iOm9mZmVyZWRUaHJvdWdoXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NTAwNDAzL29mZmVyXCIsXCJkZmMtYjpza3VcIjpcIk5DQkIvQ0RcIixcImRmYy1iOnN0b2NrTGltaXRhdGlvblwiOlwiLTFcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NTAwNDAzL29mZmVyXCIsXCJAdHlwZVwiOlwiZGZjLWI6T2ZmZXJcIixcImRmYy1iOmhhc1ByaWNlXCI6e1wiQGlkXCI6XCJfOmI1OFwifX0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NTMzMTcxXCIsXCJAdHlwZVwiOlwiZGZjLWI6U3VwcGxpZWRQcm9kdWN0XCIsXCJkZmMtYjpkZXNjcmlwdGlvblwiOlwiPHRhYmxlIHdpZHRoPVxcXCIxMDAlXFxcIj5cXG48dGJvZHk+XFxuPHRyIHN0eWxlPVxcXCJib3JkZXI6IDBweDtcXFwiPlxcbjx0ZCBiZ2NvbG9yPVxcXCIjZDZmYmVkXFxcIiBzdHlsZT1cXFwiY29sb3I6ICMwMDAwMDA7IGJvcmRlcjogMHB4O1xcXCI+PHN0cm9uZz5Tb3JyeSwgc3RhbmRhcmQgYmFybGV5IGZsYWtlcyBhcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZSBidXQgb3VyIGRlbGljaW91cyAgT3JnYW5pYyBOYWtlZCBCYXJsZXkgRmxha2VzIGFyZSBiYWNrLjwvc3Ryb25nPjwvdGQ+XFxuPC90cj5cXG48L3Rib2R5PlxcbjwvdGFibGU+PHA+T3VyIHJpY2ggYW5kIG1hbHR5IGJhcmxleSBmbGFrZXMgYXJlIGEgc3RvcmUgY3VwYm9hcmQgc3RhcGxlLiBPcmdhbmljYWxseSBncm93biBhbmQgbWlsbGVkIGluIHRoZSBVSywgdGhleSBhZGQgdGV4dHVyZSB0byBmbGFwamFjayBhbmQgYmlzY3VpdCByZWNpcGVzLCBvciB0byBtYWtlIGEgaGVhcnRpZXIsIHJ1c3RpYyBwb3JyaWRnZSDigJMgdHJ5IGJsZW5kaW5nIHdpdGggb3VyIG90aGVyIGZsYWtlczwvcD5cXG48IS0tIHNwbGl0IC0tPjxoMz5Db21wbGV0ZSBQcm9kdWN0IERldGFpbHM8L2gzPjxsaSBpZD1cXFwidGFiMVxcXCIgY2xhc3M9XFxcImFjdGl2ZVxcXCI+XFxuPHA+QmFybGV5IGZsYWtlcyBhcmUgZ3JlYXQgYWRkZWQgdG8gbXVlc2xpIG9yIGdyYW5vbGEsIG9yIHVzZWQgaW4gYmFraW5nIGFzIGEgdG9wcGluZyBvciBtaXhlZCBpbnRvIGRvdWdoLiBFYXQgdGhlbSBhcyBhIGNlcmVhbCwgYmFrZSB3aXRoIHRoZW0sIG9yIGFkZCB0aGVtIHRvIHNvdXBzIGFuZCBzdGV3cyB0byB0aGlja2VuLCBib29zdCB0aGVpciBudXRyaXRpb24gYW5kIGFkZCBmbGF2b3VyLjwvcD5cXG48aDUgY2xhc3M9XFxcInByb2R1Y3QtZGV0YWlsLXRpdGxlXFxcIj5Db29raW5nIGluc3RydWN0aW9uczwvaDU+XFxuPHA+VG8gZWF0IGFzIGEgbXVlc2xpLCBjb21iaW5lIHdpdGggb3RoZXIgY2VyZWFsIGZsYWtlcyBhbmQgZW5qb3kuIE9yIHVzZSBhcyBhbiBvYXQgc3Vic3RpdHV0ZSBpbiBhbnkgYmFraW5nIHJlY2lwZS48L3A+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+SW5ncmVkaWVudHM8L2g1PlxcbjxwPjxiPkJhcmxlecKgPC9iPkZsYWtlczwvcD5cXG48aDUgY2xhc3M9XFxcInByb2R1Y3QtZGV0YWlsLXRpdGxlXFxcIj5BbGxlcmd5IGluZm9ybWF0aW9uPC9oNT5cXG48cD5Gb3IgYWxsZXJnZW5zLCBpbmNsdWRpbmcgY2VyZWFscyBjb250YWluaW5nIGdsdXRlbiwgc2VlIGluZ3JlZGllbnRzIGluIDxzdHJvbmc+Ym9sZDwvc3Ryb25nPjwvcD5cXG48dGFibGUgd2lkdGg9XFxcIjEwMCVcXFwiPlxcbjx0Ym9keT5cXG48dHI+XFxuPHRkPjxzdHJvbmc+VHlwaWNhbCB2YWx1ZXM8L3N0cm9uZz48L3RkPlxcbjx0ZD48c3Ryb25nPlBlciAxMDBnPC9zdHJvbmc+PC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+RW5lcmd5PC90ZD5cXG48dGQ+MSw0MDFrSiAoMzMya2NhbCk8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5GYXQ8L3RkPlxcbjx0ZD4yLjFnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+b2Ygd2hpY2ggc2F0dXJhdGVzPC90ZD5cXG48dGQ+MC4wZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkNhcmJvaHlkcmF0ZTwvdGQ+XFxuPHRkPjU4LjNnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+b2Ygd2hpY2ggc3VnYXJzPC90ZD5cXG48dGQ+MS43ZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkZpYnJlPC90ZD5cXG48dGQ+MTcuM2c8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5Qcm90ZWluPC90ZD5cXG48dGQ+MTEuNGc8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5TYWx0PC90ZD5cXG48dGQ+MC4wZzwvdGQ+XFxuPC90cj5cXG48L3Rib2R5PlxcbjwvdGFibGU+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+TW9yZTwvaDU+XFxuPHVsPlxcbjxsaT5TdWl0YWJsZSBmb3IgdmVnYW5zIGFuZCB2ZWdldGFyaWFuc1xcbjwvbGk+XFxuPGxpPk5vIGFydGlmaWNpYWwgaW5ncmVkaWVudHNcXG48L2xpPlxcbjxsaT5HTSBmcmVlXFxuPC9saT5cXG48bGk+SGlnaCBGaWJyZVxcbjwvbGk+XFxuPC91bD5cXG48L2xpPlwiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86YjQ3XCIsXCJkZmMtYjppbWFnZVwiOlwiaHR0cHM6Ly9jZG4uc2hvcGlmeS5jb20vcy9maWxlcy8xLzA3MzEvODQ4My83OTM5L3Byb2R1Y3RzL0JhcmxleS1GbGFrZXMtMjQwMHgxNjAwX2MxMjE0MDdjLTZmZDItNDZjYS1hMTI0LWRiNWRmOTQ0MjM2OC5qcGc/dj0xNjc3NzYwNzgxXCIsXCJkZmMtYjpuYW1lXCI6XCJCYXJsZXkgRmxha2VzLCBPcmdhbmljIC0gUmV0YWlsIHBhY2ssIDUwMGdcIixcImRmYy1iOnJlZmVyZW5jZWRCeVwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjUzMzE3MS9jYXRhbG9nSXRlbVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY1MzMxNzEvY2F0YWxvZ0l0ZW1cIixcIkB0eXBlXCI6XCJkZmMtYjpDYXRhbG9nSXRlbVwiLFwiZGZjLWI6b2ZmZXJlZFRocm91Z2hcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY1MzMxNzEvb2ZmZXJcIixcImRmYy1iOnNrdVwiOlwiT0tCQVI1XCIsXCJkZmMtYjpzdG9ja0xpbWl0YXRpb25cIjpcIi0xXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjUzMzE3MS9vZmZlclwiLFwiQHR5cGVcIjpcImRmYy1iOk9mZmVyXCIsXCJkZmMtYjpoYXNQcmljZVwiOntcIkBpZFwiOlwiXzpiNDhcIn19LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjUzMzE3MS9wbGFubmVkQ29uc3VtcHRpb25GbG93XCIsXCJAdHlwZVwiOlwiZGZjLWI6QXNQbGFubmVkQ29uc3VtcHRpb25GbG93XCIsXCJkZmMtYjpjb25zdW1lc1wiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjUzMzE3MVwiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86Yjc1XCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjUzMzE3MS9wbGFubmVkUHJvZHVjdGlvbkZsb3dcIixcIkB0eXBlXCI6XCJkZmMtYjpBc1BsYW5uZWRQcm9kdWN0aW9uRmxvd1wiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86Yjc2XCIsXCJkZmMtYjpwcm9kdWNlc1wiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjU2NTkzOVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY1MzMxNzEvdHJhbnNmb3JtYXRpb25cIixcIkB0eXBlXCI6XCJkZmMtYjpBc1BsYW5uZWRUcmFuc2Zvcm1hdGlvblwiLFwiZGZjLWI6aGFzSW5jb21lXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NTMzMTcxL3BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcImRmYy1iOmhhc091dGNvbWVcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY1MzMxNzEvcGxhbm5lZFByb2R1Y3Rpb25GbG93XCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjU2NTkzOVwiLFwiQHR5cGVcIjpcImRmYy1iOlN1cHBsaWVkUHJvZHVjdFwiLFwiZGZjLWI6ZGVzY3JpcHRpb25cIjpcIjx0YWJsZSB3aWR0aD1cXFwiMTAwJVxcXCI+XFxuPHRib2R5Plxcbjx0ciBzdHlsZT1cXFwiYm9yZGVyOiAwcHg7XFxcIj5cXG48dGQgYmdjb2xvcj1cXFwiI2Q2ZmJlZFxcXCIgc3R5bGU9XFxcImNvbG9yOiAjMDAwMDAwOyBib3JkZXI6IDBweDtcXFwiPjxzdHJvbmc+U29ycnksIHN0YW5kYXJkIGJhcmxleSBmbGFrZXMgYXJlIG5vIGxvbmdlciBhdmFpbGFibGUgYnV0IG91ciBkZWxpY2lvdXMgIE9yZ2FuaWMgTmFrZWQgQmFybGV5IEZsYWtlcyBhcmUgYmFjay48L3N0cm9uZz48L3RkPlxcbjwvdHI+XFxuPC90Ym9keT5cXG48L3RhYmxlPjxwPk91ciByaWNoIGFuZCBtYWx0eSBiYXJsZXkgZmxha2VzIGFyZSBhIHN0b3JlIGN1cGJvYXJkIHN0YXBsZS4gT3JnYW5pY2FsbHkgZ3Jvd24gYW5kIG1pbGxlZCBpbiB0aGUgVUssIHRoZXkgYWRkIHRleHR1cmUgdG8gZmxhcGphY2sgYW5kIGJpc2N1aXQgcmVjaXBlcywgb3IgdG8gbWFrZSBhIGhlYXJ0aWVyLCBydXN0aWMgcG9ycmlkZ2Ug4oCTIHRyeSBibGVuZGluZyB3aXRoIG91ciBvdGhlciBmbGFrZXM8L3A+XFxuPCEtLSBzcGxpdCAtLT48aDM+Q29tcGxldGUgUHJvZHVjdCBEZXRhaWxzPC9oMz48bGkgaWQ9XFxcInRhYjFcXFwiIGNsYXNzPVxcXCJhY3RpdmVcXFwiPlxcbjxwPkJhcmxleSBmbGFrZXMgYXJlIGdyZWF0IGFkZGVkIHRvIG11ZXNsaSBvciBncmFub2xhLCBvciB1c2VkIGluIGJha2luZyBhcyBhIHRvcHBpbmcgb3IgbWl4ZWQgaW50byBkb3VnaC4gRWF0IHRoZW0gYXMgYSBjZXJlYWwsIGJha2Ugd2l0aCB0aGVtLCBvciBhZGQgdGhlbSB0byBzb3VwcyBhbmQgc3Rld3MgdG8gdGhpY2tlbiwgYm9vc3QgdGhlaXIgbnV0cml0aW9uIGFuZCBhZGQgZmxhdm91ci48L3A+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+Q29va2luZyBpbnN0cnVjdGlvbnM8L2g1PlxcbjxwPlRvIGVhdCBhcyBhIG11ZXNsaSwgY29tYmluZSB3aXRoIG90aGVyIGNlcmVhbCBmbGFrZXMgYW5kIGVuam95LiBPciB1c2UgYXMgYW4gb2F0IHN1YnN0aXR1dGUgaW4gYW55IGJha2luZyByZWNpcGUuPC9wPlxcbjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPkluZ3JlZGllbnRzPC9oNT5cXG48cD48Yj5CYXJsZXnCoDwvYj5GbGFrZXM8L3A+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+QWxsZXJneSBpbmZvcm1hdGlvbjwvaDU+XFxuPHA+Rm9yIGFsbGVyZ2VucywgaW5jbHVkaW5nIGNlcmVhbHMgY29udGFpbmluZyBnbHV0ZW4sIHNlZSBpbmdyZWRpZW50cyBpbiA8c3Ryb25nPmJvbGQ8L3N0cm9uZz48L3A+XFxuPHRhYmxlIHdpZHRoPVxcXCIxMDAlXFxcIj5cXG48dGJvZHk+XFxuPHRyPlxcbjx0ZD48c3Ryb25nPlR5cGljYWwgdmFsdWVzPC9zdHJvbmc+PC90ZD5cXG48dGQ+PHN0cm9uZz5QZXIgMTAwZzwvc3Ryb25nPjwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkVuZXJneTwvdGQ+XFxuPHRkPjEsNDAxa0ogKDMzMmtjYWwpPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+RmF0PC90ZD5cXG48dGQ+Mi4xZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPm9mIHdoaWNoIHNhdHVyYXRlczwvdGQ+XFxuPHRkPjAuMGc8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5DYXJib2h5ZHJhdGU8L3RkPlxcbjx0ZD41OC4zZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPm9mIHdoaWNoIHN1Z2FyczwvdGQ+XFxuPHRkPjEuN2c8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5GaWJyZTwvdGQ+XFxuPHRkPjE3LjNnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+UHJvdGVpbjwvdGQ+XFxuPHRkPjExLjRnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+U2FsdDwvdGQ+XFxuPHRkPjAuMGc8L3RkPlxcbjwvdHI+XFxuPC90Ym9keT5cXG48L3RhYmxlPlxcbjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPk1vcmU8L2g1Plxcbjx1bD5cXG48bGk+U3VpdGFibGUgZm9yIHZlZ2FucyBhbmQgdmVnZXRhcmlhbnNcXG48L2xpPlxcbjxsaT5ObyBhcnRpZmljaWFsIGluZ3JlZGllbnRzXFxuPC9saT5cXG48bGk+R00gZnJlZVxcbjwvbGk+XFxuPGxpPkhpZ2ggRmlicmVcXG48L2xpPlxcbjwvdWw+XFxuPC9saT5cIixcImRmYy1iOmhhc1F1YW50aXR5XCI6XCJfOmI2MVwiLFwiZGZjLWI6aW1hZ2VcIjpcImh0dHBzOi8vY2RuLnNob3BpZnkuY29tL3MvZmlsZXMvMS8wNzMxLzg0ODMvNzkzOS9wcm9kdWN0cy9CYXJsZXktRmxha2VzLTI0MDB4MTYwMF9jMTIxNDA3Yy02ZmQyLTQ2Y2EtYTEyNC1kYjVkZjk0NDIzNjguanBnP3Y9MTY3Nzc2MDc4MVwiLFwiZGZjLWI6bmFtZVwiOlwiQmFybGV5IEZsYWtlcywgT3JnYW5pYyAtIFN0YW5kYXJkIGNhc2UsIDEwIHggNTAwZ1wiLFwiZGZjLWI6cmVmZXJlbmNlZEJ5XCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NTY1OTM5L2NhdGFsb2dJdGVtXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjU2NTkzOS9jYXRhbG9nSXRlbVwiLFwiQHR5cGVcIjpcImRmYy1iOkNhdGFsb2dJdGVtXCIsXCJkZmMtYjpvZmZlcmVkVGhyb3VnaFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjU2NTkzOS9vZmZlclwiLFwiZGZjLWI6c2t1XCI6XCJPS0JBQ1hcIixcImRmYy1iOnN0b2NrTGltaXRhdGlvblwiOlwiLTFcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NTY1OTM5L29mZmVyXCIsXCJAdHlwZVwiOlwiZGZjLWI6T2ZmZXJcIixcImRmYy1iOmhhc1ByaWNlXCI6e1wiQGlkXCI6XCJfOmI2MlwifX0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDczMzQ4OTE1XCIsXCJAdHlwZVwiOlwiZGZjLWI6U3VwcGxpZWRQcm9kdWN0XCIsXCJkZmMtYjpkZXNjcmlwdGlvblwiOlwiPHA+PHN0cm9uZz5GZXJtZW50ZWQgd2hvbGVncmFpbiBuYWtlZCBiYXJsZXkswqB0YXN0eSBhbmQgc3VjY3VsZW50wqBncmFpbnMgb2YgcmljaCBtYWx0eSB1bWFtaSBmbGF2b3VyLjwvc3Ryb25nPjwvcD5cXG48cD5UaGVzZSB3aG9sZSBmZXJtZW50ZWQgYmFybGV5wqBncmFpbnMgYXJlIHBhY2tlZCB3aXRoIGRlZXAgZmxhdm91ciBhbmQgbWFrZSBhIGRlbGljaW91cyBhZGRpdGlvbiB0byBicmVhZCwgcmlzb3R0bywgc3Rld3MsIHNhbGFkcyBhbmQgbW9yZS48L3A+XFxuPCEtLSBzcGxpdCAtLT48aDM+Q29tcGxldGUgUHJvZHVjdCBEZXRhaWxzPC9oMz5cXG48cD5BZGQgaW50ZW5zZWx5IGZsYXZvdXJlZCBtYWx0eSBhbmQgc3VjY3VsZW50IGdyYWluc8KgZnVsbCBvZiB1bWFtaSByaWNobmVzcyB0byBicmVhZHMsIHJpc290dG8sIHN0ZXdzLCBzb3VwcywgYW5kIGV2ZW4gc2FsYWRzLjwvcD5cXG48aDUgY2xhc3M9XFxcInByb2R1Y3QtZGV0YWlsLXRpdGxlXFxcIj5Db29raW5nIGluc3RydWN0aW9uczwvaDU+XFxuPHA+QWRkIGFib3V0IGhhbGYgYSB0ZWFzcG9vbiBwZXIgc2VydmluZyB0byBhbG1vc3QgYW55IGRpc2ggZm9yIGFkZGVkIGRlcHRoLCB1bWFtaSByaWNobmVzcyBhbmQgbWFsdHkgZmxhdm91ci48L3A+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+VG8gc3RvcmU8L2g1PlxcbjxwPktlZXAgcmVmcmlnZXJhdGVkIGFuZCB1c2Ugd2l0aGluIDQgd2Vla3Mgb2Ygb3BlbmluZy48L3A+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+SW5ncmVkaWVudHM8L2g1PlxcbjxwPk5ha2VkIDxzdHJvbmc+QmFybGV5PC9zdHJvbmc+LCBXYXRlciwgPHN0cm9uZz5XaGVhdDwvc3Ryb25nPiBGbG91ciwgU2FsdCwgTGl2ZSBDdWx0dXJlcyo8YnI+ICo8ZW0+TGFjdG9iYWNpbGx1cyBkZWxicnVlY2tpaTwvZW0+LCA8ZW0+QXNwZXJnaWxsdXMgc29qYWU8L2VtPiwgPGVtPlp5Z29zYWNjaGFyb215Y2VzIHJvdXhpaTwvZW0+PC9wPlxcbjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPkFsbGVyZ3kgaW5mb3JtYXRpb248L2g1PlxcbjxwPkNvbnRhaW5zIDxzdHJvbmc+QmFybGV5IChHbHV0ZW4pPC9zdHJvbmc+LDxzdHJvbmc+IFdoZWF0IChHbHV0ZW4pPC9zdHJvbmc+PC9wPlxcbjx0YWJsZSB3aWR0aD1cXFwiMTAwJVxcXCI+XFxuPHRib2R5Plxcbjx0cj5cXG48dGQ+PHN0cm9uZz5UeXBpY2FsIHZhbHVlczwvc3Ryb25nPjwvdGQ+XFxuPHRkPjxzdHJvbmc+UGVyIDEwMGc8L3N0cm9uZz48L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5FbmVyZ3k8L3RkPlxcbjx0ZD41MDBrSiAoMTE5a2NhbCk8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5GYXQ8L3RkPlxcbjx0ZD4xLjdnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+b2Ygd2hpY2ggc2F0dXJhdGVzPC90ZD5cXG48dGQ+MC41ZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkNhcmJvaHlkcmF0ZTwvdGQ+XFxuPHRkPjE5LjFnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+b2Ygd2hpY2ggc3VnYXJzPC90ZD5cXG48dGQ+Mi43ZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkZpYnJlPC90ZD5cXG48dGQ+NS4yZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPlByb3RlaW48L3RkPlxcbjx0ZD40LjJnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+U2FsdDwvdGQ+XFxuPHRkPjguNWc8L3RkPlxcbjwvdHI+XFxuPC90Ym9keT5cXG48L3RhYmxlPjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPk1vcmU8L2g1PlxcbjxwPk91ciBGZXJtZW50ZWQgV2hvbGVncmFpbiBOYWtlZCBCYXJsZXkgaXMgZmVybWVudGVkIGluIHRoZSBzYW1lIHdheSBhcyBtYW55IHNveWEgZmVybWVudHMgdXNlZCBmb3IgYmxhY2sgYmVhbnMsIGJ1dCB1c2luZ8KgbmFrZWQgYmFybGV5IGdyYWluIGluc3RlYWQgb2Ygc295IGJlYW5zLiBJdCdzIG1hZGUgd2l0aCBqdXN0IG5ha2VkIGJhcmxleSBncmFpbnMsIHdhdGVyIGFuZCBzYWx0LCBmZXJtZW50ZWQgd2l0aCBhIGxpdmUgY3VsdHVyZSBvZiA8ZW0+TGFjdG9iYWNpbGx1cyBkZWxicnVlY2tpaTwvZW0+LCA8ZW0+QXNwZXJnaWxsdXMgc29qYWU8L2VtPiBhbmQgPGVtPlp5Z29zYWNjaGFyb215Y2VzIHJvdXhpaTwvZW0+LjwvcD5cXG48cD5TdWl0YWJsZSBmb3IgdmVnYW5zLjwvcD5cXG48cD5QYWNrZWQgaW4gcmVjeWNsYWJsZSBnbGFzcyBqYXIgd2l0aCBtZXRhbCBsaWQuPC9wPlwiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86YjUxXCIsXCJkZmMtYjppbWFnZVwiOlwiaHR0cHM6Ly9jZG4uc2hvcGlmeS5jb20vcy9maWxlcy8xLzA3MzEvODQ4My83OTM5L3Byb2R1Y3RzL0Zlcm1lbnRlZC1XaG9sZWdyYWluLU5ha2VkLUJhcmxleS1TcG9vbi0xNjAweDEwMDBfZDZmZWEwOTItZmRlNC00YTk4LWJlYzgtYmIzY2EwYTFmZDRkLmpwZz92PTE2Nzc3NjA4NjBcIixcImRmYy1iOm5hbWVcIjpcIkZlcm1lbnRlZCBOYWtlZCBCYXJsZXkgLSBSZXRhaWwgamFyLCAxNzVnIChqYXIpXCIsXCJkZmMtYjpyZWZlcmVuY2VkQnlcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NzMzNDg5MTUvY2F0YWxvZ0l0ZW1cIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDczMzQ4OTE1L2NhdGFsb2dJdGVtXCIsXCJAdHlwZVwiOlwiZGZjLWI6Q2F0YWxvZ0l0ZW1cIixcImRmYy1iOm9mZmVyZWRUaHJvdWdoXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDczMzQ4OTE1L29mZmVyXCIsXCJkZmMtYjpza3VcIjpcIk5NTkIvSkZcIixcImRmYy1iOnN0b2NrTGltaXRhdGlvblwiOlwiLTFcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDczMzQ4OTE1L29mZmVyXCIsXCJAdHlwZVwiOlwiZGZjLWI6T2ZmZXJcIixcImRmYy1iOmhhc1ByaWNlXCI6e1wiQGlkXCI6XCJfOmI1MlwifX0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDczMzQ4OTE1L3BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcIkB0eXBlXCI6XCJkZmMtYjpBc1BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcImRmYy1iOmNvbnN1bWVzXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDczMzQ4OTE1XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiNzlcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDczMzQ4OTE1L3BsYW5uZWRQcm9kdWN0aW9uRmxvd1wiLFwiQHR5cGVcIjpcImRmYy1iOkFzUGxhbm5lZFByb2R1Y3Rpb25GbG93XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiODBcIixcImRmYy1iOnByb2R1Y2VzXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDczMzgxNjgzXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ3MzM0ODkxNS90cmFuc2Zvcm1hdGlvblwiLFwiQHR5cGVcIjpcImRmYy1iOkFzUGxhbm5lZFRyYW5zZm9ybWF0aW9uXCIsXCJkZmMtYjpoYXNJbmNvbWVcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NzMzNDg5MTUvcGxhbm5lZENvbnN1bXB0aW9uRmxvd1wiLFwiZGZjLWI6aGFzT3V0Y29tZVwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ3MzM0ODkxNS9wbGFubmVkUHJvZHVjdGlvbkZsb3dcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDczMzgxNjgzXCIsXCJAdHlwZVwiOlwiZGZjLWI6U3VwcGxpZWRQcm9kdWN0XCIsXCJkZmMtYjpkZXNjcmlwdGlvblwiOlwiPHA+PHN0cm9uZz5GZXJtZW50ZWQgd2hvbGVncmFpbiBuYWtlZCBiYXJsZXkswqB0YXN0eSBhbmQgc3VjY3VsZW50wqBncmFpbnMgb2YgcmljaCBtYWx0eSB1bWFtaSBmbGF2b3VyLjwvc3Ryb25nPjwvcD5cXG48cD5UaGVzZSB3aG9sZSBmZXJtZW50ZWQgYmFybGV5wqBncmFpbnMgYXJlIHBhY2tlZCB3aXRoIGRlZXAgZmxhdm91ciBhbmQgbWFrZSBhIGRlbGljaW91cyBhZGRpdGlvbiB0byBicmVhZCwgcmlzb3R0bywgc3Rld3MsIHNhbGFkcyBhbmQgbW9yZS48L3A+XFxuPCEtLSBzcGxpdCAtLT48aDM+Q29tcGxldGUgUHJvZHVjdCBEZXRhaWxzPC9oMz5cXG48cD5BZGQgaW50ZW5zZWx5IGZsYXZvdXJlZCBtYWx0eSBhbmQgc3VjY3VsZW50IGdyYWluc8KgZnVsbCBvZiB1bWFtaSByaWNobmVzcyB0byBicmVhZHMsIHJpc290dG8sIHN0ZXdzLCBzb3VwcywgYW5kIGV2ZW4gc2FsYWRzLjwvcD5cXG48aDUgY2xhc3M9XFxcInByb2R1Y3QtZGV0YWlsLXRpdGxlXFxcIj5Db29raW5nIGluc3RydWN0aW9uczwvaDU+XFxuPHA+QWRkIGFib3V0IGhhbGYgYSB0ZWFzcG9vbiBwZXIgc2VydmluZyB0byBhbG1vc3QgYW55IGRpc2ggZm9yIGFkZGVkIGRlcHRoLCB1bWFtaSByaWNobmVzcyBhbmQgbWFsdHkgZmxhdm91ci48L3A+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+VG8gc3RvcmU8L2g1PlxcbjxwPktlZXAgcmVmcmlnZXJhdGVkIGFuZCB1c2Ugd2l0aGluIDQgd2Vla3Mgb2Ygb3BlbmluZy48L3A+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+SW5ncmVkaWVudHM8L2g1PlxcbjxwPk5ha2VkIDxzdHJvbmc+QmFybGV5PC9zdHJvbmc+LCBXYXRlciwgPHN0cm9uZz5XaGVhdDwvc3Ryb25nPiBGbG91ciwgU2FsdCwgTGl2ZSBDdWx0dXJlcyo8YnI+ICo8ZW0+TGFjdG9iYWNpbGx1cyBkZWxicnVlY2tpaTwvZW0+LCA8ZW0+QXNwZXJnaWxsdXMgc29qYWU8L2VtPiwgPGVtPlp5Z29zYWNjaGFyb215Y2VzIHJvdXhpaTwvZW0+PC9wPlxcbjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPkFsbGVyZ3kgaW5mb3JtYXRpb248L2g1PlxcbjxwPkNvbnRhaW5zIDxzdHJvbmc+QmFybGV5IChHbHV0ZW4pPC9zdHJvbmc+LDxzdHJvbmc+IFdoZWF0IChHbHV0ZW4pPC9zdHJvbmc+PC9wPlxcbjx0YWJsZSB3aWR0aD1cXFwiMTAwJVxcXCI+XFxuPHRib2R5Plxcbjx0cj5cXG48dGQ+PHN0cm9uZz5UeXBpY2FsIHZhbHVlczwvc3Ryb25nPjwvdGQ+XFxuPHRkPjxzdHJvbmc+UGVyIDEwMGc8L3N0cm9uZz48L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5FbmVyZ3k8L3RkPlxcbjx0ZD41MDBrSiAoMTE5a2NhbCk8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5GYXQ8L3RkPlxcbjx0ZD4xLjdnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+b2Ygd2hpY2ggc2F0dXJhdGVzPC90ZD5cXG48dGQ+MC41ZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkNhcmJvaHlkcmF0ZTwvdGQ+XFxuPHRkPjE5LjFnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+b2Ygd2hpY2ggc3VnYXJzPC90ZD5cXG48dGQ+Mi43ZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkZpYnJlPC90ZD5cXG48dGQ+NS4yZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPlByb3RlaW48L3RkPlxcbjx0ZD40LjJnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+U2FsdDwvdGQ+XFxuPHRkPjguNWc8L3RkPlxcbjwvdHI+XFxuPC90Ym9keT5cXG48L3RhYmxlPjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPk1vcmU8L2g1PlxcbjxwPk91ciBGZXJtZW50ZWQgV2hvbGVncmFpbiBOYWtlZCBCYXJsZXkgaXMgZmVybWVudGVkIGluIHRoZSBzYW1lIHdheSBhcyBtYW55IHNveWEgZmVybWVudHMgdXNlZCBmb3IgYmxhY2sgYmVhbnMsIGJ1dCB1c2luZ8KgbmFrZWQgYmFybGV5IGdyYWluIGluc3RlYWQgb2Ygc295IGJlYW5zLiBJdCdzIG1hZGUgd2l0aCBqdXN0IG5ha2VkIGJhcmxleSBncmFpbnMsIHdhdGVyIGFuZCBzYWx0LCBmZXJtZW50ZWQgd2l0aCBhIGxpdmUgY3VsdHVyZSBvZiA8ZW0+TGFjdG9iYWNpbGx1cyBkZWxicnVlY2tpaTwvZW0+LCA8ZW0+QXNwZXJnaWxsdXMgc29qYWU8L2VtPiBhbmQgPGVtPlp5Z29zYWNjaGFyb215Y2VzIHJvdXhpaTwvZW0+LjwvcD5cXG48cD5TdWl0YWJsZSBmb3IgdmVnYW5zLjwvcD5cXG48cD5QYWNrZWQgaW4gcmVjeWNsYWJsZSBnbGFzcyBqYXIgd2l0aCBtZXRhbCBsaWQuPC9wPlwiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86YjY1XCIsXCJkZmMtYjppbWFnZVwiOlwiaHR0cHM6Ly9jZG4uc2hvcGlmeS5jb20vcy9maWxlcy8xLzA3MzEvODQ4My83OTM5L3Byb2R1Y3RzL0Zlcm1lbnRlZC1XaG9sZWdyYWluLU5ha2VkLUJhcmxleS1TcG9vbi0xNjAweDEwMDBfZDZmZWEwOTItZmRlNC00YTk4LWJlYzgtYmIzY2EwYTFmZDRkLmpwZz92PTE2Nzc3NjA4NjBcIixcImRmYy1iOm5hbWVcIjpcIkZlcm1lbnRlZCBOYWtlZCBCYXJsZXkgLSBDYXNlLCA2IHggMTc1ZyAoamFyKVwiLFwiZGZjLWI6cmVmZXJlbmNlZEJ5XCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDczMzgxNjgzL2NhdGFsb2dJdGVtXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ3MzM4MTY4My9jYXRhbG9nSXRlbVwiLFwiQHR5cGVcIjpcImRmYy1iOkNhdGFsb2dJdGVtXCIsXCJkZmMtYjpvZmZlcmVkVGhyb3VnaFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ3MzM4MTY4My9vZmZlclwiLFwiZGZjLWI6c2t1XCI6XCJOTU5CL0M2XCIsXCJkZmMtYjpzdG9ja0xpbWl0YXRpb25cIjpcIi0xXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ3MzM4MTY4My9vZmZlclwiLFwiQHR5cGVcIjpcImRmYy1iOk9mZmVyXCIsXCJkZmMtYjpoYXNQcmljZVwiOntcIkBpZFwiOlwiXzpiNjZcIn19LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyNzI0NDg1MVwiLFwiQHR5cGVcIjpcImRmYy1iOlN1cHBsaWVkUHJvZHVjdFwiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86YjU5XCIsXCJkZmMtYjppbWFnZVwiOlwiaHR0cHM6Ly9jZG4uc2hvcGlmeS5jb20vcy9maWxlcy8xLzA3MzEvODQ4My83OTM5L3Byb2R1Y3RzL1BhY2stQ2FuLUJha2VkLUJlYW5zLTE4MDB4Nl9hNGQ1ODQ1OS1iZjUyLTQ4YTktYmFlNy04MDdmNDAzNWI4N2YuanBnP3Y9MTY3Nzc2MDc3N1wiLFwiZGZjLWI6bmFtZVwiOlwiQmFrZWQgQnJpdGlzaCBCZWFucyAoVG9MKSAtIENhc2UgLSAxMiB4IDQwMGcgY2Fuc1wiLFwiZGZjLWI6cmVmZXJlbmNlZEJ5XCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI3MjQ0ODUxL2NhdGFsb2dJdGVtXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyNzI0NDg1MS9jYXRhbG9nSXRlbVwiLFwiQHR5cGVcIjpcImRmYy1iOkNhdGFsb2dJdGVtXCIsXCJkZmMtYjpvZmZlcmVkVGhyb3VnaFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyNzI0NDg1MS9vZmZlclwiLFwiZGZjLWI6c2t1XCI6XCJOQ0JCQ0RcIixcImRmYy1iOnN0b2NrTGltaXRhdGlvblwiOlwiLTFcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI3MjQ0ODUxL29mZmVyXCIsXCJAdHlwZVwiOlwiZGZjLWI6T2ZmZXJcIixcImRmYy1iOmhhc1ByaWNlXCI6e1wiQGlkXCI6XCJfOmI2MFwifX0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI3Mjc3NjE5XCIsXCJAdHlwZVwiOlwiZGZjLWI6U3VwcGxpZWRQcm9kdWN0XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiNDVcIixcImRmYy1iOmltYWdlXCI6XCJodHRwczovL2Nkbi5zaG9waWZ5LmNvbS9zL2ZpbGVzLzEvMDczMS84NDgzLzc5MzkvcHJvZHVjdHMvUGFjay1DYW4tQmFrZWQtQmVhbnMtMTgwMHg2X2E0ZDU4NDU5LWJmNTItNDhhOS1iYWU3LTgwN2Y0MDM1Yjg3Zi5qcGc/dj0xNjc3NzYwNzc3XCIsXCJkZmMtYjpuYW1lXCI6XCJCYWtlZCBCcml0aXNoIEJlYW5zIChUb0wpIC0gU2luZ2xlIC0gNDAwZyBjYW5cIixcImRmYy1iOnJlZmVyZW5jZWRCeVwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyNzI3NzYxOS9jYXRhbG9nSXRlbVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2MjcyNzc2MTkvY2F0YWxvZ0l0ZW1cIixcIkB0eXBlXCI6XCJkZmMtYjpDYXRhbG9nSXRlbVwiLFwiZGZjLWI6b2ZmZXJlZFRocm91Z2hcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2MjcyNzc2MTkvb2ZmZXJcIixcImRmYy1iOnNrdVwiOlwiTkNCQlQ0XCIsXCJkZmMtYjpzdG9ja0xpbWl0YXRpb25cIjpcIjIwXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyNzI3NzYxOS9vZmZlclwiLFwiQHR5cGVcIjpcImRmYy1iOk9mZmVyXCIsXCJkZmMtYjpoYXNQcmljZVwiOntcIkBpZFwiOlwiXzpiNDZcIn19LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyNzI3NzYxOS9wbGFubmVkQ29uc3VtcHRpb25GbG93XCIsXCJAdHlwZVwiOlwiZGZjLWI6QXNQbGFubmVkQ29uc3VtcHRpb25GbG93XCIsXCJkZmMtYjpjb25zdW1lc1wiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyNzI3NzYxOVwiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86YjczXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyNzI3NzYxOS9wbGFubmVkUHJvZHVjdGlvbkZsb3dcIixcIkB0eXBlXCI6XCJkZmMtYjpBc1BsYW5uZWRQcm9kdWN0aW9uRmxvd1wiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86Yjc0XCIsXCJkZmMtYjpwcm9kdWNlc1wiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyNzI0NDg1MVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2MjcyNzc2MTkvdHJhbnNmb3JtYXRpb25cIixcIkB0eXBlXCI6XCJkZmMtYjpBc1BsYW5uZWRUcmFuc2Zvcm1hdGlvblwiLFwiZGZjLWI6aGFzSW5jb21lXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI3Mjc3NjE5L3BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcImRmYy1iOmhhc091dGNvbWVcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2MjcyNzc2MTkvcGxhbm5lZFByb2R1Y3Rpb25GbG93XCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyODc4NDk0N1wiLFwiQHR5cGVcIjpcImRmYy1iOlN1cHBsaWVkUHJvZHVjdFwiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86YjY3XCIsXCJkZmMtYjppbWFnZVwiOlwiaHR0cHM6Ly9jZG4uc2hvcGlmeS5jb20vcy9maWxlcy8xLzA3MzEvODQ4My83OTM5L3Byb2R1Y3RzL1dob2xlLUZhdmEtQmVhbnMtT3JnYW5pYy1DYW5uZWRfZmNiNjRmZDctOGNhMy00NjVhLThmNTYtNDQzY2YyOGUwYjcxLmpwZz92PTE2Nzc3NjA5NzdcIixcImRmYy1iOm5hbWVcIjpcIk9yZ2FuaWMgV2hvbGUgRmF2YSBCZWFucyBpbiBXYXRlciAoVG9MKSAtIENhc2UgLSAxMiB4IDQwMGcgY2Fuc1wiLFwiZGZjLWI6cmVmZXJlbmNlZEJ5XCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI4Nzg0OTQ3L2NhdGFsb2dJdGVtXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyODc4NDk0Ny9jYXRhbG9nSXRlbVwiLFwiQHR5cGVcIjpcImRmYy1iOkNhdGFsb2dJdGVtXCIsXCJkZmMtYjpvZmZlcmVkVGhyb3VnaFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyODc4NDk0Ny9vZmZlclwiLFwiZGZjLWI6c2t1XCI6XCJPQ0ZCQ0RcIixcImRmYy1iOnN0b2NrTGltaXRhdGlvblwiOlwiLTFcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI4Nzg0OTQ3L29mZmVyXCIsXCJAdHlwZVwiOlwiZGZjLWI6T2ZmZXJcIixcImRmYy1iOmhhc1ByaWNlXCI6e1wiQGlkXCI6XCJfOmI2OFwifX0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI4ODE3NzE1XCIsXCJAdHlwZVwiOlwiZGZjLWI6U3VwcGxpZWRQcm9kdWN0XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiNTNcIixcImRmYy1iOmltYWdlXCI6XCJodHRwczovL2Nkbi5zaG9waWZ5LmNvbS9zL2ZpbGVzLzEvMDczMS84NDgzLzc5MzkvcHJvZHVjdHMvV2hvbGUtRmF2YS1CZWFucy1PcmdhbmljLUNhbm5lZF9mY2I2NGZkNy04Y2EzLTQ2NWEtOGY1Ni00NDNjZjI4ZTBiNzEuanBnP3Y9MTY3Nzc2MDk3N1wiLFwiZGZjLWI6bmFtZVwiOlwiT3JnYW5pYyBXaG9sZSBGYXZhIEJlYW5zIGluIFdhdGVyIChUb0wpIC0gU2luZ2xlIC0gNDAwZyBjYW5cIixcImRmYy1iOnJlZmVyZW5jZWRCeVwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyODgxNzcxNS9jYXRhbG9nSXRlbVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2Mjg4MTc3MTUvY2F0YWxvZ0l0ZW1cIixcIkB0eXBlXCI6XCJkZmMtYjpDYXRhbG9nSXRlbVwiLFwiZGZjLWI6b2ZmZXJlZFRocm91Z2hcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2Mjg4MTc3MTUvb2ZmZXJcIixcImRmYy1iOnNrdVwiOlwiT0NGQlQ0XCIsXCJkZmMtYjpzdG9ja0xpbWl0YXRpb25cIjpcIi0xXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyODgxNzcxNS9vZmZlclwiLFwiQHR5cGVcIjpcImRmYy1iOk9mZmVyXCIsXCJkZmMtYjpoYXNQcmljZVwiOntcIkBpZFwiOlwiXzpiNTRcIn19LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyODgxNzcxNS9wbGFubmVkQ29uc3VtcHRpb25GbG93XCIsXCJAdHlwZVwiOlwiZGZjLWI6QXNQbGFubmVkQ29uc3VtcHRpb25GbG93XCIsXCJkZmMtYjpjb25zdW1lc1wiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyODgxNzcxNVwiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86YjgxXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyODgxNzcxNS9wbGFubmVkUHJvZHVjdGlvbkZsb3dcIixcIkB0eXBlXCI6XCJkZmMtYjpBc1BsYW5uZWRQcm9kdWN0aW9uRmxvd1wiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86YjgyXCIsXCJkZmMtYjpwcm9kdWNlc1wiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyODc4NDk0N1wifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2Mjg4MTc3MTUvdHJhbnNmb3JtYXRpb25cIixcIkB0eXBlXCI6XCJkZmMtYjpBc1BsYW5uZWRUcmFuc2Zvcm1hdGlvblwiLFwiZGZjLWI6aGFzSW5jb21lXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI4ODE3NzE1L3BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcImRmYy1iOmhhc091dGNvbWVcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2Mjg4MTc3MTUvcGxhbm5lZFByb2R1Y3Rpb25GbG93XCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTY1NDA0OTA3NVwiLFwiQHR5cGVcIjpcImRmYy1iOlN1cHBsaWVkUHJvZHVjdFwiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86YjQ5XCIsXCJkZmMtYjpuYW1lXCI6XCJDYXJsaW4gUGVhcyBpbiBXYXRlciwgT3JnYW5pYyAoRElTVFJJQlVUT1IpIC0gUmV0YWlsIGNhbiAoNDAwZyBjYW4pXCIsXCJkZmMtYjpyZWZlcmVuY2VkQnlcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NTQwNDkwNzUvY2F0YWxvZ0l0ZW1cIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjU0MDQ5MDc1L2NhdGFsb2dJdGVtXCIsXCJAdHlwZVwiOlwiZGZjLWI6Q2F0YWxvZ0l0ZW1cIixcImRmYy1iOm9mZmVyZWRUaHJvdWdoXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjU0MDQ5MDc1L29mZmVyXCIsXCJkZmMtYjpza3VcIjpcIk9DQ1BUNFwiLFwiZGZjLWI6c3RvY2tMaW1pdGF0aW9uXCI6XCItMVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NTQwNDkwNzUvb2ZmZXJcIixcIkB0eXBlXCI6XCJkZmMtYjpPZmZlclwiLFwiZGZjLWI6aGFzUHJpY2VcIjp7XCJAaWRcIjpcIl86YjUwXCJ9fSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NTQwNDkwNzUvcGxhbm5lZENvbnN1bXB0aW9uRmxvd1wiLFwiQHR5cGVcIjpcImRmYy1iOkFzUGxhbm5lZENvbnN1bXB0aW9uRmxvd1wiLFwiZGZjLWI6Y29uc3VtZXNcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NTQwNDkwNzVcIixcImRmYy1iOmhhc1F1YW50aXR5XCI6XCJfOmI3N1wifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NTQwNDkwNzUvcGxhbm5lZFByb2R1Y3Rpb25GbG93XCIsXCJAdHlwZVwiOlwiZGZjLWI6QXNQbGFubmVkUHJvZHVjdGlvbkZsb3dcIixcImRmYy1iOmhhc1F1YW50aXR5XCI6XCJfOmI3OFwiLFwiZGZjLWI6cHJvZHVjZXNcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NTQwODE4NDNcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjU0MDQ5MDc1L3RyYW5zZm9ybWF0aW9uXCIsXCJAdHlwZVwiOlwiZGZjLWI6QXNQbGFubmVkVHJhbnNmb3JtYXRpb25cIixcImRmYy1iOmhhc0luY29tZVwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTY1NDA0OTA3NS9wbGFubmVkQ29uc3VtcHRpb25GbG93XCIsXCJkZmMtYjpoYXNPdXRjb21lXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjU0MDQ5MDc1L3BsYW5uZWRQcm9kdWN0aW9uRmxvd1wifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NTQwODE4NDNcIixcIkB0eXBlXCI6XCJkZmMtYjpTdXBwbGllZFByb2R1Y3RcIixcImRmYy1iOmhhc1F1YW50aXR5XCI6XCJfOmI2M1wiLFwiZGZjLWI6bmFtZVwiOlwiQ2FybGluIFBlYXMgaW4gV2F0ZXIsIE9yZ2FuaWMgKERJU1RSSUJVVE9SKSAtIFN0YW5kYXJkIGNhc2UgKDEyIHggNDAwZyBjYW4pXCIsXCJkZmMtYjpyZWZlcmVuY2VkQnlcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NTQwODE4NDMvY2F0YWxvZ0l0ZW1cIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjU0MDgxODQzL2NhdGFsb2dJdGVtXCIsXCJAdHlwZVwiOlwiZGZjLWI6Q2F0YWxvZ0l0ZW1cIixcImRmYy1iOm9mZmVyZWRUaHJvdWdoXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjU0MDgxODQzL29mZmVyXCIsXCJkZmMtYjpza3VcIjpcIk9DQ1BDRFwiLFwiZGZjLWI6c3RvY2tMaW1pdGF0aW9uXCI6XCItMVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NTQwODE4NDMvb2ZmZXJcIixcIkB0eXBlXCI6XCJkZmMtYjpPZmZlclwiLFwiZGZjLWI6aGFzUHJpY2VcIjp7XCJAaWRcIjpcIl86YjY0XCJ9fSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NjM1ODQ1NjNcIixcIkB0eXBlXCI6XCJkZmMtYjpTdXBwbGllZFByb2R1Y3RcIixcImRmYy1iOmhhc1F1YW50aXR5XCI6XCJfOmI1NVwiLFwiZGZjLWI6bmFtZVwiOlwiUm9hc3RlZCBGYXZhIEJlYW5zLCBMaWdodGx5IFNlYSBTYWx0ZWQgKERJU1RSSUJVVE9SKSAtIFJldGFpbCBwYWNrICgzMDBnKVwiLFwiZGZjLWI6cmVmZXJlbmNlZEJ5XCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNTg0NTYzL2NhdGFsb2dJdGVtXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTY2MzU4NDU2My9jYXRhbG9nSXRlbVwiLFwiQHR5cGVcIjpcImRmYy1iOkNhdGFsb2dJdGVtXCIsXCJkZmMtYjpvZmZlcmVkVGhyb3VnaFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTY2MzU4NDU2My9vZmZlclwiLFwiZGZjLWI6c2t1XCI6XCJOUkZTUjNcIixcImRmYy1iOnN0b2NrTGltaXRhdGlvblwiOlwiLTFcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNTg0NTYzL29mZmVyXCIsXCJAdHlwZVwiOlwiZGZjLWI6T2ZmZXJcIixcImRmYy1iOmhhc1ByaWNlXCI6e1wiQGlkXCI6XCJfOmI1NlwifX0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNTg0NTYzL3BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcIkB0eXBlXCI6XCJkZmMtYjpBc1BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcImRmYy1iOmNvbnN1bWVzXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNTg0NTYzXCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiODNcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNTg0NTYzL3BsYW5uZWRQcm9kdWN0aW9uRmxvd1wiLFwiQHR5cGVcIjpcImRmYy1iOkFzUGxhbm5lZFByb2R1Y3Rpb25GbG93XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiODRcIixcImRmYy1iOnByb2R1Y2VzXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNjE3MzMxXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTY2MzU4NDU2My90cmFuc2Zvcm1hdGlvblwiLFwiQHR5cGVcIjpcImRmYy1iOkFzUGxhbm5lZFRyYW5zZm9ybWF0aW9uXCIsXCJkZmMtYjpoYXNJbmNvbWVcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NjM1ODQ1NjMvcGxhbm5lZENvbnN1bXB0aW9uRmxvd1wiLFwiZGZjLWI6aGFzT3V0Y29tZVwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTY2MzU4NDU2My9wbGFubmVkUHJvZHVjdGlvbkZsb3dcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNjE3MzMxXCIsXCJAdHlwZVwiOlwiZGZjLWI6U3VwcGxpZWRQcm9kdWN0XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiNjlcIixcImRmYy1iOm5hbWVcIjpcIlJvYXN0ZWQgRmF2YSBCZWFucywgTGlnaHRseSBTZWEgU2FsdGVkIChESVNUUklCVVRPUikgLSBTdGFuZGFyZCBjYXNlICgxMCB4IDMwMGcpXCIsXCJkZmMtYjpyZWZlcmVuY2VkQnlcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NjM2MTczMzEvY2F0YWxvZ0l0ZW1cIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNjE3MzMxL2NhdGFsb2dJdGVtXCIsXCJAdHlwZVwiOlwiZGZjLWI6Q2F0YWxvZ0l0ZW1cIixcImRmYy1iOm9mZmVyZWRUaHJvdWdoXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNjE3MzMxL29mZmVyXCIsXCJkZmMtYjpza3VcIjpcIk5SRlNDWFwiLFwiZGZjLWI6c3RvY2tMaW1pdGF0aW9uXCI6XCItMVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NjM2MTczMzEvb2ZmZXJcIixcIkB0eXBlXCI6XCJkZmMtYjpPZmZlclwiLFwiZGZjLWI6aGFzUHJpY2VcIjp7XCJAaWRcIjpcIl86YjcwXCJ9fV19IiwibGFzdElkIjoiODE0NzI5MjI1ODYxMSIsInJlbWFpbmluZ1Byb2R1Y3RzQ291bnRBZnRlciI6MCwic3VjY2VzcyI6dHJ1ZSwibWVzc2FnZSI6IlByb2R1Y3RzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHkifQ== + recorded_at: Fri, 24 May 2024 01:48:50 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/support/vcr_setup.rb b/spec/support/vcr_setup.rb index 5d5c155e27..bf2574a0b3 100644 --- a/spec/support/vcr_setup.rb +++ b/spec/support/vcr_setup.rb @@ -40,4 +40,9 @@ VCR.configure do |config| config.filter_sensitive_data('') { |interaction| interaction.response.body.match(/"refresh_token":"([^"]+)"/)&.public_send(:[], 1) } + + # FDC specific parameter: + config.filter_sensitive_data('') { |interaction| + interaction.request.body.match(/"accessToken":"([^"]+)"/)&.public_send(:[], 1) + } end From a1992aed7ca5215939f8c83ba010032d8cc02f43 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 28 May 2024 15:13:18 +1000 Subject: [PATCH 220/319] Handle string values for variant unit value The FDC API is returning all values as strings. This should probably be handled in the Connector long-term. --- .../app/services/quantitative_value_builder.rb | 2 +- .../services/quantitative_value_builder_spec.rb | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/engines/dfc_provider/app/services/quantitative_value_builder.rb b/engines/dfc_provider/app/services/quantitative_value_builder.rb index 3779463115..6baac1eecf 100644 --- a/engines/dfc_provider/app/services/quantitative_value_builder.rb +++ b/engines/dfc_provider/app/services/quantitative_value_builder.rb @@ -33,7 +33,7 @@ class QuantitativeValueBuilder < DfcBuilder product.variant_unit = measure product.variant_unit_name = unit_name if measure == "items" product.variant_unit_scale = unit_scale - product.unit_value = quantity.value * unit_scale + product.unit_value = quantity.value.to_f * unit_scale end # Map DFC units to OFN fields: diff --git a/engines/dfc_provider/spec/services/quantitative_value_builder_spec.rb b/engines/dfc_provider/spec/services/quantitative_value_builder_spec.rb index 4c5403e7e7..f18a58b561 100644 --- a/engines/dfc_provider/spec/services/quantitative_value_builder_spec.rb +++ b/engines/dfc_provider/spec/services/quantitative_value_builder_spec.rb @@ -104,6 +104,20 @@ RSpec.describe QuantitativeValueBuilder do expect(product.unit_value).to eq 0.005 end + it "interpretes values given as a string" do + quantity = DataFoodConsortium::Connector::QuantitativeValue.new( + unit: quantity_unit.KILOGRAM, + value: "0.4", + ) + + builder.apply(quantity, product) + + expect(product.variant_unit).to eq "weight" + expect(product.variant_unit_name).to eq nil + expect(product.variant_unit_scale).to eq 1_000 + expect(product.unit_value).to eq 400 + end + it "knows imperial units" do quantity = DataFoodConsortium::Connector::QuantitativeValue.new( unit: quantity_unit.POUNDMASS, From fae7a089ee329e92b42898237c60cad22aa5881c Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 24 May 2024 16:52:35 +1000 Subject: [PATCH 221/319] Import products from the FDC (Shopify) API --- .../admin/dfc_product_imports_controller.rb | 12 +- .../imports_from_a_FDC_catalog.yml | 206 ++++++++++++++++++ spec/system/admin/dfc_product_import_spec.rb | 23 ++ 3 files changed, 240 insertions(+), 1 deletion(-) create mode 100644 spec/fixtures/vcr_cassettes/DFC_Product_Import/imports_from_a_FDC_catalog.yml diff --git a/app/controllers/admin/dfc_product_imports_controller.rb b/app/controllers/admin/dfc_product_imports_controller.rb index 8dc580afbd..c1076ea775 100644 --- a/app/controllers/admin/dfc_product_imports_controller.rb +++ b/app/controllers/admin/dfc_product_imports_controller.rb @@ -20,7 +20,7 @@ module Admin catalog_url = params.require(:catalog_url) - json_catalog = DfcRequest.new(spree_current_user).call(catalog_url) + json_catalog = fetch_catalog(catalog_url) graph = DfcIo.import(json_catalog) # * First step: import all products for given enterprise. @@ -34,6 +34,16 @@ module Admin private + def fetch_catalog(url) + if url =~ /food-data-collaboration/ + fdc_json = FdcRequest.new(spree_current_user).call(url) + fdc_message = JSON.parse(fdc_json) + fdc_message["products"] + else + DfcRequest.new(spree_current_user).call(url) + end + end + # Most of this code is the same as in the DfcProvider::SuppliedProductsController. def import_product(subject, enterprise) return unless subject.is_a? DataFoodConsortium::Connector::SuppliedProduct diff --git a/spec/fixtures/vcr_cassettes/DFC_Product_Import/imports_from_a_FDC_catalog.yml b/spec/fixtures/vcr_cassettes/DFC_Product_Import/imports_from_a_FDC_catalog.yml new file mode 100644 index 0000000000..ad4af0b09b --- /dev/null +++ b/spec/fixtures/vcr_cassettes/DFC_Product_Import/imports_from_a_FDC_catalog.yml @@ -0,0 +1,206 @@ +--- +http_interactions: +- request: + method: post + uri: https://food-data-collaboration-produc-fe870152f634.herokuapp.com/fdc/products?shop=test-hodmedod.myshopify.com + body: + encoding: UTF-8 + string: '{"userId":"testdfc@protonmail.com","accessToken":""}' + headers: + Content-Type: + - application/json + Authorization: + - "" + User-Agent: + - Faraday v2.9.0 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 403 + message: Forbidden + headers: + Server: + - Cowboy + Report-To: + - '{"group":"heroku-nel","max_age":3600,"endpoints":[{"url":"https://nel.heroku.com/reports?ts=1716531220&sid=812dcc77-0bd0-43b1-a5f1-b25750382959&s=GSiP%2FtCyGGyQZrjxJKzy4%2F8ZDbqeNOf8qWTTKv61%2FjQ%3D"}]}' + Reporting-Endpoints: + - heroku-nel=https://nel.heroku.com/reports?ts=1716531220&sid=812dcc77-0bd0-43b1-a5f1-b25750382959&s=GSiP%2FtCyGGyQZrjxJKzy4%2F8ZDbqeNOf8qWTTKv61%2FjQ%3D + Nel: + - '{"report_to":"heroku-nel","max_age":3600,"success_fraction":0.005,"failure_fraction":0.05,"response_headers":["Via"]}' + Connection: + - keep-alive + X-Powered-By: + - Express + Access-Control-Allow-Origin: + - "*" + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '62' + Etag: + - W/"3e-3yNPCMU4MDQmKmieGPWfDcA/0Eg" + Date: + - Fri, 24 May 2024 06:13:41 GMT + Via: + - 1.1 vegur + body: + encoding: UTF-8 + string: '{"message":"User access denied","error":"User not authorized"}' + recorded_at: Fri, 24 May 2024 06:13:41 GMT +- request: + method: get + uri: https://login.lescommuns.org/auth/realms/data-food-consortium/.well-known/openid-configuration + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - SWD 2.0.3 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Date: + - Fri, 24 May 2024 06:13:42 GMT + Content-Type: + - application/json;charset=UTF-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Vary: + - Accept-Encoding + Set-Cookie: + - AUTH_SESSION_ID=1716531223.827.7041.811327|6055218c9898cae39f8ffd531999e49a; + Path=/; Secure; HttpOnly + Cache-Control: + - no-cache, must-revalidate, no-transform, no-store + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=15724800; includeSubDomains + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + body: + encoding: ASCII-8BIT + string: '{"issuer":"https://login.lescommuns.org/auth/realms/data-food-consortium","authorization_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/auth","token_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token","introspection_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token/introspect","userinfo_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/userinfo","end_session_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/logout","frontchannel_logout_session_supported":true,"frontchannel_logout_supported":true,"jwks_uri":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/certs","check_session_iframe":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/login-status-iframe.html","grant_types_supported":["authorization_code","implicit","refresh_token","password","client_credentials","urn:openid:params:grant-type:ciba","urn:ietf:params:oauth:grant-type:device_code"],"acr_values_supported":["0","1"],"response_types_supported":["code","none","id_token","token","id_token + token","code id_token","code token","code id_token token"],"subject_types_supported":["public","pairwise"],"id_token_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"id_token_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"id_token_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"userinfo_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512","none"],"userinfo_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"userinfo_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"request_object_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512","none"],"request_object_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"request_object_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"response_modes_supported":["query","fragment","form_post","query.jwt","fragment.jwt","form_post.jwt","jwt"],"registration_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/clients-registrations/openid-connect","token_endpoint_auth_methods_supported":["private_key_jwt","client_secret_basic","client_secret_post","tls_client_auth","client_secret_jwt"],"token_endpoint_auth_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"introspection_endpoint_auth_methods_supported":["private_key_jwt","client_secret_basic","client_secret_post","tls_client_auth","client_secret_jwt"],"introspection_endpoint_auth_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"authorization_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"authorization_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"authorization_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"claims_supported":["aud","sub","iss","auth_time","name","given_name","family_name","preferred_username","email","acr"],"claim_types_supported":["normal"],"claims_parameter_supported":true,"scopes_supported":["openid","microprofile-jwt","phone","roles","profile","email","address","web-origins","acr","offline_access"],"request_parameter_supported":true,"request_uri_parameter_supported":true,"require_request_uri_registration":true,"code_challenge_methods_supported":["plain","S256"],"tls_client_certificate_bound_access_tokens":true,"revocation_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/revoke","revocation_endpoint_auth_methods_supported":["private_key_jwt","client_secret_basic","client_secret_post","tls_client_auth","client_secret_jwt"],"revocation_endpoint_auth_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"backchannel_logout_supported":true,"backchannel_logout_session_supported":true,"device_authorization_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/auth/device","backchannel_token_delivery_modes_supported":["poll","ping"],"backchannel_authentication_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/ciba/auth","backchannel_authentication_request_signing_alg_values_supported":["PS384","ES384","RS384","ES256","RS256","ES512","PS256","PS512","RS512"],"require_pushed_authorization_requests":false,"pushed_authorization_request_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/par/request","mtls_endpoint_aliases":{"token_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token","revocation_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/revoke","introspection_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token/introspect","device_authorization_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/auth/device","registration_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/clients-registrations/openid-connect","userinfo_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/userinfo","pushed_authorization_request_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/par/request","backchannel_authentication_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/ciba/auth"},"authorization_response_iss_parameter_supported":true}' + recorded_at: Fri, 24 May 2024 06:13:43 GMT +- request: + method: post + uri: https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token + body: + encoding: UTF-8 + string: grant_type=refresh_token&refresh_token= + headers: + User-Agent: + - Rack::OAuth2 (2.2.1) + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Date: + - Fri, 24 May 2024 06:13:44 GMT + Content-Type: + - application/json + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Vary: + - Accept-Encoding + Set-Cookie: + - AUTH_SESSION_ID=1716531225.15.7041.192535|6055218c9898cae39f8ffd531999e49a; + Path=/; Secure; HttpOnly + Cache-Control: + - no-store + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=15724800; includeSubDomains + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + body: + encoding: ASCII-8BIT + string: '{"access_token":"","expires_in":1800,"refresh_expires_in":31357813,"refresh_token":"","token_type":"Bearer","id_token":"","not-before-policy":0,"session_state":"cfaa4a60-c2aa-4590-9fdf-a117f23d564f","scope":"openid + profile email"}' + recorded_at: Fri, 24 May 2024 06:13:44 GMT +- request: + method: post + uri: https://food-data-collaboration-produc-fe870152f634.herokuapp.com/fdc/products?shop=test-hodmedod.myshopify.com + body: + encoding: UTF-8 + string: '{"userId":"testdfc@protonmail.com","accessToken":""}' + headers: + Content-Type: + - application/json + Authorization: + - "" + User-Agent: + - Faraday v2.9.0 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - Cowboy + Report-To: + - '{"group":"heroku-nel","max_age":3600,"endpoints":[{"url":"https://nel.heroku.com/reports?ts=1716531225&sid=812dcc77-0bd0-43b1-a5f1-b25750382959&s=zHpdjRNvPwW4u7pYofDRsdOcjztCveqnM3K9GcGjhMU%3D"}]}' + Reporting-Endpoints: + - heroku-nel=https://nel.heroku.com/reports?ts=1716531225&sid=812dcc77-0bd0-43b1-a5f1-b25750382959&s=zHpdjRNvPwW4u7pYofDRsdOcjztCveqnM3K9GcGjhMU%3D + Nel: + - '{"report_to":"heroku-nel","max_age":3600,"success_fraction":0.005,"failure_fraction":0.05,"response_headers":["Via"]}' + Connection: + - keep-alive + X-Powered-By: + - Express + Access-Control-Allow-Origin: + - "*" + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '41161' + Etag: + - W/"a0c9-f4oAeN9fidSaWKNQXG3R8vniAac" + Date: + - Fri, 24 May 2024 06:13:49 GMT + Via: + - 1.1 vegur + body: + encoding: ASCII-8BIT + string: !binary |- + eyJwcm9kdWN0cyI6IntcIkBjb250ZXh0XCI6XCJodHRwczovL3d3dy5kYXRhZm9vZGNvbnNvcnRpdW0ub3JnXCIsXCJAZ3JhcGhcIjpbe1wiQGlkXCI6XCJfOmIxXCIsXCJAdHlwZVwiOlwiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWVcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOktpbG9ncmFtXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMC40XCJ9LHtcIkBpZFwiOlwiXzpiMTBcIixcIkB0eXBlXCI6XCJkZmMtYjpQcmljZVwiLFwiZGZjLWI6VkFUcmF0ZVwiOlwiMFwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06RXVyb1wiLFwiZGZjLWI6dmFsdWVcIjpcIjIuODlcIn0se1wiQGlkXCI6XCJfOmIxMVwiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpLaWxvZ3JhbVwiLFwiZGZjLWI6dmFsdWVcIjpcIjAuNFwifSx7XCJAaWRcIjpcIl86YjEyXCIsXCJAdHlwZVwiOlwiZGZjLWI6UHJpY2VcIixcImRmYy1iOlZBVHJhdGVcIjpcIjBcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOkV1cm9cIixcImRmYy1iOnZhbHVlXCI6XCIwLjk5XCJ9LHtcIkBpZFwiOlwiXzpiMTNcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06S2lsb2dyYW1cIixcImRmYy1iOnZhbHVlXCI6XCIwLjNcIn0se1wiQGlkXCI6XCJfOmIxNFwiLFwiQHR5cGVcIjpcImRmYy1iOlByaWNlXCIsXCJkZmMtYjpWQVRyYXRlXCI6XCIwXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpFdXJvXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMi45OVwifSx7XCJAaWRcIjpcIl86YjE1XCIsXCJAdHlwZVwiOlwiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWVcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOktpbG9ncmFtXCIsXCJkZmMtYjp2YWx1ZVwiOlwiNC44XCJ9LHtcIkBpZFwiOlwiXzpiMTZcIixcIkB0eXBlXCI6XCJkZmMtYjpQcmljZVwiLFwiZGZjLWI6VkFUcmF0ZVwiOlwiMFwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06RXVyb1wiLFwiZGZjLWI6dmFsdWVcIjpcIjE4Ljg1XCJ9LHtcIkBpZFwiOlwiXzpiMTdcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06S2lsb2dyYW1cIixcImRmYy1iOnZhbHVlXCI6XCI0LjhcIn0se1wiQGlkXCI6XCJfOmIxOFwiLFwiQHR5cGVcIjpcImRmYy1iOlByaWNlXCIsXCJkZmMtYjpWQVRyYXRlXCI6XCIwXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpFdXJvXCIsXCJkZmMtYjp2YWx1ZVwiOlwiNy40MlwifSx7XCJAaWRcIjpcIl86YjE5XCIsXCJAdHlwZVwiOlwiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWVcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOktpbG9ncmFtXCIsXCJkZmMtYjp2YWx1ZVwiOlwiNVwifSx7XCJAaWRcIjpcIl86YjJcIixcIkB0eXBlXCI6XCJkZmMtYjpQcmljZVwiLFwiZGZjLWI6VkFUcmF0ZVwiOlwiMFwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06RXVyb1wiLFwiZGZjLWI6dmFsdWVcIjpcIjIuMDlcIn0se1wiQGlkXCI6XCJfOmIyMFwiLFwiQHR5cGVcIjpcImRmYy1iOlByaWNlXCIsXCJkZmMtYjpWQVRyYXRlXCI6XCIwXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpFdXJvXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMTIuNjBcIn0se1wiQGlkXCI6XCJfOmIyMVwiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpLaWxvZ3JhbVwiLFwiZGZjLWI6dmFsdWVcIjpcIjQuOFwifSx7XCJAaWRcIjpcIl86YjIyXCIsXCJAdHlwZVwiOlwiZGZjLWI6UHJpY2VcIixcImRmYy1iOlZBVHJhdGVcIjpcIjBcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOkV1cm9cIixcImRmYy1iOnZhbHVlXCI6XCI4Ljc2XCJ9LHtcIkBpZFwiOlwiXzpiMjNcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06S2lsb2dyYW1cIixcImRmYy1iOnZhbHVlXCI6XCIxLjA1XCJ9LHtcIkBpZFwiOlwiXzpiMjRcIixcIkB0eXBlXCI6XCJkZmMtYjpQcmljZVwiLFwiZGZjLWI6VkFUcmF0ZVwiOlwiMFwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06RXVyb1wiLFwiZGZjLWI6dmFsdWVcIjpcIjEzLjA1XCJ9LHtcIkBpZFwiOlwiXzpiMjVcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06S2lsb2dyYW1cIixcImRmYy1iOnZhbHVlXCI6XCI0LjhcIn0se1wiQGlkXCI6XCJfOmIyNlwiLFwiQHR5cGVcIjpcImRmYy1iOlByaWNlXCIsXCJkZmMtYjpWQVRyYXRlXCI6XCIwXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpFdXJvXCIsXCJkZmMtYjp2YWx1ZVwiOlwiNi43NlwifSx7XCJAaWRcIjpcIl86YjI3XCIsXCJAdHlwZVwiOlwiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWVcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOktpbG9ncmFtXCIsXCJkZmMtYjp2YWx1ZVwiOlwiM1wifSx7XCJAaWRcIjpcIl86YjI4XCIsXCJAdHlwZVwiOlwiZGZjLWI6UHJpY2VcIixcImRmYy1iOlZBVHJhdGVcIjpcIjBcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOkV1cm9cIixcImRmYy1iOnZhbHVlXCI6XCIxNS45MFwifSx7XCJAaWRcIjpcIl86YjI5XCIsXCJAdHlwZVwiOlwiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWVcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOlBpZWNlXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMTJcIn0se1wiQGlkXCI6XCJfOmIzXCIsXCJAdHlwZVwiOlwiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWVcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOktpbG9ncmFtXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMC40XCJ9LHtcIkBpZFwiOlwiXzpiMzBcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06UGllY2VcIixcImRmYy1iOnZhbHVlXCI6XCIxXCJ9LHtcIkBpZFwiOlwiXzpiMzFcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06UGllY2VcIixcImRmYy1iOnZhbHVlXCI6XCIxMlwifSx7XCJAaWRcIjpcIl86YjMyXCIsXCJAdHlwZVwiOlwiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWVcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOlBpZWNlXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMVwifSx7XCJAaWRcIjpcIl86YjMzXCIsXCJAdHlwZVwiOlwiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWVcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOlBpZWNlXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMTBcIn0se1wiQGlkXCI6XCJfOmIzNFwiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpQaWVjZVwiLFwiZGZjLWI6dmFsdWVcIjpcIjFcIn0se1wiQGlkXCI6XCJfOmIzNVwiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpQaWVjZVwiLFwiZGZjLWI6dmFsdWVcIjpcIjEyXCJ9LHtcIkBpZFwiOlwiXzpiMzZcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06UGllY2VcIixcImRmYy1iOnZhbHVlXCI6XCIxXCJ9LHtcIkBpZFwiOlwiXzpiMzdcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06UGllY2VcIixcImRmYy1iOnZhbHVlXCI6XCI2XCJ9LHtcIkBpZFwiOlwiXzpiMzhcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06UGllY2VcIixcImRmYy1iOnZhbHVlXCI6XCIxXCJ9LHtcIkBpZFwiOlwiXzpiMzlcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06UGllY2VcIixcImRmYy1iOnZhbHVlXCI6XCIxMlwifSx7XCJAaWRcIjpcIl86YjRcIixcIkB0eXBlXCI6XCJkZmMtYjpQcmljZVwiLFwiZGZjLWI6VkFUcmF0ZVwiOlwiMFwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06RXVyb1wiLFwiZGZjLWI6dmFsdWVcIjpcIjEuMTlcIn0se1wiQGlkXCI6XCJfOmI0MFwiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpQaWVjZVwiLFwiZGZjLWI6dmFsdWVcIjpcIjFcIn0se1wiQGlkXCI6XCJfOmI0MVwiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpQaWVjZVwiLFwiZGZjLWI6dmFsdWVcIjpcIjEwXCJ9LHtcIkBpZFwiOlwiXzpiNDJcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06UGllY2VcIixcImRmYy1iOnZhbHVlXCI6XCIxXCJ9LHtcIkBpZFwiOlwiXzpiNVwiLFwiQHR5cGVcIjpcImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpLaWxvZ3JhbVwiLFwiZGZjLWI6dmFsdWVcIjpcIjAuNVwifSx7XCJAaWRcIjpcIl86YjZcIixcIkB0eXBlXCI6XCJkZmMtYjpQcmljZVwiLFwiZGZjLWI6VkFUcmF0ZVwiOlwiMFwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06RXVyb1wiLFwiZGZjLWI6dmFsdWVcIjpcIjEuNjlcIn0se1wiQGlkXCI6XCJfOmI3XCIsXCJAdHlwZVwiOlwiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWVcIixcImRmYy1iOmhhc1VuaXRcIjpcImRmYy1tOktpbG9ncmFtXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMC40XCJ9LHtcIkBpZFwiOlwiXzpiOFwiLFwiQHR5cGVcIjpcImRmYy1iOlByaWNlXCIsXCJkZmMtYjpWQVRyYXRlXCI6XCIwXCIsXCJkZmMtYjpoYXNVbml0XCI6XCJkZmMtbTpFdXJvXCIsXCJkZmMtYjp2YWx1ZVwiOlwiMS4zOVwifSx7XCJAaWRcIjpcIl86YjlcIixcIkB0eXBlXCI6XCJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZVwiLFwiZGZjLWI6aGFzVW5pdFwiOlwiZGZjLW06S2lsb2dyYW1cIixcImRmYy1iOnZhbHVlXCI6XCIwLjE3NVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY0Njc2MzVcIixcIkB0eXBlXCI6XCJkZmMtYjpTdXBwbGllZFByb2R1Y3RcIixcImRmYy1iOmRlc2NyaXB0aW9uXCI6XCI8dGFibGUgd2lkdGg9XFxcIjEwMCVcXFwiPlxcbjx0Ym9keT5cXG48dHIgc3R5bGU9XFxcImJvcmRlcjogMHB4O1xcXCI+XFxuPHRkIGJnY29sb3I9XFxcIiNkNmZiZWRcXFwiIHN0eWxlPVxcXCJjb2xvcjogIzAwMDAwMDsgYm9yZGVyOiAwcHg7XFxcIj48c3Ryb25nPlRoZXkncmUgYmFjayE8L3N0cm9uZz48L3RkPlxcbjwvdHI+XFxuPC90Ym9keT5cXG48L3RhYmxlPlxcbjxwPjxzdHJvbmc+VGhpbmsgYmFrZWQgYmVhbnMgYXJlIEJyaXRpc2g/IFRoZXkgYXJlIG5vdyEgV2UgdXNlIG9ubHkgQnJpdGlzaC1ncm93biBmYXZhIGJlYW5zIC0gQnJpdGFpbidzIG9yaWdpbmFsIGJlYW4sIGdyb3duIGhlcmUgc2luY2UgdGhlIElyb24gQWdlLiBPdXIgQmFrZWQgQnJpdGlzaCBCZWFucyBhcmUgZGVsaWNpb3VzbHkgZGlmZmVyZW50LCB3aXRoIGxhcmdlIG1lYXR5IGZhdmEgYmVhbnMgaW4gYSB0YXN0eSB0b21hdG8gc2F1Y2UuPC9zdHJvbmc+PC9wPlxcbjxwPjxzdHJvbmc+PGEgdGl0bGU9XFxcIldoYXQgYXJlIGZhdmEgYmVhbnM/IEFyZW4ndCB0aGV5IGp1c3QgYnJvYWQgYmVhbnM/XFxcIiBocmVmPVxcXCIvYmxvZ3MvbmV3cy93aGF0LWFyZS1mYXZhLWJlYW5zLWFyZS10aGV5LWp1c3QtYnJvYWQtYmVhbnNcXFwiIGRhdGEtbWNlLWZyYWdtZW50PVxcXCIxXFxcIiBkYXRhLW1jZS1ocmVmPVxcXCIvYmxvZ3MvbmV3cy93aGF0LWFyZS1mYXZhLWJlYW5zLWFyZS10aGV5LWp1c3QtYnJvYWQtYmVhbnNcXFwiPldoYXQgYXJlIGZhdmEgYmVhbnM/IEZpbmQgb3V0IGhlcmUuLi48L2E+PC9zdHJvbmc+PC9wPlxcbjwhLS0gc3BsaXQgLS0+PGgzPkNvbXBsZXRlIFByb2R1Y3QgRGV0YWlsczwvaDM+PHA+T3VyIEJha2VkIEJyaXRpc2ggQmVhbnMgYXJlIGNvb2tlZCBhbmQgcmVhZHkgdG8gZWF0LCBob3Qgb3IgY29sZC4gVGhleSdyZSBnb29kIHNlcnZlZCBvbiB0b2FzdCBidXQgYWxzbyBkZWxpY2lvdXMgYWRkZWQgdG8gc3Rld3MsIGN1cnJpZXMgb3IgY2Fzc2Vyb2xlcy4gT3IgZXZlbiBpbiBhIHBpZS48L3A+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+Q29va2luZyBpbnN0cnVjdGlvbnM8L2g1PlxcbjxwPjxzdHJvbmc+Q29va2luZyBvbiB0aGUgSG9iPC9zdHJvbmc+PGJyPkVtcHR5IGNvbnRlbnRzIGludG8gc2F1Y2VwYW4uIEhlYXQgZ2VudGx5IGZvciA0LTUgbWludXRlcyB3aGlsZSBzdGlycmluZy4gRm9yIGJlc3QgZmxhdm91ciBkbyBub3QgYm9pbCBvciBvdmVyY29vay4gRG8gbm90IHJlaGVhdC48L3A+XFxuPHA+PHN0cm9uZz5NaWNyb3dhdmUgQ29va2luZzwvc3Ryb25nPjxicj5FbXB0eSBjb250ZW50cyBpbnRvIGEgbm9uLW1ldGFsbGljIGJvd2wgYW5kIGNvdmVyLiBIZWF0IGZvciAyIHRvIDMgbWludXRlcywgc3RpcnJpbmcgaGFsZndheS4gQ2hlY2sgdGhlIGZvb2QgaXMgaG90LCBzdGlyIHdlbGwgYW5kIHNlcnZlLiBEbyBub3QgcmVoZWF0LjwvcD5cXG48aDUgY2xhc3M9XFxcInByb2R1Y3QtZGV0YWlsLXRpdGxlXFxcIj5UbyBTdG9yZTwvaDU+XFxuPHA+U3RvcmUgaW4gYSBjb29sLCBkcnkgcGxhY2UuIE9uY2Ugb3BlbmVkLCB0cmFuc2ZlciBjb250ZW50cyB0byBhIG5vbi1tZXRhbGxpYyBjb250YWluZXIsIGNvdmVyIHJlZnJpZ2VyYXRlIGFuZCB1c2Ugd2l0aCAyIGRheXMuPC9wPlxcbjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPkluZ3JlZGllbnRzPC9oNT5cXG48cD5GYXZhIEJlYW5zIChCcm9hZCBCZWFucykgKDQyJSksIFdhdGVyLCBUb21hdG8gUHVyZWUsIFN1Z2FyLCBNb2RpZmllZCBNYWl6ZSBTdGFyY2gsIFNhbHQsIEhlcmJzICZhbXA7IFNwaWNlcywgQ29uY2VudHJhdGVkIExlbW9uIEp1aWNlPC9wPlxcbjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPkFsbGVyZ3kgaW5mb3JtYXRpb248L2g1PlxcbjxwPk5vIEFsbGVyZ2VuczwvcD5cXG48dGFibGUgd2lkdGg9XFxcIjEwMCVcXFwiPlxcbjx0Ym9keT5cXG48dHI+XFxuPHRkPjxzdHJvbmc+VHlwaWNhbCB2YWx1ZXM8L3N0cm9uZz48L3RkPlxcbjx0ZD48c3Ryb25nPlBlciAxMDBnPC9zdHJvbmc+PC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+RW5lcmd5PC90ZD5cXG48dGQ+Mjkya0ogKDY5a2NhbCk8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5GYXQ8L3RkPlxcbjx0ZD4wLjRnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+b2Ygd2hpY2ggc2F0dXJhdGVzPC90ZD5cXG48dGQ+MC4xZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkNhcmJvaHlkcmF0ZTwvdGQ+XFxuPHRkPjEwLjFnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+b2Ygd2hpY2ggc3VnYXJzPC90ZD5cXG48dGQ+NC42ZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkZpYnJlPC90ZD5cXG48dGQ+NWc8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5Qcm90ZWluPC90ZD5cXG48dGQ+NGc8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5TYWx0PC90ZD5cXG48dGQ+MC42ZzwvdGQ+XFxuPC90cj5cXG48L3Rib2R5PlxcbjwvdGFibGU+PGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+TW9yZTwvaDU+XFxuPHA+RGVsaWNpb3VzLCBudXRyaXRpb3VzIGFuZCBnb29kIGZvciB0aGUgc29pbCwgZmF2YSBiZWFucyBhcmUgYSB2YXJpZXR5IG9mIGJyb2FkIGJlYW4sIFZpY2lhIGZhYmEsIGxlZnQgdG8gcmlwZW4gYW5kIGRyeSBiZWZvcmUgaGFydmVzdC4gVGhleeKAmXJlIGFsc28ga25vd24gYXMgZmllbGQgYmVhbnMsIGhvcnNlIGJlYW5zLCBXaW5kc29yIGJlYW5zIG9yIGZ1bC48L3A+XFxuPHA+U3VpdGFibGUgZm9yIHZlZ2FucyBhbmQgdmVnZXRhcmlhbnM8L3A+XFxuXCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiMVwiLFwiZGZjLWI6aW1hZ2VcIjpcImh0dHBzOi8vY2RuLnNob3BpZnkuY29tL3MvZmlsZXMvMS8wNzMxLzg0ODMvNzkzOS9wcm9kdWN0cy9QYWNrLUNhbi1CYWtlZC1CZWFucy0xODAweDZfOTgzeDY1Nl81MTM3NThlNi0yNjE2LTQ2ODctYThiMi1iYTZkZGU4NjQ5MjMuanBnP3Y9MTY3Nzc2MDc3OFwiLFwiZGZjLWI6bmFtZVwiOlwiQmFrZWQgQnJpdGlzaCBCZWFucyAtIFJldGFpbCBjYW4sIDQwMGcgKGNhbilcIixcImRmYy1iOnJlZmVyZW5jZWRCeVwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjQ2NzYzNS9jYXRhbG9nSXRlbVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY0Njc2MzUvY2F0YWxvZ0l0ZW1cIixcIkB0eXBlXCI6XCJkZmMtYjpDYXRhbG9nSXRlbVwiLFwiZGZjLWI6b2ZmZXJlZFRocm91Z2hcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY0Njc2MzUvb2ZmZXJcIixcImRmYy1iOnNrdVwiOlwiTkNCQi9UNFwiLFwiZGZjLWI6c3RvY2tMaW1pdGF0aW9uXCI6XCItMVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY0Njc2MzUvb2ZmZXJcIixcIkB0eXBlXCI6XCJkZmMtYjpPZmZlclwiLFwiZGZjLWI6aGFzUHJpY2VcIjp7XCJAaWRcIjpcIl86YjJcIn19LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjQ2NzYzNS9wbGFubmVkQ29uc3VtcHRpb25GbG93XCIsXCJAdHlwZVwiOlwiZGZjLWI6QXNQbGFubmVkQ29uc3VtcHRpb25GbG93XCIsXCJkZmMtYjpjb25zdW1lc1wiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjQ2NzYzNVwiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86YjI5XCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjQ2NzYzNS9wbGFubmVkUHJvZHVjdGlvbkZsb3dcIixcIkB0eXBlXCI6XCJkZmMtYjpBc1BsYW5uZWRQcm9kdWN0aW9uRmxvd1wiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86YjMwXCIsXCJkZmMtYjpwcm9kdWNlc1wiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjUwMDQwM1wifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY0Njc2MzUvdHJhbnNmb3JtYXRpb25cIixcIkB0eXBlXCI6XCJkZmMtYjpBc1BsYW5uZWRUcmFuc2Zvcm1hdGlvblwiLFwiZGZjLWI6aGFzSW5jb21lXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NDY3NjM1L3BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcImRmYy1iOmhhc091dGNvbWVcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY0Njc2MzUvcGxhbm5lZFByb2R1Y3Rpb25GbG93XCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjUwMDQwM1wiLFwiQHR5cGVcIjpcImRmYy1iOlN1cHBsaWVkUHJvZHVjdFwiLFwiZGZjLWI6ZGVzY3JpcHRpb25cIjpcIjx0YWJsZSB3aWR0aD1cXFwiMTAwJVxcXCI+XFxuPHRib2R5Plxcbjx0ciBzdHlsZT1cXFwiYm9yZGVyOiAwcHg7XFxcIj5cXG48dGQgYmdjb2xvcj1cXFwiI2Q2ZmJlZFxcXCIgc3R5bGU9XFxcImNvbG9yOiAjMDAwMDAwOyBib3JkZXI6IDBweDtcXFwiPjxzdHJvbmc+VGhleSdyZSBiYWNrITwvc3Ryb25nPjwvdGQ+XFxuPC90cj5cXG48L3Rib2R5PlxcbjwvdGFibGU+XFxuPHA+PHN0cm9uZz5UaGluayBiYWtlZCBiZWFucyBhcmUgQnJpdGlzaD8gVGhleSBhcmUgbm93ISBXZSB1c2Ugb25seSBCcml0aXNoLWdyb3duIGZhdmEgYmVhbnMgLSBCcml0YWluJ3Mgb3JpZ2luYWwgYmVhbiwgZ3Jvd24gaGVyZSBzaW5jZSB0aGUgSXJvbiBBZ2UuIE91ciBCYWtlZCBCcml0aXNoIEJlYW5zIGFyZSBkZWxpY2lvdXNseSBkaWZmZXJlbnQsIHdpdGggbGFyZ2UgbWVhdHkgZmF2YSBiZWFucyBpbiBhIHRhc3R5IHRvbWF0byBzYXVjZS48L3N0cm9uZz48L3A+XFxuPHA+PHN0cm9uZz48YSB0aXRsZT1cXFwiV2hhdCBhcmUgZmF2YSBiZWFucz8gQXJlbid0IHRoZXkganVzdCBicm9hZCBiZWFucz9cXFwiIGhyZWY9XFxcIi9ibG9ncy9uZXdzL3doYXQtYXJlLWZhdmEtYmVhbnMtYXJlLXRoZXktanVzdC1icm9hZC1iZWFuc1xcXCIgZGF0YS1tY2UtZnJhZ21lbnQ9XFxcIjFcXFwiIGRhdGEtbWNlLWhyZWY9XFxcIi9ibG9ncy9uZXdzL3doYXQtYXJlLWZhdmEtYmVhbnMtYXJlLXRoZXktanVzdC1icm9hZC1iZWFuc1xcXCI+V2hhdCBhcmUgZmF2YSBiZWFucz8gRmluZCBvdXQgaGVyZS4uLjwvYT48L3N0cm9uZz48L3A+XFxuPCEtLSBzcGxpdCAtLT48aDM+Q29tcGxldGUgUHJvZHVjdCBEZXRhaWxzPC9oMz48cD5PdXIgQmFrZWQgQnJpdGlzaCBCZWFucyBhcmUgY29va2VkIGFuZCByZWFkeSB0byBlYXQsIGhvdCBvciBjb2xkLiBUaGV5J3JlIGdvb2Qgc2VydmVkIG9uIHRvYXN0IGJ1dCBhbHNvIGRlbGljaW91cyBhZGRlZCB0byBzdGV3cywgY3VycmllcyBvciBjYXNzZXJvbGVzLiBPciBldmVuIGluIGEgcGllLjwvcD5cXG48aDUgY2xhc3M9XFxcInByb2R1Y3QtZGV0YWlsLXRpdGxlXFxcIj5Db29raW5nIGluc3RydWN0aW9uczwvaDU+XFxuPHA+PHN0cm9uZz5Db29raW5nIG9uIHRoZSBIb2I8L3N0cm9uZz48YnI+RW1wdHkgY29udGVudHMgaW50byBzYXVjZXBhbi4gSGVhdCBnZW50bHkgZm9yIDQtNSBtaW51dGVzIHdoaWxlIHN0aXJyaW5nLiBGb3IgYmVzdCBmbGF2b3VyIGRvIG5vdCBib2lsIG9yIG92ZXJjb29rLiBEbyBub3QgcmVoZWF0LjwvcD5cXG48cD48c3Ryb25nPk1pY3Jvd2F2ZSBDb29raW5nPC9zdHJvbmc+PGJyPkVtcHR5IGNvbnRlbnRzIGludG8gYSBub24tbWV0YWxsaWMgYm93bCBhbmQgY292ZXIuIEhlYXQgZm9yIDIgdG8gMyBtaW51dGVzLCBzdGlycmluZyBoYWxmd2F5LiBDaGVjayB0aGUgZm9vZCBpcyBob3QsIHN0aXIgd2VsbCBhbmQgc2VydmUuIERvIG5vdCByZWhlYXQuPC9wPlxcbjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPlRvIFN0b3JlPC9oNT5cXG48cD5TdG9yZSBpbiBhIGNvb2wsIGRyeSBwbGFjZS4gT25jZSBvcGVuZWQsIHRyYW5zZmVyIGNvbnRlbnRzIHRvIGEgbm9uLW1ldGFsbGljIGNvbnRhaW5lciwgY292ZXIgcmVmcmlnZXJhdGUgYW5kIHVzZSB3aXRoIDIgZGF5cy48L3A+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+SW5ncmVkaWVudHM8L2g1PlxcbjxwPkZhdmEgQmVhbnMgKEJyb2FkIEJlYW5zKSAoNDIlKSwgV2F0ZXIsIFRvbWF0byBQdXJlZSwgU3VnYXIsIE1vZGlmaWVkIE1haXplIFN0YXJjaCwgU2FsdCwgSGVyYnMgJmFtcDsgU3BpY2VzLCBDb25jZW50cmF0ZWQgTGVtb24gSnVpY2U8L3A+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+QWxsZXJneSBpbmZvcm1hdGlvbjwvaDU+XFxuPHA+Tm8gQWxsZXJnZW5zPC9wPlxcbjx0YWJsZSB3aWR0aD1cXFwiMTAwJVxcXCI+XFxuPHRib2R5Plxcbjx0cj5cXG48dGQ+PHN0cm9uZz5UeXBpY2FsIHZhbHVlczwvc3Ryb25nPjwvdGQ+XFxuPHRkPjxzdHJvbmc+UGVyIDEwMGc8L3N0cm9uZz48L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5FbmVyZ3k8L3RkPlxcbjx0ZD4yOTJrSiAoNjlrY2FsKTwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkZhdDwvdGQ+XFxuPHRkPjAuNGc8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5vZiB3aGljaCBzYXR1cmF0ZXM8L3RkPlxcbjx0ZD4wLjFnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+Q2FyYm9oeWRyYXRlPC90ZD5cXG48dGQ+MTAuMWc8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5vZiB3aGljaCBzdWdhcnM8L3RkPlxcbjx0ZD40LjZnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+RmlicmU8L3RkPlxcbjx0ZD41ZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPlByb3RlaW48L3RkPlxcbjx0ZD40ZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPlNhbHQ8L3RkPlxcbjx0ZD4wLjZnPC90ZD5cXG48L3RyPlxcbjwvdGJvZHk+XFxuPC90YWJsZT48aDUgY2xhc3M9XFxcInByb2R1Y3QtZGV0YWlsLXRpdGxlXFxcIj5Nb3JlPC9oNT5cXG48cD5EZWxpY2lvdXMsIG51dHJpdGlvdXMgYW5kIGdvb2QgZm9yIHRoZSBzb2lsLCBmYXZhIGJlYW5zIGFyZSBhIHZhcmlldHkgb2YgYnJvYWQgYmVhbiwgVmljaWEgZmFiYSwgbGVmdCB0byByaXBlbiBhbmQgZHJ5IGJlZm9yZSBoYXJ2ZXN0LiBUaGV54oCZcmUgYWxzbyBrbm93biBhcyBmaWVsZCBiZWFucywgaG9yc2UgYmVhbnMsIFdpbmRzb3IgYmVhbnMgb3IgZnVsLjwvcD5cXG48cD5TdWl0YWJsZSBmb3IgdmVnYW5zIGFuZCB2ZWdldGFyaWFuczwvcD5cXG5cIixcImRmYy1iOmhhc1F1YW50aXR5XCI6XCJfOmIxNVwiLFwiZGZjLWI6aW1hZ2VcIjpcImh0dHBzOi8vY2RuLnNob3BpZnkuY29tL3MvZmlsZXMvMS8wNzMxLzg0ODMvNzkzOS9wcm9kdWN0cy9QYWNrLUNhbi1CYWtlZC1CZWFucy0xODAweDZfOTgzeDY1Nl81MTM3NThlNi0yNjE2LTQ2ODctYThiMi1iYTZkZGU4NjQ5MjMuanBnP3Y9MTY3Nzc2MDc3OFwiLFwiZGZjLWI6bmFtZVwiOlwiQmFrZWQgQnJpdGlzaCBCZWFucyAtIENhc2UsIDEyIHggNDAwZyAoY2FuKVwiLFwiZGZjLWI6cmVmZXJlbmNlZEJ5XCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NTAwNDAzL2NhdGFsb2dJdGVtXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjUwMDQwMy9jYXRhbG9nSXRlbVwiLFwiQHR5cGVcIjpcImRmYy1iOkNhdGFsb2dJdGVtXCIsXCJkZmMtYjpvZmZlcmVkVGhyb3VnaFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjUwMDQwMy9vZmZlclwiLFwiZGZjLWI6c2t1XCI6XCJOQ0JCL0NEXCIsXCJkZmMtYjpzdG9ja0xpbWl0YXRpb25cIjpcIi0xXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjUwMDQwMy9vZmZlclwiLFwiQHR5cGVcIjpcImRmYy1iOk9mZmVyXCIsXCJkZmMtYjpoYXNQcmljZVwiOntcIkBpZFwiOlwiXzpiMTZcIn19LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjUzMzE3MVwiLFwiQHR5cGVcIjpcImRmYy1iOlN1cHBsaWVkUHJvZHVjdFwiLFwiZGZjLWI6ZGVzY3JpcHRpb25cIjpcIjx0YWJsZSB3aWR0aD1cXFwiMTAwJVxcXCI+XFxuPHRib2R5Plxcbjx0ciBzdHlsZT1cXFwiYm9yZGVyOiAwcHg7XFxcIj5cXG48dGQgYmdjb2xvcj1cXFwiI2Q2ZmJlZFxcXCIgc3R5bGU9XFxcImNvbG9yOiAjMDAwMDAwOyBib3JkZXI6IDBweDtcXFwiPjxzdHJvbmc+U29ycnksIHN0YW5kYXJkIGJhcmxleSBmbGFrZXMgYXJlIG5vIGxvbmdlciBhdmFpbGFibGUgYnV0IG91ciBkZWxpY2lvdXMgIE9yZ2FuaWMgTmFrZWQgQmFybGV5IEZsYWtlcyBhcmUgYmFjay48L3N0cm9uZz48L3RkPlxcbjwvdHI+XFxuPC90Ym9keT5cXG48L3RhYmxlPjxwPk91ciByaWNoIGFuZCBtYWx0eSBiYXJsZXkgZmxha2VzIGFyZSBhIHN0b3JlIGN1cGJvYXJkIHN0YXBsZS4gT3JnYW5pY2FsbHkgZ3Jvd24gYW5kIG1pbGxlZCBpbiB0aGUgVUssIHRoZXkgYWRkIHRleHR1cmUgdG8gZmxhcGphY2sgYW5kIGJpc2N1aXQgcmVjaXBlcywgb3IgdG8gbWFrZSBhIGhlYXJ0aWVyLCBydXN0aWMgcG9ycmlkZ2Ug4oCTIHRyeSBibGVuZGluZyB3aXRoIG91ciBvdGhlciBmbGFrZXM8L3A+XFxuPCEtLSBzcGxpdCAtLT48aDM+Q29tcGxldGUgUHJvZHVjdCBEZXRhaWxzPC9oMz48bGkgaWQ9XFxcInRhYjFcXFwiIGNsYXNzPVxcXCJhY3RpdmVcXFwiPlxcbjxwPkJhcmxleSBmbGFrZXMgYXJlIGdyZWF0IGFkZGVkIHRvIG11ZXNsaSBvciBncmFub2xhLCBvciB1c2VkIGluIGJha2luZyBhcyBhIHRvcHBpbmcgb3IgbWl4ZWQgaW50byBkb3VnaC4gRWF0IHRoZW0gYXMgYSBjZXJlYWwsIGJha2Ugd2l0aCB0aGVtLCBvciBhZGQgdGhlbSB0byBzb3VwcyBhbmQgc3Rld3MgdG8gdGhpY2tlbiwgYm9vc3QgdGhlaXIgbnV0cml0aW9uIGFuZCBhZGQgZmxhdm91ci48L3A+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+Q29va2luZyBpbnN0cnVjdGlvbnM8L2g1PlxcbjxwPlRvIGVhdCBhcyBhIG11ZXNsaSwgY29tYmluZSB3aXRoIG90aGVyIGNlcmVhbCBmbGFrZXMgYW5kIGVuam95LiBPciB1c2UgYXMgYW4gb2F0IHN1YnN0aXR1dGUgaW4gYW55IGJha2luZyByZWNpcGUuPC9wPlxcbjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPkluZ3JlZGllbnRzPC9oNT5cXG48cD48Yj5CYXJsZXnCoDwvYj5GbGFrZXM8L3A+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+QWxsZXJneSBpbmZvcm1hdGlvbjwvaDU+XFxuPHA+Rm9yIGFsbGVyZ2VucywgaW5jbHVkaW5nIGNlcmVhbHMgY29udGFpbmluZyBnbHV0ZW4sIHNlZSBpbmdyZWRpZW50cyBpbiA8c3Ryb25nPmJvbGQ8L3N0cm9uZz48L3A+XFxuPHRhYmxlIHdpZHRoPVxcXCIxMDAlXFxcIj5cXG48dGJvZHk+XFxuPHRyPlxcbjx0ZD48c3Ryb25nPlR5cGljYWwgdmFsdWVzPC9zdHJvbmc+PC90ZD5cXG48dGQ+PHN0cm9uZz5QZXIgMTAwZzwvc3Ryb25nPjwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkVuZXJneTwvdGQ+XFxuPHRkPjEsNDAxa0ogKDMzMmtjYWwpPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+RmF0PC90ZD5cXG48dGQ+Mi4xZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPm9mIHdoaWNoIHNhdHVyYXRlczwvdGQ+XFxuPHRkPjAuMGc8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5DYXJib2h5ZHJhdGU8L3RkPlxcbjx0ZD41OC4zZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPm9mIHdoaWNoIHN1Z2FyczwvdGQ+XFxuPHRkPjEuN2c8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5GaWJyZTwvdGQ+XFxuPHRkPjE3LjNnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+UHJvdGVpbjwvdGQ+XFxuPHRkPjExLjRnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+U2FsdDwvdGQ+XFxuPHRkPjAuMGc8L3RkPlxcbjwvdHI+XFxuPC90Ym9keT5cXG48L3RhYmxlPlxcbjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPk1vcmU8L2g1Plxcbjx1bD5cXG48bGk+U3VpdGFibGUgZm9yIHZlZ2FucyBhbmQgdmVnZXRhcmlhbnNcXG48L2xpPlxcbjxsaT5ObyBhcnRpZmljaWFsIGluZ3JlZGllbnRzXFxuPC9saT5cXG48bGk+R00gZnJlZVxcbjwvbGk+XFxuPGxpPkhpZ2ggRmlicmVcXG48L2xpPlxcbjwvdWw+XFxuPC9saT5cIixcImRmYy1iOmhhc1F1YW50aXR5XCI6XCJfOmI1XCIsXCJkZmMtYjppbWFnZVwiOlwiaHR0cHM6Ly9jZG4uc2hvcGlmeS5jb20vcy9maWxlcy8xLzA3MzEvODQ4My83OTM5L3Byb2R1Y3RzL0JhcmxleS1GbGFrZXMtMjQwMHgxNjAwX2MxMjE0MDdjLTZmZDItNDZjYS1hMTI0LWRiNWRmOTQ0MjM2OC5qcGc/dj0xNjc3NzYwNzgxXCIsXCJkZmMtYjpuYW1lXCI6XCJCYXJsZXkgRmxha2VzLCBPcmdhbmljIC0gUmV0YWlsIHBhY2ssIDUwMGdcIixcImRmYy1iOnJlZmVyZW5jZWRCeVwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjUzMzE3MS9jYXRhbG9nSXRlbVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY1MzMxNzEvY2F0YWxvZ0l0ZW1cIixcIkB0eXBlXCI6XCJkZmMtYjpDYXRhbG9nSXRlbVwiLFwiZGZjLWI6b2ZmZXJlZFRocm91Z2hcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY1MzMxNzEvb2ZmZXJcIixcImRmYy1iOnNrdVwiOlwiT0tCQVI1XCIsXCJkZmMtYjpzdG9ja0xpbWl0YXRpb25cIjpcIi0xXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjUzMzE3MS9vZmZlclwiLFwiQHR5cGVcIjpcImRmYy1iOk9mZmVyXCIsXCJkZmMtYjpoYXNQcmljZVwiOntcIkBpZFwiOlwiXzpiNlwifX0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NTMzMTcxL3BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcIkB0eXBlXCI6XCJkZmMtYjpBc1BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcImRmYy1iOmNvbnN1bWVzXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NTMzMTcxXCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiMzNcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NTMzMTcxL3BsYW5uZWRQcm9kdWN0aW9uRmxvd1wiLFwiQHR5cGVcIjpcImRmYy1iOkFzUGxhbm5lZFByb2R1Y3Rpb25GbG93XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiMzRcIixcImRmYy1iOnByb2R1Y2VzXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NTY1OTM5XCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjUzMzE3MS90cmFuc2Zvcm1hdGlvblwiLFwiQHR5cGVcIjpcImRmYy1iOkFzUGxhbm5lZFRyYW5zZm9ybWF0aW9uXCIsXCJkZmMtYjpoYXNJbmNvbWVcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY1MzMxNzEvcGxhbm5lZENvbnN1bXB0aW9uRmxvd1wiLFwiZGZjLWI6aGFzT3V0Y29tZVwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ2NjUzMzE3MS9wbGFubmVkUHJvZHVjdGlvbkZsb3dcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NTY1OTM5XCIsXCJAdHlwZVwiOlwiZGZjLWI6U3VwcGxpZWRQcm9kdWN0XCIsXCJkZmMtYjpkZXNjcmlwdGlvblwiOlwiPHRhYmxlIHdpZHRoPVxcXCIxMDAlXFxcIj5cXG48dGJvZHk+XFxuPHRyIHN0eWxlPVxcXCJib3JkZXI6IDBweDtcXFwiPlxcbjx0ZCBiZ2NvbG9yPVxcXCIjZDZmYmVkXFxcIiBzdHlsZT1cXFwiY29sb3I6ICMwMDAwMDA7IGJvcmRlcjogMHB4O1xcXCI+PHN0cm9uZz5Tb3JyeSwgc3RhbmRhcmQgYmFybGV5IGZsYWtlcyBhcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZSBidXQgb3VyIGRlbGljaW91cyAgT3JnYW5pYyBOYWtlZCBCYXJsZXkgRmxha2VzIGFyZSBiYWNrLjwvc3Ryb25nPjwvdGQ+XFxuPC90cj5cXG48L3Rib2R5PlxcbjwvdGFibGU+PHA+T3VyIHJpY2ggYW5kIG1hbHR5IGJhcmxleSBmbGFrZXMgYXJlIGEgc3RvcmUgY3VwYm9hcmQgc3RhcGxlLiBPcmdhbmljYWxseSBncm93biBhbmQgbWlsbGVkIGluIHRoZSBVSywgdGhleSBhZGQgdGV4dHVyZSB0byBmbGFwamFjayBhbmQgYmlzY3VpdCByZWNpcGVzLCBvciB0byBtYWtlIGEgaGVhcnRpZXIsIHJ1c3RpYyBwb3JyaWRnZSDigJMgdHJ5IGJsZW5kaW5nIHdpdGggb3VyIG90aGVyIGZsYWtlczwvcD5cXG48IS0tIHNwbGl0IC0tPjxoMz5Db21wbGV0ZSBQcm9kdWN0IERldGFpbHM8L2gzPjxsaSBpZD1cXFwidGFiMVxcXCIgY2xhc3M9XFxcImFjdGl2ZVxcXCI+XFxuPHA+QmFybGV5IGZsYWtlcyBhcmUgZ3JlYXQgYWRkZWQgdG8gbXVlc2xpIG9yIGdyYW5vbGEsIG9yIHVzZWQgaW4gYmFraW5nIGFzIGEgdG9wcGluZyBvciBtaXhlZCBpbnRvIGRvdWdoLiBFYXQgdGhlbSBhcyBhIGNlcmVhbCwgYmFrZSB3aXRoIHRoZW0sIG9yIGFkZCB0aGVtIHRvIHNvdXBzIGFuZCBzdGV3cyB0byB0aGlja2VuLCBib29zdCB0aGVpciBudXRyaXRpb24gYW5kIGFkZCBmbGF2b3VyLjwvcD5cXG48aDUgY2xhc3M9XFxcInByb2R1Y3QtZGV0YWlsLXRpdGxlXFxcIj5Db29raW5nIGluc3RydWN0aW9uczwvaDU+XFxuPHA+VG8gZWF0IGFzIGEgbXVlc2xpLCBjb21iaW5lIHdpdGggb3RoZXIgY2VyZWFsIGZsYWtlcyBhbmQgZW5qb3kuIE9yIHVzZSBhcyBhbiBvYXQgc3Vic3RpdHV0ZSBpbiBhbnkgYmFraW5nIHJlY2lwZS48L3A+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+SW5ncmVkaWVudHM8L2g1PlxcbjxwPjxiPkJhcmxlecKgPC9iPkZsYWtlczwvcD5cXG48aDUgY2xhc3M9XFxcInByb2R1Y3QtZGV0YWlsLXRpdGxlXFxcIj5BbGxlcmd5IGluZm9ybWF0aW9uPC9oNT5cXG48cD5Gb3IgYWxsZXJnZW5zLCBpbmNsdWRpbmcgY2VyZWFscyBjb250YWluaW5nIGdsdXRlbiwgc2VlIGluZ3JlZGllbnRzIGluIDxzdHJvbmc+Ym9sZDwvc3Ryb25nPjwvcD5cXG48dGFibGUgd2lkdGg9XFxcIjEwMCVcXFwiPlxcbjx0Ym9keT5cXG48dHI+XFxuPHRkPjxzdHJvbmc+VHlwaWNhbCB2YWx1ZXM8L3N0cm9uZz48L3RkPlxcbjx0ZD48c3Ryb25nPlBlciAxMDBnPC9zdHJvbmc+PC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+RW5lcmd5PC90ZD5cXG48dGQ+MSw0MDFrSiAoMzMya2NhbCk8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5GYXQ8L3RkPlxcbjx0ZD4yLjFnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+b2Ygd2hpY2ggc2F0dXJhdGVzPC90ZD5cXG48dGQ+MC4wZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkNhcmJvaHlkcmF0ZTwvdGQ+XFxuPHRkPjU4LjNnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+b2Ygd2hpY2ggc3VnYXJzPC90ZD5cXG48dGQ+MS43ZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkZpYnJlPC90ZD5cXG48dGQ+MTcuM2c8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5Qcm90ZWluPC90ZD5cXG48dGQ+MTEuNGc8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5TYWx0PC90ZD5cXG48dGQ+MC4wZzwvdGQ+XFxuPC90cj5cXG48L3Rib2R5PlxcbjwvdGFibGU+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+TW9yZTwvaDU+XFxuPHVsPlxcbjxsaT5TdWl0YWJsZSBmb3IgdmVnYW5zIGFuZCB2ZWdldGFyaWFuc1xcbjwvbGk+XFxuPGxpPk5vIGFydGlmaWNpYWwgaW5ncmVkaWVudHNcXG48L2xpPlxcbjxsaT5HTSBmcmVlXFxuPC9saT5cXG48bGk+SGlnaCBGaWJyZVxcbjwvbGk+XFxuPC91bD5cXG48L2xpPlwiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86YjE5XCIsXCJkZmMtYjppbWFnZVwiOlwiaHR0cHM6Ly9jZG4uc2hvcGlmeS5jb20vcy9maWxlcy8xLzA3MzEvODQ4My83OTM5L3Byb2R1Y3RzL0JhcmxleS1GbGFrZXMtMjQwMHgxNjAwX2MxMjE0MDdjLTZmZDItNDZjYS1hMTI0LWRiNWRmOTQ0MjM2OC5qcGc/dj0xNjc3NzYwNzgxXCIsXCJkZmMtYjpuYW1lXCI6XCJCYXJsZXkgRmxha2VzLCBPcmdhbmljIC0gU3RhbmRhcmQgY2FzZSwgMTAgeCA1MDBnXCIsXCJkZmMtYjpyZWZlcmVuY2VkQnlcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY1NjU5MzkvY2F0YWxvZ0l0ZW1cIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NTY1OTM5L2NhdGFsb2dJdGVtXCIsXCJAdHlwZVwiOlwiZGZjLWI6Q2F0YWxvZ0l0ZW1cIixcImRmYy1iOm9mZmVyZWRUaHJvdWdoXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDY2NTY1OTM5L29mZmVyXCIsXCJkZmMtYjpza3VcIjpcIk9LQkFDWFwiLFwiZGZjLWI6c3RvY2tMaW1pdGF0aW9uXCI6XCItMVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NjY1NjU5Mzkvb2ZmZXJcIixcIkB0eXBlXCI6XCJkZmMtYjpPZmZlclwiLFwiZGZjLWI6aGFzUHJpY2VcIjp7XCJAaWRcIjpcIl86YjIwXCJ9fSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NzMzNDg5MTVcIixcIkB0eXBlXCI6XCJkZmMtYjpTdXBwbGllZFByb2R1Y3RcIixcImRmYy1iOmRlc2NyaXB0aW9uXCI6XCI8cD48c3Ryb25nPkZlcm1lbnRlZCB3aG9sZWdyYWluIG5ha2VkIGJhcmxleSzCoHRhc3R5IGFuZCBzdWNjdWxlbnTCoGdyYWlucyBvZiByaWNoIG1hbHR5IHVtYW1pIGZsYXZvdXIuPC9zdHJvbmc+PC9wPlxcbjxwPlRoZXNlIHdob2xlIGZlcm1lbnRlZCBiYXJsZXnCoGdyYWlucyBhcmUgcGFja2VkIHdpdGggZGVlcCBmbGF2b3VyIGFuZCBtYWtlIGEgZGVsaWNpb3VzIGFkZGl0aW9uIHRvIGJyZWFkLCByaXNvdHRvLCBzdGV3cywgc2FsYWRzIGFuZCBtb3JlLjwvcD5cXG48IS0tIHNwbGl0IC0tPjxoMz5Db21wbGV0ZSBQcm9kdWN0IERldGFpbHM8L2gzPlxcbjxwPkFkZCBpbnRlbnNlbHkgZmxhdm91cmVkIG1hbHR5IGFuZCBzdWNjdWxlbnQgZ3JhaW5zwqBmdWxsIG9mIHVtYW1pIHJpY2huZXNzIHRvIGJyZWFkcywgcmlzb3R0bywgc3Rld3MsIHNvdXBzLCBhbmQgZXZlbiBzYWxhZHMuPC9wPlxcbjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPkNvb2tpbmcgaW5zdHJ1Y3Rpb25zPC9oNT5cXG48cD5BZGQgYWJvdXQgaGFsZiBhIHRlYXNwb29uIHBlciBzZXJ2aW5nIHRvIGFsbW9zdCBhbnkgZGlzaCBmb3IgYWRkZWQgZGVwdGgsIHVtYW1pIHJpY2huZXNzIGFuZCBtYWx0eSBmbGF2b3VyLjwvcD5cXG48aDUgY2xhc3M9XFxcInByb2R1Y3QtZGV0YWlsLXRpdGxlXFxcIj5UbyBzdG9yZTwvaDU+XFxuPHA+S2VlcCByZWZyaWdlcmF0ZWQgYW5kIHVzZSB3aXRoaW4gNCB3ZWVrcyBvZiBvcGVuaW5nLjwvcD5cXG48aDUgY2xhc3M9XFxcInByb2R1Y3QtZGV0YWlsLXRpdGxlXFxcIj5JbmdyZWRpZW50czwvaDU+XFxuPHA+TmFrZWQgPHN0cm9uZz5CYXJsZXk8L3N0cm9uZz4sIFdhdGVyLCA8c3Ryb25nPldoZWF0PC9zdHJvbmc+IEZsb3VyLCBTYWx0LCBMaXZlIEN1bHR1cmVzKjxicj4gKjxlbT5MYWN0b2JhY2lsbHVzIGRlbGJydWVja2lpPC9lbT4sIDxlbT5Bc3BlcmdpbGx1cyBzb2phZTwvZW0+LCA8ZW0+Wnlnb3NhY2NoYXJvbXljZXMgcm91eGlpPC9lbT48L3A+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+QWxsZXJneSBpbmZvcm1hdGlvbjwvaDU+XFxuPHA+Q29udGFpbnMgPHN0cm9uZz5CYXJsZXkgKEdsdXRlbik8L3N0cm9uZz4sPHN0cm9uZz4gV2hlYXQgKEdsdXRlbik8L3N0cm9uZz48L3A+XFxuPHRhYmxlIHdpZHRoPVxcXCIxMDAlXFxcIj5cXG48dGJvZHk+XFxuPHRyPlxcbjx0ZD48c3Ryb25nPlR5cGljYWwgdmFsdWVzPC9zdHJvbmc+PC90ZD5cXG48dGQ+PHN0cm9uZz5QZXIgMTAwZzwvc3Ryb25nPjwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkVuZXJneTwvdGQ+XFxuPHRkPjUwMGtKICgxMTlrY2FsKTwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPkZhdDwvdGQ+XFxuPHRkPjEuN2c8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5vZiB3aGljaCBzYXR1cmF0ZXM8L3RkPlxcbjx0ZD4wLjVnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+Q2FyYm9oeWRyYXRlPC90ZD5cXG48dGQ+MTkuMWc8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5vZiB3aGljaCBzdWdhcnM8L3RkPlxcbjx0ZD4yLjdnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+RmlicmU8L3RkPlxcbjx0ZD41LjJnPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+UHJvdGVpbjwvdGQ+XFxuPHRkPjQuMmc8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5TYWx0PC90ZD5cXG48dGQ+OC41ZzwvdGQ+XFxuPC90cj5cXG48L3Rib2R5PlxcbjwvdGFibGU+PGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+TW9yZTwvaDU+XFxuPHA+T3VyIEZlcm1lbnRlZCBXaG9sZWdyYWluIE5ha2VkIEJhcmxleSBpcyBmZXJtZW50ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIG1hbnkgc295YSBmZXJtZW50cyB1c2VkIGZvciBibGFjayBiZWFucywgYnV0IHVzaW5nwqBuYWtlZCBiYXJsZXkgZ3JhaW4gaW5zdGVhZCBvZiBzb3kgYmVhbnMuIEl0J3MgbWFkZSB3aXRoIGp1c3QgbmFrZWQgYmFybGV5IGdyYWlucywgd2F0ZXIgYW5kIHNhbHQsIGZlcm1lbnRlZCB3aXRoIGEgbGl2ZSBjdWx0dXJlIG9mIDxlbT5MYWN0b2JhY2lsbHVzIGRlbGJydWVja2lpPC9lbT4sIDxlbT5Bc3BlcmdpbGx1cyBzb2phZTwvZW0+IGFuZCA8ZW0+Wnlnb3NhY2NoYXJvbXljZXMgcm91eGlpPC9lbT4uPC9wPlxcbjxwPlN1aXRhYmxlIGZvciB2ZWdhbnMuPC9wPlxcbjxwPlBhY2tlZCBpbiByZWN5Y2xhYmxlIGdsYXNzIGphciB3aXRoIG1ldGFsIGxpZC48L3A+XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiOVwiLFwiZGZjLWI6aW1hZ2VcIjpcImh0dHBzOi8vY2RuLnNob3BpZnkuY29tL3MvZmlsZXMvMS8wNzMxLzg0ODMvNzkzOS9wcm9kdWN0cy9GZXJtZW50ZWQtV2hvbGVncmFpbi1OYWtlZC1CYXJsZXktU3Bvb24tMTYwMHgxMDAwX2Q2ZmVhMDkyLWZkZTQtNGE5OC1iZWM4LWJiM2NhMGExZmQ0ZC5qcGc/dj0xNjc3NzYwODYwXCIsXCJkZmMtYjpuYW1lXCI6XCJGZXJtZW50ZWQgTmFrZWQgQmFybGV5IC0gUmV0YWlsIGphciwgMTc1ZyAoamFyKVwiLFwiZGZjLWI6cmVmZXJlbmNlZEJ5XCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDczMzQ4OTE1L2NhdGFsb2dJdGVtXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ3MzM0ODkxNS9jYXRhbG9nSXRlbVwiLFwiQHR5cGVcIjpcImRmYy1iOkNhdGFsb2dJdGVtXCIsXCJkZmMtYjpvZmZlcmVkVGhyb3VnaFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ3MzM0ODkxNS9vZmZlclwiLFwiZGZjLWI6c2t1XCI6XCJOTU5CL0pGXCIsXCJkZmMtYjpzdG9ja0xpbWl0YXRpb25cIjpcIi0xXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ3MzM0ODkxNS9vZmZlclwiLFwiQHR5cGVcIjpcImRmYy1iOk9mZmVyXCIsXCJkZmMtYjpoYXNQcmljZVwiOntcIkBpZFwiOlwiXzpiMTBcIn19LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ3MzM0ODkxNS9wbGFubmVkQ29uc3VtcHRpb25GbG93XCIsXCJAdHlwZVwiOlwiZGZjLWI6QXNQbGFubmVkQ29uc3VtcHRpb25GbG93XCIsXCJkZmMtYjpjb25zdW1lc1wiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ3MzM0ODkxNVwiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86YjM3XCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ3MzM0ODkxNS9wbGFubmVkUHJvZHVjdGlvbkZsb3dcIixcIkB0eXBlXCI6XCJkZmMtYjpBc1BsYW5uZWRQcm9kdWN0aW9uRmxvd1wiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86YjM4XCIsXCJkZmMtYjpwcm9kdWNlc1wiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ3MzM4MTY4M1wifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NzMzNDg5MTUvdHJhbnNmb3JtYXRpb25cIixcIkB0eXBlXCI6XCJkZmMtYjpBc1BsYW5uZWRUcmFuc2Zvcm1hdGlvblwiLFwiZGZjLWI6aGFzSW5jb21lXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTE5NDczMzQ4OTE1L3BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcImRmYy1iOmhhc091dGNvbWVcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NzMzNDg5MTUvcGxhbm5lZFByb2R1Y3Rpb25GbG93XCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ3MzM4MTY4M1wiLFwiQHR5cGVcIjpcImRmYy1iOlN1cHBsaWVkUHJvZHVjdFwiLFwiZGZjLWI6ZGVzY3JpcHRpb25cIjpcIjxwPjxzdHJvbmc+RmVybWVudGVkIHdob2xlZ3JhaW4gbmFrZWQgYmFybGV5LMKgdGFzdHkgYW5kIHN1Y2N1bGVudMKgZ3JhaW5zIG9mIHJpY2ggbWFsdHkgdW1hbWkgZmxhdm91ci48L3N0cm9uZz48L3A+XFxuPHA+VGhlc2Ugd2hvbGUgZmVybWVudGVkIGJhcmxlecKgZ3JhaW5zIGFyZSBwYWNrZWQgd2l0aCBkZWVwIGZsYXZvdXIgYW5kIG1ha2UgYSBkZWxpY2lvdXMgYWRkaXRpb24gdG8gYnJlYWQsIHJpc290dG8sIHN0ZXdzLCBzYWxhZHMgYW5kIG1vcmUuPC9wPlxcbjwhLS0gc3BsaXQgLS0+PGgzPkNvbXBsZXRlIFByb2R1Y3QgRGV0YWlsczwvaDM+XFxuPHA+QWRkIGludGVuc2VseSBmbGF2b3VyZWQgbWFsdHkgYW5kIHN1Y2N1bGVudCBncmFpbnPCoGZ1bGwgb2YgdW1hbWkgcmljaG5lc3MgdG8gYnJlYWRzLCByaXNvdHRvLCBzdGV3cywgc291cHMsIGFuZCBldmVuIHNhbGFkcy48L3A+XFxuPGg1IGNsYXNzPVxcXCJwcm9kdWN0LWRldGFpbC10aXRsZVxcXCI+Q29va2luZyBpbnN0cnVjdGlvbnM8L2g1PlxcbjxwPkFkZCBhYm91dCBoYWxmIGEgdGVhc3Bvb24gcGVyIHNlcnZpbmcgdG8gYWxtb3N0IGFueSBkaXNoIGZvciBhZGRlZCBkZXB0aCwgdW1hbWkgcmljaG5lc3MgYW5kIG1hbHR5IGZsYXZvdXIuPC9wPlxcbjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPlRvIHN0b3JlPC9oNT5cXG48cD5LZWVwIHJlZnJpZ2VyYXRlZCBhbmQgdXNlIHdpdGhpbiA0IHdlZWtzIG9mIG9wZW5pbmcuPC9wPlxcbjxoNSBjbGFzcz1cXFwicHJvZHVjdC1kZXRhaWwtdGl0bGVcXFwiPkluZ3JlZGllbnRzPC9oNT5cXG48cD5OYWtlZCA8c3Ryb25nPkJhcmxleTwvc3Ryb25nPiwgV2F0ZXIsIDxzdHJvbmc+V2hlYXQ8L3N0cm9uZz4gRmxvdXIsIFNhbHQsIExpdmUgQ3VsdHVyZXMqPGJyPiAqPGVtPkxhY3RvYmFjaWxsdXMgZGVsYnJ1ZWNraWk8L2VtPiwgPGVtPkFzcGVyZ2lsbHVzIHNvamFlPC9lbT4sIDxlbT5aeWdvc2FjY2hhcm9teWNlcyByb3V4aWk8L2VtPjwvcD5cXG48aDUgY2xhc3M9XFxcInByb2R1Y3QtZGV0YWlsLXRpdGxlXFxcIj5BbGxlcmd5IGluZm9ybWF0aW9uPC9oNT5cXG48cD5Db250YWlucyA8c3Ryb25nPkJhcmxleSAoR2x1dGVuKTwvc3Ryb25nPiw8c3Ryb25nPiBXaGVhdCAoR2x1dGVuKTwvc3Ryb25nPjwvcD5cXG48dGFibGUgd2lkdGg9XFxcIjEwMCVcXFwiPlxcbjx0Ym9keT5cXG48dHI+XFxuPHRkPjxzdHJvbmc+VHlwaWNhbCB2YWx1ZXM8L3N0cm9uZz48L3RkPlxcbjx0ZD48c3Ryb25nPlBlciAxMDBnPC9zdHJvbmc+PC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+RW5lcmd5PC90ZD5cXG48dGQ+NTAwa0ogKDExOWtjYWwpPC90ZD5cXG48L3RyPlxcbjx0cj5cXG48dGQ+RmF0PC90ZD5cXG48dGQ+MS43ZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPm9mIHdoaWNoIHNhdHVyYXRlczwvdGQ+XFxuPHRkPjAuNWc8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5DYXJib2h5ZHJhdGU8L3RkPlxcbjx0ZD4xOS4xZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPm9mIHdoaWNoIHN1Z2FyczwvdGQ+XFxuPHRkPjIuN2c8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5GaWJyZTwvdGQ+XFxuPHRkPjUuMmc8L3RkPlxcbjwvdHI+XFxuPHRyPlxcbjx0ZD5Qcm90ZWluPC90ZD5cXG48dGQ+NC4yZzwvdGQ+XFxuPC90cj5cXG48dHI+XFxuPHRkPlNhbHQ8L3RkPlxcbjx0ZD44LjVnPC90ZD5cXG48L3RyPlxcbjwvdGJvZHk+XFxuPC90YWJsZT48aDUgY2xhc3M9XFxcInByb2R1Y3QtZGV0YWlsLXRpdGxlXFxcIj5Nb3JlPC9oNT5cXG48cD5PdXIgRmVybWVudGVkIFdob2xlZ3JhaW4gTmFrZWQgQmFybGV5IGlzIGZlcm1lbnRlZCBpbiB0aGUgc2FtZSB3YXkgYXMgbWFueSBzb3lhIGZlcm1lbnRzIHVzZWQgZm9yIGJsYWNrIGJlYW5zLCBidXQgdXNpbmfCoG5ha2VkIGJhcmxleSBncmFpbiBpbnN0ZWFkIG9mIHNveSBiZWFucy4gSXQncyBtYWRlIHdpdGgganVzdCBuYWtlZCBiYXJsZXkgZ3JhaW5zLCB3YXRlciBhbmQgc2FsdCwgZmVybWVudGVkIHdpdGggYSBsaXZlIGN1bHR1cmUgb2YgPGVtPkxhY3RvYmFjaWxsdXMgZGVsYnJ1ZWNraWk8L2VtPiwgPGVtPkFzcGVyZ2lsbHVzIHNvamFlPC9lbT4gYW5kIDxlbT5aeWdvc2FjY2hhcm9teWNlcyByb3V4aWk8L2VtPi48L3A+XFxuPHA+U3VpdGFibGUgZm9yIHZlZ2Fucy48L3A+XFxuPHA+UGFja2VkIGluIHJlY3ljbGFibGUgZ2xhc3MgamFyIHdpdGggbWV0YWwgbGlkLjwvcD5cIixcImRmYy1iOmhhc1F1YW50aXR5XCI6XCJfOmIyM1wiLFwiZGZjLWI6aW1hZ2VcIjpcImh0dHBzOi8vY2RuLnNob3BpZnkuY29tL3MvZmlsZXMvMS8wNzMxLzg0ODMvNzkzOS9wcm9kdWN0cy9GZXJtZW50ZWQtV2hvbGVncmFpbi1OYWtlZC1CYXJsZXktU3Bvb24tMTYwMHgxMDAwX2Q2ZmVhMDkyLWZkZTQtNGE5OC1iZWM4LWJiM2NhMGExZmQ0ZC5qcGc/dj0xNjc3NzYwODYwXCIsXCJkZmMtYjpuYW1lXCI6XCJGZXJtZW50ZWQgTmFrZWQgQmFybGV5IC0gQ2FzZSwgNiB4IDE3NWcgKGphcilcIixcImRmYy1iOnJlZmVyZW5jZWRCeVwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUxOTQ3MzM4MTY4My9jYXRhbG9nSXRlbVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NzMzODE2ODMvY2F0YWxvZ0l0ZW1cIixcIkB0eXBlXCI6XCJkZmMtYjpDYXRhbG9nSXRlbVwiLFwiZGZjLWI6b2ZmZXJlZFRocm91Z2hcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NzMzODE2ODMvb2ZmZXJcIixcImRmYy1iOnNrdVwiOlwiTk1OQi9DNlwiLFwiZGZjLWI6c3RvY2tMaW1pdGF0aW9uXCI6XCItMVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MTk0NzMzODE2ODMvb2ZmZXJcIixcIkB0eXBlXCI6XCJkZmMtYjpPZmZlclwiLFwiZGZjLWI6aGFzUHJpY2VcIjp7XCJAaWRcIjpcIl86YjI0XCJ9fSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2MjcyNDQ4NTFcIixcIkB0eXBlXCI6XCJkZmMtYjpTdXBwbGllZFByb2R1Y3RcIixcImRmYy1iOmhhc1F1YW50aXR5XCI6XCJfOmIxN1wiLFwiZGZjLWI6aW1hZ2VcIjpcImh0dHBzOi8vY2RuLnNob3BpZnkuY29tL3MvZmlsZXMvMS8wNzMxLzg0ODMvNzkzOS9wcm9kdWN0cy9QYWNrLUNhbi1CYWtlZC1CZWFucy0xODAweDZfYTRkNTg0NTktYmY1Mi00OGE5LWJhZTctODA3ZjQwMzViODdmLmpwZz92PTE2Nzc3NjA3NzdcIixcImRmYy1iOm5hbWVcIjpcIkJha2VkIEJyaXRpc2ggQmVhbnMgKFRvTCkgLSBDYXNlIC0gMTIgeCA0MDBnIGNhbnNcIixcImRmYy1iOnJlZmVyZW5jZWRCeVwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyNzI0NDg1MS9jYXRhbG9nSXRlbVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2MjcyNDQ4NTEvY2F0YWxvZ0l0ZW1cIixcIkB0eXBlXCI6XCJkZmMtYjpDYXRhbG9nSXRlbVwiLFwiZGZjLWI6b2ZmZXJlZFRocm91Z2hcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2MjcyNDQ4NTEvb2ZmZXJcIixcImRmYy1iOnNrdVwiOlwiTkNCQkNEXCIsXCJkZmMtYjpzdG9ja0xpbWl0YXRpb25cIjpcIi0xXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyNzI0NDg1MS9vZmZlclwiLFwiQHR5cGVcIjpcImRmYy1iOk9mZmVyXCIsXCJkZmMtYjpoYXNQcmljZVwiOntcIkBpZFwiOlwiXzpiMThcIn19LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyNzI3NzYxOVwiLFwiQHR5cGVcIjpcImRmYy1iOlN1cHBsaWVkUHJvZHVjdFwiLFwiZGZjLWI6aGFzUXVhbnRpdHlcIjpcIl86YjNcIixcImRmYy1iOmltYWdlXCI6XCJodHRwczovL2Nkbi5zaG9waWZ5LmNvbS9zL2ZpbGVzLzEvMDczMS84NDgzLzc5MzkvcHJvZHVjdHMvUGFjay1DYW4tQmFrZWQtQmVhbnMtMTgwMHg2X2E0ZDU4NDU5LWJmNTItNDhhOS1iYWU3LTgwN2Y0MDM1Yjg3Zi5qcGc/dj0xNjc3NzYwNzc3XCIsXCJkZmMtYjpuYW1lXCI6XCJCYWtlZCBCcml0aXNoIEJlYW5zIChUb0wpIC0gU2luZ2xlIC0gNDAwZyBjYW5cIixcImRmYy1iOnJlZmVyZW5jZWRCeVwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyNzI3NzYxOS9jYXRhbG9nSXRlbVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2MjcyNzc2MTkvY2F0YWxvZ0l0ZW1cIixcIkB0eXBlXCI6XCJkZmMtYjpDYXRhbG9nSXRlbVwiLFwiZGZjLWI6b2ZmZXJlZFRocm91Z2hcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2MjcyNzc2MTkvb2ZmZXJcIixcImRmYy1iOnNrdVwiOlwiTkNCQlQ0XCIsXCJkZmMtYjpzdG9ja0xpbWl0YXRpb25cIjpcIjIwXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyNzI3NzYxOS9vZmZlclwiLFwiQHR5cGVcIjpcImRmYy1iOk9mZmVyXCIsXCJkZmMtYjpoYXNQcmljZVwiOntcIkBpZFwiOlwiXzpiNFwifX0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI3Mjc3NjE5L3BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcIkB0eXBlXCI6XCJkZmMtYjpBc1BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcImRmYy1iOmNvbnN1bWVzXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI3Mjc3NjE5XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiMzFcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI3Mjc3NjE5L3BsYW5uZWRQcm9kdWN0aW9uRmxvd1wiLFwiQHR5cGVcIjpcImRmYy1iOkFzUGxhbm5lZFByb2R1Y3Rpb25GbG93XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiMzJcIixcImRmYy1iOnByb2R1Y2VzXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI3MjQ0ODUxXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyNzI3NzYxOS90cmFuc2Zvcm1hdGlvblwiLFwiQHR5cGVcIjpcImRmYy1iOkFzUGxhbm5lZFRyYW5zZm9ybWF0aW9uXCIsXCJkZmMtYjpoYXNJbmNvbWVcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2MjcyNzc2MTkvcGxhbm5lZENvbnN1bXB0aW9uRmxvd1wiLFwiZGZjLWI6aGFzT3V0Y29tZVwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyNzI3NzYxOS9wbGFubmVkUHJvZHVjdGlvbkZsb3dcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI4Nzg0OTQ3XCIsXCJAdHlwZVwiOlwiZGZjLWI6U3VwcGxpZWRQcm9kdWN0XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiMjVcIixcImRmYy1iOmltYWdlXCI6XCJodHRwczovL2Nkbi5zaG9waWZ5LmNvbS9zL2ZpbGVzLzEvMDczMS84NDgzLzc5MzkvcHJvZHVjdHMvV2hvbGUtRmF2YS1CZWFucy1PcmdhbmljLUNhbm5lZF9mY2I2NGZkNy04Y2EzLTQ2NWEtOGY1Ni00NDNjZjI4ZTBiNzEuanBnP3Y9MTY3Nzc2MDk3N1wiLFwiZGZjLWI6bmFtZVwiOlwiT3JnYW5pYyBXaG9sZSBGYXZhIEJlYW5zIGluIFdhdGVyIChUb0wpIC0gQ2FzZSAtIDEyIHggNDAwZyBjYW5zXCIsXCJkZmMtYjpyZWZlcmVuY2VkQnlcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2Mjg3ODQ5NDcvY2F0YWxvZ0l0ZW1cIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI4Nzg0OTQ3L2NhdGFsb2dJdGVtXCIsXCJAdHlwZVwiOlwiZGZjLWI6Q2F0YWxvZ0l0ZW1cIixcImRmYy1iOm9mZmVyZWRUaHJvdWdoXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI4Nzg0OTQ3L29mZmVyXCIsXCJkZmMtYjpza3VcIjpcIk9DRkJDRFwiLFwiZGZjLWI6c3RvY2tMaW1pdGF0aW9uXCI6XCItMVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2Mjg3ODQ5NDcvb2ZmZXJcIixcIkB0eXBlXCI6XCJkZmMtYjpPZmZlclwiLFwiZGZjLWI6aGFzUHJpY2VcIjp7XCJAaWRcIjpcIl86YjI2XCJ9fSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2Mjg4MTc3MTVcIixcIkB0eXBlXCI6XCJkZmMtYjpTdXBwbGllZFByb2R1Y3RcIixcImRmYy1iOmhhc1F1YW50aXR5XCI6XCJfOmIxMVwiLFwiZGZjLWI6aW1hZ2VcIjpcImh0dHBzOi8vY2RuLnNob3BpZnkuY29tL3MvZmlsZXMvMS8wNzMxLzg0ODMvNzkzOS9wcm9kdWN0cy9XaG9sZS1GYXZhLUJlYW5zLU9yZ2FuaWMtQ2FubmVkX2ZjYjY0ZmQ3LThjYTMtNDY1YS04ZjU2LTQ0M2NmMjhlMGI3MS5qcGc/dj0xNjc3NzYwOTc3XCIsXCJkZmMtYjpuYW1lXCI6XCJPcmdhbmljIFdob2xlIEZhdmEgQmVhbnMgaW4gV2F0ZXIgKFRvTCkgLSBTaW5nbGUgLSA0MDBnIGNhblwiLFwiZGZjLWI6cmVmZXJlbmNlZEJ5XCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI4ODE3NzE1L2NhdGFsb2dJdGVtXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyODgxNzcxNS9jYXRhbG9nSXRlbVwiLFwiQHR5cGVcIjpcImRmYy1iOkNhdGFsb2dJdGVtXCIsXCJkZmMtYjpvZmZlcmVkVGhyb3VnaFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyODgxNzcxNS9vZmZlclwiLFwiZGZjLWI6c2t1XCI6XCJPQ0ZCVDRcIixcImRmYy1iOnN0b2NrTGltaXRhdGlvblwiOlwiLTFcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI4ODE3NzE1L29mZmVyXCIsXCJAdHlwZVwiOlwiZGZjLWI6T2ZmZXJcIixcImRmYy1iOmhhc1ByaWNlXCI6e1wiQGlkXCI6XCJfOmIxMlwifX0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI4ODE3NzE1L3BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcIkB0eXBlXCI6XCJkZmMtYjpBc1BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcImRmYy1iOmNvbnN1bWVzXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI4ODE3NzE1XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiMzlcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI4ODE3NzE1L3BsYW5uZWRQcm9kdWN0aW9uRmxvd1wiLFwiQHR5cGVcIjpcImRmYy1iOkFzUGxhbm5lZFByb2R1Y3Rpb25GbG93XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiNDBcIixcImRmYy1iOnByb2R1Y2VzXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjI4Nzg0OTQ3XCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyODgxNzcxNS90cmFuc2Zvcm1hdGlvblwiLFwiQHR5cGVcIjpcImRmYy1iOkFzUGxhbm5lZFRyYW5zZm9ybWF0aW9uXCIsXCJkZmMtYjpoYXNJbmNvbWVcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2Mjg4MTc3MTUvcGxhbm5lZENvbnN1bXB0aW9uRmxvd1wiLFwiZGZjLWI6aGFzT3V0Y29tZVwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTYyODgxNzcxNS9wbGFubmVkUHJvZHVjdGlvbkZsb3dcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjU0MDQ5MDc1XCIsXCJAdHlwZVwiOlwiZGZjLWI6U3VwcGxpZWRQcm9kdWN0XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiN1wiLFwiZGZjLWI6bmFtZVwiOlwiQ2FybGluIFBlYXMgaW4gV2F0ZXIsIE9yZ2FuaWMgKERJU1RSSUJVVE9SKSAtIFJldGFpbCBjYW4gKDQwMGcgY2FuKVwiLFwiZGZjLWI6cmVmZXJlbmNlZEJ5XCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjU0MDQ5MDc1L2NhdGFsb2dJdGVtXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTY1NDA0OTA3NS9jYXRhbG9nSXRlbVwiLFwiQHR5cGVcIjpcImRmYy1iOkNhdGFsb2dJdGVtXCIsXCJkZmMtYjpvZmZlcmVkVGhyb3VnaFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTY1NDA0OTA3NS9vZmZlclwiLFwiZGZjLWI6c2t1XCI6XCJPQ0NQVDRcIixcImRmYy1iOnN0b2NrTGltaXRhdGlvblwiOlwiLTFcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjU0MDQ5MDc1L29mZmVyXCIsXCJAdHlwZVwiOlwiZGZjLWI6T2ZmZXJcIixcImRmYy1iOmhhc1ByaWNlXCI6e1wiQGlkXCI6XCJfOmI4XCJ9fSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NTQwNDkwNzUvcGxhbm5lZENvbnN1bXB0aW9uRmxvd1wiLFwiQHR5cGVcIjpcImRmYy1iOkFzUGxhbm5lZENvbnN1bXB0aW9uRmxvd1wiLFwiZGZjLWI6Y29uc3VtZXNcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NTQwNDkwNzVcIixcImRmYy1iOmhhc1F1YW50aXR5XCI6XCJfOmIzNVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NTQwNDkwNzUvcGxhbm5lZFByb2R1Y3Rpb25GbG93XCIsXCJAdHlwZVwiOlwiZGZjLWI6QXNQbGFubmVkUHJvZHVjdGlvbkZsb3dcIixcImRmYy1iOmhhc1F1YW50aXR5XCI6XCJfOmIzNlwiLFwiZGZjLWI6cHJvZHVjZXNcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NTQwODE4NDNcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjU0MDQ5MDc1L3RyYW5zZm9ybWF0aW9uXCIsXCJAdHlwZVwiOlwiZGZjLWI6QXNQbGFubmVkVHJhbnNmb3JtYXRpb25cIixcImRmYy1iOmhhc0luY29tZVwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTY1NDA0OTA3NS9wbGFubmVkQ29uc3VtcHRpb25GbG93XCIsXCJkZmMtYjpoYXNPdXRjb21lXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjU0MDQ5MDc1L3BsYW5uZWRQcm9kdWN0aW9uRmxvd1wifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NTQwODE4NDNcIixcIkB0eXBlXCI6XCJkZmMtYjpTdXBwbGllZFByb2R1Y3RcIixcImRmYy1iOmhhc1F1YW50aXR5XCI6XCJfOmIyMVwiLFwiZGZjLWI6bmFtZVwiOlwiQ2FybGluIFBlYXMgaW4gV2F0ZXIsIE9yZ2FuaWMgKERJU1RSSUJVVE9SKSAtIFN0YW5kYXJkIGNhc2UgKDEyIHggNDAwZyBjYW4pXCIsXCJkZmMtYjpyZWZlcmVuY2VkQnlcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NTQwODE4NDMvY2F0YWxvZ0l0ZW1cIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjU0MDgxODQzL2NhdGFsb2dJdGVtXCIsXCJAdHlwZVwiOlwiZGZjLWI6Q2F0YWxvZ0l0ZW1cIixcImRmYy1iOm9mZmVyZWRUaHJvdWdoXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjU0MDgxODQzL29mZmVyXCIsXCJkZmMtYjpza3VcIjpcIk9DQ1BDRFwiLFwiZGZjLWI6c3RvY2tMaW1pdGF0aW9uXCI6XCItMVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NTQwODE4NDMvb2ZmZXJcIixcIkB0eXBlXCI6XCJkZmMtYjpPZmZlclwiLFwiZGZjLWI6aGFzUHJpY2VcIjp7XCJAaWRcIjpcIl86YjIyXCJ9fSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NjM1ODQ1NjNcIixcIkB0eXBlXCI6XCJkZmMtYjpTdXBwbGllZFByb2R1Y3RcIixcImRmYy1iOmhhc1F1YW50aXR5XCI6XCJfOmIxM1wiLFwiZGZjLWI6bmFtZVwiOlwiUm9hc3RlZCBGYXZhIEJlYW5zLCBMaWdodGx5IFNlYSBTYWx0ZWQgKERJU1RSSUJVVE9SKSAtIFJldGFpbCBwYWNrICgzMDBnKVwiLFwiZGZjLWI6cmVmZXJlbmNlZEJ5XCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNTg0NTYzL2NhdGFsb2dJdGVtXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTY2MzU4NDU2My9jYXRhbG9nSXRlbVwiLFwiQHR5cGVcIjpcImRmYy1iOkNhdGFsb2dJdGVtXCIsXCJkZmMtYjpvZmZlcmVkVGhyb3VnaFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTY2MzU4NDU2My9vZmZlclwiLFwiZGZjLWI6c2t1XCI6XCJOUkZTUjNcIixcImRmYy1iOnN0b2NrTGltaXRhdGlvblwiOlwiLTFcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNTg0NTYzL29mZmVyXCIsXCJAdHlwZVwiOlwiZGZjLWI6T2ZmZXJcIixcImRmYy1iOmhhc1ByaWNlXCI6e1wiQGlkXCI6XCJfOmIxNFwifX0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNTg0NTYzL3BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcIkB0eXBlXCI6XCJkZmMtYjpBc1BsYW5uZWRDb25zdW1wdGlvbkZsb3dcIixcImRmYy1iOmNvbnN1bWVzXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNTg0NTYzXCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiNDFcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNTg0NTYzL3BsYW5uZWRQcm9kdWN0aW9uRmxvd1wiLFwiQHR5cGVcIjpcImRmYy1iOkFzUGxhbm5lZFByb2R1Y3Rpb25GbG93XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiNDJcIixcImRmYy1iOnByb2R1Y2VzXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNjE3MzMxXCJ9LHtcIkBpZFwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTY2MzU4NDU2My90cmFuc2Zvcm1hdGlvblwiLFwiQHR5cGVcIjpcImRmYy1iOkFzUGxhbm5lZFRyYW5zZm9ybWF0aW9uXCIsXCJkZmMtYjpoYXNJbmNvbWVcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NjM1ODQ1NjMvcGxhbm5lZENvbnN1bXB0aW9uRmxvd1wiLFwiZGZjLWI6aGFzT3V0Y29tZVwiOlwiaHR0cHM6Ly9mb29kLWRhdGEtY29sbGFib3JhdGlvbi1wcm9kdWMtZmU4NzAxNTJmNjM0Lmhlcm9rdWFwcC5jb20vcHJvZHVjdC80NDUyNTY2MzU4NDU2My9wbGFubmVkUHJvZHVjdGlvbkZsb3dcIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNjE3MzMxXCIsXCJAdHlwZVwiOlwiZGZjLWI6U3VwcGxpZWRQcm9kdWN0XCIsXCJkZmMtYjpoYXNRdWFudGl0eVwiOlwiXzpiMjdcIixcImRmYy1iOm5hbWVcIjpcIlJvYXN0ZWQgRmF2YSBCZWFucywgTGlnaHRseSBTZWEgU2FsdGVkIChESVNUUklCVVRPUikgLSBTdGFuZGFyZCBjYXNlICgxMCB4IDMwMGcpXCIsXCJkZmMtYjpyZWZlcmVuY2VkQnlcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NjM2MTczMzEvY2F0YWxvZ0l0ZW1cIn0se1wiQGlkXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNjE3MzMxL2NhdGFsb2dJdGVtXCIsXCJAdHlwZVwiOlwiZGZjLWI6Q2F0YWxvZ0l0ZW1cIixcImRmYy1iOm9mZmVyZWRUaHJvdWdoXCI6XCJodHRwczovL2Zvb2QtZGF0YS1jb2xsYWJvcmF0aW9uLXByb2R1Yy1mZTg3MDE1MmY2MzQuaGVyb2t1YXBwLmNvbS9wcm9kdWN0LzQ0NTI1NjYzNjE3MzMxL29mZmVyXCIsXCJkZmMtYjpza3VcIjpcIk5SRlNDWFwiLFwiZGZjLWI6c3RvY2tMaW1pdGF0aW9uXCI6XCItMVwifSx7XCJAaWRcIjpcImh0dHBzOi8vZm9vZC1kYXRhLWNvbGxhYm9yYXRpb24tcHJvZHVjLWZlODcwMTUyZjYzNC5oZXJva3VhcHAuY29tL3Byb2R1Y3QvNDQ1MjU2NjM2MTczMzEvb2ZmZXJcIixcIkB0eXBlXCI6XCJkZmMtYjpPZmZlclwiLFwiZGZjLWI6aGFzUHJpY2VcIjp7XCJAaWRcIjpcIl86YjI4XCJ9fV19IiwibGFzdElkIjoiODE0NzI5MjI1ODYxMSIsInJlbWFpbmluZ1Byb2R1Y3RzQ291bnRBZnRlciI6MCwic3VjY2VzcyI6dHJ1ZSwibWVzc2FnZSI6IlByb2R1Y3RzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHkifQ== + recorded_at: Fri, 24 May 2024 06:13:50 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/system/admin/dfc_product_import_spec.rb b/spec/system/admin/dfc_product_import_spec.rb index 224b4d89af..f02f4b5565 100644 --- a/spec/system/admin/dfc_product_import_spec.rb +++ b/spec/system/admin/dfc_product_import_spec.rb @@ -41,4 +41,27 @@ RSpec.describe "DFC Product Import" do expect(page).to have_content "Importing a DFC product catalog" expect(page).to have_content "Imported products: 1" end + + it "imports from a FDC catalog", vcr: true do + user.oidc_account.update!( + uid: "testdfc@protonmail.com", + refresh_token: ENV.fetch("OPENID_REFRESH_TOKEN"), + updated_at: 1.day.ago, + ) + + visit admin_product_import_path + + select enterprise.name, from: "Enterprise" + + url = "https://food-data-collaboration-produc-fe870152f634.herokuapp.com/fdc/products?shop=test-hodmedod.myshopify.com" + fill_in "catalog_url", with: url + + expect { + click_button "Import" + }.to change { + enterprise.supplied_products.count + } + + expect(page).to have_content "Importing a DFC product catalog" + end end From 8421c35e4213af757fe80fc4e3d12cc9a4096c99 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 09:59:37 +0000 Subject: [PATCH 222/319] chore(deps): bump view_component from 3.12.0 to 3.12.1 Bumps [view_component](https://github.com/viewcomponent/view_component) from 3.12.0 to 3.12.1. - [Release notes](https://github.com/viewcomponent/view_component/releases) - [Changelog](https://github.com/ViewComponent/view_component/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/viewcomponent/view_component/compare/v3.12.0...v3.12.1) --- updated-dependencies: - dependency-name: view_component dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index a1fe9fab7f..8c2a648d5f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -429,7 +429,7 @@ GEM mini_magick (4.11.0) mini_mime (1.1.5) mini_portile2 (2.8.6) - minitest (5.22.3) + minitest (5.23.1) monetize (1.13.0) money (~> 6.12) money (6.16.0) @@ -801,7 +801,7 @@ GEM validates_lengths_from_database (0.8.0) activerecord (>= 4) vcr (6.2.0) - view_component (3.12.0) + view_component (3.12.1) activesupport (>= 5.2.0, < 8.0) concurrent-ruby (~> 1.0) method_source (~> 1.0) From 8ee833d2d8dd7ca961b4f575b166e27d1400d905 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Wed, 29 May 2024 01:19:50 +0500 Subject: [PATCH 223/319] 12398: add flash.now --- app/controllers/admin/products_v3_controller.rb | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/app/controllers/admin/products_v3_controller.rb b/app/controllers/admin/products_v3_controller.rb index 80eefbaca7..7ac886444b 100644 --- a/app/controllers/admin/products_v3_controller.rb +++ b/app/controllers/admin/products_v3_controller.rb @@ -39,19 +39,15 @@ module Admin status = :ok if @record.destroy - flash[:success] = I18n.t('admin.products_v3.delete_product.success') + flash.now[:success] = I18n.t('admin.products_v3.delete_product.success') else - flash[:error] = I18n.t('admin.products_v3.delete_product.error') + flash.now[:error] = I18n.t('admin.products_v3.delete_product.error') status = :internal_server_error end respond_with do |format| format.turbo_stream { render :destroy_product_variant, status: } end - - # using flash with turbo stream doesn't clear it because the page is not refreshed. - # so upon refreshing the page, the flash message appears again - flash.discard end def destroy_variant @@ -60,17 +56,15 @@ module Admin status = :ok if VariantDeleter.new.delete(@record) - flash[:success] = I18n.t('admin.products_v3.delete_variant.success') + flash.now[:success] = I18n.t('admin.products_v3.delete_variant.success') else - flash[:error] = I18n.t('admin.products_v3.delete_variant.error') + flash.now[:error] = I18n.t('admin.products_v3.delete_variant.error') status = :internal_server_error end respond_with do |format| format.turbo_stream { render :destroy_product_variant, status: } end - - flash.discard end def index_url(params) From a93ce4ea5525f5809c3d8409e7ceb5e52c175ae0 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Wed, 29 May 2024 01:20:10 +0500 Subject: [PATCH 224/319] 12398: append flash in the flashes container --- .../products_v3/destroy_product_variant.turbo_stream.haml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/views/admin/products_v3/destroy_product_variant.turbo_stream.haml b/app/views/admin/products_v3/destroy_product_variant.turbo_stream.haml index 6ea1bc1a8f..645b265c41 100644 --- a/app/views/admin/products_v3/destroy_product_variant.turbo_stream.haml +++ b/app/views/admin/products_v3/destroy_product_variant.turbo_stream.haml @@ -1,6 +1,5 @@ - # @record can either be Product or Variant - unless flash[:error] = turbo_stream.remove(dom_id(@record)) --# Without +formats+ option here, by default render is trying to render the equivalant turbo stream --# It's strange that it works just fine if I remove the +unless+ above -= render(partial: 'admin/shared/flashes', locals: { flashes: flash }, formats: [:html]) += turbo_stream.append "flashes" do + = render(partial: 'admin/shared/flashes', locals: { flashes: flash }) From f8f0a1bf583ba51d141f167611c8ef7c5b8b9571 Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 29 May 2024 10:55:09 +1000 Subject: [PATCH 225/319] Update comment [skip ci] --- app/models/spree/variant.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/spree/variant.rb b/app/models/spree/variant.rb index 9a48caf0b5..18b7cb0d24 100644 --- a/app/models/spree/variant.rb +++ b/app/models/spree/variant.rb @@ -200,7 +200,7 @@ module Spree end def changed? - # Changes to price are saved after_save + # We consider the variant changed if associated price is changed (it is saved after_save) super || default_price.changed? end From c81e7f3b5d38892d8cad669aac25c5e531e64dfe Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Wed, 29 May 2024 14:19:54 +1000 Subject: [PATCH 226/319] Update all locales with the latest Transifex translations --- config/locales/hu.yml | 145 +++++++++++++++++++++--------------------- 1 file changed, 74 insertions(+), 71 deletions(-) diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 602b9da313..8565cb99e1 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -94,7 +94,7 @@ hu: blank: "nem lehet üres" errors: messages: - file_size_out_of_range: "a 1%{file_size} mérete nem esik bele a kívánt tartományba" + file_size_out_of_range: "a %{file_size} mérete nem esik bele a kívánt tartományba" limit_out_of_range: "az összmenyiség kívül esik a megengedett tartományon" image_metadata_missing: "nem használható kép" aspect_ratio_not_square: "négyzet alakú képnek kell lennie" @@ -177,6 +177,7 @@ hu: not_available_to_shop: "nem érhető el a %{shop} számára" card_details: "A kártya adatai" card_type: "Kártyatípus" + what_is_this: "Mi ez?" cardholder_name: "Kártyatulajdonos neve" community_forum_url: "A közösségi fórum URL-je" customer_instructions: "Vevői utasítások" @@ -367,7 +368,7 @@ hu: show_more: Mutass többet show_all: Mutasd az összeset show_all_with_more: "Az összes megjelenítése (további %{num})" - cancel: Vissza + cancel: Törlés edit: Szerkesztés clone: Klón distributors: Forgalmazók @@ -425,7 +426,7 @@ hu: back_to_payments_list: "Vissza a fizetési listához" maestro_or_solo_cards: "Maestro/Solo kártyák" backordered: "Hátrarendelt" - on_hand: "Készlet" + on_hand: "Raktáron" on hand: "Készlet" ship: "Szállítás" shipping_category: "Szállítási mód" @@ -437,8 +438,8 @@ hu: actions: create_and_add_another: "Hozz létre és adj hozzá egy másikat" create: "Létrehozás" - cancel: "Vissza" - resume: "Vissza" + cancel: "Törlés" + resume: "Folytatás" save: "Mentés" edit: "Szerkesztés" update: "Frissítés" @@ -465,8 +466,8 @@ hu: price: Ár producer: Termelő category: Kategória - sku: SKU - on_hand: "Készlet" + sku: SKU kód + on_hand: "Raktáron" on_demand: "Igény szerint" tax_category: "Adókategória" inherits_properties: "Megörökli az tulajdonságokat?" @@ -477,8 +478,8 @@ hu: price: Ár producer: Termelő category: Kategória - sku: SKU - on_hand: "Készlet" + sku: SKU kód + on_hand: "Raktáron" on_demand: "Igény szerint" tax_category: "Adókategória" inherits_properties: "Megörökli az tulajdonságokat?" @@ -487,7 +488,7 @@ hu: edit: Szerkesztés clone: Klón delete: Töröl - remove: eltávolítás + remove: Eltávolítás image: edit: Szerkesztés adjustments: @@ -537,7 +538,7 @@ hu: clear_filters: Szűrők törlése clear: Törlés save: Mentés - cancel: Vissza + cancel: Törlés back: Vissza show_more: Mutass többet show_n_more: 'További %{num} ' @@ -552,7 +553,7 @@ hu: tag_has_rules: "Meglévő szabályok ehhez a címkéhez: %{num}" has_one_rule: "egy szabálya van" has_n_rules: "%{num} szabálya van" - unsaved_confirm_leave: "Ezen az oldalon vannak nem mentett módosítások. Folytatás mentés nélkül?" + unsaved_confirm_leave: "Ezen az oldalon vannak nem mentett módosítások. Folytatod mentés nélkül?" available_units: "Rendelkezésre álló egységek" shopfront_settings: embedded_shopfront_settings: "Beágyazott kirakatbeállítások" @@ -727,8 +728,8 @@ hu: table: error_summary: saved: - one: "a termék helyesen lett elmentve, de" - other: "a termékek helyesen lettek elmentve, de" + one: "%{count}termék helyesen lett elmentve, de" + other: "%{count} termékek helyesen lettek elmentve, de" save: Változások mentése new_variant: Új variáns bulk_update: @@ -737,7 +738,7 @@ hu: success: Sikeresen törölte a terméket error: A terméket nem lehet törölni delete_variant: - success: Sikeresen törölte a terméket + success: Sikeresen törölte a termék változatot error: A változatot nem lehet törölni variant_row: none_tax_category: Egyik sem @@ -955,22 +956,22 @@ hu: business_address: company_legal_name: A cég hivatalos neve company_placeholder: Példa Inc. - address1: Legális cím + address1: Hivatalos cím address1_placeholder: 123 High St. address2: Cím (folyt.) - legal_phone_number: Jogi telefonszám + legal_phone_number: Hivatalos telefonszám phone_placeholder: "98 123 4565" select_country: "Válassz országot" - select_state: "Válaszd az Állam lehetőséget" + select_state: "Válassz államot" contact: legend: "Kapcsolat" name: Név - name_placeholder: például. Gustav Plum + name_placeholder: pl. Példa János email_address: Nyilvános e-mail cím - email_address_placeholder: például. inquiries@fresh-food.com + email_address_placeholder: például kapcsolat@frisszoldseg.hu email_address_tip: "Ez az e-mail cím megjelenik nyilvános profilodban" phone: Telefon - phone_placeholder: például. 98 7654 3210 + phone_placeholder: például 98 7654 3210 whatsapp_phone: WhatsApp telefonszám whatsapp_phone_placeholder: pl. +36-20-123-45-67 whatsapp_phone_tip: "A telefonszám a nyilvános profilodban látszódni fog mint WhatsApp link." @@ -1115,7 +1116,7 @@ hu: part2: Ennek a funkciónak a használatához," csatlakoztatnod kell a Stripe-fiókját az OFN-hez. Az alábbi „Elfogadom” gombra kattintva átirányítod Önt a Stripe webhelyére, ahol meglévő Stripe fiókot csatlakoztathatsz, vagy hozz létre egy újat, ha még nem rendelkezel ilyennel. part3: Ez lehetővé teszi, hogy az Open Food Network elfogadja az ügyfelek hitelkártyás fizetését az Ön nevében. Felhívjuk figyelmét, hogy saját Stripe-fiókot kell fenntartania"," fizesse ki a Stripe által felszámított díjakat, és maga kezelje a visszaterheléseket és az ügyfélszolgálatot. i_agree: Egyetértek - cancel: Vissza + cancel: Törlés tag_rules: legend: "Címkeszabályok" default_rules: @@ -1233,21 +1234,21 @@ hu: loading: BETÖLTÉS... new: create: "Létrehozás" - cancel: "Megszüntet" + cancel: "Törlés" back_to_list: "Vissza a listához" create: - success: 'Rendelési ciklusa létrejött.''' + success: 'Rendelési ciklusa létrejött.' update: - success: 'Megrendelési ciklusa frissült.''' + success: 'Megrendelési ciklusa frissült.' clone: - success: "Rendelési ciklusát %{name} klónozták." + success: "Rendelési ciklusát %{name} klónozásra került." notify_producers: success: 'A termelőknek küldendő e-mailek sorba kerültek küldés céljából.' edit: save: "Mentés" save_and_next: "Mentés és Tovább" next: "Következő" - cancel: "Megszüntet" + cancel: "Törlés" back_to_list: "Vissza a listához" save_and_back_to_list: "Mentés és Vissza a listához" choose_products_from: "Válasszon termékeket a következők közül:" @@ -1262,7 +1263,7 @@ hu: save: "Mentés" save_and_next: "Mentés és Tovább" next: "Következő" - cancel: "Vissza" + cancel: "Törlés" back_to_list: "Vissza a listához" outgoing: outgoing: "Kimenő" @@ -1275,11 +1276,11 @@ hu: previous: "Előző" save: "Mentés" save_and_next: "Mentés és Tovább" - cancel: "Vissza" + cancel: "Törlés" back_to_list: "Vissza a listához" checkout_options: back_end: "Csak back office" - cancel: "Vissza" + cancel: "Törlés" checkout_options: "Fizetési lehetőségek" distributor: "Elosztó" no_payment_methods: Ebben a rendelési ciklusban minden forgalmazónak szüksége van legalább egy fizetési módra. @@ -1364,7 +1365,7 @@ hu: no_data: Hm, valami elromlott. Nem található rendelési ciklus adat. date_warning: msg: Ez a rendelési ciklus %{n} nyitott előfizetéses megrendeléshez kapcsolódik. A dátum módosítása nem érinti a már leadott rendeléseket, de lehetőség szerint kerülni kell. Biztosan folytatja? - cancel: Vissza + cancel: Törlés proceed: Folytassa status: undated: keltezetlen @@ -1568,7 +1569,7 @@ hu: no_open_or_upcoming_order_cycle: "Nincs közelgő rendelési ciklus" products_panel: save: "MENTÉS" - saving: "MEGTAKARÍTÁS" + saving: "MENTÉS" saved: "MENTETT" product_already_in_order: Ez a termék már felkerült a rendelésre. Kérjük, módosítsa közvetlenül a mennyiséget. stock: @@ -1627,9 +1628,9 @@ hu: failed_to_update: "Nem sikerült frissíteni a rendelést" checkout: failed: "A fizetés nem sikerült. Kérjük, jelezze felénk, hogy feldolgozhassuk megrendelését." - payment_cancelled_due_to_stock: "Fizetés törölve: a pénztár készlethiba miatt nem fejezhető be." + payment_cancelled_due_to_stock: "Fizetés törölve: a fizetés készlethiba miatt nem fejezhető be." order_not_loaded: "Nem található érvényes rendelés a fizetés feldolgozásához" - your_details_without_number: Személyes adatok + your_details_without_number: Az adataid payment_method_without_number: Fizetési mód order_summary_without_number: Megrendelés-összesítő already_ordered: @@ -1673,7 +1674,7 @@ hu: label: Kártyaszám placeholder: pl. 4242 4242 4242 4242 card_verification_value: - label: CVC + label: CVC kód card_month: label: Hónap card_year: @@ -1717,7 +1718,7 @@ hu: invalid_email: "Kérjük valós e-mail címet adjon meg" select_a_shipping_method: Válassz szállítási módot! select_a_payment_method: Válassz fizetési módot - no_shipping_methods_available: Szállítási lehetőségek hiánya miatt a fizetés nem lehetséges. Kérjük, lépjen kapcsolatba az üzlet tulajdonosával. + no_shipping_methods_available: Átvételi és szállítási lehetőségek hiánya miatt a fizetés nem lehetséges. Kérjük, lépjen kapcsolatba az üzlet tulajdonosával. voucher_not_found: Nem található shops: hubs: @@ -1791,6 +1792,7 @@ hu: invoice_column_price_without_taxes: "Teljes ár (adó nélkül)" invoice_column_tax_rate: "Adókulcs" invoice_tax_total: "GST összesen:" + invoice_cancel_and_replace_invoice: "érvényteleníti és cseréli a számlát" tax_invoice: "ADÓSZÁMLA" tax_total: "Teljes adó (%{rate}):" invoice_shipping_category_delivery: "Szállítás" @@ -1943,19 +1945,19 @@ hu: cookies_policy_link: "cookie-kra vonatkozó szabályzat" cookies_accept_button: "Cookie-k elfogadása" home_shop: Tovább a termelőkhöz, átvételi pontokhoz. - brandstory_headline: "Helyi, biztonságos élelmiszer." - brandstory_intro: "Szolidáris élelmiszerrendszert építünk." - brandstory_part1: "Az alapoktól kezdjük. A gazdálkodókkal és termelőkkel, akik készen állnak arra, hogy büszkén és őszintén elmondják történeteiket. A forgalmazókkal, akik készen állnak arra, hogy tisztességesen és becsületesen összekapcsolják az embereket a termékekkel. Azokkal a vásárlókkal, akik hisznek abban, hogy a jobb heti vásárlási döntések komolyan megváltoztathatják a világot." - brandstory_part2: "Akkor szükségünk van egy módra, hogy valósággá tegyük. Egy módja annak, hogy mindenkit megerősítsen, aki élelmiszert termeszt, ad el és vásárol. Egy módja annak, hogy elmeséljük az összes történetet, kezeljük az összes logisztikát. Egy módja annak, hogy a tranzakciót minden nap átalakulássá alakítsa." - brandstory_part3: "Ezért olyan online piacteret építünk, amely kiegyenlíti a versenyfeltételeket. Átlátszó, így valódi kapcsolatokat hoz létre. Nyílt forráskódú, tehát mindenki tulajdonában van. Régiókra és nemzetekre skálázódik, így az emberek világszerte elindítják a verziókat." - brandstory_part4: "Mindenhol működik. Mindent megváltoztat." - brandstory_part5_strong: "Nyílt élelmiszerhálózatnak hívjuk." + brandstory_headline: "Együtt, az élelem önrendelkezésért!" + brandstory_intro: "Közösség által irányított élelmiszerrendszert építünk." + brandstory_part1: "Az alapoktól kezdjük. A gazdálkodókkal, akik készen állnak arra, hogy elmondják történeteiket, és akiknek fontos, hogy közösen, egy fenntartható és mindenki számára átlátható, hazai élelemrendszert hozzunk létre.\nA forgalmazókkal, bevásárlóközösségekkel, fogyasztói csoportokkal, akik készen állnak arra, hogy összekapcsolják az embereket a termelőkkel és a termékekkel, és biztosítani szeretnék, hogy a termelők tisztességes díjazásban részesüljenek.\nAzokkal a fogyasztókkal, akik hisznek abban, hogy döntéseik befolyásolják jelenünket és jövőnket." + brandstory_part2: "Ahhoz, hogy ezt valósággá tegyük, szükségünk van egy módszerre, ami minden résztvevőt megerősít, aki élelmiszert termeszt, ad el, szervez, tervez, fogyaszt. \nEgy eszközre, amely láthatóvá teszi a gazdákat, a közösségeket, a termesztési módszereket, és képes kezelni a logisztikát. \nEz az Open Food Network platformja, amely országonként saját közösségi irányítás alatt áll, ugyanakkor globális erőforrásainkat összeadva fejlesztjük." + brandstory_part3: "Egy olyan piacteret hozunk így létre, amely átlátható, közvetlen kapcsolatokon alapul, láthatóvá teszi a rövid ellátási lánc szemeit.\nKifejezetten az élelmiszerek értékesítésére készült, így képes kezelni a trükkös méréseket vagy készletszinteket, amelyek csak az élelmiszerek esetében fordulnak elő - egy tucat tojás, egy csokor petrezselyem, egy egész csirke, amelynek súlya változó lehet...\nA termelők létrehozhatnak saját profilt, beszedhetik a fizetéseket, a platformon lévő más átadópontokon keresztül is értékesíthetnek, kiszállíthatnak, vagy akár futárszolgálattal is dolgozhatnak.\nA közösségek összefoghatják a helyi termelőket, hogy virtuális termelői piacokat vagy bevásárlóközösségeket hozzanak létre, és ezáltal rugalmas helyi élelmiszer-gazdaságot építsenek" + brandstory_part4: "És ami legalább olyan fontos, mint maga a szoftver, azok az értékek, amelyek a szoftver alapját képezik.\nHa élelmiszert értékesítesz – akár mint gazdálkodó, akár mint termelői piac, vagy termelői szövetkezet vagy élelmiszer-központ -, akkor olyan szoftvert válassz, amely összhangban van az értékeiddel, az emberek és a bolygó érdekével, nem pedig a profit érdekében tevékenykedik. " + brandstory_part5_strong: "Open Food Network – a Szabad Élelmiszerhálózat" brandstory_part6: "Mindannyian szeretjük az ételt. Most már az élelmezési rendszerünket is szerethetjük." system_headline: "A vásárlás lépései" system_step1: "1. Keresés" system_step1_text: "Böngészhetsz közvetlenül a gazdák, vagy a bevásárlóközösségek kínálatában. Kereshetsz a lakhelyed, a termelő, élelmiszertípus, és termesztési mód szerint." system_step2: "2. Vásárlás" - system_step2_text: "Alakítsd át a fogyasztási szokásaidat! Pakold meg a bevásárlókosarad helyi termelőktől származó termékekkel. Vásárolj olyan élelmiszert, amelynek ismered az eredetét, és tudod hogyan állították elő." + system_step2_text: "Alakítsd át a fogyasztási szokásaidat! Pakold meg a bevásárlókosarad helyi termelőktől származó termékekkel. Vásárolj olyan élelmiszert, amelynek ismered az eredetét, és tudod, hogyan állították elő." system_step3: "3. Átvétel / kiszállítás" system_step3_text: "Válaszd a kiszállítást, vagy a személyesebb kapcsolat érdekében keresd fel a termelőt, vagy az átvételi pontot." cta_headline: "A jövőnk fenntartható élelmiszerhálózata." @@ -2007,7 +2009,7 @@ hu: order_includes_tax: (adót tartalmaz) order_payment_paypal_successful: PayPal-on keresztüli fizetését sikeresen feldolgoztuk. order_hub_info: Átvételi pont Info - order_back_to_store: Vissza a átvételi pontba + order_back_to_store: Vissza az átvételi pontba order_back_to_cart: Vissza a kosárba order_back_to_website: Vissza az Átadó pont oldalára bom_tip: "Ezen az oldalon módosíthatod a termékek mennyiségét több rendelés esetén. Szükség esetén a termékek teljes egészében eltávolíthatók a megrendelésekből." @@ -2230,20 +2232,20 @@ hu: name_or_sku: "NÉV VAGY Cikkszám" register_title: Regisztráció sell_title: "Regisztráció" - sell_headline: "Csatlakozz az Open Food Network-höz!" + sell_headline: "Legyél Te is a hálózat tagja!" sell_motivation: "Mutasd be termékeidet, tedd elérhetővé a fogyasztók számára." sell_producers: "Termelők" sell_hubs: "Átvételi pontok" sell_groups: "Csoportok" - sell_producers_detail: "Hozz létre profilt vállalkozásod számára az OFN-en percek alatt. Bármikor frissítheted profilod egy online áruházra, és közvetlenül ajánlhatod termékeidet a vásárlóknak." - sell_hubs_detail: "Hozz létre profilt a vállalkozásod számára az OFN-en. Bármikor frissítheted egy többtermelős átvételi pontra." - sell_groups_detail: "Hozz létre egy személyre szabott cégjegyzéket (termelők és egyéb élelmiszeripari vállalkozások) régiója vagy szervezete számára." - sell_user_guide: "Tudjon meg többet használati útmutatónkban." - sell_listing_price: "A listázás az OFN-en ingyenes. Egy üzlet megnyitása és működtetése az OFN-en ingyenes havi 500 USD-ig. Ha többet ad el, akkor az árbevétel 1%-a és 3%-a között választhatja meg közösségi hozzájárulását. Az árakkal kapcsolatos további részletekért keresse fel a Szoftverplatform részt a felső menü Névjegy linkjén keresztül." + sell_producers_detail: "Őstermelő, kistermelő, családi gazdálkodó, vagy épp kisválllalkozás vagy? Hozz létre termelői profilt az OFN-en percek alatt. Bármikor frissítheted profilod egy online áruházra, és közvetlenül ajánlhatod termékeidet a fogyasztóknak." + sell_hubs_detail: "Bevásárlóközösséget indítanál? Vagy csak összefognál a termelőtársakkal és közösen szólítanátok meg a fogyasztókat? Hozz létre új profilt, vagy bármikor frissítheted a profilodat egy többtermelős átvételi pontra." + sell_groups_detail: "Hozz létre egy személyre szabott jegyzéket (termelők és egyéb élelmiszeripari vállalkozások) régiója vagy szervezete számára." + sell_user_guide: "Tudj meg többet használati útmutatónkból." + sell_listing_price: "A termelői regisztráció az OFN-en ingyenes, és az is marad. A platformon történő értékesítés volumenétől függően azonban közösségi hozzájárulást kérünk, a szoftver üzemeltetéshez és IT support biztosításához . \nRészletek hamarosan. " sell_embed: "Ezenkívül beágyazhatunk egy OFN üzletet saját, személyre szabott webhelyébe, vagy személyre szabott helyi élelmiszer-hálózati webhelyet készíthetünk az Ön régiójában." - sell_ask_services: "Kérdezzen minket az OFN szolgáltatásairól." + sell_ask_services: "Kérdezz bátran egyéb szolgáltatásainkról. " shops_title: Átadópontok - shops_headline: Bevásárlás, másképpen. + shops_headline: Bevásárlás újragondolva. shops_text: Rendelési ciklusokban dolgozunk. A növénytermesztés, az állattenyésztés, az élelem előállítása ciklikus folyamat. Így nálunk az áruátadás is ciklusokban történik, pont ahogy a növények is hétről hétre, és eltérő ütemben fejlődnek. Ha lezárt rendelési ciklust találsz valahol, nézd meg, ki van-e írva a rendelési ciklus nyitásának időpontja. Ha nem, látogass vissza később az adott termelőhöz, közösséghez. shops_signup_title: Regisztrálj átvételi pontként shops_signup_headline: Élelmiszer-központok, korlátlan. @@ -2341,7 +2343,7 @@ hu: november: "november" december: "december" email_not_found: "Az e-mail cím nem található" - email_unconfirmed: "A jelszó visszaállítása előtt meg kell erősítenie e-mail címét." + email_unconfirmed: "A jelszó visszaállítása előtt meg kell erősítened az e-mail címed." email_required: "Meg kell adnia egy e-mail címet" logging_in: "Várjon egy kicsit, bejelentkezünk" signup_email: "Az email címed" @@ -2759,7 +2761,7 @@ hu: report_header_total_incl_tax: "Összesen, beleértve adó (%{currency_symbol})" report_header_enterprise: Vállalkozás report_header_enterprise_fee_name: Név - report_header_enterprise_fee_type: típus + report_header_enterprise_fee_type: Típus report_header_enterprise_fee_owner: Tulajdonos report_header_customer: Vevő report_header_customer_first_name: Keresztnév @@ -2863,7 +2865,7 @@ hu: filter_products: "Termékek szűrése" delete_product_variant: "Az utolsó változat nem törölhető!" progress: "előrehalad" - saving: "Megtakarítás.." + saving: "Mentés..." success: "siker" failure: "kudarc" unsaved_changes_confirmation: "A nem mentett módosítások elvesznek. Mindenképp folytatni?" @@ -2948,7 +2950,7 @@ hu: pending: Függőben levő shipped: Kiszállított js: - saving: 'Megtakarítás...''' + saving: 'Mentés...' changes_saved: 'Változtatások elmentve.''' authorising: "Engedélyezés..." save_changes_first: Először mentse a változtatásokat. @@ -2980,7 +2982,7 @@ hu: got_it: "Megvan" close: "Bezárás" continue: "Tovább" - cancel: "Vissza" + cancel: "Törlés" invite: "Meghívás" invite_title: "Nem regisztrált felhasználó meghívása" tag_rule_help: @@ -3014,7 +3016,7 @@ hu: panels: save: MENTÉS saved: MENTETT - saving: MEGTAKARÍTÁS + saving: MENTÉS enterprise_package: hub_profile: Átvételi pont profil hub_profile_cost: "KÖLTSÉG: MINDIG INGYENES" @@ -3269,7 +3271,7 @@ hu: no_authorisation: "Nem sikerült felhatalmazást kapnom a módosítások mentésére, így azok mentés nélkül maradnak." some_trouble: "Problémáim akadtak a mentésnél: %{errors}" changing_on_hand_stock: Változás a kézi készletszinten... - stock_reset: A részvények visszaállnak az alapértelmezett értékekre. + stock_reset: A készletek visszaállnak az alapértelmezett értékekre. tag_rules: show_hide_variants: 'Változatok megjelenítése vagy elrejtése a kirakatomban' show_hide_shipping: 'Szállítási módok megjelenítése vagy elrejtése fizetéskor' @@ -3295,7 +3297,7 @@ hu: create_failure: "Nem sikerült létrehozni a rendelési ciklust" update_success: 'Megrendelési ciklusa frissült.''' update_failure: "Nem sikerült frissíteni a rendelési ciklust" - no_distributors: Ebben a rendelési ciklusban nincsenek forgalmazók. Ez a rendelési ciklus nem lesz látható az ügyfelek számára, amíg nem ad hozzá egyet. Szeretné folytatni a rendelési ciklus mentését?' + no_distributors: Ebben a rendelési ciklusban nincsenek forgalmazók. Ez a rendelési ciklus nem lesz látható az ügyfelek számára, amíg nem adsz hozzá forgalmazót. Szeretnéd folytatni a rendelési ciklus mentését?' enterprises: producer: "Termelő" non_producer: "Nem termelő" @@ -3509,7 +3511,7 @@ hu: new_taxon: "Új taxon" new_user: "Új felhasználó" no_pending_payments: "Nincsenek függőben lévő kifizetések" - remove: "eltávolítás" + remove: "Eltávolítás" none: "Egyik sem" not_found: "Nem található" notice_messages: @@ -3704,7 +3706,7 @@ hu: out_of_stock: '%{item} elfogyott.' actions: update: "Frissítés" - cancel: "Vissza" + cancel: "Törlés" shared: error_messages: errors_prohibited_this_record_from_being_saved: @@ -3762,7 +3764,7 @@ hu: overview: "Áttekintés" product_import: "Importálás" enterprise_roles: "Szerepek" - payment_methods: "fizetési módok" + payment_methods: "Fizetési módok" product_properties: index: inherits_properties_checkbox_hint: "Tulajdonságokat örököl a következőtől: %{supplier}? (hacsak nincs felülírva)" @@ -3837,6 +3839,7 @@ hu: results_found: "%{number} találat." viewing: "%{start} – %{end} megtekintése." print_invoices: "Számlák nyomtatása" + cancel_orders: "Rendelések törlése" resend_confirmation: "Visszaigazolás újraküldése" sortable_header: payment_state: "Fizetési állapot" @@ -3852,7 +3855,7 @@ hu: to: "Bill to" shipping: "Szállítás" payments_list: - date_time: "Dátum idő" + date_time: "Dátum/idő" payment_method: "Fizetési mód" amount: "Összeg" note: @@ -4155,16 +4158,16 @@ hu: customer_greeting: "Kedves %{name}!" instructions_html: "Megrendelését a(z) %{distributor}-tól TÖRÖLTE. Kérjük, őrizze meg ezt a törlési információt saját nyilvántartása céljából." dont_cancel: "Ha meggondoltad magad, vagy nem szeretnéd lemondani ezt a rendelést, fordulj a %{email}" - order_summary_canceled_html: "Megrendelés összegzése" + order_summary_canceled_html: "Megrendelés összegzése #%{number}[TÖRÖLVE] " details: "Itt vannak a megrendelt termékek részletei:" - unpaid_order: "Megrendelését nem fizették ki, így a visszatérítés nem történt" - paid_order: "Megrendelésed kifizették, így %{distributor} visszatérítette a teljes összeget" + unpaid_order: "Megrendelésed nem lett kifizetve, így visszatérítés nem történt" + paid_order: "Megrendelésed fizetésre került, így %{distributor} visszatérítette a teljes összeget" credit_order: "Megrendelését kifizették, így jóváírásra került a számláján" subject: "Megrendelés törlése" cancel_email_for_shop: greeting: "Kedves %{name}!" subject: "Megrendelés törlése" - intro: "Egy ügyfél törölte a" + intro: "Egy ügyfél törölte a rendelését #%{number}" view_cancelled_order: "A törölt rendelés megtekintése" confirm_email: subject: "Megrendelés visszaigazolás" @@ -4286,7 +4289,7 @@ hu: items: Tételek total: Összesen edit: Szerkesztés - cancel: Vissza + cancel: Törlés closed: Zárva until: Amíg past_orders: @@ -4334,7 +4337,7 @@ hu: spree/payment: one: Fizetés other: Kifizetések - unit: Mértékegység + unit: mértékegység per_unit: egységenként datetime: distance_in_words: From 65fc144a4654330ef2abd9c28a14774b8b0a44a5 Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Wed, 29 May 2024 10:32:21 +0200 Subject: [PATCH 227/319] Task to check missing foreing ids in spree_line_items --- ...sing_required_ids_in_spree_line_items.rake | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 lib/tasks/data/check_missing_required_ids_in_spree_line_items.rake diff --git a/lib/tasks/data/check_missing_required_ids_in_spree_line_items.rake b/lib/tasks/data/check_missing_required_ids_in_spree_line_items.rake new file mode 100644 index 0000000000..cb4b788b94 --- /dev/null +++ b/lib/tasks/data/check_missing_required_ids_in_spree_line_items.rake @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +namespace :ofn do + namespace :data do + desc 'Checking missing required ids in Spree::LineItem' + task check_missing_required_missing_ids_in_spree_line_items: :environment do + puts 'Checking for null order_id' + ids = Spree::LineItem.where(order_id: nil).pluck(:id) + + if ids.empty? + puts 'No NULL order_id found in spree_line_items' + else + puts 'NULL order_ids s have been found in spree_line_items:' + print ids + end + + puts 'Checking for null variant_id' + ids = Spree::LineItem.where(variant_id: nil).pluck(:id) + + if ids.empty? + puts 'No NULL variant_id found in spree_line_items' + else + puts 'NULL variant_id s have been found in spree_line_items:' + print ids + end + end + end +end From 4bb996e77fecbff66361d4132f3151e736660c49 Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Wed, 29 May 2024 10:38:18 +0200 Subject: [PATCH 228/319] Fix RedundantPresenceValidationOnBelongs on some files (part VI) - presence: true is redundant since Rails 5.0 BUT applies with new default config of belongs_to_required_by_default to true. Lots of files with belongs_to_required_by_default = false (backward compatibility). So: deleting this setting implies to adding optional: true - added 'NOT NULL' constraints so model constraints match with contraints on DB tables. - corresponding migration files to match AR Models & DB tables - rake tasks to check corrupt data (ie: NULL/nil in id fields) (previous commit) - updated the todo --- .rubocop_todo.yml | 3 +-- app/models/spree/line_item.rb | 5 +---- ...20240529081209_require_order_and_variant_on_line_item.rb | 6 ++++++ db/schema.rb | 6 +++--- 4 files changed, 11 insertions(+), 9 deletions(-) create mode 100644 db/migrate/20240529081209_require_order_and_variant_on_line_item.rb diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 8a6981e6b8..b99b52a9a8 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -642,11 +642,10 @@ Rails/RedundantActiveRecordAllMethod: - 'app/models/spree/variant.rb' - 'spec/system/admin/product_import_spec.rb' -# Offense count: 4 +# Offense count: 3 # This cop supports unsafe autocorrection (--autocorrect-all). Rails/RedundantPresenceValidationOnBelongsTo: Exclude: - - 'app/models/spree/line_item.rb' - 'app/models/spree/order.rb' # Offense count: 1 diff --git a/app/models/spree/line_item.rb b/app/models/spree/line_item.rb index 74d3acdc7e..eed6741b31 100644 --- a/app/models/spree/line_item.rb +++ b/app/models/spree/line_item.rb @@ -7,8 +7,6 @@ module Spree include VariantUnits::VariantAndLineItemNaming include LineItemStockChanges - self.belongs_to_required_by_default = false - searchable_attributes :price, :quantity, :order_id, :variant_id, :tax_category_id searchable_associations :order, :order_cycle, :variant, :product, :supplier, :tax_category searchable_scopes :with_tax, :without_tax @@ -19,7 +17,7 @@ module Spree belongs_to :variant, -> { with_deleted }, class_name: "Spree::Variant" has_one :product, through: :variant has_one :supplier, through: :product - belongs_to :tax_category, class_name: "Spree::TaxCategory" + belongs_to :tax_category, class_name: "Spree::TaxCategory", optional: true has_many :adjustments, as: :adjustable, dependent: :destroy @@ -28,7 +26,6 @@ module Spree before_validation :copy_tax_category before_validation :copy_dimensions - validates :variant, presence: true validates :quantity, numericality: { only_integer: true, greater_than: -1, diff --git a/db/migrate/20240529081209_require_order_and_variant_on_line_item.rb b/db/migrate/20240529081209_require_order_and_variant_on_line_item.rb new file mode 100644 index 0000000000..8d2920147a --- /dev/null +++ b/db/migrate/20240529081209_require_order_and_variant_on_line_item.rb @@ -0,0 +1,6 @@ +class RequireOrderAndVariantOnLineItem < ActiveRecord::Migration[7.0] + def change + change_column_null :spree_line_items, :order_id, false + change_column_null :spree_line_items, :variant_id, false + end +end diff --git a/db/schema.rb b/db/schema.rb index d279b1931b..70feb4b8e7 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_05_17_121235) do +ActiveRecord::Schema[7.0].define(version: 2024_05_29_081209) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" enable_extension "plpgsql" @@ -541,8 +541,8 @@ ActiveRecord::Schema[7.0].define(version: 2024_05_17_121235) do end create_table "spree_line_items", id: :serial, force: :cascade do |t| - t.integer "order_id" - t.integer "variant_id" + t.integer "order_id", null: false + t.integer "variant_id", null: false t.integer "quantity", null: false t.decimal "price", precision: 10, scale: 2, null: false t.datetime "created_at", precision: nil, null: false From 6dee2009387d84352092228a5b8439b99f47beb8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 May 2024 09:35:40 +0000 Subject: [PATCH 229/319] chore(deps): bump rack-timeout from 0.6.3 to 0.7.0 Bumps [rack-timeout](https://github.com/zombocom/rack-timeout) from 0.6.3 to 0.7.0. - [Changelog](https://github.com/zombocom/rack-timeout/blob/main/CHANGELOG.md) - [Commits](https://github.com/zombocom/rack-timeout/compare/v0.6.3...v0.7.0) --- updated-dependencies: - dependency-name: rack-timeout dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 8c2a648d5f..1cab46070d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -543,7 +543,7 @@ GEM rack (< 3) rack-test (2.1.0) rack (>= 1.3) - rack-timeout (0.6.3) + rack-timeout (0.7.0) rails (7.0.8) actioncable (= 7.0.8) actionmailbox (= 7.0.8) From 2c081dc5f033f731af67588cba41a077bbcbd427 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Sun, 26 May 2024 18:24:43 +0100 Subject: [PATCH 230/319] Assures the Edit button link is always displayed for the first variant, although the delete button is not Also should work for a second (non-default variant) Removes unecessary test cases --- spec/system/admin/products_v3/products_spec.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 31e4fc4e9e..adf8b94e3a 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -1196,6 +1196,9 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi let(:default_variant_selector) { "tr:has(input[aria-label=Price][value='#{product_a.price}'])" } + let(:link_edit_variant) { + "/admin/products/#{Spree::Product.first.id}/variants/#{Spree::Variant.first.id}/edit" + } describe "Actions columns (delete)" do before do @@ -1203,6 +1206,7 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi end it "shows an actions menu with a delete link when clicking on icon for product. " \ + "shows link to clone and edit the product;" \ "doesn't show delete link for the single variant" do within product_selector do page.find(".vertical-ellipsis-menu").click @@ -1213,6 +1217,7 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi # to select the default variant within default_variant_selector do page.find(".vertical-ellipsis-menu").click + expect(page).to have_link "Edit", href: link_edit_variant expect(page).not_to have_css(delete_option_selector) end end @@ -1224,17 +1229,21 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi display_name: "Medium box", sku: "APL-01", price: 5.25) + link_edit_variant2 = + "/admin/products/#{Spree::Product.first.id}/variants/#{Spree::Variant.second.id}/edit" visit admin_products_url # to select the default variant within default_variant_selector do page.find(".vertical-ellipsis-menu").click + expect(page).to have_link "Edit", href: link_edit_variant expect(page).to have_css(delete_option_selector) end page.find("div#content").click # to close the vertical actions menu within variant_selector do page.find(".vertical-ellipsis-menu").click + expect(page).to have_link "Edit", href: link_edit_variant2 expect(page).to have_css(delete_option_selector) end end From 3d1c94720a64ffd2ae99f3b97940e84487c26289 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Wed, 29 May 2024 15:40:30 +0100 Subject: [PATCH 231/319] Applies existing helper to assert on rows with product name --- spec/system/admin/products_v3/products_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index adf8b94e3a..57f3390b82 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -80,8 +80,8 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi expect(page).to have_selector "th", text: "Actions" # displays product list - expect(page).to have_field("_products_0_name", with: p1.name.to_s) - expect(page).to have_field("_products_1_name", with: p2.name.to_s) + expect(page).to have_selector row_containing_name(p1.name.to_s) + expect(page).to have_selector row_containing_name(p2.name.to_s) end end From e932dabacbb1b9e57f768d2b8eeb4556ca3c7570 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 30 May 2024 14:17:57 +0500 Subject: [PATCH 232/319] 12398: fix failing specs --- app/models/spree/ability.rb | 2 +- app/webpacker/controllers/products_controller.js | 3 ++- spec/system/admin/products_v3/products_spec.rb | 10 ---------- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/app/models/spree/ability.rb b/app/models/spree/ability.rb index e95d73b5fc..381d0b8502 100644 --- a/app/models/spree/ability.rb +++ b/app/models/spree/ability.rb @@ -192,7 +192,7 @@ module Spree OpenFoodNetwork::Permissions.new(user).managed_product_enterprises.include? product.supplier end - can [:admin, :index, :bulk_update], :products_v3 + can [:admin, :index, :bulk_update, :destroy, :destroy_variant], :products_v3 can [:create], Spree::Variant can [:admin, :index, :read, :edit, diff --git a/app/webpacker/controllers/products_controller.js b/app/webpacker/controllers/products_controller.js index 8396d9edf7..720b181382 100644 --- a/app/webpacker/controllers/products_controller.js +++ b/app/webpacker/controllers/products_controller.js @@ -54,7 +54,8 @@ export default class extends ApplicationController { const elementToBeRemoved = this.#getElementToBeRemoved(deletePath, recordType); const handleSlideOutAnimationEnd = async () => { - const csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content'); + // in case of test env, we won't be having csrf token + const csrfToken = document.querySelector('meta[name="csrf-token"]')?.getAttribute('content'); try { const response = await fetch(deletePath, { diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 757be44d02..5260ad2883 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -1164,8 +1164,6 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi end expect(page).not_to have_selector(modal_selector) - # Make sure the products loading spinner is hidden - wait_for_class('.spinner-overlay', 'hidden') expect(page).not_to have_selector(variant_selector) within success_flash_message_selector do expect(page).to have_content("Successfully deleted the variant") @@ -1182,8 +1180,6 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi page.find(delete_button_selector).click end expect(page).not_to have_selector(modal_selector) - # Make sure the products loading spinner is hidden - wait_for_class('.spinner-overlay', 'hidden') expect(page).not_to have_selector(product_selector) within success_flash_message_selector do expect(page).to have_content("Successfully deleted the product") @@ -1206,9 +1202,6 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi page.find(delete_button_selector).click end - expect(page).not_to have_selector(modal_selector) - sleep(0.5) # delay for loading spinner to complete - expect(page).to have_selector(variant_selector) within error_flash_message_selector do expect(page).to have_content("Unable to delete the variant") page.find(dismiss_button_selector).click @@ -1223,9 +1216,6 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi within modal_selector do page.find(delete_button_selector).click end - expect(page).not_to have_selector(modal_selector) - sleep(0.5) # delay for loading spinner to complete - expect(page).to have_selector(product_selector) within error_flash_message_selector do expect(page).to have_content("Unable to delete the product") end From c2fa9934325e97f9049b5df911f2795329789b33 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 30 May 2024 14:24:51 +0500 Subject: [PATCH 233/319] 12398: fix lint issues --- app/controllers/admin/products_v3_controller.rb | 2 ++ app/reflexes/products_reflex.rb | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/admin/products_v3_controller.rb b/app/controllers/admin/products_v3_controller.rb index 7ac886444b..eb975424ef 100644 --- a/app/controllers/admin/products_v3_controller.rb +++ b/app/controllers/admin/products_v3_controller.rb @@ -1,5 +1,6 @@ # frozen_string_literal: true +# rubocop:disable Metrics/ClassLength module Admin class ProductsV3Controller < Spree::Admin::BaseController helper ProductsHelper @@ -183,3 +184,4 @@ module Admin end end end +# rubocop:enable Metrics/ClassLength diff --git a/app/reflexes/products_reflex.rb b/app/reflexes/products_reflex.rb index 7d107af4a4..a2feef4d28 100644 --- a/app/reflexes/products_reflex.rb +++ b/app/reflexes/products_reflex.rb @@ -174,5 +174,4 @@ class ProductsReflex < ApplicationReflex params.permit(products: ::PermittedAttributes::Product.attributes) .to_h.with_indifferent_access end - end From ce60a2a1e0fddca0781d4894a6c76fb3c9a3d486 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 30 May 2024 14:44:34 +0500 Subject: [PATCH 234/319] 12398: add lazylookup for translations --- app/controllers/admin/products_v3_controller.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/controllers/admin/products_v3_controller.rb b/app/controllers/admin/products_v3_controller.rb index eb975424ef..2954094d6d 100644 --- a/app/controllers/admin/products_v3_controller.rb +++ b/app/controllers/admin/products_v3_controller.rb @@ -40,9 +40,9 @@ module Admin status = :ok if @record.destroy - flash.now[:success] = I18n.t('admin.products_v3.delete_product.success') + flash.now[:success] = t('.delete_product.success') else - flash.now[:error] = I18n.t('admin.products_v3.delete_product.error') + flash.now[:error] = t('.delete_product.error') status = :internal_server_error end @@ -57,9 +57,9 @@ module Admin status = :ok if VariantDeleter.new.delete(@record) - flash.now[:success] = I18n.t('admin.products_v3.delete_variant.success') + flash.now[:success] = t('.delete_variant.success') else - flash.now[:error] = I18n.t('admin.products_v3.delete_variant.error') + flash.now[:error] = t('.delete_variant.error') status = :internal_server_error end From b15e136980b6a98574d9343d8a5d551f6b4780b6 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 31 May 2024 09:40:52 +1000 Subject: [PATCH 235/319] Remove obsolete rake task --- ...sing_required_ids_in_spree_line_items.rake | 28 ------------------- 1 file changed, 28 deletions(-) delete mode 100644 lib/tasks/data/check_missing_required_ids_in_spree_line_items.rake diff --git a/lib/tasks/data/check_missing_required_ids_in_spree_line_items.rake b/lib/tasks/data/check_missing_required_ids_in_spree_line_items.rake deleted file mode 100644 index cb4b788b94..0000000000 --- a/lib/tasks/data/check_missing_required_ids_in_spree_line_items.rake +++ /dev/null @@ -1,28 +0,0 @@ -# frozen_string_literal: true - -namespace :ofn do - namespace :data do - desc 'Checking missing required ids in Spree::LineItem' - task check_missing_required_missing_ids_in_spree_line_items: :environment do - puts 'Checking for null order_id' - ids = Spree::LineItem.where(order_id: nil).pluck(:id) - - if ids.empty? - puts 'No NULL order_id found in spree_line_items' - else - puts 'NULL order_ids s have been found in spree_line_items:' - print ids - end - - puts 'Checking for null variant_id' - ids = Spree::LineItem.where(variant_id: nil).pluck(:id) - - if ids.empty? - puts 'No NULL variant_id found in spree_line_items' - else - puts 'NULL variant_id s have been found in spree_line_items:' - print ids - end - end - end -end From 6a206b2a34ce956a2c0c2060061a7839434d73dd Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 30 May 2024 16:18:51 +1000 Subject: [PATCH 236/319] Move Connected Apps form out of Enterprise form Nested forms are not valid HTML and we were submitting the wrong authenticity token to Rails when updating the enterprise. I inverted the hierarchy of the form and the panels. The menu and tab-panel structure now sits above and the enterprise edit form is nested within. The current structure is not ideal but it's only a transition phase. I'm expecting the page to get re-designed at some point and re-writen without AngularJS. --- app/jobs/connect_app_job.rb | 2 +- app/views/admin/enterprises/_form.html.haml | 5 +++++ app/views/admin/enterprises/_ng_form.html.haml | 9 +-------- app/views/admin/enterprises/edit.html.haml | 12 +++++++++++- .../admin/enterprises/form/_connected_apps.html.haml | 3 +-- 5 files changed, 19 insertions(+), 12 deletions(-) diff --git a/app/jobs/connect_app_job.rb b/app/jobs/connect_app_job.rb index 43d273f155..2474343a29 100644 --- a/app/jobs/connect_app_job.rb +++ b/app/jobs/connect_app_job.rb @@ -17,7 +17,7 @@ class ConnectAppJob < ApplicationJob return unless channel - selector = "#edit_enterprise_#{enterprise.id} #connected-app-discover-regen" + selector = "#connected-app-discover-regen.enterprise_#{enterprise.id}" html = ApplicationController.render( partial: "admin/enterprises/form/connected_apps", locals: { enterprise: }, diff --git a/app/views/admin/enterprises/_form.html.haml b/app/views/admin/enterprises/_form.html.haml index dcaae1a149..71a9b2378b 100644 --- a/app/views/admin/enterprises/_form.html.haml +++ b/app/views/admin/enterprises/_form.html.haml @@ -9,6 +9,11 @@ %fieldset.alpha.no-border-bottom{ id: "#{item[:name]}_panel", data: { "tabs-and-panels-target": "panel" }} %legend= t(".#{ item[:name] }.legend") + - when 'connected_apps' + -# Don't render this item here in the main form. + -# The panel contains its own form and we can't nest forms in forms. + -# Otherwise we add multiple authenticity tokens and Rails denies updates. + - else %fieldset.alpha.no-border-bottom{ id: "#{item[:name]}_panel", data: { "tabs-and-panels-target": "panel" }} %legend= t(".#{ item[:form_name] || item[:name] }.legend") diff --git a/app/views/admin/enterprises/_ng_form.html.haml b/app/views/admin/enterprises/_ng_form.html.haml index 3ea83f8fbd..5fd3d9b541 100644 --- a/app/views/admin/enterprises/_ng_form.html.haml +++ b/app/views/admin/enterprises/_ng_form.html.haml @@ -11,11 +11,4 @@ %input.red{ type: "button", value: t(:update), "ng-click": "submit()", "ng-disabled": "!enterprise_form.$dirty" } %input{ type: "button", "ng-value": "enterprise_form.$dirty ? '#{t(:cancel)}' : '#{t(:close)}'", "ng-click": "cancel('#{main_app.admin_enterprises_path}')" } - .row{ data: { - controller: "tabs-and-panels", "tabs-and-panels-class-name-value": "selected" }} - .sixteen.columns.alpha - .four.columns.alpha - = render 'admin/shared/side_menu' - .one.column   - .eleven.columns.omega.fullwidth_inputs - = render 'form', f: f + = render 'form', f: f diff --git a/app/views/admin/enterprises/edit.html.haml b/app/views/admin/enterprises/edit.html.haml index 0e6a9162b8..90fd8201c9 100644 --- a/app/views/admin/enterprises/edit.html.haml +++ b/app/views/admin/enterprises/edit.html.haml @@ -13,4 +13,14 @@ = render 'admin/enterprises/form_data' -= render 'admin/enterprises/ng_form', action: 'edit' +.row{ data: { controller: "tabs-and-panels", "tabs-and-panels-class-name-value": "selected" }} + .sixteen.columns.alpha + .four.columns.alpha + = render 'admin/shared/side_menu' + .one.column   + .eleven.columns.omega.fullwidth_inputs + = render 'admin/enterprises/ng_form', action: 'edit' + + %fieldset.alpha.no-border-bottom{ id: "connected_apps_panel", data: { "tabs-and-panels-target": "panel" }} + %legend= t("admin.enterprises.form.connected_apps.legend") + = render "admin/enterprises/form/connected_apps", enterprise: @enterprise diff --git a/app/views/admin/enterprises/form/_connected_apps.html.haml b/app/views/admin/enterprises/form/_connected_apps.html.haml index b8e6be9fae..e39097224a 100644 --- a/app/views/admin/enterprises/form/_connected_apps.html.haml +++ b/app/views/admin/enterprises/form/_connected_apps.html.haml @@ -1,5 +1,4 @@ -- enterprise ||= f.object -#connected-app-discover-regen +%div{ id: "connected-app-discover-regen", class: "enterprise_#{enterprise.id}" } .connected-app__head %div %h3= t ".title" From f4a69b46640d9f6d5d2cdc8f499fef985a629f4e Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 31 May 2024 12:16:18 +1000 Subject: [PATCH 237/319] Update locales --- config/locales/hu.yml | 185 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 153 insertions(+), 32 deletions(-) diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 8565cb99e1..b543f63c64 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -29,8 +29,8 @@ hu: enterprise_fee: fee_type: Díjtípus spree/order: - payment_state: Fizetési állapot - shipment_state: Szállítási állapot + payment_state: Fizetési státusz + shipment_state: Szállítási státusz completed_at: 'Elkészült:' number: Szám state: Ország @@ -61,6 +61,8 @@ hu: orders_close_at: Lezárás dátuma variant_override: count_on_hand: "Készlet" + spree/payment_method/calculator: + preferred_additional_item: "További tételek kalkulált költsége:" enterprise: white_label_logo_link: "A főoldalon használt logo linkje" errors: @@ -92,14 +94,40 @@ hu: limited_stock_but_no_count_on_hand: "meg kell adni, mert korlátozott a készlet" messages: blank: "nem lehet üres" + too_short: "túl rövid (minimum %{count}karakter)" errors: messages: + content_type_invalid: "érvénytelen tartalom típus" file_size_out_of_range: "a %{file_size} mérete nem esik bele a kívánt tartományba" limit_out_of_range: "az összmenyiség kívül esik a megengedett tartományon" image_metadata_missing: "nem használható kép" + dimension_min_inclusion: "legyen nagyobb vagy egyenlő %{width} x %{height} pixel" + dimension_max_inclusion: "legyen kisebb vagy egyenlő %{width} x %{height} pixel" + dimension_width_inclusion: "a szélesség nincs %{min} és %{max} pixel közt" + dimension_height_inclusion: "magasság nincs %{min} és %{max} pixel között" + dimension_width_greater_than_or_equal_to: "a szélesség legyen nagyobb vagy egyenlő %{length} pixel" + dimension_height_greater_than_or_equal_to: "a magasság legyen nagyobb vagy egyenlő %{length} pixel" + dimension_width_less_than_or_equal_to: "a szélesség legyen kisebb vagy egyenlő %{length} pixel" + dimension_height_less_than_or_equal_to: "a magasság legyen kisebb vagy egyenlő %{length} pixel" + dimension_width_equal_to: "a szélesség legyen egyenlő %{length} pixel" + dimension_height_equal_to: "a magasság legyen egyenlő %{length} pixel" aspect_ratio_not_square: "négyzet alakú képnek kell lennie" aspect_ratio_not_portrait: "portré képnek kell lennie" + aspect_ratio_not_landscape: "fekvő tájolású kép legyen" + aspect_ratio_is_not: "%{aspect_ratio} arányú legyen" + aspect_ratio_unknown: "ismeretlen arány" image_not_processable: "nem használható kép" + not_found: + title: "A keresett oldal nem található! (404)" + message_html: "Kérlek, próbáld újra!

Ez lehet egy átmeneti probléma. Kérlek, kattints a vissza gombra, hogy visszatérj az előző képernyőre, vagy menj vissza a(z) Kezdőlap és próbáld újra.

Fordulj az Ügyfélszolgálathoz.

Ha a probléma továbbra is fennáll, vagy sürgős, kérjük, értesíts minket róla. Elérhetőségeinket a globális Open Food Network helyi oldalán találod.

Nagy segítség, ha minél több részletet meg tudsz adni a nem található oldalról.

" + internal_server_error: + title: "Sajnáljuk! Hiba történt (500)" + message_html: "Kérjük, próbáld újra. Ez lehet egy átmeneti probléma. Kérjük, kattints a Vissza gombra, hogy visszatérj az előző képernyőre, vagy menjen vissza a Kezdőlapra és próbáld újra.

Dolgozunk rajta

Ha már korábban is találkoztál ezzel a problémával, valószínűleg már tudunk róla és dolgozunk a megoldáson. Minden felmerülő hibát rögzítünk.

Fordulj az Ügyfélszolgálathoz

Ha a probléma továbbra is fennáll, vagy sürgős, kérjük, értesíts minket róla. Elérhetőségeinket a helyi Open Food Network oldalon találod.

Nagy segítség, ha minél több részletet meg tudsz adni arról, hogy mit csinált, amikor ez a hiba felmerült.

" + unprocessable_entity: + title: "A művelet nem végrehajtható (422)" + message_html: "

A művelet nem végrehajtható. Lehet, hogy olyan műveletet szeretnél végrehajtani, amihez nincs jogosultságod.

Vissza a Kezdőlapra

" + general_error: + message: "Sajnáljuk! Hiba történt.\n\nEz lehet egy átmeneti probléma. Kérjük, próbáld újra, vagy frissítsd az oldalt.\nMinden felmerülő hibát rögzítünk és valószínűleg már dolgozunk rajta.\nHa a probléma továbbra is fennáll, vagy sürgős, kérjük, értesíts minket róla. " stripe: error_code: incorrect_number: "A kártyaszám hibás." @@ -177,6 +205,7 @@ hu: not_available_to_shop: "nem érhető el a %{shop} számára" card_details: "A kártya adatai" card_type: "Kártyatípus" + unrecognized_card_type: "Nem azonosítható kártyatípus" what_is_this: "Mi ez?" cardholder_name: "Kártyatulajdonos neve" community_forum_url: "A közösségi fórum URL-je" @@ -260,6 +289,10 @@ hu: integer_array_validator: not_array_error: "tömbnek kell lennie" invalid_element_error: "csak érvényes egész számokat tartalmazhat" + report_job: + report_failed: | + Ez a lekérdezés nem sikerült. Lehet, hogy túl nagy a feldolgozáshoz. + Megvizsgáljuk, de kérjük, értesíts minket, ha a probléma továbbra is fennáll. enterprise_mailer: confirmation_instructions: subject: "Kérjük, erősítse meg %{enterprise} e-mail címét" @@ -283,10 +316,13 @@ hu: report_ready: subject: "A jelentés kész" heading: "A jelentés letöltésre kész" + intro: | + Az alábbi link egy hét múlva érvényét veszti. + link_label: "%{name}" shipment_mailer: shipped_email: dear_customer: "Tisztelt Ügyfelünk," - instructions: "Megrendelését kiszállították" + instructions: "Megrendelésed kiszállították" shipment_summary: "Szállítási összefoglaló" subject: "Szállítási értesítés" thanks: "Köszönjük csatlakozását." @@ -411,7 +447,7 @@ hu: voucher: Utalvány processing_payment: "Fizetés feldolgozása..." no_pending_payments: "Nincsenek függőben lévő kifizetések" - invalid_payment_state: "Érvénytelen fizetési állapot: %{state}" + invalid_payment_state: "Érvénytelen fizetési státusz: %{state}" filter_results: Eredmények szűrése clear_filters: Szűrők törlése quantity: Mennyiség @@ -455,6 +491,7 @@ hu: filters: categories: title: Kategóriák + selected_categories: "%{count}kategóriák kiválasztva" producers: title: Termelők selected_producers: "%{count}termelő kiválasztva" @@ -555,6 +592,9 @@ hu: has_n_rules: "%{num} szabálya van" unsaved_confirm_leave: "Ezen az oldalon vannak nem mentett módosítások. Folytatod mentés nélkül?" available_units: "Rendelkezésre álló egységek" + terms_of_service_have_been_updated_html: "Az Open Food Network Általános Szerződési Feltételek frissítésre kerültek: %{tos_link}" + terms_of_service: Olvasd el az Általános Szerződési Feltételeket + accept_terms_of_service: Az Általános Szerződési Feltételek elfogadása shopfront_settings: embedded_shopfront_settings: "Beágyazott kirakatbeállítások" enable_embedded_shopfronts: "Beágyazott kirakatok engedélyezése" @@ -587,7 +627,7 @@ hu: stripe_connect_enabled: Engedélyezi az átadópontok számára a fizetés elfogadását a Stripe Connect használatával? no_api_key_msg: Ehhez a vállalkozáshoz nem tartozik Stripe-fiók. configuration_explanation_html: A Stripe Connect integráció konfigurálására vonatkozó részletes utasításokért, kérjük, olvasd el ezt az útmutatót. - status: Állapot + status: Státusz ok: Rendben instance_secret_key: Példány titkos kulcsa account_id: felhasználónév @@ -642,6 +682,9 @@ hu: your_content: Az Ön tartalma user_guide: Használati útmutató map: Térkép + dfc_product_imports: + index: + imported_products: "Importált termékek:" enterprise_fees: index: title: "Vállalkozási díjak" @@ -707,16 +750,23 @@ hu: index: header: title: Termékek tömeges szerkesztése + content: + loading: Termékeid betöltése delete_modal: delete_product_modal: heading: "Termék törlése" + prompt: "Ezzel véglegesen eltávolítod a listáról." confirmation_text: "Termék törlése" + cancellation_text: "A termék megtartása" delete_variant_modal: heading: "Változat törlése" + prompt: "Ezzel véglegesen eltávolítod a listáról." confirmation_text: "Változat törlése" filters: + search_products: Keresés a termékek között search_for_producers: Keresés termelőre all_producers: Minden termelő + all_categories: Minden kategória producers: label: Termelők categories: @@ -724,12 +774,22 @@ hu: search: Keresés sort: pagination: + per_page: + show: Mutasd clear_search: Keresés törlése + no_products: + no_products_found: Nem találtunk termékeket + import_products: Több termék importálása + no_products_found_for_search: Nem találtunk a keresési feltételeknek megfelelő termékeket table: + changed_summary: + one: "%{count} termék módosítva." + other: "%{count} termék módosítva." error_summary: saved: one: "%{count}termék helyesen lett elmentve, de" other: "%{count} termékek helyesen lettek elmentve, de" + reset: Változások elvetése save: Változások mentése new_variant: Új variáns bulk_update: @@ -924,7 +984,7 @@ hu: new_enterprise: Új vállalkozás producer?: "Termelő?" package: Csomag - status: Állapot + status: Státusz manage: 'Beállítások:' form: about_us: @@ -937,6 +997,7 @@ hu: legend: "Cím" business_details: legend: "Vállalkozás adatai" + upload: 'feltöltés' abn: LÉGI ÚTON SZÁLLÍTOTT abn_placeholder: például. 99 123 456 789 acn: Adószám @@ -990,6 +1051,7 @@ hu: images: legend: "Képek" logo: Logó + logo_size: "300 x 300 pixel" promo_image_placeholder: 'Ez a kép a "Rólunk" részben látható.' promo_image_note1: 'FIGYELEM:''' promo_image_note2: Minden ide feltöltött promóciós kép 1200 x 260-ra lesz levágva. @@ -1151,9 +1213,15 @@ hu: rate: Mérték customers: Vevő active: Aktív? + add_new: Új hozzáadása white_label: + remove_logo: "Logo eltávolítása" + remove_logo_confirm: "Biztos vagy benne, hogy eltávolítod ezt a logo-t?" + remove_logo_success: "Logo eltávolítva" white_label_logo_link_label: "A főoldalon használt logo linkje" connected_apps: + enable: "Adatmegosztás engedélyezése" + disable: "Megosztás leállítása" loading: "Betöltés" description_html: |

@@ -1206,7 +1274,7 @@ hu: manage_link: Beállítások producer?: "Termelő?" package: "Csomag" - status: "Állapot" + status: "Státusz" new_form: owner: Tulajdonos owner_tip: A vállalkozásért felelős elsődleges felhasználó. @@ -1460,7 +1528,7 @@ hu: name: Termékek és készlet users_and_enterprises: name: Felhasználók és Vállalkozások - description: Vállalkozási tulajdonjog és állapot + description: Vállalkozási tulajdonjog és státusz order_cycle_management: name: Rendelési ciklus kezelése sales_tax: @@ -1503,6 +1571,9 @@ hu: formatted_data: Formázott adatok packing: name: "Összekészítési jelentések" + oidc_settings: + index: + title: "OIDC Beállítások" subscriptions: index: title: "Előfizetések" @@ -1802,6 +1873,7 @@ hu: abn: "LÉGI ÚTON SZÁLLÍTOTT:" acn: "Adószám:" invoice_issued_on: "Kiállított számla:" + order_number: "Rendelés sorszáma:" date_of_transaction: "A tranzakció dátuma:" menu_1_title: "Átadópontok" menu_1_url: "/shops" @@ -2512,8 +2584,8 @@ hu: balance: "Egyensúly" transaction: "Tranzakció" transaction_date: "A dátum #Tranzakció csak a :dátummal való ütközés elkerülése érdekében kulcsfontosságú" - payment_state: "Fizetési állapot" - shipping_state: "Szállítási állapot" + payment_state: "Fizetési státusz" + shipping_state: "Szállítási státusz" value: "Mennyiség" balance_due: "Fizetendő összeg" credit: "Hitel" @@ -2708,7 +2780,7 @@ hu: report_header_order_cycle: Rendelési ciklus report_header_user: Felhasználó report_header_email: Email - report_header_status: Állapot + report_header_status: Státusz report_header_comments: Hozzászólások report_header_first_name: Keresztnév report_header_last_name: Vezetéknév @@ -2759,6 +2831,7 @@ hu: report_header_total_tax: "Összes adó (%{currency_symbol})" report_header_total_excl_tax: "Összesen, kivéve adó (%{currency_symbol})" report_header_total_incl_tax: "Összesen, beleértve adó (%{currency_symbol})" + report_header_total_orders: "Össz Rendelésszám" report_header_enterprise: Vállalkozás report_header_enterprise_fee_name: Név report_header_enterprise_fee_type: Típus @@ -2769,6 +2842,7 @@ hu: report_header_customer_code: Ügyfélkód report_header_product: Termék report_header_product_properties: Termék tulajdonságai + report_header_product_tax_category: Termék Adó kategóriája report_header_quantity: Mennyiség report_header_max_quantity: Max Mennyiség report_header_variant: Változat @@ -2797,6 +2871,7 @@ hu: report_header_distributor_address: Forgalmazó címe report_header_distributor_city: Forgalmazó város report_header_distributor_postcode: Forgalmazó irányítószáma + report_header_distributor_tax_status: A Forgalmazó Adózási státusza report_header_delivery_address: Szállítási cím report_header_delivery_postcode: Szállítási irányítószám report_header_bulk_unit_size: Tömeges mértékegység @@ -2818,7 +2893,7 @@ hu: report_header_customer_email: Ügyfél e-mail report_header_customer_phone: Ügyfél telefon report_header_customer_city: Ügyfél városa - report_header_payment_state: Fizetési állapot + report_header_payment_state: Fizetési státusz report_header_payment_type: Fizetési mód report_header_item_price: "Tétel (%{currency})" report_header_item_fees_price: "Tétel + díjak (%{currency})" @@ -2854,6 +2929,9 @@ hu: report_header_transaction_fee: Tranzakciós díj (adó nélkül) report_header_total_untaxable_admin: Összes adózhatatlan rendszergazdai korrekció (adó nélkül) report_header_total_taxable_admin: Összes adóköteles rendszergazdai korrekció (adóval együtt) + report_line_cost_of_produce: Termékek költsége + report_line_line_items: tételsor + report_header_last_completed_order_date: Utolsó teljesített rendelés dátuma report_xero_configuration: Xero konfiguráció initial_invoice_number: "Kezdeti számlaszám" invoice_date: "Számla kiállítási dátuma" @@ -2942,13 +3020,16 @@ hu: no_orders_found: "Nem található rendelés" order_information: "Rendelési információ" new_payment: "Új fizetés" + create_or_update_invoice: "Számla Létrehozása vagy Frissítése" date_completed: "Teljesítés dátuma" amount: "Összeg" + invoice_number: "A számla sorszáma" invoice_file: "File" + invalid_url: "%{url}érvénytelen URL" state_names: ready: Kész pending: Függőben levő - shipped: Kiszállított + shipped: Kiszállítva js: saving: 'Mentés...' changes_saved: 'Változtatások elmentve.''' @@ -2980,6 +3061,7 @@ hu: deleting_item_will_cancel_order: "Ez a művelet egy vagy több üres rendelést eredményez, amelyek törlésre kerülnek. Szeretné folytatni?" modals: got_it: "Megvan" + confirm: "Megerősítés" close: "Bezárás" continue: "Tovább" cancel: "Törlés" @@ -3130,6 +3212,8 @@ hu: select_all_variants: "Válaszd ki az összes %{total_number_of_variants} változatot" variants_loaded: "%{num_of_variants_loaded}/%{total_number_of_variants} változat betöltve" loading_variants: "Változatok betöltése" + no_variants: "Nincs elérhető termékváltozat ehhez a termékhez (a készletbeállításokban rejtett státuszúak)." + some_variants_hidden: "(Egyes termékváltozatok a leltárbeállítások miatt rejtve maradhatnak)" tag_rules: shipping_method_tagged_top: "Szállítási módok felcímkézve" shipping_method_tagged_bottom: "vannak:" @@ -3172,7 +3256,7 @@ hu: partial: "részleges" pending: "függőben levő" ready: "kész" - shipped: "kiszállított" + shipped: "kiszállítva" canceled: "törölve" payment_states: balance_due: "fizetendő összeg" @@ -3475,7 +3559,7 @@ hu: account: "fiók" logout: "Kijelentkezés" date_range: "Időintervallum" - status: "állapot" + status: "státusz" new: "Új" start: "Kezdete" end: "Vége" @@ -3484,6 +3568,7 @@ hu: previous: "Előző" last: "Utolsó" spree: + order_updated: "Rendelés frissült" add_country: "Ország hozzáadása" add_state: "Állapot hozzáadása" adjustment: "Beállítás" @@ -3523,9 +3608,12 @@ hu: server_error: "Szerver hiba" shipping_method_names: UPS Ground: "UPS föld" + pick_up: "Átvétel a gazdaságban" start_date: "Kezdő dátum" successfully_removed: "Sikeresen eltávolítva" taxonomy_edit: "Termék kategória szerkesztés" + taxonomy_tree_error: "Hiba lépett fel a Kategória-fa frissítésében." + taxonomy_tree_instruction: "Kattints a jobb gombbal egy elemre a hozzáadáshoz, átnevezéshez, eltávolításhoz vagy szerkesztéshez." tree: "Fa" updating: "Frissítés" your_order_is_empty_add_product: "Rendelése üres, kérjük keressen és adjon hozzá egy terméket fent" @@ -3535,7 +3623,7 @@ hu: back_to_orders_list: "Vissza a rendelési listához" back_to_payments_list: "Vissza a fizetési listához" return_authorizations: "Visszaküldési engedélyek" - cannot_create_returns: "Nem hozható létre visszaküldés, mivel ebben a rendelésben nincsenek kiszállított egységek." + cannot_create_returns: "Nem tudsz visszárut létrehozni, mivel a rendelésnek nincsenek kiszállított egységei." select_stock: "Válasszon részvényt" location: "Elhelyezkedés" count_on_hand: "Count On Hand" @@ -3578,6 +3666,7 @@ hu: credit_card: "Hitelkártya" new_payment: "Új fizetés" capture: "Elfog" + capture_and_complete_order: "A rendelés rögzítése és lezárása" void: "Üres" login: "Belépés" password: "Jelszó" @@ -3604,6 +3693,7 @@ hu: display_currency: "Megjelenítési pénznem" choose_currency: "válasszon pénznemet" mail_method_settings: "Levelezési mód beállításai" + mail_settings_notice_html: "Az itt végrehajtott módosítások csak ideiglenesek, hibakeresés céljából történnek, és a jövőben visszaállíthatók.
A végleges változtatásokat a biztonsági adatok frissítésével és az ofn-install segítségével történő telepítéssel lehet elvégezni. További részletekért forduljon az OFN globális csapatához." general: "Tábornok" enable_mail_delivery: "Levélkézbesítés engedélyezése" send_mails_as: "Levelek küldése másként" @@ -3646,10 +3736,11 @@ hu: shipping_method: "Szállítási Mód" shipment: "Szállítás" payment: "Fizetés" - status: "Állapot" + status: "Státusz" shipping_categories: "Szállítási módok" new_shipping_category: "Új szállítási mód" back_to_shipping_categories: "Vissza a szállítási módokhoz" + editing_shipping_category: "Szállítási kategória szerkesztése" name: "Név" description: "Leírás" type: "típus" @@ -3694,7 +3785,7 @@ hu: cannot_create_payment_without_payment_methods: "Fizetési módok megadása nélkül nem hozhat létre fizetést egy rendelésre." please_define_payment_methods: "Kérjük, először határozzon meg néhány fizetési módot." options: "Opciók" - has_no_shipped_units: "nincs szállított egysége" + has_no_shipped_units: "nincsenek kiszállított egységek" successfully_created: '%{resource} sikeresen létrehozva!' successfully_updated: '%{resource} sikeresen frissítve!' payment_method: "Fizetési mód" @@ -3719,7 +3810,7 @@ hu: date_time: "Dátum idő" amount: "Összeg" payment_method: "Fizetési mód" - payment_state: "Fizetési állapot" + payment_state: "Fizetési Státusz" errors: messages: included_price_validation: "nem választható ki, hacsak nem állított be egy alapértelmezett adózónát" @@ -3734,7 +3825,9 @@ hu: admin: images: edit: + title: Termékkép szerkesztése close: Vissza + upload: Fotó feltöltése mail_methods: send_testmail: "Küldj teszt e-mailt" testmail: @@ -3761,6 +3854,7 @@ hu: enterprise_relationships: "Engedélyek" customers: "Ügyfelek" groups: "Csoportok" + oidc_settings: "OIDC Beállítások" overview: "Áttekintés" product_import: "Importálás" enterprise_roles: "Szerepek" @@ -3789,9 +3883,9 @@ hu: return_authorizations: "Visszaküldési engedélyek" back_to_orders_list: "Vissza a rendelési listához" rma_number: "RMA szám" - status: "Állapot" + status: "Státusz" amount: "Összeg" - cannot_create_returns: "Nem hozható létre visszaküldés, mivel ebben a rendelésben nincsenek kiszállított egységek." + cannot_create_returns: "Nem tudsz visszárut létrehozni, mivel a rendelésnek nincsenek kiszállított egységei." continue: "Tovább" new: new_return_authorization: "Új visszaküldési engedély" @@ -3803,7 +3897,7 @@ hu: return_authorization: "Visszaküldési engedély" form: product: "Termék" - quantity_shipped: "Szállított mennyiség" + quantity_shipped: "Kiszállított mennyiség" quantity_returned: "Visszaadott mennyiség" return_quantity: "Visszaküldési mennyiség" amount: "Összeg" @@ -3822,6 +3916,9 @@ hu: add_product: cannot_add_item_to_canceled_order: "A törölt rendeléshez nem lehet tételt hozzáadni" include_out_of_stock_variants: "Tartalmazza azokat a változatokat, amelyeknél nincs raktárkészlet" + shipment: + mark_as_shipped_message_html: "Ezzel a megrendelést KISZÁLLÍTVA-ként jelölöd meg. Biztos, hogy folytatni szeretnéd?" + mark_as_shipped_label_message: "Szállítási/átvételi értesítő e-mail küldése az ügyfélnek." index: listing_orders: "Megrendelések listája" new_order: "Új rend" @@ -3841,9 +3938,16 @@ hu: print_invoices: "Számlák nyomtatása" cancel_orders: "Rendelések törlése" resend_confirmation: "Visszaigazolás újraküldése" + resend_confirmation_confirm_html: "Ezzel újra elküldöd a visszaigazoló e-mailt az ügyfélnek. Biztos, hogy folytatni szeretnéd?" + send_invoice: "Számlák kiküldése" + send_invoice_confirm_html: "Ez a funkció az összes kiválasztott KÉSZ (státuszú) megrendelésről szóló számlát elküldi a vásárlónak e-mailben.
Biztos, hogy folytatni szeretnéd?" + selected: + zero: "Nincs kiválasztott rendelés" + one: "1 rendelés kiválasztva" + other: "%{count}rendelés kiválasztva" sortable_header: - payment_state: "Fizetési állapot" - shipment_state: "Szállítási állapot" + payment_state: "Fizetési státusz" + shipment_state: "Szállítási Státusz" completed_at: "Elkészült:" number: "Szám" state: "Ország" @@ -3854,9 +3958,12 @@ hu: code: "Kód" to: "Bill to" shipping: "Szállítás" + order_number: "Rendelési sorszám" + invoice_number: "A számla sorszáma" payments_list: date_time: "Dátum/idő" payment_method: "Fizetési mód" + payment_state: "Fizetési Státusz" amount: "Összeg" note: note_label: "Megjegyzés:" @@ -3869,6 +3976,9 @@ hu: line_item_adjustments: "Sorok korrekciói" order_adjustments: "Rendelési módosítások" order_total: "Rendelés Összesen" + invoices: + index: + order_has_changed: "A rendelés megváltozott a legutóbbi számlafrissítés óta. Előfordulhat, hogy az itt megjelenített számla már nem aktuális." overview: enterprises_header: ofn_with_tip: A termelők, kisvállalkozások, élelmiszer központok, élelmiszer közösségek, termelői piacok az Open Food Network szervezeti egységei. @@ -3949,7 +4059,7 @@ hu: account_missing_msg: Ehhez a vállalkozáshoz nem tartozik Stripe-fiók. connect_one: Connect One access_revoked_msg: Stripe-fiókhoz való hozzáférést visszavonták," kérjük, csatlakoztassa újra fiókját. - status: Állapot + status: Státusz connected: csatlakoztatva account_id: felhasználónév business_name: Vállalkozás neve @@ -3981,6 +4091,7 @@ hu: paypal: no_payment_via_admin_backend: A Paypal fizetések nem rögzíthetők a Backoffice-ban products: + image_upload_error: "Kérjük, a képet JPG, PNG, GIF, SVG vagy WEBP formátumban töltsd fel." new: title: "Új termék" new_product: "Új termék" @@ -4025,11 +4136,16 @@ hu: bulk_unit_size: Tömeges mértékegység display_as: display_as: Megjelenítés mint + clone: + success: A termék klónozva lett reports: table: select_and_search: "Válaszd ki a szűrőket, és kattintson a %{option} elemre az adatok eléréséhez." customer_names_message: customer_names_tip: "Ha az Ön által szállított rendeléseknél a vásárlók nevei el vannak rejtve, felveheti a kapcsolatot a forgalmazóval, és megkérdezheti, hogy frissítheti-e átvételi ponti beállításait, hogy beszállítóik megtekinthessék a vásárlók nevét." + products_and_inventory: + all_products: + message: "Felhívjuk a figyelmed arra, hogy a megadott készletszintek csak a beszállítói terméklistákból származnak. Ha a készletmennyiségek kezelésére a Készletnyilvántartást használod, akkor ezeket az értékeket a jelentés nem veszi figyelembe." users: index: listing_users: "Felhasználók listázása" @@ -4048,6 +4164,7 @@ hu: enterprise_limit: "Vállalkozási korlát" confirm_password: "Jelszó megerősítése" password: "Jelszó" + locale: "Nyelv" email_confirmation: confirmation_pending: "Az e-mail megerősítés függőben van. Megerősítő e-mailt küldtünk a következő címre: %{address}." variants: @@ -4083,9 +4200,9 @@ hu: name: "Név" number: "Szám" completed_at: "Elkészült:" - state: "Állapot" - payment_state: "Fizetési állapot" - shipment_state: "Szállítási állapot" + state: "Státusz" + payment_state: "Fizetési Státusz" + shipment_state: "Szállítási Státusz" email: "Email" total: "Összesen" billing_address_name: "Név" @@ -4093,7 +4210,11 @@ hu: form: name: Név permalink: Permalink + meta_title: Meta Cím (SEO cím) + meta_description: Meta Leírás + meta_keywords: Meta Kulcsszavak description: Leírás + dfc_id: DFC URI general_settings: edit: legal_settings: "Jogi beállítások" @@ -4138,7 +4259,7 @@ hu: partial: részleges pending: függőben levő ready: kész - shipped: kiszállított + shipped: kiszállítva canceled: törölve payment_states: balance_due: fizetendő összeg @@ -4197,7 +4318,7 @@ hu: shipment_mailer: shipped_email: dear_customer: "Tisztelt Ügyfelünk," - instructions: "Megrendelését a(z) %{distributor}-tól elküldtük" + instructions: "Megrendelésed a(z) %{distributor}-tól elküldtük" shipment_summary: "Szállítási összefoglaló" subject: "Szállítási értesítés" thanks: "Köszönjük üzletét." @@ -4299,7 +4420,7 @@ hu: items: Tételek total: Összesen paid?: Fizetett? - status: Állapot + status: Státusz completed: Elkészült cancelled: Törölve saved_cards: @@ -4391,4 +4512,4 @@ hu: previous: Előző invisible_captcha: sentence_for_humans: "Kérjük hagyja üresen" - timestamp_error_message: "Kérjük, próbálja meg 5 másodperc múlva." + timestamp_error_message: "Kérjük, próbáld meg 5 másodperc múlva." From d391faac64b4618e32aee776074f57edd58902d9 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 20 Mar 2024 16:39:35 +1100 Subject: [PATCH 238/319] Remove validation of positive stock when on demand We weren't allowing negative stock to stop any bug from accidentally drawing too much stock. But now we want to implement a backordering logic that depends on negative stock levels to know how much is needed to replenish stock levels. --- app/models/variant_override.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/models/variant_override.rb b/app/models/variant_override.rb index ea5dca61b2..447ea53b6f 100644 --- a/app/models/variant_override.rb +++ b/app/models/variant_override.rb @@ -15,7 +15,9 @@ class VariantOverride < ApplicationRecord # Need to ensure this can be set by the user. validates :default_stock, numericality: { greater_than_or_equal_to: 0 }, allow_nil: true validates :price, numericality: { greater_than_or_equal_to: 0 }, allow_nil: true - validates :count_on_hand, numericality: { greater_than_or_equal_to: 0 }, allow_nil: true + validates :count_on_hand, numericality: { + greater_than_or_equal_to: 0, unless: :on_demand? + }, allow_nil: true default_scope { where(permission_revoked_at: nil) } From ecbba894f76d721246e3df3d42ee6fa066401a28 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 20 Mar 2024 16:53:39 +1100 Subject: [PATCH 239/319] Update stock levels of on-demand items We weren't bothering with stock when items were on demand anyway. But we want to track stock now so that we can backorder more when local stock levels become negative. --- app/models/concerns/variant_stock.rb | 3 +-- lib/open_food_network/scope_variant_to_hub.rb | 4 ---- spec/lib/open_food_network/scope_variant_to_hub_spec.rb | 4 ++-- spec/models/spree/line_item_spec.rb | 4 ++-- spec/system/consumer/shopping/variant_overrides_spec.rb | 4 ++-- 5 files changed, 7 insertions(+), 12 deletions(-) diff --git a/app/models/concerns/variant_stock.rb b/app/models/concerns/variant_stock.rb index f39ab38dc9..10ea8f136e 100644 --- a/app/models/concerns/variant_stock.rb +++ b/app/models/concerns/variant_stock.rb @@ -112,8 +112,7 @@ module VariantStock # # This enables us to override this behaviour for variant overrides def move(quantity, originator = nil) - # Don't change variant stock if variant is on_demand or has been deleted - return if on_demand || deleted_at + return if deleted_at raise_error_if_no_stock_item_available diff --git a/lib/open_food_network/scope_variant_to_hub.rb b/lib/open_food_network/scope_variant_to_hub.rb index d7a29cbb9c..90bfef39d4 100644 --- a/lib/open_food_network/scope_variant_to_hub.rb +++ b/lib/open_food_network/scope_variant_to_hub.rb @@ -43,11 +43,7 @@ module OpenFoodNetwork # - updates variant_override.count_on_hand # - does not create stock_movement # - does not update stock_item.count_on_hand - # If it is a variant override with on_demand: - # - don't change stock or call super (super would change the variant's stock) def move(quantity, originator = nil) - return if @variant_override&.on_demand - if @variant_override&.stock_overridden? @variant_override.move_stock! quantity else diff --git a/spec/lib/open_food_network/scope_variant_to_hub_spec.rb b/spec/lib/open_food_network/scope_variant_to_hub_spec.rb index cbff22dc35..16dd0e6d5d 100644 --- a/spec/lib/open_food_network/scope_variant_to_hub_spec.rb +++ b/spec/lib/open_food_network/scope_variant_to_hub_spec.rb @@ -181,9 +181,9 @@ module OpenFoodNetwork scoper.scope v2 end - it "doesn't reduce variant's stock" do + it "does reduce variant's stock" do v2.move(-2) - expect(Spree::Variant.find(v2.id).on_hand).to eq 5 + expect(Spree::Variant.find(v2.id).on_hand).to eq 3 end end diff --git a/spec/models/spree/line_item_spec.rb b/spec/models/spree/line_item_spec.rb index ec596cec40..f129fed4f1 100644 --- a/spec/models/spree/line_item_spec.rb +++ b/spec/models/spree/line_item_spec.rb @@ -303,8 +303,8 @@ module Spree expect(order.shipment.manifest.first.variant).to eq line_item.variant end - it "does not reduce the variant's stock level" do - expect(variant_on_demand.reload.on_hand).to eq 1 + it "reduces the variant's stock level" do + expect(variant_on_demand.reload.on_hand).to eq(-9) end it "does not mark inventory units as backorderd" do diff --git a/spec/system/consumer/shopping/variant_overrides_spec.rb b/spec/system/consumer/shopping/variant_overrides_spec.rb index cda13c4459..04252d594a 100644 --- a/spec/system/consumer/shopping/variant_overrides_spec.rb +++ b/spec/system/consumer/shopping/variant_overrides_spec.rb @@ -210,12 +210,12 @@ RSpec.describe "shopping with variant overrides defined" do expect(product1_variant1_override.reload.count_on_hand).to be_nil end - it "does not subtract stock from variants where the override has on_demand: true" do + it "does subtract stock from variants where the override has on_demand: true" do click_add_to_cart product4_variant1, 2 click_checkout expect do complete_checkout - end.to change { product4_variant1.reload.on_hand }.by(0) + end.to change { product4_variant1.reload.on_hand }.by(-2) expect(product4_variant1_override.reload.count_on_hand).to be_nil end From 29e4535dffc0c657d6e560bc5602360c21872db7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 31 May 2024 09:06:12 +0000 Subject: [PATCH 240/319] chore(deps): bump devise-i18n from 1.12.0 to 1.12.1 Bumps [devise-i18n](https://github.com/tigrish/devise-i18n) from 1.12.0 to 1.12.1. - [Release notes](https://github.com/tigrish/devise-i18n/releases) - [Changelog](https://github.com/tigrish/devise-i18n/blob/master/CHANGELOG.md) - [Commits](https://github.com/tigrish/devise-i18n/compare/v1.12.0...v1.12.1) --- updated-dependencies: - dependency-name: devise-i18n dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1cab46070d..cd805c54f0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -230,7 +230,7 @@ GEM combine_pdf (1.0.26) matrix ruby-rc4 (>= 0.1.5) - concurrent-ruby (1.2.3) + concurrent-ruby (1.3.1) connection_pool (2.4.1) crack (1.0.0) bigdecimal @@ -263,7 +263,7 @@ GEM warden (~> 1.2.3) devise-encryptable (0.2.0) devise (>= 2.1.0) - devise-i18n (1.12.0) + devise-i18n (1.12.1) devise (>= 4.9.0) devise-token_authenticatable (1.1.0) devise (>= 4.0.0, < 5.0.0) @@ -522,7 +522,7 @@ GEM activerecord (>= 4.2) railties (>= 4.2) raabro (1.4.0) - racc (1.7.3) + racc (1.8.0) rack (2.2.9) rack-mini-profiler (2.3.4) rack (>= 1.2.0) @@ -843,7 +843,7 @@ GEM xml-simple (1.1.8) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.6.14) + zeitwerk (2.6.15) PLATFORMS ruby From 073dfc4ab6d2096f9a7e8056a3a7a069df56e280 Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Fri, 31 May 2024 16:04:48 +0200 Subject: [PATCH 241/319] Update and Recalculate Fees after Order Adjusted in Backend - when update on adjustment in payment, recalculation of correct adjustment was not done - the corresponding spec - an id to easy the finding of the change of fees in the spec --- app/models/spree/payment.rb | 1 + .../admin/orders/_form/_adjustments.html.haml | 2 +- spec/system/admin/order_spec.rb | 21 +++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/app/models/spree/payment.rb b/app/models/spree/payment.rb index 6479694df9..e10920d4b8 100644 --- a/app/models/spree/payment.rb +++ b/app/models/spree/payment.rb @@ -155,6 +155,7 @@ module Spree if adjustment adjustment.originator = payment_method adjustment.label = adjustment_label + adjustment.amount = payment_method.compute_amount(self) adjustment.save elsif !processing_refund? && payment_method.present? payment_method.create_adjustment(adjustment_label, self, true) diff --git a/app/views/spree/admin/orders/_form/_adjustments.html.haml b/app/views/spree/admin/orders/_form/_adjustments.html.haml index 5f3e9f215e..771723c99e 100644 --- a/app/views/spree/admin/orders/_form/_adjustments.html.haml +++ b/app/views/spree/admin/orders/_form/_adjustments.html.haml @@ -6,7 +6,7 @@ %tr %th= Spree.t('name') %th= Spree.t('amount') - %tbody.with-border + %tbody.with-border#order_adjustments - adjustments.each do |adjustment| %tr.total %td.strong= adjustment.label + ":" diff --git a/spec/system/admin/order_spec.rb b/spec/system/admin/order_spec.rb index 5a0ff97a0b..7fa035713b 100644 --- a/spec/system/admin/order_spec.rb +++ b/spec/system/admin/order_spec.rb @@ -172,6 +172,27 @@ RSpec.describe ' expect(order.line_items.reload.map(&:product)).to include product end + context "When adding a product on an order with transaction fee" do + let(:order_with_fees) { create(:completed_order_with_fees, user:, distributor:, order_cycle: ) } + + it 'recalculates transaction fee' do + login_as_admin + visit spree.edit_admin_order_path(order_with_fees) + + transaction_fee = order_with_fees.all_adjustments.payment_fee.eligible.first.amount + expect(page.find("#order_adjustments").text).to have_content(transaction_fee) + + select2_select product.name, from: 'add_variant_id', search: true + find('button.add_variant').click + sleep(1) + + new_transaction_fee = order_with_fees.all_adjustments.payment_fee.eligible.first.amount + + expect(new_transaction_fee).to be > transaction_fee + expect(page.find("#order_adjustments").text).to have_content(new_transaction_fee) + end + end + shared_examples_for "Cancelling the order" do it "shows a modal about order cancellation" do expect(page).to have_content "This will cancel the current order." From ce36fb45a0d6d9a490ae51706d5c2a91d5fd1d29 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Sun, 2 Jun 2024 16:00:44 +0200 Subject: [PATCH 242/319] Removes tests on edit action, under the Delete section --- spec/system/admin/products_v3/products_spec.rb | 6 ------ 1 file changed, 6 deletions(-) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 57f3390b82..823910fa64 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -1196,9 +1196,6 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi let(:default_variant_selector) { "tr:has(input[aria-label=Price][value='#{product_a.price}'])" } - let(:link_edit_variant) { - "/admin/products/#{Spree::Product.first.id}/variants/#{Spree::Variant.first.id}/edit" - } describe "Actions columns (delete)" do before do @@ -1217,7 +1214,6 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi # to select the default variant within default_variant_selector do page.find(".vertical-ellipsis-menu").click - expect(page).to have_link "Edit", href: link_edit_variant expect(page).not_to have_css(delete_option_selector) end end @@ -1236,14 +1232,12 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi # to select the default variant within default_variant_selector do page.find(".vertical-ellipsis-menu").click - expect(page).to have_link "Edit", href: link_edit_variant expect(page).to have_css(delete_option_selector) end page.find("div#content").click # to close the vertical actions menu within variant_selector do page.find(".vertical-ellipsis-menu").click - expect(page).to have_link "Edit", href: link_edit_variant2 expect(page).to have_css(delete_option_selector) end end From 999bc13fb5ed6e6b2f496baa76f30db9dc76f51a Mon Sep 17 00:00:00 2001 From: David Cook Date: Mon, 3 Jun 2024 09:22:26 +1000 Subject: [PATCH 243/319] Remove redundant code --- .../system/admin/products_v3/products_spec.rb | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 823910fa64..3e1d6f007f 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -103,27 +103,6 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi expect(page).to have_content "4" # displays the stock for variant_3 end end - - it "displays a select box for the unit of measure for the product's variants" do - pending( "[BUU] Change producer, unit type and tax category #11060" ) - p = FactoryBot.create(:product, variant_unit: 'weight', variant_unit_scale: 1, - variant_unit_name: '') - - visit spree.admin_products_path - - expect(page).to have_select "variant_unit_with_scale", selected: "Weight (g)" - end - - it "displays a text field for the item name when unit is set to 'Items'" do - pending( "[BUU] Change producer, unit type and tax category #11060" ) - p = FactoryBot.create(:product, variant_unit: 'items', variant_unit_scale: nil, - variant_unit_name: 'packet') - - visit spree.admin_products_path - - expect(page).to have_select "variant_unit_with_scale", selected: "Items" - expect(page).to have_field "variant_unit_name", with: "packet" - end end describe "sorting" do @@ -1203,7 +1182,6 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi end it "shows an actions menu with a delete link when clicking on icon for product. " \ - "shows link to clone and edit the product;" \ "doesn't show delete link for the single variant" do within product_selector do page.find(".vertical-ellipsis-menu").click @@ -1225,8 +1203,6 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi display_name: "Medium box", sku: "APL-01", price: 5.25) - link_edit_variant2 = - "/admin/products/#{Spree::Product.first.id}/variants/#{Spree::Variant.second.id}/edit" visit admin_products_url # to select the default variant From 82f75e344ff3347a9c04ea0a0be023b8841936ae Mon Sep 17 00:00:00 2001 From: Abdul Aziz Ali Date: Mon, 3 Jun 2024 10:29:30 +0800 Subject: [PATCH 244/319] Display additional tax total in order #11680 Add new text key admin.order.edit.additional_tax_included_in_price Add spec file for additional tax display. Add new trait for enterprise fee and calculator factory --- app/helpers/admin/orders_helper.rb | 16 ++++++++ config/locales/en.yml | 1 + spec/factories.rb | 5 +++ spec/factories/calculator_factory.rb | 4 ++ spec/helpers/admin/orders_helper_spec.rb | 51 ++++++++++++++++++++++++ 5 files changed, 77 insertions(+) diff --git a/app/helpers/admin/orders_helper.rb b/app/helpers/admin/orders_helper.rb index 4e82a41739..b410df9eca 100644 --- a/app/helpers/admin/orders_helper.rb +++ b/app/helpers/admin/orders_helper.rb @@ -11,9 +11,25 @@ module Admin def order_adjustments_for_display(order) order.adjustments + voucher_included_tax_representations(order) + + additional_tax_total_representation(order) + order.all_adjustments.payment_fee.eligible end + def additional_tax_total_representation(order) + adjustment = Spree::Adjustment.additional.tax.where( + order_id: order.id, adjustable_type: 'Spree::Adjustment' + ).sum(:amount) + + return [] unless adjustment != 0 + + [ + AdjustmentData.new( + I18n.t("admin.orders.edit.additional_tax_included_in_price"), + adjustment + ) + ] + end + def voucher_included_tax_representations(order) return [] unless VoucherAdjustmentsService.new(order).voucher_included_tax.negative? diff --git a/config/locales/en.yml b/config/locales/en.yml index 47b4b07814..f43146b0ae 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1061,6 +1061,7 @@ en: edit: order_sure_want_to: Are you sure you want to %{event} this order? voucher_tax_included_in_price: "%{label} (tax included in voucher)" + additional_tax_included_in_price: "Tax on fees" invoice_email_sent: 'Invoice email has been sent' order_email_resent: 'Order email has been resent' bulk_management: diff --git a/spec/factories.rb b/spec/factories.rb index 52c80704d5..90675a7cbb 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -94,6 +94,11 @@ FactoryBot.define do transient { amount { 1 } } calculator { build(:calculator_per_item, preferred_amount: amount) } end + + trait :flat_percent_per_item do + transient { amount { 1 } } + calculator { build(:calculator_flat_percent_per_item, preferred_flat_percent: amount) } + end end factory :adjustment_metadata, class: AdjustmentMetadata do diff --git a/spec/factories/calculator_factory.rb b/spec/factories/calculator_factory.rb index 91c571a8fe..fd861e21ff 100644 --- a/spec/factories/calculator_factory.rb +++ b/spec/factories/calculator_factory.rb @@ -14,6 +14,10 @@ FactoryBot.define do preferred_amount { generate(:calculator_amount) } end + factory :calculator_flat_percent_per_item, class: Calculator::FlatPercentPerItem do + preferred_flat_percent { generate(:calculator_amount) } + end + factory :weight_calculator, class: Calculator::Weight do after(:build) { |c| c.set_preference(:per_unit, 0.5) diff --git a/spec/helpers/admin/orders_helper_spec.rb b/spec/helpers/admin/orders_helper_spec.rb index 9199c7794e..c24f92c471 100644 --- a/spec/helpers/admin/orders_helper_spec.rb +++ b/spec/helpers/admin/orders_helper_spec.rb @@ -55,5 +55,56 @@ RSpec.describe Admin::OrdersHelper, type: :helper do expect(fake_adjustment.amount).to eq(-0.5) end end + + context "with additional tax total" do + let!(:shipping_method){ create(:free_shipping_method) } + let!(:enterprise){ + create(:distributor_enterprise_with_tax, name: 'Enterprise', charges_sales_tax: true, + shipping_methods: [shipping_method]) + } + let!(:country_zone){ create(:zone_with_member) } + let!(:tax_category){ create(:tax_category, name: 'tax_category') } + let!(:tax_rate){ + create(:tax_rate, zone: country_zone, tax_category:, name: 'Tax Rate', amount: 0.13, + included_in_price: false) + } + let!(:ship_address){ create(:ship_address) } + let!(:product) { + create(:simple_product, supplier: enterprise, price: 10, tax_category_id: tax_category.id) + } + let!(:variant){ + create(:variant, :with_order_cycle, product:, distributor: enterprise, order_cycle:, + tax_category:) + } + let!(:coordinator_fees){ + create(:enterprise_fee, :flat_percent_per_item, enterprise:, amount: 20, + name: 'Adminstration', + fee_type: 'sales', + tax_category:) + } + let!(:order_cycle){ + create(:simple_order_cycle, name: "oc1", suppliers: [enterprise], + distributors: [enterprise], + coordinator_fees: [coordinator_fees]) + } + let!(:order){ + create(:order_with_distributor, distributor: enterprise, order_cycle:, ship_address:) + } + let!(:line_item) { create(:line_item, variant:, quantity: 1, price: 10, order:) } + + before do + order_cycle.variants << [product.variants.first] + order_cycle.exchanges.outgoing.first.variants << product.variants.first + + order.recreate_all_fees! + Orders::WorkflowService.new(order).complete! + end + + it "includes additional tax on fees" do + adjustment = order_adjustments_for_display(order).first + expect(adjustment.label).to eq("Tax on fees") + expect(adjustment.amount).to eq(0.26) + end + end end end From 369ea7cd16af22de52491a65b10cbdf8d3883d84 Mon Sep 17 00:00:00 2001 From: Abdul Aziz Ali Date: Mon, 3 Jun 2024 13:04:36 +0800 Subject: [PATCH 245/319] Define tax_on_fees i8n key #11680 --- app/helpers/admin/orders_helper.rb | 2 +- config/locales/en.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/helpers/admin/orders_helper.rb b/app/helpers/admin/orders_helper.rb index b410df9eca..3ef8ef34a5 100644 --- a/app/helpers/admin/orders_helper.rb +++ b/app/helpers/admin/orders_helper.rb @@ -24,7 +24,7 @@ module Admin [ AdjustmentData.new( - I18n.t("admin.orders.edit.additional_tax_included_in_price"), + I18n.t("admin.orders.edit.tax_on_fees"), adjustment ) ] diff --git a/config/locales/en.yml b/config/locales/en.yml index f43146b0ae..61277a47eb 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1061,7 +1061,7 @@ en: edit: order_sure_want_to: Are you sure you want to %{event} this order? voucher_tax_included_in_price: "%{label} (tax included in voucher)" - additional_tax_included_in_price: "Tax on fees" + tax_on_fees: "Tax on fees" invoice_email_sent: 'Invoice email has been sent' order_email_resent: 'Order email has been resent' bulk_management: From 7fd8bdfaf14fdce938d8437ac50b1e26b5a773fd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 09:04:12 +0000 Subject: [PATCH 246/319] chore(deps): bump leaflet-geosearch from 3.11.1 to 4.0.0 Bumps [leaflet-geosearch](https://github.com/smeijer/leaflet-geosearch) from 3.11.1 to 4.0.0. - [Release notes](https://github.com/smeijer/leaflet-geosearch/releases) - [Commits](https://github.com/smeijer/leaflet-geosearch/compare/v3.11.1...v4.0.0) --- updated-dependencies: - dependency-name: leaflet-geosearch dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9230d1faac..d4b52d637f 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "jquery-ui": "1.13.3", "js-big-decimal": "^2.0.7", "leaflet": "1.9.4", - "leaflet-geosearch": "3.11.1", + "leaflet-geosearch": "4.0.0", "leaflet-providers": "2.0.0", "moment": "^2.30.1", "mrujs": "^1.0.0", diff --git a/yarn.lock b/yarn.lock index 25d86faf9a..83fff344f0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5714,10 +5714,10 @@ last-call-webpack-plugin@^3.0.0: lodash "^4.17.5" webpack-sources "^1.1.0" -leaflet-geosearch@3.11.1: - version "3.11.1" - resolved "https://registry.yarnpkg.com/leaflet-geosearch/-/leaflet-geosearch-3.11.1.tgz#e35b1e156afef388bbb42543eb56502e9a633192" - integrity sha512-cILLFLmn8C3MtGhaafGqY7CuhUG2+bGyUgfPHgNgW6fs4EvYyiIO88nO2ZqR7Hy6Ba089haLkhODpZR+/fRrPQ== +leaflet-geosearch@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/leaflet-geosearch/-/leaflet-geosearch-4.0.0.tgz#d7488830004515452368d333f7a49d06d59ea81b" + integrity sha512-a92VNY9gxyv3oyEDqIWoCNoBllajWRYejztzOSNmpLRtzpA6JtGgy/wwl9tsB8+6Eek1fe+L6+W0MDEOaidbXA== optionalDependencies: "@googlemaps/js-api-loader" "^1.16.6" leaflet "^1.6.0" From 3e1be86283ccf52bcf6b3a08fe98374822752041 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 09:36:50 +0000 Subject: [PATCH 247/319] chore(deps-dev): bump rubocop from 1.63.5 to 1.64.1 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.63.5 to 1.64.1. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.63.5...v1.64.1) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index cd805c54f0..f02a541e31 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -494,7 +494,7 @@ GEM parallel (1.24.0) paranoia (2.6.3) activerecord (>= 5.1, < 7.2) - parser (3.3.1.0) + parser (3.3.2.0) ast (~> 2.4.1) racc paypal-sdk-core (0.3.4) @@ -604,7 +604,7 @@ GEM redis-client (>= 0.22.0) redis-client (0.22.1) connection_pool - regexp_parser (2.9.0) + regexp_parser (2.9.2) reline (0.5.0) io-console (~> 0.5) request_store (1.5.1) @@ -667,7 +667,7 @@ GEM rswag-ui (2.13.0) actionpack (>= 3.1, < 7.2) railties (>= 3.1, < 7.2) - rubocop (1.63.5) + rubocop (1.64.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) From a7dc243db9871cc9791fea40b8f85e492fe585df Mon Sep 17 00:00:00 2001 From: Ana Nunes da Silva Date: Fri, 24 May 2024 12:50:57 +0100 Subject: [PATCH 248/319] Sanitize product description using rails default sanitizer --- app/models/spree/product.rb | 10 ++++++++++ spec/models/spree/product_spec.rb | 12 ++++++++++++ 2 files changed, 22 insertions(+) diff --git a/app/models/spree/product.rb b/app/models/spree/product.rb index d760c329ec..e51f23ac7c 100755 --- a/app/models/spree/product.rb +++ b/app/models/spree/product.rb @@ -304,6 +304,16 @@ module Spree ) end + # Remove any unsupported HTML. + def description + Rails::HTML::SafeListSanitizer.new.sanitize(super) + end + + # # Remove any unsupported HTML. + def description=(html) + super(Rails::HTML::SafeListSanitizer.new.sanitize(html)) + end + private def update_units diff --git a/spec/models/spree/product_spec.rb b/spec/models/spree/product_spec.rb index 15667125c3..993b1cb833 100644 --- a/spec/models/spree/product_spec.rb +++ b/spec/models/spree/product_spec.rb @@ -748,6 +748,18 @@ module Spree expect(e.variants.reload).to be_empty end end + + describe "serialisation" do + it "sanitises HTML in description" do + subject.description = "Hello dearest monster." + expect(subject.description).to eq "Hello alert dearest monster." + end + + it "sanitises existing HTML in description" do + subject[:description] = "Hello dearest monster." + expect(subject.description).to eq "Hello alert dearest monster." + end + end end RSpec.describe "product import" do From 5f54ea3877acc06b5d6fbbba38f45acf4f879a47 Mon Sep 17 00:00:00 2001 From: Ana Nunes da Silva Date: Fri, 31 May 2024 17:51:52 +0100 Subject: [PATCH 249/319] Add safe trix tags to html sanitizer; Use custom html sanitizer in product description. --- app/models/spree/product.rb | 6 +- app/services/html_sanitizer.rb | 6 +- spec/services/html_sanitizer_spec.rb | 94 +++++++++++++++++++++------- 3 files changed, 81 insertions(+), 25 deletions(-) diff --git a/app/models/spree/product.rb b/app/models/spree/product.rb index e51f23ac7c..1f79ebf95c 100755 --- a/app/models/spree/product.rb +++ b/app/models/spree/product.rb @@ -306,12 +306,12 @@ module Spree # Remove any unsupported HTML. def description - Rails::HTML::SafeListSanitizer.new.sanitize(super) + HtmlSanitizer.sanitize(super) end - # # Remove any unsupported HTML. + # Remove any unsupported HTML. def description=(html) - super(Rails::HTML::SafeListSanitizer.new.sanitize(html)) + super(HtmlSanitizer.sanitize(html)) end private diff --git a/app/services/html_sanitizer.rb b/app/services/html_sanitizer.rb index df3c608219..e6d81d7ecd 100644 --- a/app/services/html_sanitizer.rb +++ b/app/services/html_sanitizer.rb @@ -6,10 +6,14 @@ # We offer an editor which supports certain tags but you can't insert just any # HTML, which would be dangerous. class HtmlSanitizer + ALLOWED_TAGS = %w[h1 h2 h3 h4 p br b i u a strong em del pre blockquote ul ol li hr figure].freeze + ALLOWED_ATTRIBUTES = %w[href target].freeze + ALLOWED_TRIX_DATA_ATTRIBUTES = %w[data-trix-attachment].freeze + def self.sanitize(html) @sanitizer ||= Rails::HTML5::SafeListSanitizer.new @sanitizer.sanitize( - html, tags: %w[h1 h2 h3 h4 p br b i u a], attributes: %w[href target], + html, tags: ALLOWED_TAGS, attributes: (ALLOWED_ATTRIBUTES + ALLOWED_TRIX_DATA_ATTRIBUTES) ) end end diff --git a/spec/services/html_sanitizer_spec.rb b/spec/services/html_sanitizer_spec.rb index c98d695b35..090d4bd3e9 100644 --- a/spec/services/html_sanitizer_spec.rb +++ b/spec/services/html_sanitizer_spec.rb @@ -5,33 +5,85 @@ require 'spec_helper' RSpec.describe HtmlSanitizer do subject { described_class } - it "removes dangerous tags" do - html = "Hello !" - expect(subject.sanitize(html)) - .to eq "Hello alert!" + context "when HTML has supported tags" do + it "keeps supported tags" do + html = "Hello alert!
How are you?" + expect(subject.sanitize(html)) + .to eq "Hello alert!
How are you?" + end + + it "handles nested tags" do + html = '

  • Item 1
  • Item 2
' + expect(subject.sanitize(html)).to eq(html) + end end - it "keeps supported tags" do - html = "Hello alert!
How are you?" - expect(subject.sanitize(html)) - .to eq "Hello alert!
How are you?" + context "when HTML has dangerous tags" do + it "removes script tags" do + html = "Hello !" + expect(subject.sanitize(html)).to eq "Hello alert!" + end + + it "removes iframe tags" do + html = "Content " + expect(subject.sanitize(html)).to eq "Content " + end + + it "removes object tags" do + html = "" + expect(subject.sanitize(html)).to eq "" + end + + it "removes embed tags" do + html = "" + expect(subject.sanitize(html)).to eq "" + end + + it "removes link tags" do + html = "" + expect(subject.sanitize(html)).to eq "" + end + + it "removes link tags" do + html = "" + expect(subject.sanitize(html)).to eq "" + end + + it "removes form tags" do + html = "
...
" + expect(subject.sanitize(html)).to eq "..." + end + + it "removes combined dangerous tags" do + html = "" + expect(subject.sanitize(html)).to eq "alert" + end end - it "keeps supported attributes" do - html = 'Hello alert!' - expect(subject.sanitize(html)) - .to eq 'Hello alert!' + context "when HTML has supported attributes" do + it "keeps supported attributes" do + html = 'Hello alert!' + expect(subject.sanitize(html)) + .to eq 'Hello alert!' + end end - it "removes unsupported attributes" do - html = 'Hello alert!' - expect(subject.sanitize(html)) - .to eq 'Hello alert!' - end + context "when HTML has dangerous attributes" do + it "removes unsupported attributes" do + html = 'Hello alert!' + expect(subject.sanitize(html)) + .to eq 'Hello alert!' + end - it "removes dangerous attribute values" do - html = 'Hello you!' - expect(subject.sanitize(html)) - .to eq 'Hello you!' + it "removes dangerous attribute values" do + html = 'Hello you!' + expect(subject.sanitize(html)) + .to eq 'Hello you!' + end + + it "keeps only Trix-specific data attributes" do + html = '
...
' + expect(subject.sanitize(html)).to eq('
...
') + end end end From 205c7dafd2ca500af3e7887da5ec0c1b9738fe80 Mon Sep 17 00:00:00 2001 From: Ana Nunes da Silva Date: Mon, 3 Jun 2024 11:35:25 +0100 Subject: [PATCH 250/319] Add div to sanitizer supported tags --- app/services/html_sanitizer.rb | 3 ++- spec/services/html_sanitizer_spec.rb | 24 ++++++++++++++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/app/services/html_sanitizer.rb b/app/services/html_sanitizer.rb index e6d81d7ecd..73660d8829 100644 --- a/app/services/html_sanitizer.rb +++ b/app/services/html_sanitizer.rb @@ -6,7 +6,8 @@ # We offer an editor which supports certain tags but you can't insert just any # HTML, which would be dangerous. class HtmlSanitizer - ALLOWED_TAGS = %w[h1 h2 h3 h4 p br b i u a strong em del pre blockquote ul ol li hr figure].freeze + ALLOWED_TAGS = %w[h1 h2 h3 h4 div p br b i u a strong em del pre blockquote ul ol li hr + figure].freeze ALLOWED_ATTRIBUTES = %w[href target].freeze ALLOWED_TRIX_DATA_ATTRIBUTES = %w[data-trix-attachment].freeze diff --git a/spec/services/html_sanitizer_spec.rb b/spec/services/html_sanitizer_spec.rb index 090d4bd3e9..bda9eb2188 100644 --- a/spec/services/html_sanitizer_spec.rb +++ b/spec/services/html_sanitizer_spec.rb @@ -6,14 +6,26 @@ RSpec.describe HtmlSanitizer do subject { described_class } context "when HTML has supported tags" do - it "keeps supported tags" do - html = "Hello alert!
How are you?" - expect(subject.sanitize(html)) - .to eq "Hello alert!
How are you?" + it "keeps supported regular tags" do + supported_tags = %w[h1 h2 h3 h4 div p b i u a strong em del pre blockquote ul ol li figure] + supported_tags.each do |tag| + html = "<#{tag}>Content" + sanitized_html = subject.sanitize(html) + expect(sanitized_html).to eq(html), "Expected '#{tag}' to be preserved." + end + end + + it "keeps supported void tags" do + supported_tags = %w[br hr] + supported_tags.each do |tag| + html = "<#{tag}>" + sanitized_html = subject.sanitize(html) + expect(sanitized_html).to eq(html), "Expected '#{tag}' to be preserved." + end end it "handles nested tags" do - html = '
  • Item 1
  • Item 2
' + html = '
  • Item 1
  • Item 2
' expect(subject.sanitize(html)).to eq(html) end end @@ -44,7 +56,7 @@ RSpec.describe HtmlSanitizer do expect(subject.sanitize(html)).to eq "" end - it "removes link tags" do + it "removes base tags" do html = "" expect(subject.sanitize(html)).to eq "" end From 9495d6223609b20a243053606055fe4fbb8a2e1e Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Mon, 3 Jun 2024 16:27:57 +0200 Subject: [PATCH 251/319] Requested changes on spec - if possible no sleep in spec --- spec/system/admin/order_spec.rb | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/spec/system/admin/order_spec.rb b/spec/system/admin/order_spec.rb index 7fa035713b..55d91e9ef2 100644 --- a/spec/system/admin/order_spec.rb +++ b/spec/system/admin/order_spec.rb @@ -179,17 +179,15 @@ RSpec.describe ' login_as_admin visit spree.edit_admin_order_path(order_with_fees) - transaction_fee = order_with_fees.all_adjustments.payment_fee.eligible.first.amount + adjustment_for_transaction_fee = order_with_fees.all_adjustments.payment_fee.eligible.first + transaction_fee = adjustment_for_transaction_fee.amount + expect(page.find("#order_adjustments").text).to have_content(transaction_fee) select2_select product.name, from: 'add_variant_id', search: true find('button.add_variant').click - sleep(1) - - new_transaction_fee = order_with_fees.all_adjustments.payment_fee.eligible.first.amount - - expect(new_transaction_fee).to be > transaction_fee - expect(page.find("#order_adjustments").text).to have_content(new_transaction_fee) + expect(page).to have_css("#order_adjustments", + text: adjustment_for_transaction_fee.reload.amount) end end From 5a8eea398ef6c8724b265329adb2427f9fd95100 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 4 Jun 2024 10:24:40 +1000 Subject: [PATCH 252/319] Add comment --- app/services/html_sanitizer.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/services/html_sanitizer.rb b/app/services/html_sanitizer.rb index 73660d8829..84d78f6f5c 100644 --- a/app/services/html_sanitizer.rb +++ b/app/services/html_sanitizer.rb @@ -6,6 +6,7 @@ # We offer an editor which supports certain tags but you can't insert just any # HTML, which would be dangerous. class HtmlSanitizer + # div is required by Trix editor ALLOWED_TAGS = %w[h1 h2 h3 h4 div p br b i u a strong em del pre blockquote ul ol li hr figure].freeze ALLOWED_ATTRIBUTES = %w[href target].freeze From 87f0be42e22d81272c50c770460beac1e3591b47 Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Tue, 4 Jun 2024 18:12:37 +0200 Subject: [PATCH 253/319] Fixes rubocop offenses on Spree::Order model - removes old Rails 5 flag to not validating belongs to association. Therefore optional fields must be marked so. --- .rubocop_todo.yml | 6 ------ app/models/spree/order.rb | 16 +++++++--------- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index b99b52a9a8..fc721d94cc 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -642,12 +642,6 @@ Rails/RedundantActiveRecordAllMethod: - 'app/models/spree/variant.rb' - 'spec/system/admin/product_import_spec.rb' -# Offense count: 3 -# This cop supports unsafe autocorrection (--autocorrect-all). -Rails/RedundantPresenceValidationOnBelongsTo: - Exclude: - - 'app/models/spree/order.rb' - # Offense count: 1 # This cop supports unsafe autocorrection (--autocorrect-all). Rails/RelativeDateConstant: diff --git a/app/models/spree/order.rb b/app/models/spree/order.rb index 03fdf5208c..e8974272c4 100644 --- a/app/models/spree/order.rb +++ b/app/models/spree/order.rb @@ -8,8 +8,6 @@ module Spree include Balance include SetUnusedAddressFields - self.belongs_to_required_by_default = false - searchable_attributes :number, :state, :shipment_state, :payment_state, :distributor_id, :order_cycle_id, :email, :total, :customer_id searchable_associations :shipping_method, :bill_address, :distributor @@ -33,13 +31,13 @@ module Spree token_resource - belongs_to :user, class_name: "Spree::User" - belongs_to :created_by, class_name: "Spree::User" + belongs_to :user, class_name: "Spree::User", optional: true + belongs_to :created_by, class_name: "Spree::User", optional: true - belongs_to :bill_address, class_name: 'Spree::Address' + belongs_to :bill_address, class_name: 'Spree::Address', optional: true alias_attribute :billing_address, :bill_address - belongs_to :ship_address, class_name: 'Spree::Address' + belongs_to :ship_address, class_name: 'Spree::Address', optional: true alias_attribute :shipping_address, :ship_address has_many :state_changes, as: :stateful, dependent: :destroy @@ -70,9 +68,9 @@ module Spree dependent: :destroy has_many :invoices, dependent: :restrict_with_exception - belongs_to :order_cycle - belongs_to :distributor, class_name: 'Enterprise' - belongs_to :customer + belongs_to :order_cycle, optional: true + belongs_to :distributor, class_name: 'Enterprise', optional: true + belongs_to :customer, optional: true has_one :proxy_order, dependent: :destroy has_one :subscription, through: :proxy_order From e6ac2f0d886f2d62e7bfbc5d7f1a6b54b59b8a3c Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 5 Jun 2024 09:29:42 +1000 Subject: [PATCH 254/319] Style/SuperArguments Call super without arguments and parentheses when the signature is identical. --- app/components/help_modal_component.rb | 2 +- app/controllers/application_controller.rb | 2 +- app/helpers/bulk_form_builder.rb | 2 +- app/models/concerns/file_preferences.rb | 2 +- .../enterprise_fees_with_tax_report_by_order.rb | 2 +- .../enterprise_fees_with_tax_report_by_producer.rb | 2 +- lib/reporting/reports/enterprise_fee_summary/fee_summary.rb | 2 +- lib/reporting/reports/enterprise_fee_summary/parameters.rb | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/components/help_modal_component.rb b/app/components/help_modal_component.rb index 297ff34765..fef42131aa 100644 --- a/app/components/help_modal_component.rb +++ b/app/components/help_modal_component.rb @@ -2,6 +2,6 @@ class HelpModalComponent < ModalComponent def initialize(id:, close_button: true) - super(id:, close_button:) + super end end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 8c5675b217..c31e748a30 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -60,7 +60,7 @@ class ApplicationController < ActionController::Base rescue StandardError 'unknown' end}") - super(options, response_status) + super end def set_checkout_redirect diff --git a/app/helpers/bulk_form_builder.rb b/app/helpers/bulk_form_builder.rb index dcb45ae3bc..cd1da4e54e 100644 --- a/app/helpers/bulk_form_builder.rb +++ b/app/helpers/bulk_form_builder.rb @@ -8,6 +8,6 @@ class BulkFormBuilder < ActionView::Helpers::FormBuilder opts[:class] = "#{opts[:class]} changed".strip end - super(field, **opts) + super end end diff --git a/app/models/concerns/file_preferences.rb b/app/models/concerns/file_preferences.rb index 68682b3263..00dedce496 100644 --- a/app/models/concerns/file_preferences.rb +++ b/app/models/concerns/file_preferences.rb @@ -22,7 +22,7 @@ module FilePreferences if has_preference?("#{key}_blob_id") :file else - super(key) + super end end diff --git a/lib/reporting/reports/enterprise_fee_summary/enterprise_fees_with_tax_report_by_order.rb b/lib/reporting/reports/enterprise_fee_summary/enterprise_fees_with_tax_report_by_order.rb index 2ea4a4db14..6b09906076 100644 --- a/lib/reporting/reports/enterprise_fee_summary/enterprise_fees_with_tax_report_by_order.rb +++ b/lib/reporting/reports/enterprise_fee_summary/enterprise_fees_with_tax_report_by_order.rb @@ -7,7 +7,7 @@ module Reporting attr_accessor :parameters def initialize(user, params = {}, render: false) - super(user, params, render:) + super end def search diff --git a/lib/reporting/reports/enterprise_fee_summary/enterprise_fees_with_tax_report_by_producer.rb b/lib/reporting/reports/enterprise_fee_summary/enterprise_fees_with_tax_report_by_producer.rb index 2760112f1b..a9e487c2e7 100644 --- a/lib/reporting/reports/enterprise_fee_summary/enterprise_fees_with_tax_report_by_producer.rb +++ b/lib/reporting/reports/enterprise_fee_summary/enterprise_fees_with_tax_report_by_producer.rb @@ -7,7 +7,7 @@ module Reporting attr_accessor :permissions def initialize(user, params = {}, render: false) - super(user, params, render:) + super @permissions = Permissions.new(user) end diff --git a/lib/reporting/reports/enterprise_fee_summary/fee_summary.rb b/lib/reporting/reports/enterprise_fee_summary/fee_summary.rb index c2fc14159b..61679e445e 100644 --- a/lib/reporting/reports/enterprise_fee_summary/fee_summary.rb +++ b/lib/reporting/reports/enterprise_fee_summary/fee_summary.rb @@ -7,7 +7,7 @@ module Reporting attr_accessor :permissions, :parameters def initialize(user, params = {}, render: false) - super(user, params, render:) + super @parameters = Parameters.new(params.fetch(:q, {})) @parameters.validate! @permissions = Permissions.new(user) diff --git a/lib/reporting/reports/enterprise_fee_summary/parameters.rb b/lib/reporting/reports/enterprise_fee_summary/parameters.rb index 26c0b1dc06..f5a6febb17 100644 --- a/lib/reporting/reports/enterprise_fee_summary/parameters.rb +++ b/lib/reporting/reports/enterprise_fee_summary/parameters.rb @@ -28,7 +28,7 @@ module Reporting self.shipping_method_ids = [] self.payment_method_ids = [] - super(attributes) + super cleanup_arrays end From d9f013abbc9ea1c323432303d331385a711c13ad Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 5 Jun 2024 09:33:41 +1000 Subject: [PATCH 255/319] Style/SendWithLiteralMethodName Use method call directly instead of `public_send` with fixed argument. The cop is declared unsafe. I think that is because it can also replace `send` but we replace only `public_send` here. --- app/controllers/admin/resource_controller.rb | 2 +- lib/reporting/queries/query_builder.rb | 2 +- lib/spree/authentication_helpers.rb | 6 +++--- spec/swagger_helper.rb | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/controllers/admin/resource_controller.rb b/app/controllers/admin/resource_controller.rb index b47336f0d1..b15a576f40 100644 --- a/app/controllers/admin/resource_controller.rb +++ b/app/controllers/admin/resource_controller.rb @@ -146,7 +146,7 @@ module Admin return nil if parent_data.blank? @parent ||= parent_data[:model_class]. - public_send("find_by", parent_data[:find_by] => params["#{model_name}_id"]) + find_by(parent_data[:find_by] => params["#{model_name}_id"]) instance_variable_set("@#{model_name}", @parent) end diff --git a/lib/reporting/queries/query_builder.rb b/lib/reporting/queries/query_builder.rb index 02e908ab2d..23697a6824 100644 --- a/lib/reporting/queries/query_builder.rb +++ b/lib/reporting/queries/query_builder.rb @@ -15,7 +15,7 @@ module Reporting end def selecting(lambda) - fields = instance_exec(&lambda).map{ |key, value| value.public_send(:as, key.to_s) } + fields = instance_exec(&lambda).map{ |key, value| value.as(key.to_s) } reflect query.project(*fields) end diff --git a/lib/spree/authentication_helpers.rb b/lib/spree/authentication_helpers.rb index f463ebbdb4..d92febf78d 100644 --- a/lib/spree/authentication_helpers.rb +++ b/lib/spree/authentication_helpers.rb @@ -3,9 +3,9 @@ module Spree module AuthenticationHelpers def self.included(receiver) - receiver.public_send :helper_method, :spree_current_user - receiver.public_send :helper_method, :spree_login_path - receiver.public_send :helper_method, :spree_logout_path + receiver.helper_method :spree_current_user + receiver.helper_method :spree_login_path + receiver.helper_method :spree_logout_path end def spree_current_user diff --git a/spec/swagger_helper.rb b/spec/swagger_helper.rb index 0a131fb5ff..b3a3676cbc 100644 --- a/spec/swagger_helper.rb +++ b/spec/swagger_helper.rb @@ -75,7 +75,7 @@ end module RswagExtension def param(args, &) - public_send(:let, args) { instance_eval(&) } + let(args) { instance_eval(&) } end end Rswag::Specs::ExampleGroupHelpers.prepend RswagExtension From 2d0f206e8ad084bb217276cce9958bf100e5ebfd Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 4 Jun 2024 10:41:38 +1000 Subject: [PATCH 256/319] Prepare spec --- .../system/admin/products_v3/products_spec.rb | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 7cd4a9e8c5..9f9ee35ecd 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -30,29 +30,26 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi end end - describe "using the page" do - describe "using column display dropdown" do - let(:product) { create(:simple_product) } + describe "column selector" do + let!(:product) { create(:simple_product) } - before do - pending "Pending implementation, issue #11055" - login_as_admin - visit spree.admin_products_path - end + before do + visit admin_products_url + end - it "shows a column display dropdown, which shows a list of columns when clicked" do - expect(page).to have_selector "th", text: "NAME" - expect(page).to have_selector "th", text: "PRODUCER" - expect(page).to have_selector "th", text: "PRICE" - expect(page).to have_selector "th", text: "ON HAND" + it "shows a column display dropdown, which shows a list of columns when clicked" do + expect(page).to have_selector "th", text: "Name" + expect(page).to have_selector "th", text: "Producer" + expect(page).to have_selector "th", text: "Price" + expect(page).to have_selector "th", text: "On Hand" - toggle_columns /^.{0,1}Producer$/i + pending "Pending implementation, issue #11055" + toggle_columns /^.{0,1}Producer$/i - expect(page).not_to have_selector "th", text: "PRODUCER" - expect(page).to have_selector "th", text: "NAME" - expect(page).to have_selector "th", text: "PRICE" - expect(page).to have_selector "th", text: "ON HAND" - end + expect(page).not_to have_selector "th", text: "Name" + expect(page).to have_selector "th", text: "Producer" + expect(page).to have_selector "th", text: "Price" + expect(page).to have_selector "th", text: "On Hand" end end @@ -321,6 +318,8 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi end end + describe "columns" + describe "updating" do let!(:variant_a1) { product_a.variants.first.tap{ |v| From d34e7dbf9fc4cbc414fba324e30c17c48d1ff7ef Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 4 Jun 2024 12:19:50 +1000 Subject: [PATCH 257/319] Specify accepted format on client side I don't know why, but even though the client sends http accept header for json, rails is treating it as html. This was being overridden in the route, but I want to support multiple formats next. So, we explicitly choose the format by adding it to the request path. --- .../javascripts/admin/index_utils/services/columns.js.coffee | 2 +- config/routes/admin.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/admin/index_utils/services/columns.js.coffee b/app/assets/javascripts/admin/index_utils/services/columns.js.coffee index 2d7abfcab7..aeb1a3e3b6 100644 --- a/app/assets/javascripts/admin/index_utils/services/columns.js.coffee +++ b/app/assets/javascripts/admin/index_utils/services/columns.js.coffee @@ -31,7 +31,7 @@ angular.module("admin.indexUtils").factory 'Columns', ($rootScope, $http, $injec savePreferences: (action_name) => $http method: "PUT" - url: "/admin/column_preferences/bulk_update" + url: "/admin/column_preferences/bulk_update.json" data: action_name: action_name column_preferences: (preference for column_name, preference of @columns) diff --git a/config/routes/admin.rb b/config/routes/admin.rb index 21caa2b677..4016f8a695 100644 --- a/config/routes/admin.rb +++ b/config/routes/admin.rb @@ -95,7 +95,7 @@ Openfoodnetwork::Application.routes.draw do resource :contents - resources :column_preferences, only: [], format: :json do + resources :column_preferences, only: [] do put :bulk_update, on: :collection end From 9c0f55ad224aa68945ff97bd641a639ec94b4f7a Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 4 Jun 2024 12:53:13 +1000 Subject: [PATCH 258/319] Refactor --- app/controllers/admin/column_preferences_controller.rb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/controllers/admin/column_preferences_controller.rb b/app/controllers/admin/column_preferences_controller.rb index fcf627f1b7..688dfdb750 100644 --- a/app/controllers/admin/column_preferences_controller.rb +++ b/app/controllers/admin/column_preferences_controller.rb @@ -28,11 +28,10 @@ module Admin end def load_collection - collection_hash = Hash[permitted_params[:column_preferences]. + collection_attributes = Hash[permitted_params[:column_preferences]. each_with_index.map { |cp, i| [i, cp] }] - collection_hash.select!{ |_i, cp| cp[:action_name] == permitted_params[:action_name] } - @cp_set = Sets::ColumnPreferenceSet.new(@column_preferences, - collection_attributes: collection_hash) + collection_attributes.select!{ |_i, cp| cp[:action_name] == permitted_params[:action_name] } + @cp_set = Sets::ColumnPreferenceSet.new(@column_preferences, collection_attributes:) end def collection From 23c175ea592b6232787a419432c8de4268567a6d Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 7 Jun 2024 20:04:53 +1000 Subject: [PATCH 259/319] Update all locales with the latest Transifex translations --- config/locales/de_CH.yml | 6 ++ config/locales/de_DE.yml | 2 +- config/locales/en_FR.yml | 2 + config/locales/en_GB.yml | 2 +- config/locales/fr.yml | 2 + config/locales/hu.yml | 127 +++++++++++++++++++++------------------ config/locales/nb.yml | 2 + 7 files changed, 84 insertions(+), 59 deletions(-) diff --git a/config/locales/de_CH.yml b/config/locales/de_CH.yml index 1f4225b82c..4417189b69 100644 --- a/config/locales/de_CH.yml +++ b/config/locales/de_CH.yml @@ -1104,6 +1104,7 @@ de_CH: email_confirmed: "E-Mail-Adresse bestätigt" email_not_confirmed: "E-Mail-Adresse nicht bestätigt" vouchers: + voucher_code: Gutschein-Code rate: Steuersatz customers: Kunde active: Aktiv? @@ -1539,6 +1540,7 @@ de_CH: new: back: Zurück save: Speichern + voucher_code: Gutschein-Code voucher_amount: Betrag controllers: enterprises: @@ -1624,6 +1626,10 @@ de_CH: explaination: Sie können Ihre Bestellung im nächsten Schritt überprüfen und die endgültigen Kosten bestätigen. submit: Weiter - Bestellübersicht cancel: Zurück - Ihre Daten + voucher: + apply_voucher: Gutschein einlösen + apply: Einlösen + placeholder: Gutschein-Code eingeben step3: delivery_details: title: Lieferdetails diff --git a/config/locales/de_DE.yml b/config/locales/de_DE.yml index a9bb23dd3c..de859639d5 100644 --- a/config/locales/de_DE.yml +++ b/config/locales/de_DE.yml @@ -3926,7 +3926,7 @@ de_DE: customers: "Kunden" groups: "Gruppen" oidc_settings: "OIDC-Einstellungen" - overview: "Einführung" + overview: "Übersicht" product_import: "Importieren" enterprise_roles: "Rollen" payment_methods: "Zahlungsarten" diff --git a/config/locales/en_FR.yml b/config/locales/en_FR.yml index f5a35bc6c6..3212f8e7bf 100644 --- a/config/locales/en_FR.yml +++ b/config/locales/en_FR.yml @@ -990,6 +990,7 @@ en_FR: edit: order_sure_want_to: Are you sure you want to %{event} this order? voucher_tax_included_in_price: "%{label} (tax included in voucher)" + tax_on_fees: "Tax on fees" invoice_email_sent: 'Invoice email has been sent' order_email_resent: 'Order email has been resent' bulk_management: @@ -1285,6 +1286,7 @@ en_FR: enable: "Allow data sharing" disable: "Stop sharing" loading: "Loading" + need_to_be_manager: "Only managers can connect apps." note: | Your Open Food Network account is connected to Discover Regenerative. Add or update information on your Discover Regenerative listing here. diff --git a/config/locales/en_GB.yml b/config/locales/en_GB.yml index 4e5db18c11..0f9a7175e0 100644 --- a/config/locales/en_GB.yml +++ b/config/locales/en_GB.yml @@ -2244,7 +2244,7 @@ en_GB: email_so_placement_intro_html: "You have a new order with %{distributor}" email_so_placement_details_html: "Here are the details of your order for %{distributor}:" email_so_placement_changes: "Unfortunately, not all products that you requested were available. The original quantities that you requested appear crossed-out below." - email_so_payment_success_intro_html: "An automatic payment has been processed for your order from %{distributor}." + email_so_payment_success_intro_html: "Your subscription order from %{distributor} has been processed. \nIf you chose to pay for your subscription via card, you will now be charged." email_so_placement_explainer_html: "This order was automatically created for you." email_so_edit_true_html: "You can make changes until orders close on %{orders_close_at}." email_so_edit_false_html: "You can view details of this order at any time." diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 12f0fe154c..407cb26ebc 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -990,6 +990,7 @@ fr: edit: order_sure_want_to: Êtes-vous sûr de vouloir %{event} cette commande ? voucher_tax_included_in_price: "%{label} (taxe inclue dans le bon de réduction)" + tax_on_fees: "Taxe sur les frais" invoice_email_sent: 'L''email de facturation a bien été envoyé' order_email_resent: 'L''email de commande a de nouveau été envoyé' bulk_management: @@ -1286,6 +1287,7 @@ fr: enable: "Autoriser le partage de données" disable: "Arrêter le partage" loading: "Chargement en cours" + need_to_be_manager: "Seuls les gestionnaires peuvent connecter des applications." note: | Votre compte Open Food Network est connecté à Discover Regenerative. Ajouter et mettre à jour les informations sur votre liste Discover Regenerative ici. diff --git a/config/locales/hu.yml b/config/locales/hu.yml index b543f63c64..6a8b5014a2 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -1,5 +1,8 @@ hu: language_name: "Angol" + time: + formats: + long: "%B %d, %Y %-l:%M %p\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n " activerecord: models: spree/product: Termék @@ -70,15 +73,15 @@ hu: spree/image: attributes: attachment: - integrity_error: "a betöltés nem sikerült. Kérjük, ellenőrizze, hogy a fájl nem sérült-e, és próbálja meg újra." + integrity_error: "a betöltés nem sikerült. Kérjük, ellenőrizd, hogy a fájl nem sérült-e, és próbáld meg újra." spree/user: attributes: email: - taken: "Már létezik fiók ehhez az e-mailhez. Kérjük, jelentkezzen be, vagy állítsa vissza jelszavát." + taken: "Már létezik fiók ehhez az e-mailhez. Kérjük, jelentkezz be, vagy állítsd vissza a jelszavad." reset_password_token: invalid: érvénytelen spree/order: - no_card: Nincsenek engedélyezett hitelkártyák a terhelésre + no_card: Nincsenek engedélyezett hitelkártyák a terhelés elvégzésére spree/credit_card: attributes: base: @@ -119,7 +122,7 @@ hu: image_not_processable: "nem használható kép" not_found: title: "A keresett oldal nem található! (404)" - message_html: "Kérlek, próbáld újra!

Ez lehet egy átmeneti probléma. Kérlek, kattints a vissza gombra, hogy visszatérj az előző képernyőre, vagy menj vissza a(z) Kezdőlap és próbáld újra.

Fordulj az Ügyfélszolgálathoz.

Ha a probléma továbbra is fennáll, vagy sürgős, kérjük, értesíts minket róla. Elérhetőségeinket a globális Open Food Network helyi oldalán találod.

Nagy segítség, ha minél több részletet meg tudsz adni a nem található oldalról.

" + message_html: "Kérlek, próbáld újra!

Ez lehet egy átmeneti probléma. Kérlek, kattints a vissza gombra, hogy visszatérj az előző képernyőre, vagy menj vissza a(z) Kezdőlapra és próbáld újra.

Fordulj az Ügyfélszolgálathoz.

Ha a probléma továbbra is fennáll, vagy sürgős, kérjük, értesíts minket róla. Elérhetőségeinket a globális Open Food Network helyi oldalán találod.

Nagy segítség, ha minél több részletet meg tudsz adni a nem található oldalról.

" internal_server_error: title: "Sajnáljuk! Hiba történt (500)" message_html: "Kérjük, próbáld újra. Ez lehet egy átmeneti probléma. Kérjük, kattints a Vissza gombra, hogy visszatérj az előző képernyőre, vagy menjen vissza a Kezdőlapra és próbáld újra.

Dolgozunk rajta

Ha már korábban is találkoztál ezzel a problémával, valószínűleg már tudunk róla és dolgozunk a megoldáson. Minden felmerülő hibát rögzítünk.

Fordulj az Ügyfélszolgálathoz

Ha a probléma továbbra is fennáll, vagy sürgős, kérjük, értesíts minket róla. Elérhetőségeinket a helyi Open Food Network oldalon találod.

Nagy segítség, ha minél több részletet meg tudsz adni arról, hogy mit csinált, amikor ez a hiba felmerült.

" @@ -167,7 +170,7 @@ hu: offline_pin_required: "A kártyát elutasították, mivel PIN kódot igényel." online_or_offline_pin_required: "A kártyát elutasították, mivel PIN kódot igényel." pickup_card: "A kártya nem használható erre a fizetésre (lehetséges, hogy elveszett vagy ellopták)." - pin_try_exceeded: "Túllépte a PIN-kód próbálkozások megengedett számát." + pin_try_exceeded: "Túllépted a PIN-kód próbálkozások megengedett számát." reenter_transaction: "A kifizetést a kibocsátó ismeretlen okból nem tudta feldolgozni." restricted_card: "A kártya nem használható erre a fizetésre (lehetséges, hogy elveszett vagy ellopták)." revocation_of_all_authorizations: "A kártyát ismeretlen okból elutasították." @@ -188,7 +191,7 @@ hu: order_management/subscriptions/validator: attributes: subscription_line_items: - at_least_one_product: "^Kérjük, adjon hozzá legalább egy terméket" + at_least_one_product: "^Kérjük, adj hozzá legalább egy terméket" not_available: "^%{name} nem érhető el a kiválasztott ütemezésből" ends_at: after_begins_at: "után kell lennie, ekkor kezdődik" @@ -205,6 +208,7 @@ hu: not_available_to_shop: "nem érhető el a %{shop} számára" card_details: "A kártya adatai" card_type: "Kártyatípus" + card_type_is: "A kártya típusa: " unrecognized_card_type: "Nem azonosítható kártyatípus" what_is_this: "Mi ez?" cardholder_name: "Kártyatulajdonos neve" @@ -214,13 +218,13 @@ hu: devise: passwords: spree_user: - cannot_be_blank: "A felhasználói jelszó mező nem lehet üres. Adjon meg egy jelszót." + cannot_be_blank: "A felhasználói jelszó mező nem lehet üres. Adj meg egy jelszót." confirmations: send_instructions: "Néhány percen belül e-mailt fogsz kapni a fiók megerősítéséhez szükséges utasításokkal." failed_to_send: "Hiba történt a megerősítő e-mail elküldése közben." resend_confirmation_email: "Küldd újra a megerősítő email-t." - confirmed: "Köszönjük, hogy megerősítette e-mailjét! Most már bejelentkezhet." - not_confirmed: "Az e-mail címét nem sikerült megerősíteni. Talán már befejezte ezt a lépést?" + confirmed: "Köszönjük, hogy megerősítetted az e-mailedet! Most már bejelentkezhetsz." + not_confirmed: "Az e-mail címed nem sikerült megerősíteni. Talán már befejezted ezt a lépést?" user_confirmations: spree_user: send_instructions: "Néhány percen belül e-mailt fogsz kapni a fiók megerősítéséhez szükséges utasításokkal." @@ -229,14 +233,14 @@ hu: user_registrations: spree_user: signed_up_but_unconfirmed: "Megerősítő linket tartalmazó üzenetet küldtünk az e-mail címedre. Kérjük, nyisd meg a linket a fiók aktiválásához." - unknown_error: "Hiba történt a fiók létrehozásakor. Ellenőrizze e-mail címét, és próbálja újra." + unknown_error: "Hiba történt a fiók létrehozásakor. Ellenőrizd e-mail címed, és próbáld újra." failure: disabled: "A fiókot inaktiváltuk. Kérünk fordulj munkatársunkhoz, hogy feloldjuk." invalid: | - Invalid email or password.: Rossz email cím vagy jelszó. - Were you a guest last time? Perhaps you need to create an account or reset your password.: Vendég voltál legutóbb? Lehet, hogy fiókot kell létrehoznia, vagy vissza kell állítania jelszavát. - unconfirmed: "A folytatás előtt meg kell erősítenie fiókját." - already_registered: "Ez az email cím már regisztrálva van. Kérjük, jelentkezzen be a folytatáshoz, vagy lépjen vissza, és használjon másik e-mail címet." + Rossz email cím vagy jelszó. + Legutóbb is vendégként használtad a felületet? Talán létre kell hoznod egy fiókot vagy vissza kell állítanod a jelszavad: + unconfirmed: "A folytatás előtt meg kell erősítened a fiókod." + already_registered: "Ez az email cím már regisztrálva van. Kérjük, jelentkezz be a folytatáshoz, vagy lépj vissza, és használj másik e-mail címet." success: logged_in_succesfully: "Sikeresen bejelentkeztél" sessions: @@ -244,7 +248,7 @@ hu: already_signed_out: "Sikeresen kijelentkeztél." user_passwords: spree_user: - updated_not_active: "Jelszava visszaállításra került, de e-mail-címét még nem erősítették meg." + updated_not_active: "Jelszavad visszaállításra került, de az e-mail-címed még nem erősítették meg." updated: "Jelszavad sikeresen megváltozott, és bejelentkeztél." send_instructions: "Néhány percen belül e-mailt fogsz kapni a fiók megerősítéséhez szükséges utasításokkal." oidc: @@ -266,7 +270,7 @@ hu: menu_7_icon_name: "7. menü ikon neve" models: order_cycle: - cloned_order_cycle_name: "%{order_cycle} MÁSOLA" + cloned_order_cycle_name: "%{order_cycle} MÁSOLATA" tax_rate: included_in_price: "Az ár tartalmazza" open_street_map_enabled: "Az Utcatérkép megnyitása engedélyezve" @@ -295,14 +299,14 @@ hu: Megvizsgáljuk, de kérjük, értesíts minket, ha a probléma továbbra is fennáll. enterprise_mailer: confirmation_instructions: - subject: "Kérjük, erősítse meg %{enterprise} e-mail címét" + subject: "Kérjük, erősítsd meg %{enterprise} e-mail címét" welcome: subject: "%{enterprise} most itt van: %{sitename}" email_welcome: "Üdvözöljük" email_registered: "most része" email_userguide_html: "A Termelő vagy Átvételi pont beállításához szükséges részletes támogatást tartalmazó felhasználói útmutató itt található: %{link}" - userguide: "Nyissa meg a Food Network felhasználói kézikönyvét" - email_admin_html: "Fiókját úgy kezelheti, hogy bejelentkezik a %{link} oldalra, vagy kattintson a kezdőlap jobb felső sarkában lévő fogaskerékre, és válaszd az Adminisztráció lehetőséget." + userguide: "Nyissa meg az Open Food Network felhasználói kézikönyvét" + email_admin_html: "Fiókod úgy kezelheted, hogy bejelentkezel a %{link} oldalra, vagy kattints a kezdőlap jobb felső sarkában lévő fogaskerékre, és válaszd az Adminisztráció lehetőséget." admin_panel: "Adminisztrációs Panel" email_community_html: "Van egy online fórumunk is az OFN szoftverrel és az élelmiszeripari vállalkozás vezetésének egyedi kihívásaival kapcsolatos közösségi vitákhoz. Arra biztatjuk, hogy csatlakozzon. Folyamatosan fejlődünk, és az Ön hozzájárulása ehhez a fórumhoz meghatározza, hogy mi történik ezután. %{link}" join_community: "Csatlakozz a közösséghez" @@ -321,11 +325,11 @@ hu: link_label: "%{name}" shipment_mailer: shipped_email: - dear_customer: "Tisztelt Ügyfelünk," + dear_customer: "Kedves Ügyfelünk," instructions: "Megrendelésed kiszállították" shipment_summary: "Szállítási összefoglaló" subject: "Szállítási értesítés" - thanks: "Köszönjük csatlakozását." + thanks: "Köszönjük, hogy csatlakoztál!" track_information: "Nyomon követési információ: %{tracking}" track_link: "Nyomon követési link: %{url}" subscription_mailer: @@ -339,8 +343,8 @@ hu: intro: "Az alábbiakban összefoglaljuk azokat az előfizetési rendeléseket, amelyeket most véglegesítettek a %{shop} számára." summary_overview: total: Összesen %{count} előfizetést jelöltek meg automatikus feldolgozásra. - success_zero: Ezeknek a,egyiket sem sikerült feldolgozni. - success_some: Ezeknek a, %{count} sikeresen feldolgozva. + success_zero: Egyiket sem sikerült feldolgozni. + success_some: Ezeknek a, %{count}-a sikeresen feldolgozva. success_all: Mindegyik sikeresen feldolgozásra került. issues: A felmerült problémák részleteit alább közöljük. summary_detail: @@ -366,9 +370,9 @@ hu: home: "OFN" title: "Open Food Network" welcome_to: "Üdvözli az" - site_meta_description: "Az alapoktól kezdjük. A gazdálkodókkal és termelőkkel, akik készen állnak arra, hogy büszkén és őszintén elmondják történeteiket. A forgalmazókkal, akik készen állnak arra, hogy tisztességesen és becsületesen összekapcsolják az embereket a termékekkel. Azokkal a vásárlókkal, akik hisznek abban, hogy jobb heti vásárlási döntések…" + site_meta_description: "Az alapoktól kezdjük. A gazdálkodókkal és termelőkkel, akik készen állnak arra, hogy őszintén elmondják történeteiket. A forgalmazókkal, akik készen állnak arra, hogy tisztességesen és becsületesen összekapcsolják az embereket a termékekkel. Azokkal a vásárlókkal, akik hisznek abban, hogy jobb heti vásárlási döntések…" search_by_name: Keresés név vagy település szerint... - producers_join: Az ausztrál termelők most már csatlakozhatnak az Open Food Network-höz. + producers_join: Az magyar termelők most már csatlakozhatnak az Open Food hálózatához. charges_sales_tax: Áfaköteles? business_address: "Vállalkozás címe" print_invoice: "Számla nyomtatása" @@ -381,7 +385,7 @@ hu: ship_order: "Szállítási rendelés" cancel_order: "Megrendelés visszavonása" confirm_send_invoice: "Erről a megrendelésről számlát küldünk a vásárlónak. Biztos, hogy akarod folytatni?" - confirm_resend_order_confirmation: "Biztos, hogy újra el akarja küldeni a rendelést visszaigazoló e-mailt?" + confirm_resend_order_confirmation: "Biztos, hogy újra el akarod küldeni a rendelést visszaigazoló e-mailt?" invoice: "Számla" invoices: "Számlák" file: "File" @@ -394,9 +398,9 @@ hu: ongoing: Folyamatban lévő bill_address: számlázási cím ship_address: szállítási cím - sort_order_cycles_on_shopfront_by: "Rendezési ciklusok rendezése a átvételi pontban:" + sort_order_cycles_on_shopfront_by: "Rendelési ciklusok rendezése a átvételi pontban:" required_fields: A kötelező mezőket csillag jelöli - select_continue: Válassz a fentiek közül és kattints + select_continue: Válassz és Folytasd remove: Távolítsa el collapse_all: Mindet összecsuk expand_all: Az összes kibontása @@ -408,7 +412,7 @@ hu: edit: Szerkesztés clone: Klón distributors: Forgalmazók - distribution: terjesztés + distribution: Forgalmazás order_cycles: Rendelési ciklusok bulk_order_management: Tömeges megrendelés kezelése enterprises: Vállalkozások @@ -439,7 +443,7 @@ hu: y: 'Y''' n: 'N''' powered_by: Powered by - blocked_cookies_alert: "Előfordulhat, hogy az Ön böngészője blokkolja az oldal használatához szükséges cookie-kat. Kattintson az alábbi gombra a cookie-k engedélyezéséhez és az oldal újratöltéséhez." + blocked_cookies_alert: "Előfordulhat, hogy a böngésződ blokkolja az oldal használatához szükséges cookie-kat. Kattints az alábbi gombra a cookie-k engedélyezéséhez és az oldal újratöltéséhez." allow_cookies: "Cookie-k engedélyezése" none: Egyik sem notes: Megjegyzések @@ -454,11 +458,11 @@ hu: pick_up: Átvétel ok: rendben copy: Másolat - change_my_password: "Változtasd meg a jelszavamat" - update_password: "Frissítse a jelszót" + change_my_password: "Jelszó megváltoztatása" + update_password: "Frissítsd a jelszót" password_confirmation: Jelszó megerősítése reset_password_token: Jelszó token visszaállítása - expired: lejárt, kérjen újat + expired: lejárt, kérj újat back_to_payments_list: "Vissza a fizetési listához" maestro_or_solo_cards: "Maestro/Solo kártyák" backordered: "Hátrarendelt" @@ -500,6 +504,7 @@ hu: name: Név unit: Mértékegység unit_value: Egység értéke + display_as: Egység megjelenítése mint price: Ár producer: Termelő category: Kategória @@ -529,7 +534,7 @@ hu: image: edit: Szerkesztés adjustments: - skipped_changing_canceled_order: "A törölt rendelést nem módosíthatja." + skipped_changing_canceled_order: "A törölt rendelést nem módosíthatod." begins_at: 'Kezdete:' begins_on: Kezdődik bill_address: "Számla címe" @@ -570,7 +575,7 @@ hu: clear_all: Mindent kitöröl start_date: "Kezdő dátum" end_date: "Befejezés dátuma" - unsaved_changes: "Nem mentett módosításai vannak" + unsaved_changes: "Nem mentett módosításaid vannak" form_invalid: "Az űrlap hiányzó vagy érvénytelen mezőket tartalmaz" clear_filters: Szűrők törlése clear: Törlés @@ -601,7 +606,7 @@ hu: embedded_shopfronts_whitelist: "Külső domainek engedélyezési listája" terms_of_service_files: create: - select_file: "Kérjük, először válasszon egy fájlt." + select_file: "Kérjük, először válassz egy fájlt." show: title: "Szolgáltatási feltételek fájlok" no_files: "Még nem töltöttek fel szolgáltatási feltételeket." @@ -652,9 +657,9 @@ hu: duplicate_code: "Ez a kód már használatban van." bill_address: "számlázási cím" ship_address: "szállítási cím" - balance: "Egyensúly" + balance: "Mérleg" update_address_success: "A cím sikeresen frissítve." - update_address_error: "Sajnálom! Kérjük, töltse ki az összes kötelező mezőt!" + update_address_error: "Sajnáljuk! Kérjük, töltsd ki az összes kötelező mezőt!" edit_bill_address: "Számlázási cím szerkesztése" edit_ship_address: "Szállítási cím szerkesztése" required_fileds: "A kötelező mezőket csillag jelöli" @@ -684,6 +689,7 @@ hu: map: Térkép dfc_product_imports: index: + title: "DFC termékkatalógus importálása" imported_products: "Importált termékek:" enterprise_fees: index: @@ -692,10 +698,10 @@ hu: fee_type: "Díjtípus" name: "Név" tax_category: "Adókategória" - calculator: "Kiszámítási mód" - calculator_values: "Kiszámítási mód" + calculator: "Kalkulátor" + calculator_values: "Kalkulátor értékei" search: "Keresés" - name_placeholder: "pl csomagolási díj" + name_placeholder: "pl. csomagolási díj" enterprise_groups: index: new_button: Új vállalkozási csoport @@ -729,8 +735,8 @@ hu: upload_an_image: Tölts fel egy képet seo: product_search_keywords: "Termékkeresési kulcsszavak" - product_search_tip: "Írjon be olyan szavakat, amelyek megkönnyítik a termékek keresését az oldalon. Használjon szóközt az egyes kulcsszavak elválasztásához." - seo_tip: "Írjon be olyan szavakat, amelyek megkönnyítik termékei keresését az interneten. Használjon szóközt az egyes kulcsszavak elválasztásához." + product_search_tip: "Írj be olyan szavakat, amelyek megkönnyítik a termékek keresését az oldalon. Használj szóközt az egyes kulcsszavak elválasztásához." + seo_tip: "Írj be olyan szavakat, amelyek megkönnyítik termékek keresését az interneten. Használj szóközt az egyes kulcsszavak elválasztásához." search: "Keresés" properties: property_name: "Tulajdonság neve" @@ -762,6 +768,7 @@ hu: heading: "Változat törlése" prompt: "Ezzel véglegesen eltávolítod a listáról." confirmation_text: "Változat törlése" + cancellation_text: "Változat megtartása" filters: search_products: Keresés a termékek között search_for_producers: Keresés termelőre @@ -774,8 +781,10 @@ hu: search: Keresés sort: pagination: + total_html: "%{total} terméket találtunk a keresési feltételek alapján. %{from}-től %{to}-ig mutat." per_page: show: Mutasd + per_page: "%{num}per oldal" clear_search: Keresés törlése no_products: no_products_found: Nem találtunk termékeket @@ -810,7 +819,7 @@ hu: title: Termék importálása file_not_found: A fájl nem található vagy nem nyitható meg no_data: Nem található adat a táblázatban - confirm_reset: "Ezzel nullára állítja a készletszintet az n vállalkozás összes olyan termékénél, amely nem szerepel a feltöltött fájlban" + confirm_reset: "Ezzel nullára állítod a készletszintet az \nvállalkozás összes olyan termékénél, amely nem szerepel a feltöltött fájlban" model: no_file: "hiba: nincs fájl feltöltve" could_not_process: "nem sikerült feldolgozni a fájlt: érvénytelen fájltípus" @@ -818,13 +827,15 @@ hu: conditional_blank: nem lehet üres, ha a unit_type mező üres no_product: nem talált egy terméket sem az adatbázisban not_found: nem található az adatbázisban + category_not_found: nem felel meg az engedélyezett kategóriáknak. Nézd meg a helyes kategóriákat, amelyek közül választhatsz a termékimport oldalról, vagy ellenőrizd, hogy nincs-e helyesírási hiba. not_updatable: nem frissíthető a meglévő termékeken termékimporttal + values_must_be_same: azonos név alatt azonos terméknek kell szerepelnie blank: nem lehet üres products_no_permission: nincs engedélye a vállalkozás termékeinek kezelésére inventory_no_permission: nincs engedélye készlet létrehozására ehhez a termelőhöz none_saved: egyetlen terméket sem mentett sikeresen line_number: "%{number}. sor:" - encoding_error: "Kérjük, ellenőrizze a forrásfájl nyelvi beállítását, és győződjön meg arról, hogy UTF-8 kódolással mentette" + encoding_error: "Kérjük, ellenőrizd a forrásfájl nyelvi beállítását, és győződj meg arról, hogy UTF-8 kódolással mentette" unexpected_error: "A termékimportálás váratlan hibát észlelt a fájl megnyitásakor: %{error_message}" malformed_csv: "A termékimportálás hibás formátumú CSV-fájlt észlelt: %{error_message}" index: @@ -847,6 +858,7 @@ hu: shipping_categories: Szállítási módok dfc_import_form: enterprise: "Vállalkozás" + catalog_url: "DFC katalógus URL" import: "Importálás" import: review: Felülvizsgálat @@ -857,23 +869,23 @@ hu: no_valid_entries: Nem található érvényes bejegyzés none_to_save: Nincsenek menthető bejegyzések some_invalid_entries: Az importált fájl érvénytelen bejegyzéseket tartalmaz - fix_before_import: Kérjük, javítsa ki ezeket a hibákat, és próbálja újra importálni a fájlt - save_valid?: Egyelőre menti az érvényes bejegyzéseket, és elveti a többit? + fix_before_import: Kérjük, javítsd ki ezeket a hibákat, és próbáld újra importálni a fájlt + save_valid?: Mented az érvényes bejegyzéseket, és elveted a többit? no_errors: Nem észleltek hibát! - save_all_imported?: Menti az összes importált terméket? + save_all_imported?: Mented az összes importált terméket? options_and_defaults: Beállítások és alapértelmezett beállítások importálása no_permission: nincs engedélye ennek a vállalkozásnak a kezelésére not_found: vállalkozás nem található az adatbázisban no_name: Névtelen blank_enterprise: egyes termékekhez nincs definiálva a vállalkozás reset_absent?: Hiányzó termékek visszaállítása - reset_absent_tip: Állítsa a készletet nullára minden olyan olyan terméknél, amely nem szerepel a fájlban + reset_absent_tip: Állítsd a készletet nullára minden olyan olyan terméknél, amely nem szerepel a fájlban overwrite_all: Az összes felülírása overwrite_empty: Ha üres, írja felül - default_stock: Állítsa be a készletszintet + default_stock: Állítsd be a készletet default_tax_cat: Adókategória beállítása default_shipping_cat: Szállítási mód beállítása - default_available_date: Állítsa be az elérhető dátumot + default_available_date: Állítsd be az elérhetőségi dátumot validation_overview: Az importálás ellenőrzésének áttekintése entries_found: Bejegyzések találhatók az importált fájlban entries_with_errors: Az elemek hibákat tartalmaznak, és nem importálhatók @@ -886,7 +898,7 @@ hu: line: Vonal item_line: Tételsor import_review: - not_updatable_tip: "következő mezők nem frissíthetők tömeges importálással meglévő termékek esetén:" + not_updatable_tip: "A következő mezők nem frissíthetők tömeges importálással meglévő termékek esetén:" fields_ignored: Ezeket a mezőket a rendszer figyelmen kívül hagyja az importált termékek mentésekor. entries_table: not_updatable: Ez a mező nem frissíthető tömeges importálással meglévő termékeken @@ -1223,9 +1235,10 @@ hu: enable: "Adatmegosztás engedélyezése" disable: "Megosztás leállítása" loading: "Betöltés" + link_label: "Listázás kezelése" description_html: |

- Termelők bemutathatják regeneratív tanúsítványukat, gazdálkodási gyakorlatukat és egyéb tevékenységüket a profiljukban. Ez egyszerűsíti a vásárlók számára, hogy megtalálják a regeneratív gyakorlatokkal előállított termékeket, és kapcsolatba lépjenek az termelőkkel.

+ Termelők bemutathatják bio gazdálkodási tanúsítványukat, egyéb gazdálkodási gyakorlatukat és tevékenységeiket a profiljukban. Ez egyszerűsíti a fogyasztók számára, hogy megtalálják a fenntartható gyakorlatokkal előállított termékeket, és kapcsolatba lépjenek a termelőkkel.

Tudj meg többet a Regeneratív gyakorlatokról. @@ -1234,7 +1247,7 @@ hu: actions: edit_profile: Beállítások properties: Tulajdonságok - payment_methods: fizetési módok + payment_methods: Fizetési módok payment_methods_tip: Ennek a vállalkozásnak nincs fizetési módja shipping_methods: Szállítási módok shipping_methods_tip: Ennek a vállalkozásnak vannak szállítási módjai @@ -1820,7 +1833,7 @@ hu: selling_on_ofn: "Érdekel az Open Food Network?" register: "Itt regisztrálj" footer: - footer_secure: "Biztonságos és megbízható." + footer_secure: "Biztonságos és felelős adatkezelés." footer_secure_text: "Az Open Food Network mindenhol SSL-titkosítást (2048 bites RSA) használ, hogy vásárlási és fizetési adataidat bizalmasan kezelje. Szervereink nem tárolják hitelkártya adataidat, és a fizetéseket PCI-kompatibilis szolgáltatások dolgozzák fel." footer_contact_headline: "Kapcsolat" footer_contact_email: "Küldj egy emailt nekünk" @@ -1884,7 +1897,7 @@ hu: menu_4_title: "Csoportok" menu_4_url: "/groups" menu_5_title: "Rólunk" - menu_5_url: "https://about.openfoodnetwork.org.au/" + menu_5_url: "https://pecsikosar.hu/iranytu/" menu_6_title: "Csatlakozás" menu_6_url: "https://openfoodnetwork.org/au/connect/" menu_7_title: "Tanul" @@ -2314,7 +2327,7 @@ hu: sell_groups_detail: "Hozz létre egy személyre szabott jegyzéket (termelők és egyéb élelmiszeripari vállalkozások) régiója vagy szervezete számára." sell_user_guide: "Tudj meg többet használati útmutatónkból." sell_listing_price: "A termelői regisztráció az OFN-en ingyenes, és az is marad. A platformon történő értékesítés volumenétől függően azonban közösségi hozzájárulást kérünk, a szoftver üzemeltetéshez és IT support biztosításához . \nRészletek hamarosan. " - sell_embed: "Ezenkívül beágyazhatunk egy OFN üzletet saját, személyre szabott webhelyébe, vagy személyre szabott helyi élelmiszer-hálózati webhelyet készíthetünk az Ön régiójában." + sell_embed: "Ezenkívül beágyazhatunk egy OFN profilt saját, személyre szabott webhelyedbe, vagy személyre szabott helyi élelmiszerközösségi webhelyet készíthetünk számodra." sell_ask_services: "Kérdezz bátran egyéb szolgáltatásainkról. " shops_title: Átadópontok shops_headline: Bevásárlás újragondolva. diff --git a/config/locales/nb.yml b/config/locales/nb.yml index b6e8a8f6a6..86837fac94 100644 --- a/config/locales/nb.yml +++ b/config/locales/nb.yml @@ -837,6 +837,7 @@ nb: error: Kan ikke slette varianten variant_row: none_tax_category: Ingen + search_for_tax_categories: "Søk etter avgiftskategorier" category_field_name: "Kategori" tax_category_field_name: "Avgiftskategori" product_row: @@ -1284,6 +1285,7 @@ nb: enable: "Tillat datadeling" disable: "Stopp deling" loading: "Laster" + need_to_be_manager: "Bare ledere kan koble til apper." note: | Open Food Network-kontoen din er koblet til Discover Regenerativ. Legg til eller oppdater informasjon om Discover Regenerativ-oppføringen din her. From 586a7055d7754a943efd586fe34960950261b6b8 Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Mon, 13 May 2024 12:16:22 +0100 Subject: [PATCH 260/319] notify if any distributors doesn't have an abn --- app/reflexes/admin/orders_reflex.rb | 49 +++++++++++++++++++---------- 1 file changed, 32 insertions(+), 17 deletions(-) diff --git a/app/reflexes/admin/orders_reflex.rb b/app/reflexes/admin/orders_reflex.rb index dedf46cdf2..a5ecee2b39 100644 --- a/app/reflexes/admin/orders_reflex.rb +++ b/app/reflexes/admin/orders_reflex.rb @@ -33,19 +33,9 @@ module Admin end def bulk_invoice(params) - visible_orders = editable_orders.invoiceable.where(id: params[:bulk_ids]) + visible_orders = bulk_load_orders(params) - if Spree::Config.enterprise_number_required_on_invoices? - distributors_without_abn = Enterprise.where( - id: visible_orders.select(:distributor_id), - abn: nil, - ) - - if distributors_without_abn.exists? - render_business_number_required_error(distributors_without_abn) - return - end - end + return if notify_if_abn_related_issue(visible_orders) cable_ready.append( selector: "#orders-index", @@ -94,15 +84,15 @@ module Admin end def send_invoices(params) - count = 0 - editable_orders.invoiceable.where(id: params[:bulk_ids]).find_each do |o| - next unless o.distributor.can_invoice? + orders = bulk_load_orders(params) + return if notify_if_abn_related_issue(orders) + + orders.each do |o| Spree::OrderMailer.invoice_email(o.id, current_user_id: current_user.id).deliver_later - count += 1 end - success("admin.send_invoice_feedback", count) + success("admin.send_invoice_feedback", orders.size) end private @@ -134,5 +124,30 @@ module Admin enterprise_name: distributor_names.join(", ")) morph_admin_flashes end + + def bulk_load_orders(params) + editable_orders.invoiceable.where(id: params[:bulk_ids]) + end + + def notify_if_abn_related_issue(orders) + return false unless abn_required? + + distributors = distributors_without_abn(orders) + return false if distributors.empty? + + render_business_number_required_error(distributors) + true + end + + def abn_required? + Spree::Config.enterprise_number_required_on_invoices? + end + + def distributors_without_abn(orders) + Enterprise.where( + id: orders.select(:distributor_id), + abn: [nil,""], + ) + end end end From 55365be299f4f253efda8ab60bb4fde0067f1c77 Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Fri, 17 May 2024 14:31:32 +0100 Subject: [PATCH 261/319] fix linter issue --- app/reflexes/admin/orders_reflex.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/reflexes/admin/orders_reflex.rb b/app/reflexes/admin/orders_reflex.rb index a5ecee2b39..160877bb51 100644 --- a/app/reflexes/admin/orders_reflex.rb +++ b/app/reflexes/admin/orders_reflex.rb @@ -146,7 +146,7 @@ module Admin def distributors_without_abn(orders) Enterprise.where( id: orders.select(:distributor_id), - abn: [nil,""], + abn: [nil, ""], ) end end From b0862d26f633cf497c4df71330982b28754d1952 Mon Sep 17 00:00:00 2001 From: Abdellani Date: Fri, 7 Jun 2024 17:57:28 +0100 Subject: [PATCH 262/319] update tests --- spec/system/admin/orders/bulk_actions_spec.rb | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/spec/system/admin/orders/bulk_actions_spec.rb b/spec/system/admin/orders/bulk_actions_spec.rb index e93cfe4b5f..72ccc44d95 100644 --- a/spec/system/admin/orders/bulk_actions_spec.rb +++ b/spec/system/admin/orders/bulk_actions_spec.rb @@ -363,9 +363,22 @@ RSpec.describe ' } must have a valid ABN before invoices can be used." end end - it_behaves_like "should not print the invoice" - context "with legal invoices feature", feature: :invoices do + context "ABN is null" do it_behaves_like "should not print the invoice" + context "with legal invoices feature", feature: :invoices do + it_behaves_like "should not print the invoice" + end + end + context "ABN is empty string" do + before do + order4.distributor.update(abn: "123456789") + order5.distributor.update(abn: "") + end + + it_behaves_like "should not print the invoice" + context "with legal invoices feature", feature: :invoices do + it_behaves_like "should not print the invoice" + end end end end From 01612843b4eeb9a8c6afc8c1bd232300099ddf72 Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Mon, 10 Jun 2024 14:23:27 +0200 Subject: [PATCH 263/319] BUU Display error messages when file not valid - implements a turbo response in controller - display error messages on modal -> able for user to re upload - removes a pending in spec that now tests error message --- app/controllers/spree/admin/images_controller.rb | 13 +++++++------ app/views/spree/admin/images/edit.turbo_stream.haml | 8 +++++++- spec/requests/admin/images_spec.rb | 2 -- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/app/controllers/spree/admin/images_controller.rb b/app/controllers/spree/admin/images_controller.rb index 6084972102..39b51149ba 100644 --- a/app/controllers/spree/admin/images_controller.rb +++ b/app/controllers/spree/admin/images_controller.rb @@ -50,19 +50,20 @@ module Spree @url_filters = ::ProductFilters.new.extract(request.query_parameters) set_viewable - if @object.update(permitted_resource_params) + if @object.update!(permitted_resource_params) flash[:success] = flash_message_for(@object, :successfully_updated) respond_with do |format| format.html { redirect_to location_after_save } format.turbo_stream end - else - respond_with(@object) end - rescue ActiveStorage::IntegrityError - @object.errors.add :attachment, :integrity_error - respond_with(@object) + rescue ActiveRecord::RecordInvalid => e + @errors = e.record.errors.map(&:full_message) + respond_with do |format| + format.html { respond_with(@object) } + format.turbo_stream { render :edit } + end end def destroy diff --git a/app/views/spree/admin/images/edit.turbo_stream.haml b/app/views/spree/admin/images/edit.turbo_stream.haml index d2ffe7dd53..b3ca87329b 100644 --- a/app/views/spree/admin/images/edit.turbo_stream.haml +++ b/app/views/spree/admin/images/edit.turbo_stream.haml @@ -3,7 +3,13 @@ %h2= t(".title") -# Display image in the same way it appears in the shopfront popup - %p= image_tag @image.persisted? ? @image.url(:large) : Spree::Image.default_image_url(:large), width: 433, height: 433 + - if defined?(@errors) && !@errors.empty? + - @errors.each do |error| + %p + = error + - else + %p= image_tag @image.persisted? ? @image.url(:large) : Spree::Image.default_image_url(:large), width: 433, height: 433 + -# Submit as turbo stream to avoid full page reload. -# TODO: show loading indicator. diff --git a/spec/requests/admin/images_spec.rb b/spec/requests/admin/images_spec.rb index e7c9584037..e77899cda7 100644 --- a/spec/requests/admin/images_spec.rb +++ b/spec/requests/admin/images_spec.rb @@ -49,8 +49,6 @@ RSpec.describe "/admin/products/:product_id/images", type: :request do product.reload }.not_to change{ product.image&.attachment&.filename.to_s } - pending "error status code" - expect(response).to be_unprocessable expect(response.body).to include "Attachment has an invalid content type" end end From a2a670c84842dc4e03e88ec8e76612a48c5b5e2d Mon Sep 17 00:00:00 2001 From: zanetagebka Date: Tue, 4 Jun 2024 15:28:29 +0200 Subject: [PATCH 264/319] Fix cops StringConcatenation --- app/controllers/admin/stripe_connect_settings_controller.rb | 2 +- app/helpers/enterprises_helper.rb | 2 +- app/helpers/spree/admin/base_helper.rb | 4 ++-- app/mailers/spree/user_mailer.rb | 2 +- app/models/enterprise.rb | 4 ++-- app/models/spree/credit_card.rb | 2 +- app/models/spree/payment_method.rb | 2 +- app/serializers/api/cached_enterprise_serializer.rb | 2 +- app/serializers/api/enterprise_shopfront_list_serializer.rb | 2 +- app/services/embedded_page_service.rb | 2 +- lib/spree/api/controller_setup.rb | 2 +- lib/spree/core/environment_extension.rb | 4 ++-- spec/models/spree/line_item_spec.rb | 2 +- spec/models/spree/product_spec.rb | 2 +- spec/services/embedded_page_service_spec.rb | 4 ++-- spec/support/features/datepicker_helper.rb | 2 +- spec/system/admin/products_spec.rb | 2 +- 17 files changed, 21 insertions(+), 21 deletions(-) diff --git a/app/controllers/admin/stripe_connect_settings_controller.rb b/app/controllers/admin/stripe_connect_settings_controller.rb index 54128e6bb0..11a5a2dc69 100644 --- a/app/controllers/admin/stripe_connect_settings_controller.rb +++ b/app/controllers/admin/stripe_connect_settings_controller.rb @@ -37,7 +37,7 @@ module Admin def obfuscated_secret_key key = Stripe.api_key - key.first(8) + "****" + key.last(4) + "#{key.first(8)}****#{key.last(4)}" end def settings_params diff --git a/app/helpers/enterprises_helper.rb b/app/helpers/enterprises_helper.rb index 4a7c6ae817..367b69b690 100644 --- a/app/helpers/enterprises_helper.rb +++ b/app/helpers/enterprises_helper.rb @@ -31,7 +31,7 @@ module EnterprisesHelper def enterprises_options(enterprises) enterprises.map { |enterprise| - [enterprise.name + ": " + enterprise.address.address1 + ", " + enterprise.address.city, + ["#{enterprise.name}: #{enterprise.address.address1}, #{enterprise.address.city}", enterprise.id.to_i] } end diff --git a/app/helpers/spree/admin/base_helper.rb b/app/helpers/spree/admin/base_helper.rb index 4d46a8e297..badeb0783d 100644 --- a/app/helpers/spree/admin/base_helper.rb +++ b/app/helpers/spree/admin/base_helper.rb @@ -108,7 +108,7 @@ module Spree object.preferences.keys.map { |key| preference_label = form.label("preferred_#{key}", - Spree.t(key.to_s.gsub("_from_list", "")) + ": ") + "#{Spree.t(key.to_s.gsub('_from_list', ''))}: ") preference_field = preference_field_for( form, "preferred_#{key}", @@ -120,7 +120,7 @@ module Spree def link_to_add_fields(name, target, options = {}) name = '' if options[:no_text] - css_classes = options[:class] ? options[:class] + " spree_add_fields" : "spree_add_fields" + css_classes = options[:class] ? "#{options[:class]} spree_add_fields" : "spree_add_fields" link_to_with_icon('icon-plus', name, 'javascript:', diff --git a/app/mailers/spree/user_mailer.rb b/app/mailers/spree/user_mailer.rb index 02e24194bc..3797fcd9b4 100644 --- a/app/mailers/spree/user_mailer.rb +++ b/app/mailers/spree/user_mailer.rb @@ -25,7 +25,7 @@ module Spree @user = user I18n.with_locale valid_locale(@user) do mail(to: user.email, - subject: t(:welcome_to) + ' ' + Spree::Config[:site_name]) + subject: "#{t(:welcome_to)} #{Spree::Config[:site_name]}") end end diff --git a/app/models/enterprise.rb b/app/models/enterprise.rb index 4af0fa374e..5a1ec12d23 100644 --- a/app/models/enterprise.rb +++ b/app/models/enterprise.rb @@ -376,7 +376,7 @@ class Enterprise < ApplicationRecord def category # Make this crazy logic human readable so we can argue about it sanely. cat = is_primary_producer ? "producer_" : "non_producer_" - cat << ("sells_" + sells) + cat << ("sells_#{sells}") # Map backend cases to front end cases. case cat @@ -510,7 +510,7 @@ class Enterprise < ApplicationRecord end def correct_whatsapp_url(phone_number) - phone_number && ("https://wa.me/" + phone_number.tr('+ ', '')) + phone_number && "https://wa.me/#{phone_number.tr('+ ', '')}" end def correct_instagram_url(url) diff --git a/app/models/spree/credit_card.rb b/app/models/spree/credit_card.rb index 35a43ee828..74e40596a0 100644 --- a/app/models/spree/credit_card.rb +++ b/app/models/spree/credit_card.rb @@ -30,7 +30,7 @@ module Spree def expiry=(expiry) self[:month], self[:year] = expiry.split(" / ") - self[:year] = "20" + self[:year] + self[:year] = "20#{self[:year]}" end def number=(num) diff --git a/app/models/spree/payment_method.rb b/app/models/spree/payment_method.rb index a729571066..b66d8d239b 100644 --- a/app/models/spree/payment_method.rb +++ b/app/models/spree/payment_method.rb @@ -118,7 +118,7 @@ module Spree end def self.clean_name - i18n_key = "spree.admin.payment_methods.providers." + name.demodulize.downcase + i18n_key = "spree.admin.payment_methods.providers.#{name.demodulize.downcase}" I18n.t(i18n_key) end diff --git a/app/serializers/api/cached_enterprise_serializer.rb b/app/serializers/api/cached_enterprise_serializer.rb index bef58f0c77..d9e08a0155 100644 --- a/app/serializers/api/cached_enterprise_serializer.rb +++ b/app/serializers/api/cached_enterprise_serializer.rb @@ -131,7 +131,7 @@ module Api producer_shop: "map_003-producer-shop.svg", producer: "map_001-producer-only.svg", } - "/map_icons/" + (icons[enterprise.category] || "map_001-producer-only.svg") + "/map_icons/#{icons[enterprise.category] || 'map_001-producer-only.svg'}" end # Choose regular icon font for enterprises. diff --git a/app/serializers/api/enterprise_shopfront_list_serializer.rb b/app/serializers/api/enterprise_shopfront_list_serializer.rb index 8cd95c1547..6d99d3de57 100644 --- a/app/serializers/api/enterprise_shopfront_list_serializer.rb +++ b/app/serializers/api/enterprise_shopfront_list_serializer.rb @@ -21,7 +21,7 @@ module Api producer_shop: "map_003-producer-shop.svg", producer: "map_001-producer-only.svg", } - "/map_icons/" + (icons[enterprise.category] || "map_001-producer-only.svg") + "/map_icons/#{icons[enterprise.category] || 'map_001-producer-only.svg'}" end def icon_font diff --git a/app/services/embedded_page_service.rb b/app/services/embedded_page_service.rb index 1d4f344384..52fc4b98c4 100644 --- a/app/services/embedded_page_service.rb +++ b/app/services/embedded_page_service.rb @@ -59,7 +59,7 @@ class EmbeddedPageService def set_logout_redirect return unless enterprise_slug - @session[:shopfront_redirect] = '/' + enterprise_slug + '/shop?embedded_shopfront=true' + @session[:shopfront_redirect] = "/#{enterprise_slug}/shop?embedded_shopfront=true" end def enterprise_slug diff --git a/lib/spree/api/controller_setup.rb b/lib/spree/api/controller_setup.rb index 010ce77b1e..dcc49e15f9 100644 --- a/lib/spree/api/controller_setup.rb +++ b/lib/spree/api/controller_setup.rb @@ -22,7 +22,7 @@ module Spree include CanCan::ControllerAdditions include Spree::Core::ControllerHelpers::Auth - prepend_view_path Rails.root + "app/views" + prepend_view_path "#{Rails.root}app/views" append_view_path File.expand_path("../../../app/views", File.dirname(__FILE__)) end end diff --git a/lib/spree/core/environment_extension.rb b/lib/spree/core/environment_extension.rb index 56d54517ea..78f8bf8c12 100644 --- a/lib/spree/core/environment_extension.rb +++ b/lib/spree/core/environment_extension.rb @@ -9,11 +9,11 @@ module Spree instance_variable_set "@#{name}", Set.new create_method( :"#{name}=" ) { |val| - instance_variable_set( "@" + name, val) + instance_variable_set( "@#{name}", val) } create_method(name.to_sym) do - instance_variable_get( "@" + name ) + instance_variable_get( "@#{name}" ) end end diff --git a/spec/models/spree/line_item_spec.rb b/spec/models/spree/line_item_spec.rb index ec596cec40..f68e2555d1 100644 --- a/spec/models/spree/line_item_spec.rb +++ b/spec/models/spree/line_item_spec.rb @@ -664,7 +664,7 @@ module Spree before { allow(li).to receive(:product) { p } } context "when full_name starts with the product name" do - before { allow(li).to receive(:full_name) { p.name + " - something" } } + before { allow(li).to receive(:full_name) { "#{p.name} - something" } } it "does not show the product name twice" do expect(li.product_and_full_name).to eq('product - something') diff --git a/spec/models/spree/product_spec.rb b/spec/models/spree/product_spec.rb index 993b1cb833..a19b853859 100644 --- a/spec/models/spree/product_spec.rb +++ b/spec/models/spree/product_spec.rb @@ -11,7 +11,7 @@ module Spree context '#duplicate' do it 'duplicates product' do clone = product.duplicate - expect(clone.name).to eq 'COPY OF ' + product.name + expect(clone.name).to eq "COPY OF #{product.name}" expect(clone.sku).to eq "" expect(clone.image).to eq product.image end diff --git a/spec/services/embedded_page_service_spec.rb b/spec/services/embedded_page_service_spec.rb index 6f201f625b..4ae9f91ba4 100644 --- a/spec/services/embedded_page_service_spec.rb +++ b/spec/services/embedded_page_service_spec.rb @@ -39,7 +39,7 @@ RSpec.describe EmbeddedPageService do expect(session[:embedded_shopfront]).to eq true expect(session[:embedding_domain]).to eq 'embedding-enterprise.com' expect(session[:shopfront_redirect]) - .to eq '/' + enterprise_slug + '/shop?embedded_shopfront=true' + .to eq "/#{enterprise_slug}/shop?embedded_shopfront=true" end it "publicly reports that embedded layout should be used" do @@ -58,7 +58,7 @@ RSpec.describe EmbeddedPageService do expect(session[:embedded_shopfront]).to eq true expect(session[:embedding_domain]).to eq 'embedding-enterprise.com' expect(session[:shopfront_redirect]) - .to eq '/' + enterprise_slug + '/shop?embedded_shopfront=true' + .to eq "/#{enterprise_slug}/shop?embedded_shopfront=true" end end diff --git a/spec/support/features/datepicker_helper.rb b/spec/support/features/datepicker_helper.rb index 3840670f54..ffcfd8ef81 100644 --- a/spec/support/features/datepicker_helper.rb +++ b/spec/support/features/datepicker_helper.rb @@ -54,7 +54,7 @@ module Features "select.flatpickr-monthDropdown-months").value.to_i + 1 year = find(".flatpickr-calendar.open .flatpickr-current-month " \ ".numInputWrapper .cur-year").value - month.to_s + " " + year.to_s + "#{month} #{year}" end def pick_datetime(calendar_selector, datetime_selector) diff --git a/spec/system/admin/products_spec.rb b/spec/system/admin/products_spec.rb index e75f4bf3dd..9b2c4b7af5 100644 --- a/spec/system/admin/products_spec.rb +++ b/spec/system/admin/products_spec.rb @@ -690,7 +690,7 @@ RSpec.describe ' end it "checks error when creating product image with unsupported format" do - unsupported_image_file_path = Rails.root + "README.md" + unsupported_image_file_path = "#{Rails.root}README.md" product = create(:simple_product, supplier: @supplier2) image = white_logo_file From e62bdf987dd7e8574f5d223877a183e7beeb2730 Mon Sep 17 00:00:00 2001 From: zanetagebka Date: Thu, 6 Jun 2024 10:00:51 +0200 Subject: [PATCH 265/319] Fix test --- spec/system/admin/products_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/system/admin/products_spec.rb b/spec/system/admin/products_spec.rb index 9b2c4b7af5..50340bcea0 100644 --- a/spec/system/admin/products_spec.rb +++ b/spec/system/admin/products_spec.rb @@ -690,7 +690,7 @@ RSpec.describe ' end it "checks error when creating product image with unsupported format" do - unsupported_image_file_path = "#{Rails.root}README.md" + unsupported_image_file_path = Rails.root.join("README.md").to_s product = create(:simple_product, supplier: @supplier2) image = white_logo_file From e06df7d658232d284a7a2e73be97837a8a8bed20 Mon Sep 17 00:00:00 2001 From: zanetagebka Date: Thu, 6 Jun 2024 10:06:45 +0200 Subject: [PATCH 266/319] - Refactor method to fix StringConcatenation cop --- app/services/products_renderer.rb | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/app/services/products_renderer.rb b/app/services/products_renderer.rb index d7296e9fa1..57608f849a 100644 --- a/app/services/products_renderer.rb +++ b/app/services/products_renderer.rb @@ -68,23 +68,26 @@ class ProductsRenderer end def products_order - if (distributor.preferred_shopfront_product_sorting_method == "by_producer") && - distributor.preferred_shopfront_producer_order.present? - distributor - .preferred_shopfront_producer_order - .split(",").map { |id| "spree_products.supplier_id=#{id} DESC" } - .join(", ") + ", spree_products.name ASC, spree_products.id ASC" + if distributor.preferred_shopfront_product_sorting_method == "by_producer" && + distributor.preferred_shopfront_producer_order.present? + order_by_producer = distributor + .preferred_shopfront_producer_order + .split(",").map { |id| "spree_products.supplier_id=#{id} DESC" } + .join(", ") + "#{order_by_producer}, spree_products.name ASC, spree_products.id ASC" elsif distributor.preferred_shopfront_product_sorting_method == "by_category" && - distributor.preferred_shopfront_taxon_order.present? - distributor - .preferred_shopfront_taxon_order - .split(",").map { |id| "first_variant.primary_taxon_id=#{id} DESC" } - .join(", ") + ", spree_products.name ASC, spree_products.id ASC" + distributor.preferred_shopfront_taxon_order.present? + order_by_category = distributor + .preferred_shopfront_taxon_order + .split(",").map { |id| "first_variant.primary_taxon_id=#{id} DESC" } + .join(", ") + "#{order_by_category}, spree_products.name ASC, spree_products.id ASC" else "spree_products.name ASC, spree_products.id" end end + def variants_for_shop @variants_for_shop ||= begin scoper = OpenFoodNetwork::ScopeVariantToHub.new(distributor) From a8f0ebc408df9448f3f34db7b739fb249a03bab2 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 11 Jun 2024 15:33:28 +1000 Subject: [PATCH 267/319] Update Rubocop todo list --- .rubocop_todo.yml | 90 ++++++++++++++++++++--------------------------- 1 file changed, 38 insertions(+), 52 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index fc721d94cc..0ec878e146 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,11 +1,40 @@ # This configuration was generated by # `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 1400 --no-auto-gen-timestamp` -# using RuboCop version 1.62.1. +# using RuboCop version 1.64.1. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. +# Offense count: 1 +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EmptyLineBetweenMethodDefs, EmptyLineBetweenClassDefs, EmptyLineBetweenModuleDefs, DefLikeMacros, AllowAdjacentOneLineDefs, NumberOfEmptyLines. +Layout/EmptyLineBetweenDefs: + Exclude: + - 'app/services/products_renderer.rb' + +# Offense count: 1 +# This cop supports safe autocorrection (--autocorrect). +Layout/EmptyLines: + Exclude: + - 'app/services/products_renderer.rb' + +# Offense count: 6 +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle, IndentationWidth. +# SupportedStyles: aligned, indented, indented_relative_to_receiver +Layout/MultilineMethodCallIndentation: + Exclude: + - 'app/services/products_renderer.rb' + +# Offense count: 2 +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle, IndentationWidth. +# SupportedStyles: aligned, indented +Layout/MultilineOperationIndentation: + Exclude: + - 'app/services/products_renderer.rb' + # Offense count: 16 # Configuration parameters: AllowComments, AllowEmptyLambdas. Lint/EmptyBlock: @@ -22,11 +51,10 @@ Lint/EmptyBlock: - 'spec/jobs/subscription_placement_job_spec.rb' - 'spec/models/product_import/entry_validator_spec.rb' -# Offense count: 6 +# Offense count: 4 # Configuration parameters: AllowComments. Lint/EmptyClass: Exclude: - - 'spec/controllers/spree/admin/base_controller_spec.rb' - 'spec/lib/reports/report_loader_spec.rb' # Offense count: 1 @@ -80,7 +108,7 @@ Lint/UselessMethodDefinition: Exclude: - 'app/models/spree/gateway.rb' -# Offense count: 26 +# Offense count: 24 # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max. Metrics/AbcSize: Exclude: @@ -102,7 +130,6 @@ Metrics/AbcSize: - 'lib/open_food_network/order_cycle_form_applicator.rb' - 'lib/open_food_network/order_cycle_permissions.rb' - 'lib/spree/core/controller_helpers/order.rb' - - 'lib/tasks/enterprises.rake' - 'spec/services/orders/checkout_restart_service_spec.rb' # Offense count: 9 @@ -123,7 +150,7 @@ Metrics/BlockNesting: Exclude: - 'app/models/spree/payment/processing.rb' -# Offense count: 46 +# Offense count: 47 # Configuration parameters: CountComments, Max, CountAsOne. Metrics/ClassLength: Exclude: @@ -175,7 +202,7 @@ Metrics/ClassLength: - 'lib/reporting/reports/enterprise_fee_summary/scope.rb' - 'lib/reporting/reports/xero_invoices/base.rb' -# Offense count: 34 +# Offense count: 32 # Configuration parameters: AllowedMethods, AllowedPatterns, Max. Metrics/CyclomaticComplexity: Exclude: @@ -185,7 +212,6 @@ Metrics/CyclomaticComplexity: - 'app/helpers/checkout_helper.rb' - 'app/helpers/order_cycles_helper.rb' - 'app/helpers/spree/admin/navigation_helper.rb' - - 'app/models/enterprise.rb' - 'app/models/enterprise_relationship.rb' - 'app/models/product_import/entry_validator.rb' - 'app/models/spree/ability.rb' @@ -206,7 +232,7 @@ Metrics/CyclomaticComplexity: - 'lib/spree/localized_number.rb' - 'spec/models/product_importer_spec.rb' -# Offense count: 25 +# Offense count: 24 # Configuration parameters: CountComments, Max, CountAsOne, AllowedMethods, AllowedPatterns. Metrics/MethodLength: Exclude: @@ -391,7 +417,6 @@ RSpecRails/HaveHttpStatus: - 'spec/controllers/user_registrations_controller_spec.rb' - 'spec/requests/admin/images_spec.rb' - 'spec/requests/api/routes_spec.rb' - - 'spec/requests/checkout/failed_checkout_spec.rb' - 'spec/requests/checkout/stripe_sca_spec.rb' - 'spec/requests/home_controller_spec.rb' - 'spec/requests/omniauth_callbacks_controller_spec.rb' @@ -407,7 +432,7 @@ RSpecRails/HttpStatus: - 'spec/controllers/spree/admin/products_controller_spec.rb' - 'spec/requests/api/orders_spec.rb' -# Offense count: 146 +# Offense count: 144 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: Inferences. RSpecRails/InferredSpecType: @@ -511,7 +536,6 @@ RSpecRails/InferredSpecType: - 'spec/helpers/navigation_helper_spec.rb' - 'spec/helpers/order_cycles_helper_spec.rb' - 'spec/helpers/serializer_helper_spec.rb' - - 'spec/helpers/shared_helper_spec.rb' - 'spec/helpers/shop_helper_spec.rb' - 'spec/helpers/spree/admin/base_helper_spec.rb' - 'spec/helpers/spree/admin/general_settings_helper_spec.rb' @@ -545,7 +569,6 @@ RSpecRails/InferredSpecType: - 'spec/requests/api/routes_spec.rb' - 'spec/requests/api/v1/customers_spec.rb' - 'spec/requests/api_docs_spec.rb' - - 'spec/requests/checkout/failed_checkout_spec.rb' - 'spec/requests/checkout/paypal_spec.rb' - 'spec/requests/checkout/routes_spec.rb' - 'spec/requests/checkout/stripe_sca_spec.rb' @@ -758,7 +781,7 @@ Style/CaseEquality: Exclude: - 'spec/models/spree/payment_spec.rb' -# Offense count: 25 +# Offense count: 23 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: EnforcedStyle. # SupportedStyles: nested, compact @@ -785,7 +808,6 @@ Style/ClassAndModuleChildren: - 'app/serializers/api/taxon_serializer.rb' - 'app/serializers/api/variant_serializer.rb' - 'lib/open_food_network/locking.rb' - - 'spec/controllers/spree/admin/base_controller_spec.rb' - 'spec/models/spree/payment_method_spec.rb' # Offense count: 1 @@ -838,12 +860,6 @@ Style/HashEachMethods: - 'spec/models/product_importer_spec.rb' - 'spec/support/cancan_helper.rb' -# Offense count: 1 -# Configuration parameters: MinBranchesCount. -Style/HashLikeCase: - Exclude: - - 'app/models/enterprise.rb' - # Offense count: 4 # This cop supports unsafe autocorrection (--autocorrect-all). Style/MapToHash: @@ -939,12 +955,6 @@ Style/RedundantInterpolation: - 'lib/tasks/karma.rake' - 'spec/base_spec_helper.rb' -# Offense count: 8 -# This cop supports safe autocorrection (--autocorrect). -Style/RedundantLineContinuation: - Exclude: - - 'lib/reporting/reports/enterprise_fee_summary/scope.rb' - # Offense count: 19 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: AllowedMethods, AllowedPatterns. @@ -987,34 +997,10 @@ Style/Send: - 'spec/services/variant_units/option_value_namer_spec.rb' - 'spec/support/localized_number_helper.rb' -# Offense count: 4 +# Offense count: 3 # This cop supports unsafe autocorrection (--autocorrect-all). Style/SlicingWithRange: Exclude: - 'app/helpers/spree/admin/navigation_helper.rb' - 'app/services/embedded_page_service.rb' - 'engines/order_management/app/services/order_management/subscriptions/validator.rb' - -# Offense count: 25 -# This cop supports unsafe autocorrection (--autocorrect-all). -# Configuration parameters: Mode. -Style/StringConcatenation: - Exclude: - - 'app/controllers/admin/stripe_connect_settings_controller.rb' - - 'app/helpers/enterprises_helper.rb' - - 'app/helpers/spree/admin/base_helper.rb' - - 'app/mailers/spree/user_mailer.rb' - - 'app/models/enterprise.rb' - - 'app/models/spree/credit_card.rb' - - 'app/models/spree/payment_method.rb' - - 'app/serializers/api/cached_enterprise_serializer.rb' - - 'app/serializers/api/enterprise_shopfront_list_serializer.rb' - - 'app/services/embedded_page_service.rb' - - 'app/services/products_renderer.rb' - - 'lib/spree/api/controller_setup.rb' - - 'lib/spree/core/environment_extension.rb' - - 'spec/models/spree/line_item_spec.rb' - - 'spec/models/spree/product_spec.rb' - - 'spec/services/embedded_page_service_spec.rb' - - 'spec/support/features/datepicker_helper.rb' - - 'spec/system/admin/products_spec.rb' From 942990612bccc8f23dc4f54b81095afebf6c10d2 Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Tue, 11 Jun 2024 22:29:12 +0200 Subject: [PATCH 268/319] Requested changes - refined the code and applied it to create method too - modified one request spec to work with turbo_stream - added 2 examples in system specs --- .../spree/admin/images_controller.rb | 27 +++++++----------- public/invalid_image.jpg | Bin 0 -> 3549705 bytes spec/requests/admin/images_spec.rb | 6 ++-- .../system/admin/products_v3/products_spec.rb | 23 ++++++++++++++- 4 files changed, 37 insertions(+), 19 deletions(-) create mode 100755 public/invalid_image.jpg diff --git a/app/controllers/spree/admin/images_controller.rb b/app/controllers/spree/admin/images_controller.rb index 39b51149ba..ee11279af4 100644 --- a/app/controllers/spree/admin/images_controller.rb +++ b/app/controllers/spree/admin/images_controller.rb @@ -35,33 +35,28 @@ module Spree @object.attributes = permitted_resource_params - if @object.save - flash[:success] = flash_message_for(@object, :successfully_created) - redirect_to location_after_save - else - respond_with(@object) + @object.save! + flash[:success] = flash_message_for(@object, :successfully_created) + + redirect_to location_after_save + rescue ActiveRecord::RecordInvalid => e + @errors = e.record.errors.map(&:full_message) + respond_to do |format| + format.turbo_stream { render :edit } end - rescue ActiveStorage::IntegrityError - @object.errors.add :attachment, :integrity_error - respond_with(@object) end def update @url_filters = ::ProductFilters.new.extract(request.query_parameters) set_viewable - if @object.update!(permitted_resource_params) - flash[:success] = flash_message_for(@object, :successfully_updated) + @object.update!(permitted_resource_params) + flash[:success] = flash_message_for(@object, :successfully_updated) - respond_with do |format| - format.html { redirect_to location_after_save } - format.turbo_stream - end - end + redirect_to location_after_save rescue ActiveRecord::RecordInvalid => e @errors = e.record.errors.map(&:full_message) respond_with do |format| - format.html { respond_with(@object) } format.turbo_stream { render :edit } end end diff --git a/public/invalid_image.jpg b/public/invalid_image.jpg new file mode 100755 index 0000000000000000000000000000000000000000..1af492828fc76729bfa3d26e6648d94da5a2fb9e GIT binary patch literal 3549705 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

oQ@I0y5h=v>V^F>Y<%G39_6ODl4tA-$W@tU(vb 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

-M;!;RT9zwEj&OXtL?S;mRb$J^f^(lk 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̙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 Rr6i$Qiio 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

)+};I?ExV(gpF3($0;=~^Fg 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

Mp5Z*CR)j$yyit+|#GizG&K3NcgI} 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∈-)V&g!^fc(_$#9% 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 `u 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 z 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


{#Ay0DH9YE*&^{IjY z7i&07V0Opn{&=j{l@)<9yd{nRAanGqk*N@?2^e5waXb(6iX3_l`dH^LE_}I8!p8@J zo`SS3E*;__PzECeXM^<5<5;?yY?Nh@u-OA0IQ9H$&6UJJNBhoBI0wJDs3p5AvvsiX zi8vWu&4bdg;hkRM<`r3#teZC!I3ob?-j&7p=i(NT;LA9!bzM%{%M3wRBMaM*dx8%Y zZ^Irp)4WOK$)-#$W0?eq>Ht>+WMGce7`Jnz)KR1{AzXmj$>k!2)4VFml1cThqTW?#)f*%*Amjmz`ijKTch6?NXAV#XInGaiIas?jGXtc$$#6i7E5*1ZXt?K^jQi5r>00GH+IPB z=qvTBQw$(JQxzkC#GVH|Pv>8jf4AMBZ9dw`V_9TdAu5>P{cb_~x#J@^p-Hw&cXmhN zJ>#ofGx=!8xdR`aK%_VDE_vfUew8Kki}s08R0zY6GH^#d55F}A?S(Q~axii@`qkL8 zW(A3@=Si5y8zTZi#s)iA^n3d<%_Lq4@GDJhu-(C=MQqb{ya%JO=m=7y@~`I}*urgQ z^YYPzEWl?VW19YeKV&Gi4OhT^7Sv-G3#U(NuWuuh`^CV(9-J>U6pzr$BP6?+07EVV z4&K#|s%ZM}FLn>1}rf!dl2Be8}w~+PriF_=g{zelOgkEYBA7ZLCIDjEeoR{l9dwbeL69 zW0>2aEU0$6l{g@O3FEDPC;3XwvaT9J04%M?*EA<{REq5%LIQ!`J?pFR(q~xETuKp^ z_BKLB>>T=6I`IOmfRIn2=C<@Kt@WIY8wlWozitjke$>W)OntAg- zM~kO3QDHjgN7h=$l|miEK}xS z#Ew`4$Km);227I(%H@j&U^CXH*pm&RS%5g?ed=w@L^vn{U}S>Eh~!Wlw)RoN;E+kj zaX=aO3FU-y^8v;&+v!=l&5~c+<#8LR7&}NUkx8v;Z>L+!dP^vXufY!- z*=rE|O7U#I5!aBaT8QWQWKbI>T#O;%Pb6nO>%}~A;e8iH)vsdEwK(-{Ha9CA(Z1zy z4^V6O58{XH2jCBgZQ>a;Nwkdy>gMCmxQhK#W5jt+h5M0`)eoPxPM2{kAsfGWGPdFQ2EyVGy&?ki-K{2$F+D8qwK2{hdf4p}dee3!w@j<+T&F8ja zW{nG|RXI2u@$1EZIv=(z)wI4Vztikyx|l~Gc4<_m70LNX>71$K+NH+Ea+BEjwn7+| zkCn$`)|MNMt&NY2oO4ya=-LUv7&#)Ri4foe^OMP^9n7TckFNg!W2voE_J;6f-1ho} zwzkkoG`>`rE;ptV+>_s+>tE8ojUAKec2^LUjpa@617|Q2e(62?SMvq?CF)OM@$bXy z=E$Y2W(rku2`r5=L88aIY-ZDuzMC6pwWi_0YK10{LqinkOcsi^r__L3yp z4?=k3wPEU*nCImzMgbpAwXbkgM9miShQT0UAO5{yT}!@hB-}^?8R^eT%2DWCcRwiq z0N|tgdS2=JaE!5v3pnJNi8&k=JP&ZcnXkl|#F;G1vvDAd@Hy+6{oVfnf{Z~leio8l zCe~ZQE}sk%OB)4fmwRp})Qq3NSK(dq6_P|HWD0N!{{R=b{LNzFZH=|Kw$i2mZNT*4 z@N06#lHT&p?D>u%kVv6J95CoW9Fv@J-npd8bZl{qXQglHSC=+T9n?26*+~b|aCh%6DZFhXEVQJ>KZWIZ-7=B$Z{`)E=h4l+Omozh3a;vnKVwfFW`)tj-jF=vDnx zd?B9UJOkiTWr|C8(<4y9hTuUt4UUJCTSeU(L1}Z;u22%pdmM6l^HbZi%dm{&j0|y5 z-LMgq2&I7Je_E++b1E=9zF;tY@kcT&gT(0aS+)p}D`X5{5$#`*f49bor(9^dRoiK; zHQ+KC7%&XDBM+SY2hzV_Z`98bJDba8Cm?dCuk^3TKil@=8+|Ebic&U4SfM8(Oc9^u zoN-0&QkAwp5T!&e?HFCmcN`q!pZ>i|9_8RifIH)-9<=AiSTFAgIpA=4^`@XX$zr7P zJ*tT>#AI0IxbofI5RjmJ&BsCSU(pxrZyoNF@R!0CF~IOJNahj94)CD@;Qcxudj5NK z_-^JF(Ae9x)x%yu%r^xaM2no0+ZoM&Q2zk4&xP-_p8$A$ottEqxn{s*k0+E2I`rND z00OE}xE_1^S=s*pZ+thN+BnzFELvE?0fjwTSoQi>^J(H3KEIV# zSR_9%B%uM6ft-wg_384XTe-*tb_N*Bqm6A^{ayc9VIv;;(v0-y_6wa3uM~6bCOAnNRo}cHM$?K>oChT8pSsB1P z+0gDd1cC3L!nyAiSj^f*-_IlyDwbD>f9;Aio!hW_Ru zZ5)>onPFzy-~*p=km{v}J7yM}99Xbr@&+lTWINLK@AL&~rts36zo zXD*GTjeZNjFIiv>-Dc3 zjGfp*at=u+r#0vv2EJV{#Xc6+o*AXPv(zD;6CAr3HhuUY=NLY;!8`7MS3U}g^4mhw z68haO?@hF3MF8bn7$Ln6AFX$!unnBH2dV4p?OtQ>k5XN4!`2$J-9vZwt5uQ8IVL#| zW1q+HHR@X!7Q=y_NCT-JqLX$mF3huIDoR+mBLHBN&OIuziG-}NDqtM&xIdL7Un2%W zg9jWAwV;g*q`8<#NCYZ_$G^Wy#k-oRCPx~OoA5UdNhhJrW?crC_!UM8+7Bb&HMg=Y zk{l6(kO=KqtvX9Tm*%7Zf*7#KBe~+Rle-!C+y4Ls9)?@Xy&O#{UduL~WfJ*eU0GRh ztOpt3jQR!juf{u;{o|HGue*>~anDRw?qBWsVW*8cJKsC)5;RR4ODthkM(k}<=yspV zzYNrFk(UvYK{*GfJt@O;DWpY$#c)9N1Go9bbsiDATMrg^Q&gQ=NNqJsdxE{j7!BO_ z8LoO*f}FN`ay>uJYW9?ywJjWtss;7C79??rSAp(&el@Z=TC+c_pM}>+tN3QySlp{M zHO$w#X;HF{&+ua-4f43_`#~jb7^yT1)00F zNZKY4Z!Wl(a6frK`f_XY)mLVAs<0rC2R*%O_DlW>E#YemeL{0{)I()F3Fc$&qtsf_i{*Gwoid;rRZ|JdSRRvKGh;LD}pp^B49U{h{Ib zo#Fog4R{PorCfNM!^sAdaS>lCNsDbMDN=C3i-Wj#KA@WYOoXMaEeV5OUYeZZ)ay0M`oibz&FhoBz4i1+J6QmD_EN0vZP z2};(TcdvRQl#Spu^@gp_p6KU!rc$V>xkomRtm)A@K_!yXeLO;Sg>vg z7#vfsK{Gyg0uD}U1?TSozU1PyCzTz)gf*d|_}9St>}n&H+fqg{lqYJp%EJSb!yFG< z{;s?T(`r5%@a6r?mIg_5=%o!5WkyQ<(m%XApIZJ&t#t&_&912Jg|fMd?-<>?%W&Ao zalo(Y+u&ZSYpZxCO4KawW12?O?NVi#Pb9_;R34oN`7{)JTvC;TGDx9-z#(u4Bd6tA z_XVd}HkBw3Ktb*4R$mxgpd<{Ey}!>jM5q%PQ5hR(+V1UFjz^ZkG|S3d>5 z8d-gU2q#@RBAs6h?SP z^#1_sSH>T;9-STE!`*dcf!=jwm=Pfu10z4~=Ny0a>+J=Rb_HNb+z1%${VTvfXzO_H z{1vM#7BR4r&28Ur-jMFj2VhPp8T`KZ=H17LwTEPhhGvFX~p_4sY15)V8N(Kfe``hq#8m;^Z{}r{k75Y`4yPHf#BDYt3;oQtKrLUf zfACGsRvQKQm8Z_~i*~a>vq;Jjour6_Ui-K__xw##ld&i4HJf5G50<|!0+FA>tb)K7 z#@=@j4s-q$m15}D(QS5dfB^&yel@8JB89(x7Qvtt`9nftZYBW7GWR zgpej<+_>5ZAaZ{iv*fW{k-!8JMrGUphbLme+^)!onGYQxC zst?P_1LeR!=LWjHHJHFo@Gx*m9^I>-xU^XnWywd~k%sT?D@xI3j?s*grr^L3qRmfWU$>Mt=iTCzxyla;qPg8RT^T0PEI_oA9n%8Tp9=AcI+VaGBa5pLKEa zlls-EUDyaDf;o_aT$UhU4{mGV587AY{-dq@WAHuy0E29wR`7U?TxzMP*s1$9$UL&h zIbcTJqye>fpr7W91=d5s4VXV<-D4N7nauxD;rmkUdNx88CC_e zjz{HIOq$r{z8qMcKf~4*w=o#+6cYQ80y20N>E3h9PU!Z97zD8deii4^YZ^VY@xczM z3tbl|V~w&2&-bgTw>PARk_lHai2y7!w>@#_YLg?H=G4SEh1HXI7~pa}s+Qm!r^>%K z0B1dE{%`K~wh(73NayM*l#YDmWkSe%k&nW(x=P`DyE5FU-@?tn%8+{Yz@*)9T>*HS zFfaxVNBQQPA(Q1rP^6KAlh66ZAa`Mdjln?!cO6e3p#14crj19-AwrJMgq#xD=syp_ ztN`0f6~SB;9P`t^;Z@WXVE9r2$pgMQ=~s-KzyU#A<&++kkO;d9D=*0koG8XHPoVUy z>xKeEQj5vRBz|J1l2YxnbgB;_SwI8d6zLdB@yH(-01gIMtp;)$yN*y6c)-R<>*!DE zNdm?te>s&=P8SELBm3PgLUL$ zso6S4K*;0~*R5zths=UTh!)8TGoC7)+^Dh!+Ui393Z6TE_3HTvEE~~s;GNuL1N8os z0azAS9B)y^10Fxer2p%2dL(zNOt7L$Agoeqz|oDyYm7{bGQ&d2e0|-O6UqF z609;KJ-O)MVCUYSk@vO@q!lbjUf4OR(X&9Rfg6Gd1m`sU&c#fTvTYqy=N`DGLw028 z^C6fj^4I_lm>o?$B#~qrh*CxYz~E#50Iq3xF@y5%EyfS@sM%j~mQuq!j1DT3wxl^W zS@R?gW8RaE#j?ZhjC9RQb14Y{&ho^3pzu3qHA#5oVKOP;fC&by%?wVFFdJA5k_q{F z{{ZV!a&6qDKILSMp_L?Da&QI*OnUw%rnx1eP340(A&JQPBu9vFO~LEs!Pbt^ho^@E!5V8Q_|!J;R1wx!M3ZJ&iQFvN<&x;#CK54qpKZoZ#&oAJVB} zXF^U!&_bT%;B>1n&AFZ2NZD{nIpdDQ@Taf_B}kH3NNkb^>q^YgU#QtggmUKn8W)A>|VKgv!?1%L~Y$G&|j44O!{?R3dPG64E_ zshAHaFej0cIv&6Ns$^l=7i%^N$1BIymO#ch$zlT_ZW{poXfuJ7ou&5E$5CZMxft&(%uhdez`D21lI2lrL*V=(lcT<&_M9gi&#lHxZGae_GMB262u8^#>iZ)A`ns+-tE{%n`ed zxqgIWIsX7TH0aAqk(@VBNELExa~TIc3EIP`>&|MKER3v!%wfq4+>gSvHA>3GR+>~$ zu0bVv!27&<)Fx2J%iambRIvNr#}#9GNa1cB10DjLo_Y56rWkk|B3A{8B}Z}G){%G7 zj952^1xDZw3E<#;57w-Sm60VRf~10R)Pw&3)~2a+Uz#=C02vH_G4I7ynfJ7b5=Mvy z;)*a1eSP_@1+B|DPdOAkeR=u6&MIAjh)*&yKsYQu@Ty2cj=ce8IXrRy0P3cxjz&Aj zngGwtdLL>{U07uDiDW1@p>-G}9-NAeotzvq9iyu^T3<2G$%G0x029;vnu$uVQVfyc zoRXyA1OEWlu6C|mQ+kuAO|dHsbq8rbtv)#8jyB*fR-u_NCzO)4Gs@O8svgW>&IbN%SO$E z7)IJ~F^v1?^Qar=3=|w^I1AVD{3$hcV<*0Z8(b#SxMYkH#CPe%S-0O4u2?i+ACxKN z{{WoTQ*#ULWRxgloOc*Ke_GIjM8csyS;)s61MT@%e6IFmTihF9X35ArXO2Fiqfm1p z$QS^E2UCo4DIREv+>Wv#`L_elzX^$!z3` zTQrJA6I;dt5DK?mJ%uuRSuval&<4R#v<`X?%BQwsrDMy2P>@suo;d{3xk@hgV+Fc7 z6BrClf=N?TB96#yJ#@vP+X8O9o37YB2O z$;WTft~cD#E9^R5yPIV3?kY$C4xWeesO6jmlMFZZ0|bNqaaUs*-c@!1(SRB1JAFTu z3l>0D3-v3>_x^QK?r9ZaAyz|%J5zw500=w+53l%C^2B9i+DFTWRwvV%uMQVd!+~1C>0;D+G3V_7G0ZqQ z1xoTgjaPWyF!CMPCnT^09Q|tRv?%!BfC*I~5%1IRs&j9B?U`fCa6!&7+z-R~)r}=< z6EvP?!Y135BP9FhKd zDP)E)@#WG->=bpu>P1a}kxWd{w%|xOV~p-U?;3IXJhPBT*& zo^^LKP6thcj@^EhT3F=;ens5FmfgyM_;u#1nVHJn3c#|JF(P0BIAU;m;rUjXk?zO?B!>M!JXL(NIP&Igs(OHaVe3*X+xQr4CejBajQ15~MKYZ6!*RMc zGONA*7{)mpaslU`tw3=SfO74)Gd6H~ z_0OkDQfcg5Wo;QeTRw6WI3OH`$LK!_jI;Te$=t^*#BgvrlTa|2#^HDokf%6it@*@4vFvOo;{{V$a(Z@BZ(x^iG*(tHU$6@-=@R*p;P4A~117D? zA|Rk(tivQQ>(~5iRF^<8gKbasO}S1%BdPwB;0n0hSh)iPbBvC-{A$Fp#(*lZWh_A| zcn1fPKPs;j?;8RGYHu;-QOArAd)v0#f#_1}> zA`^y2!3;6T$9}br@kWY@n}7r`A;H_v{{X7A0cVrVTWfhGQH;Cu&s+>*rRYTVElVVk zD)NfKv4Bre+c-X$sO_;Ce=tP(F6S&sB!F?(+;*gCSRXN>w?rHPjF5eg_4lYic@k+A zl@8sijCfwz2k@yf2&Q#a^DQmnn4v16^S9~x)R99Nk9@;&0vM@3c#edT^{lCPd9W7& zO5_cs9p3phvkby$0c9=}-~xJkbQPT5ngGutJTWo8!rQW3wmyeG-MUi>winGt4l%R= zo;`AV_xg%s9nx_V0iMKr@;^G7WRaJ5By9i!2OsA(jH7c{M%uC1i{vawAYidh8=k#> zwK91^G-jJ*XK+;{a&ex02Njnc+GSVGDUXzpcn8y(lw1ihy`#x&9G-{N@lndw#uIu~Enyjz>>k)p1rvRU~8bvJ^#Ng?8^R_jw$g{eN0$ibBtb$R$bS@D2w!&1ps; zV4zAkUYO|LT4l=>COC5&Z8>0bo-u-dBUED5%GQq%Z{iF-Vlpy0&mOg;w`Nz7R!!^~ zak+DYjMhqzD3GbZIT_C*>sIY03!KR*Qb8&Q41c|!UX%?N#N`I*z1S#+M)M3(1*2->4LJ4VN+q>AF zp1mjm>aeMi%$O{}@VC zv9O$BPIL99Ca$a^t;)QX)3k&u1(SjMwiw6@k;ey`MMxw8B#Iyvuv7w19r9|Mk2J{c z{$XGgfPPR3=a0kIpA&>;Z!$gxL1hOYhvP`fNf)JY6o3ZulyJmnoRib@s3B-z-y<2^ zDB3^_`M~TjPimNLke$Xt0NMcn?G*|}_V)#?CU~8chr?s91Y_J)#ih7Or?Dli%rk!S zHaKyB(jWwmxH$vXuBX}j!{#J11{o?bj8z#W2qQrA{qPSX06js%zLT1aNK@t@{G;y^ zo;z_`b0KszSyZEC6+t-|;E$ze%F1$)fwT~EdY(Auv}CcrlG@th-pb|DWnlpd!CZmK z2OQ&^fz4$}57~fa0bWKMw<-I}$MVfF6C)X8bvxBVZU=EYdjA0Rsk&V9n+RpO5v9pR z-iX}}+!2%14DfiO8Texag;X(6%aB;}o)1C%>IlT=1Ljp2Iqp9?ja(E0 zconcfBP5fK;D1V7r5Cm}u#e6X62t-&XD6;lJqJ(1wKsf<0* zLI!=#Msd%%so=OSL}>(@cISBm2mI!%kh*NLN|ubO4WW4ib@$27twOORsVYpUaxher z^B-aO3X!+Q<Cbd>^5RJT| z#h3xZ9P$k^NNu+OsIh>4>M_auF;^yFvFvP;06@TgyjDEZEJ`i`aH_#r5P3a-t>Yeu z=9^8L32_)0$y^+O5A~`$Sxp zBXcNFydHTSDk&mh3~tPGjGTj>J5)~vpOv;tJ6nb*V0OVi_=wY!j6jDsM803SykJqha9Ue%ejclzUvpEZa z76|7YlUv_oy|J{lf^6O1M4={fGO{)XN|8|QeGe%stw`=xV8HpiW888MGRLL|w>9Vf zAdzHGB0`ap!GR5&;QD?Q+-ePL_Bfo$9j(!Ps_aqUvFlzZ;utLVN?>cNi>Fduoyk6> zLG<8s^r_TsT=7p6-TB&QSj|wdJ18V!k zcN%4@3l%r0&WGo0n3I52Kz=ggd750nS@>OVnMFCvrYUouz-IR!w-=e=g+xMP4y<0e2dzeAeXsHWMy z4x=oNvPPE=8<0s=@XoQ6rU={$3=O-EO z-lhn<*n$fxoB~FBV~WYVjv;jdxVKiylEfD3x$U1*L>j(=QAb~=!7atijVi+|I}wu% zK@F3;{{Usj<6X_WEIT4aiRE$tP3kgn_2@J8t}8~=E@O4J0d7^73aUuhHjY8`>G{{I zcza6K^*PrNAKi_@Mp96Mqab|_e@f7`W7Iq);po;l)?X?FknSN=k1VknZn)1%y< znvL$IYjHA?rbGUT@_D<;UMrSsyW6i9VQy`ILgkv~jX0zwPP{k*ZlRZ zBCLz$M;{c^+n<(f5HLcx;A7jbde*kRKqE5mML#w|o@*^E?OE*7w(G zc?5)(mI;#^T=H9vgpkLMIje(P_NdLmM#M+vDua?r@N-Qrt^iP~8HqXP9r^nI09r1VjNUJ*C$=ihv9py>#FNGk zrEU4vv4o9LP^iFiPdVcUHOsn4GE!2gM#cp)F`l1FxEsrfRd7CBF(;wNPtu3j-YVOj z2b;WYh%N!+Jx3yl;tJ+RDy+-{6V5>Q{A(dhgmQ~KfPA~T$8Lx5tvD4`SrQ~tSQf#- z&-Ce8+V4R$x|X&VCk&&5fH>cePs{bJnbuvW02aw4la1YYKb2{14BYQk-;e<#{EDe8 zD=AQ$)s$rUgtmWPD3W(GPQ$GNd1&MgM=H&nf1FZY%wlz72;>4+k}^gHKPqy=z zy#_$(oYa>YVnK2^>Z{SX_3cn5?q&Uz85N3?mdH{$9Dgj+WU(j-GDzE7CjcMJcda1= z@AH@1!wtyfaoapqTd1b{#iVQ!a9DBvJtz^HyPpBo$lZ__W4~ePR>tL)B@u=UcLG%H z>OU@~sK(K=5m_R^5)HYjZEzzReU2qlHpiAb00D>p?HE6U~Vgl{#`1 zdUpP`y9}tvfe8*c9YN2bsy9~X*x0D*1`gwbK7+qnf+-|`u$#+8B!CIv0(*+xB(@q! zY;I1m{hf=kQZPf78STb1TF^Gr>E?4XP?o(Ep_zZ9!7NODd_+=1AU{vB$q#kgWw zNm52WWBOJyYh)=aqb@m5_qQBm5Ir$f-d{6oISh01`+uC(hKbaju2h~0JcGxt;Z)vD zrPq9i3PTdSwsFttQesO3xNXn-w_$?0>Cdm=D%8--;ma&*fJtrH?fm-wRi22ixUe7$ zHz0C*RPQ1CGcw0G0OKp% zMrA28U2qm2;*I6SXu7mdvpmD83ZGUrmWmK%uS z@=CKQcnJjUE<0qNoL9SBuyuoclHd+^DCehfQ9Z?b7fU3F0NjcXT=n-RqG^$?t!$ok zUp8H(y*SS&py+zyoh7_+1(YJ>0y)pi&1Qvo=l=j*1_vMm$oC(ea#ibMl}3!cVH_;W z7B((MatJ>!LF?34l${W zq256RQOOL_^mEB&P2pEE}TpM(b^oUvb(1Bk}a+ zze&GiAB;MjejqeGi?h2O~-Iby@Rg;2jn$mw62Za{V0AVoOI&39f9@lD5r z?xVZ6xwwh~;n|{?t0^b19ldMOgq5`<{>MHZ_?iuH`FdudCH{_Zw$sQq8CY?Er;*!= z^*G}*$YWqg1d?&aK?AAj{{Ysn#vj=y_MOr-Z4bjx>)O;-o+r4ylGhMK(#Irf2bSfI zF^~>;;Qqg?nm3Fs^=&5GS+qC5VV@yom3HoN!39A*`g>M$*bhsJ5#={23YNl^&rEvK zeUdPvY>ZU(EP9^Y`c_4)`pF7O=Wp}?f(K56zkkZKzS(TiWW1Zf8&rTd9RC3NtCo9M zO(wN0n{9!!IHqT;DdiIo-cK4OY29J z2_X}KnGt{?&(@oZO6H15qqmv7=v^hX`!HZ|ck;iN;a@6#&=9(5mN431DoE09Wsv~g zkKqTut$jCm%dm)v4U7WEr`Enk{h?;Rxza5jJGV%!mCdwUl|-^D1~@*sVeMH-Hi|!; z{{Y(R#?w&oj+v-QJZ(LoxP~>15bW|0N#l%Re_HsseVc7GsZE+deMfL zIp(do`+wlL8a*a5W|@w_Lb8vPW1u6obWJm%k&7|l0tbG*DKu*&wbMf`p>2Nb+4&Xl z209(Uewh_I+X*)o*@Xa~o1y$`lCth(n+Fn<^vAm5p!5`VA z1%qHN21y6hW2buiY@m)gV_z{_Zv^L&j^5Sqm+d(WLrc4OFFwd)wUQ#TuJBox?*Kc1 z+4SPP+J=#RPv*DdwZ@-&@dr@UbX`rawCUlEqjx1SjDj|D0UT%RUNgU*NF;JHbDH#j zix65{c&6$b8{4g3+9_p+?Gna{(l+dp%76tqJu&>N&LxQ?8G|zp+h}(Aa2KccRwbTe#kA#zTZgIZ)tdYn4^t z`uo@7UV&-=@`B2*BL&{9L0p_?J-hx@`>p#Ecy`&m6XC?MmIyToX4!JGNbJahHO0fX z-70W#kDKYmdQsa$H!GjBniaes*|1F(R4CdU^=>~-)sf?juZJ!!9`Z;+;S{S4*gl@z z3cH}XjV9J2UR6X;9!?7!4oDnU50CGX4+~wfvySR=f+cXkv}M1ERCNQNVO;eaxGi0e z&#iakZSRLZAZofaml~v2@y7%oYTxoMK{?txd-pZ>55kWV+-vrhExcWBhcA#f=V-~n zufxCEpT-xuE~Td3_)f+vd$||Nzq+1XuFRZ(gSh1N^!Kl?e`T+aI;V&{JK>eRySIZ? zTXhQ-2K7OV?qR|2)7r8%QPWfP$izdmfPA2C8?(Xn{VOj~wrj0E^2%jdEpAk-kur^~ z^&Q8xRPgq*{iml{YD&yuxQ%8C%0c931Xo7NvM$vClbqu`{RiMFG@7tUbv`rrrTZy- zD)@t?n-k&KG)+;Mr1z0RvI+7!uq0rN@J4=>`5Ezx{t3aWcvACI)^uxKV^P!0hB8nC zZsA8R2UX()_OIyR+s5&=xr`wvC4uQ#H$D@zlM|$oEQMJcdInZfxGKtef(Zm3wG&-T z`CaUP6P`Bsd#d;=Q<*O9N@;Qo+RA{FAQ|10+ZZ2#73WJ7ZM@)yQ?!k|{x$t7{@Gu% z_LZqh+TN9IqRjxd-95FmK1$i)u*w5{?DE(hbBu9c&qu^x3CrN`6<=xTYdy4PLeZm) zY>b?#=hS4j<^{5SJU4ECAV)F_<9mz6PuN2!y`K}2yzFe z0Au)9&9*A?+^ZPFWNjUYIIpt*0A!5|RKEC^YBgI(tu*G6A#7wLY3Jr(Zv4 z2!)()M=DMQk+_SX1csxG9~ zmvUR&-f3|Mox#q)-P`-i!w$R=UzAsnMQJld6sqXBJAo%Zt#dYz`V&B>0JBFU^cfiM zT~CGY^_?eJhVsJp?#)tYi%Sy~bd6n1fe7RmP|2R4HbyaAowTvChCerPfsAukVALe|NGvd7m!rE-jaisXD<{7N+n-W{c83=b|{NS8m z^&r>m2Z#Jg{i~;1PGT}#$mA3Y${YcP9lyfAh|LSfI?j`I70hn1POhvbj#fuPq!2+K zmQmgia*vtzRV~iYh`d8<-g1_LTzq2=vv}+r$68OJW@c#gcq(Wzk zP@7bSzzhgotVeFO=z9ME?UnmIT3Xs)X+IS-U0TV(MU{wMtU9O6!z?gzDvGyb?9r%O z4Z*OA4&K0d=1xjJcA(ob@+BBRG1#a=#Qr|{`tLHri+j-}#j8zsN00fhs zg0q?gwYxu=58EE{*>$#ShJqGrwuKa<4>h*qj^5_J8b(r71y$oLNH{h3Pwjq}cRnQ4 zA$TIQf;*tm5g?RYF2T9UKXtbjrt7l?k9#9SfMZFF2ZuacIY|BCcPR9&Q0icv720s$G$ zK==CBu36ozp@C5z(l|Z%{{ZXPn0!8-*|a!qyvZMF01~*s9^JcFdIX7ptCb@mfb0Ho zMDAxPbTtje$#M(r0Paw|c&B6`BDSv4}rRljb-CKBHvcIFe52jSCTb&o?MJ0gZ0l&KsEg(dg!3LNL2FDczIG+BdEab z^{p%`hH;fpag33g{2lO@{1q=i&`LLpz8^_{5HA`}XDo!GV?R7>*(ayW26K+w*Sl$7 z@KnEmn#@)WWq0CzCh?;ZT-skEBE;N}l#|PFIHWr@x%$XpF}ZQKX>H6{{qM`@XlRO~ zGPGd}Zr;T6?VrNF7w~ud6dU$=)vaw~*Suq>TIyG4%Zga-$Cqm3qR2CnxXH-J(!HwB z_Ko;kb>Zu4+aDWvXIZ?uBWy5E-gHNHKHb6&SWS0B0WcS}51eM+&mctJJX^Rm)l9xnkDW5y%b?%g`FIfHpD! zW5EP;qD?IgR5aA9aUe0LK)`(1Is9vq)g@RhrIFMaKrGlJk@Wm)u9?vZA`*Kx)+0Y! z=5>j5^{|p8graO9qd4k)`*yBrzJ;HQU$+Ab)z+5KK@Ho2sPi@&D2pA-lh7P5^RL65 zTmydPrbmx)DYSg7GuFRrzi#)2L*lly4qh?kBw&JL8!*gV{o&ICr&|0()Ll%7@yK2v za2Wpp5becgw*pq5Zq)%8U}xnfy$`?>v|8Sr%WN7Jlq2AE$sBukuPpNv>~+Vf0QIjy z@Qm!brjZzz$(62S2tXu~SPtJ>=vouZkLf@5We=uWX%MC$MYV=jRbW(tfPx6)kVorZ zq>w0RqRQ^fYUB(aqdk8b{L}rJ?XJy+l(SgNZ*6aF9B%Tk%&)Y3#C|8+7_ZT-K6_LO zvC3Eol}hI!a4S`7XiJiM4c9DIb&Z@B3OL6&>0CCtF{9rYqDd8CcEMnza5)_Edhy=9 zB3Z#w!=V@h*1WgJH@5L}nory-MgRu@ISg~p z`R`wwR~nU_)M~p%NXX|o@9pVdp-gwVThQ?V^{LGR-7l7;zHk0Ugbnjjc z0~aiz7@i4Q`iJ&-OQrD^hG4mt+!^sQqJ}SqQdAzmjEWR{lz&UVv+lord7x7MoU+|#Pzj7r}r7(8>14t=ZU4}y0sEu8NyoxQBFs>T)|!B>C_ z0DGKv;=Yt@NUGcNbC3SDTTf#-G~Lngx9wr@ipR!&4!Mvk$*3fSvm0$`Q*Tet)2?gz zr1+=c>zxn96Qh@&-e++FHM7R&Xy+>6AAW<|wSQ$=#+hrX=~uRw5k)FG>~W9}QGyR_ zabJW#w+HO}`bfIg^jkRNbdjf9k^}JA5-V*yk?wP2Z;U?YQJaky|u2l;TCm{H(<{-qUR-;XYP^* zPJ+Gyc6B9CKbA+#Na@W;t1N_J(;YL8Mt{kz;_U8CuI_(S{{RR70Bf&>9}_H=?!(94 z9keeG+LR-?h-Bl-1Cpd1j(;;>Sm_=vvb?p1?$=b(btGvO6x&>*vD9*SuSvG}xAAvK^5D_FA?nr^D4twvYKo5##~WDs zeJe#JZA8~&`yFjpWyy-?WGF@ihD9Sd`q$6?IsKwM6X5YInx~4i+eAa1uk)#hHX9*( z`VRcp^4gyszBjDKNBEoKTf`BV);Vr+yU53w!~4UoI(t_ebK)--c!=qc_=m-szPWJ% z6j>d|%t^^+$8MZw0~KOFW4~zM+si1fFZr zKV*FmQt^(SJYBBYTUtYLb1X1h7a~~U+;AO81a{4SR({XF2X$W`c-q13hTB_c+V4=F z+7(oh3x4i3{_$=}KG^SH(Wk*LhuTkt{5xUg+c(;oi%9Y=45yAyxX1FK52o~;HEk>{ zt*ygE7BwM3;QXVE*FUX6HtE1U?WzOAsa{QVl6jCjmyJdgs`2vnJdggpe?NDtGdncF*6cA7<#C1w zo+~BhT7{j;X%ng(g8Xt=`w#G~3quoga?WA|6R|fC2XMXd*A+;!vTbg9jAxVYSM3rq zT_*%Zu##7*@z*`ORl%#4e@p)WvIN$@@PuiJ1kWsvBVcBaYk&s~!_@BNV~YF9!6*~} ziWfNq62$f%-7DZ9*xCvI0O1tSudgOal4eo0WmjUmF}X$0@sL4-yx_^0|aB)X7~LH+OUSqSrlh%CJD+?2>u(ug)z#6XvTp-Um1%lk~6AZ`gYJ z%l;C*VkuCi<*|v;;anCD56W^nanv5?+Jk89e(Gs~r?H6uNSTlo^2Pz+4xjK5UZHAL zZG5TFG)*4X0dtX#+3)XMzJaEs7M5(|W4tLQ0O`3w2l8s`Cr8=>j&K0y8-_ayEq#hV z5PxpZg)>KabK+?<{ZCN0A)|(9H*bjK4cj`h@_?RsBk=rxyR(uR8CF-BM;nh({&}zK zN8?w+*}fonQv1!df_JjAc&(I30YJ^Wf#2rm@UQ0sTv3m$XO zVDm|mHVN|J3^fM85-o(MQ2o|(;lzkCt@0D^(& zI;O8_d+~4kKf=v43@+urx(O1J!J68xa6F z!OrZC;+$QHvHfW2e;IrM;yo_MQ}FkTv^_;`S9~!C{ow@g3iQeC>}$2Q*M*ekEp;W+ z;bmq!&;o>>pn7)vYxxDz{6pd$0T28m+TOom3mh0?zL8NmKT7p`FOQ!W?5-oZ zUma>03fbSem@!-i&hALZrU|OOwPR6i{+ql*@dv|pE}v=DwCKZp$j>N3%AoZJ_`SQ= z&mR*%YM+H(46<3TJYQpJI~~Cunk7O0ORHBUw}IQ0LEX6ejxK?*SvG$9d71e zizL^V1>Efz;P%f?rE(Ut+iKHG7O07+rNIVMbWDoF-CI0XdyT>MKSS^T0BGG?;_r_1 zIIZ-F?zD@Sngcp6_`Ibj60tm=Fa;pvoY(9>z^@5ux(9}I`?TA+?EsBYND*_wob&_J zwSHIr$=?Ju2=DCmjYdIhBP!srK1SSTFsaVm1C0CE?I(qF^wRVzD`MVY*r4;Cd*j-J zCj^nwnWO-Dm?t>M?d@MR{BydvItHr^%n|ug!LTto#yvCqy=&0jf!Z33Z?mU%JOM75`X0nsk##VbD&9}zXXgpshk|c>*3`nX5(eoY~-;?#P z5kZ1?VM!jHdRMl5c0istyNI-jxaEKx4tnR;+PqzvNB}tNoVS0&@~YLlGi9}hN4QA1 zEQ2^89>3>`{U`l~CpMb?y?JMCEzR3J5{85l(SU^+SRM!?2ix(l&6NzK;AMco8O45) z{{X>1C1`v{szEi>&kM~H09-D{ZZ^03KPe~IHDmNYd-Ssm7IrAIZ(|BR>~tkT!K-me zi2(|#3Bds4Z`P^E#t1iU^7fzvfym?3RLiziLc%u5&N0`D##@<6??Kw3X`*2m&l^u5 z^XO~x{{Z&vFhSwHLiXiuE>_;p5{ROAV}dZKqmnrtEA<7XKpovwDBu8kA8P#Q{kx^K zJ{r{i&*$FCx>wGTaO_Hk*bjVXulQ2Fw-i%n^XsTd1h)>*g;2zt0fGj2&%Yw7FC=aB z>cg#G)MItMx<|M2TsJG6_Qo?*ytXUITmjIZ^XpnEn;jO53(Gul31fh}fLVs@Wcqin z=%e;Dw$tCh8f}i5Zm?TgTLq2~%<=^c0e2^&_E0)wpHuwhX`#2Xd7fUyE*!7{Ff-P_ zqc7P_ZkNE?CB|cQHpz(<0Kg-lBdFuORrI-Os~>Ba;|!#gY;+|?K>E^1>oOSdb_MxL zjN+)T+9U(!400GUfH=pe<61CzNr$?Y7l$7>X22ag{uG-`wcVeWAGdo5G?nvYX;M29 zWFVX=+;*w;`@{T-{4|UtDzO6zAaW3351_B;EB5H{mF35VWz_AVgHh8i*D)AddZO;; zE9WOi;@ff>h6l|8)2&4oVG4YphsXXE7u zoFBrn_dXO6l1BtEtM-z$wD$8L8`p!2XcGWi3wIRq%g@F6^gOwf@b8;b)h3 znj8iM55$kczT@(O%oW>mfr0_x=dLU8Z}v3(r+hErnJzpB*&(=RS=B3(JITWAog z4498nKr9MioO55a-Uadghp*{SU45zqiHQv}xY~oUC%84FVz&dYzKIb?j#Iaw37$Q% z-lMdcadX&9xQlv35=B)}la={c`+ikW+%#fLGLkR@1N~_p?isCv+LdK00Xfcnz^qG) zi5b`zS5k1JZZr7)H4YX7U1amYki=(P;ew3h`c$#1NK2$^0L~O1a4MdeKG;TNDgzRB zaHsJ6YUnPrG`?drC2@>&_Z6PNa6UAd4UVH3VJm%=*aD;jf$P}%d)MIK?E~>YSNMDJ zUq{w_Fqb-MMiNfYle$G&W6oEjXC!maJXi0(iQpG@^Te|)ypD{bLUN;w@;?gxaQ^^l zw79VGyH3ydUu4in`?`!X;ArhhES#=8#{RQ z1oZ@yU%q|@@f2Pl(R96D-a$T>a=C(3U~)6}TOAmB5ICy7mOyvt~03SbMp9T2tZAVh@rt4eSVSB+Bma#AUQN-Ch+nzJY>0gHb02aO) zYQGKjo2zY4Pq?;{CuNaLY%(+Qum_+c`q%Y~eHFdTO&rVSDIYf0>GZG8FWbN2-G_;M zDxNHg!p-lkt$e$=CLvWoI8p%Ri39`GlR-&X{(jMsxj;D_;PmF6k(_YMGCG6pT5{P# zXv8FFk+Iwr6sQ^WAB8{ypl6L`ZKEV2{Bc}=j{g8|ui2x+@ak)*d{4Du1SWe(Vzg&%L*@&$6day^ zOw>(v8a#jY?{0!ihU`@Ki6di*KYB1k7O5}Str0oU=bwf_KV z58Fc1<4xpxABJ>G3k@RH7KLtLg`;UfJd#{wllc$Ez9YGi% z_?FJ=!2TAF=ry&{tZ5u2Kv?1`3X$ucx$m0$=HlWej0m z$Y45jug9O;?d~+&eI|H*$0ig9Rbl2L;N;`EIsX7TuhHASLmqKhc8&-ni+d;oY(oe4YJEC$*1uTwOO|MYMI?qoLa0R~l6wmL0sX%GSEzWG#ddl; zdWgBOwV0V05Lt?63d5)wBk~obZ)*chADwT*{NYszIKj?88b(-@E?W!G5PE-{(I_M; zzswH+fs9pzNLgK`aTF*wF$aYo=M`&4Bh~&0XjdL1_>JKWA{cD%?IpQ0T*q+>VdFv3 zBphx8s}M&Z8vd#N9%vR?KZmr!*4@~VmdSbsIKVffza{mBj zTll+Jx7p{&ZY|=thbEctxzSOrt=2ut`5AU$%eSekQqxf!kBPK{sM%j> zvQ6dNN}D9!pDO@<>GnA5+P|I;+Xvyu(ELeva|97K+md9OB`ULIkarIFsm|~ zv0hnTS-%m_6v4qbUJnU6yDPGSIrR;FE*EKA56u<19+c8^%{W;A7V{`NeDh00jyCoY9skHN9pT$RH_+ zShHu22^@5;U&p`jQ%{3_7qYV!Iv&5P&oex8Gt3j^D}bOXwlZLB1W${L z{Bx}QLDViTFSV;nV{E9l!vYs@!dU_6qZ>i$a5~h1`+wmSlK%ipwY{7xTr^;_D;C3d z^#1_$S66ioEu9G`DoGgUKjfOi(O|i;SRhE!ID#tmA1LfAs<@cAe<-0Per?2Y#WlIC zFJtj%{t9DZ<$q>sR@Ua?Mus5E8giR};{&U7&(gmZrj}M`Sw2ymjpL`*zj%M(pb*|% z=~j})A&H}gHbg_W&tZ}C1Js^IM;+_%w^>9>$y9DuQ?-a2V<=0FHsP-0vGQ(Xm`>ANgejai5oK# zdSGWCUI*5WVjF!=>ZjlqqV4ei0K+hmYFVt3;Dm&$xNe2dzB7+PE9gr{S0+y^d70$n z9M{R8vgPzQ-U8CD8Dv=+7z#7L+{|E=$KnsQeQKaa#5sPT5&=2m*0OE3R9(oNNH=Yd z88`<$c&P0rD8&qFSF-|n^!`G$nS8~@CfdURh{k@OtwL<%L<|~4KtUYREjv94O~YfM z8-@ped{;4gv3aex%1I9d;}|(Se=5;wOU$bH864zw=l=k%DjV1a9!J4q2?W+n8=svY zw?2U!-Uo+QEGBiglrSR-2xEXf`2B17=jU+7cjS^lBPZ7ezoft08VhOs0~_2+7z^eq zp(6}&k&kjnujdn0Pb*Qpj~f7xkf)u#z|}@JW^*ZJoc!U(8O9GkjaiW_mJhXE1z#bO zWs!*jHbNLT;6OE9NM-=G+z$DzID}tgxoK0*Q4=s$T;$;6gY*@wce^=ewLhhw*;@Mg ze}*0eI-QgKvQ0i24dW>S=n=xNuHRq7wSA2ChFD1jkerMu10MDH>H7-YSf|3j2Q1Uv zfNT|_FFQ-+lgU%Nw>bPgtMoVQ>}}R`-Hc)_#OWM z1r_l>!<%z&@mEVv6j&sFR7+&d9_8#mh?fT^aqFCOUu0YV0KrPW7V2Ibx7X9d-Y9`Y zyAlXuYnESAA_WHkb|6;D*3fZ_PUq>B_NX0UburtxZ1LN#2C_9RQ(_b`G?J7uWq91U z>(6TZiSa-D6xTxY?*@zE9cx&&k(O9i;vsJEVDf+xIBfgl74wJ1ulOk^#*d0RJ-3DY z9c6Lww?~cJ&6q_T&2rS7%FmYaFcVo3;=_upMjj_xAnpCZBWRojzz| zy1NahAs12Y2FbxzZQaV`4C9;;U!wBHgffN7lYx~w~2%a25c=J z=&>vgzzJa3?VX>7YI!X5G)l+w6|F|_>NCW_aI8QoLC-$Fi2N%xSScCgjt)Clb>l4~ zP_osoCDm=LbnB^3<82EEMD6lEIUj{^@}}1f%bxfhKLJ)|)48D?t+t{hwV9a~R4Kg= z%^5uyA5d}mSM;I#4*2pP9Q-iTKG!tQs#@ENM{%@y?QIYQupJ0o5Ic(gXrhs$V9}C< z9D+ZseL4F%e$qPs0POj!YL_}~&ZTjn>S^WbI(o1%+ShH#opmrx{Qgfbp&3qx@FZd{Dz%6%5Tb*abaQI5|4CdP512PS` z!jO6I*A+{~AMjBh*^2hL+c@^pVPB}QI@}xuhXZjL z1CR5~enfx4Id78t;n#~MHlg*68&N{nl3WHd+Dcfe1ngHmeK0$7`qOVJTiu1jDzr%9 z8yQ{8oaA-uOrm(M#FKe3wY-QxI0NP$=Dg41&6UN^g*BA4m7*rrNhKf?u@rK1>A}x@ zSEFo=CuvF{Ac6rn#c38`uNor?gL^V-X9p(H98vi;C`!S9*|mEDp2w)|gIi^lrm zKo?-Skbtf7hTL*TzpuS{H{{Wu#^bhS3W|sc|5p{bDU?Ga#fMwVhApF39 zJ79|NHaO^adVn$b&`XMMQp_0t09TWq6oN5>>ze&Y{{Vt$O%3ObylZ8v-psZ^l`P;` z!v>LJ$ag2-9AmY9TQBfrZgY%sKhLFpg@3_4r@OWI+oWllb;g%(6zL`Xq{#C)NgqY}aBrCtoetBCjNXZ~^}S zJXce0Au^s6OS_PIkZOfNa*?0)FMKF zD_ba6M)k?hr6-Tzy|UFVwCzIuFXTyC%fxa3W+Vc8<3FW&Y>Yz|R#m~r&DZ?%S`jDE z_bm(KkHzg4;cr*sj5?w=c zp!j&jEHj6+hUQJINm9zEYYxN$2jO1w%q3BJ7+Z0YhlM$Niy&om&(f=;?4ZZLjBddsmCvu`Oq=&;%%rg_4l$+ZW}NiInYzmIyqVyv^&EXESkIeMAsIl&qXWnzrBPV7Dl6?(Pyi#SKDn(a z8_v$=0Ye-B+zQQL@kn+uZc&ahG5FIner361a;S;}APu;Kj1NQl{&gC&yn!WdK*2fb z?NStuRPy9ikYpTz)A9T$C>gxb9`Z;d1Y}}>CK&R-J%|I3^Y2k^c4CakfE)viXXrmV ze#qK3Y2sv%DBYGEA5&C(Dv{C z%pICGDY*%3XRsak>s=b|bdc;oN$A6&^%a>qi2+=u@Hr%Lo|*bpsM#6wHKQ}kyIrtB zZP~yErpq%%rYQ(voPog|f5xg@C?^h2nVgduBL_V}tDb3Sk(e-Gc7R56&s^0gq&T+4 z2m$%NUB{80pW#qUk!?lT3aKOxxcn;0H!cIN;=8g5I`!AaFu-$3aYul=Slu2FC-h(xjQOoy5LI4oBWS zG40y3GM<_ZmvXY9B1IsQ!FUJh=}1|#fEWRiFgoI%Gb07T*cUheagR^Znp9y+FG4^A zmM7FuL1x^>8*G^bg2a)=aqCY7S74E%MpX(}4oDn>^{TBAl^!Pr&>Ucn53wElQ^bBz zCl8auWDb4tO#v(Xu_*}8jz|ZClhhB&ujyb&8bwhSYA9uVGidYVTl;; z>sBqVA%+5TCnE}~y-qmITsxHplhm;+FSYg%S0oiH_@C!gSb-=iO0fAzJm=hgRMT`_ zx4Ver!39TZP@$w*T;UXBBpkOMyw$gD&5>3}*DB0Ps2hkm&*xSJ)KPue6(l2Q!r=b^ zDp!^jkVM6gQcedW(;tmU=H1Y+$tRLX9D58>=3ALLG{y^tZLJnFl0YNBwtpH%kc8Z< zH@_@4_7vF4BYo2##sMcdr=f~qyOLC5xWlR7`u>%?C3R*lXM3_}qHBT}C{*Zj1_!n( zqiv0yl$;ZTfynm7O%erE!q$BT^PSiLfI!ZF&lQZ7nMzG; zRJXV*jLM6+{GepvzO~UqC{&TBmNuVL zR9q<>4tjlf6@>R2lY5nO$BNS=#$s>{Su>ce9Ppt(;H)M|I%qq;Ry*3r65Jrse7}>bw5I7wAlf?o;lB{NC&NmfPobq`;kf7EvSJ1aO+|Ga(#!l8> zuUra_D3&e(FREVxui5z5P1JQ@A1*o=Fk(?44 zq5~uq;GbhmjZ&Wjr`027|LJY@b=Y1>mo znpP}DAD0J`8bgEkiOw_W$0Dm1kQO_E0B{d;S_s4+nL{qaou{Gt`c)}bRvVF9vXV#M z0y#LbsN8g6OefykKs^9BWR8plrls}Y;wVgB#(N{nFyLz z#zQe6Fd#RzSh`o0@&szRJ8*gqYO5h-1h+WAJGvZjXeX7D?T`cW>?L;w>z?>Ol}e_0 zqi-!(t_Dav5$Y;Pg1P{LH)Z6U;E(a9v}hJ`Q4}!CFgV@E98g>rP!q`u#uy{0I3YmK zPRH@9xn~MPNEf-l=kTn!-W5M8rs6PE6Y`!p>+MCX#0FVdmBDSm{q8%1pMKQRxuIp@ zRoyILfrbr`Gt>V7uT8g{=0}hg+DT3_dU{pMtZh*d+DFO&#yLH}{3{|dQ#kV!5ONQG zGx=7@Sy&CJtDM}g1#1Z1}z z1xE8Sx=9?8TgU+!W*xJ%v+p1N^XuM)}DHI39$L^TjJ7B^xV&xszdJ zMGK6E2e0e(s-kU?uK`IoC5{V!_3G(e$m=8nXaMy7S*o(Ytg5dNX!DRt=LCQHvr#Cd zh%D|VLZyg|9Gs3p_N9@CVm9psO9714b1Fw8`TN@?fID(e`OQkw#&QW(AO*qhanuUU z10XBphMb{p2p}-yBa!-wNbTWdg(HeEPXrdgQ=Z18^43Fe9yr48$`JX;$DyQOvz(kZ zSm5tC1D{V$mAcT+mEP!$lVh0G0bohUBaXf4sU9&Yh>}hi06tNUF9IbnQ2&UySj({)X)-02*dAt^s2-o7HzJjiB`$$^rwzl zb0OYX<8u%}!0C#3Mn#Q77|@IWq-1l}fseJ0Sz{3Ho-hv8kRBh7xjvN>`K0Xf;Up+x zNjxvN>G{^=F{?7e=Chn|2*FS}>FLkwRW1<|5~NYe#9_A{zT$u=K(ac7-;hQ@&M;{PBL!oQ4+f+20?lk$VIRC-Fa^%ueJQcXL1|HUWaJzISKIZV31yL25w2cR zauq-aKAAjv)M*eWblcZ+6$(!n{*;imB=a_TY)E5}4?fo? z8T6^O_X9gl)3m)gZ^oNpZKu7|&2eyTphOeQ+!lU0V}LSpc&kjoywMxtMdTg12N|iD zMu{HgjUYTKg*=?~2l4%CtHm0-5IcgnA70fiDS(WvA!TThRD9VdIP2~8s`1AnxsU=u zJAh(xN7J$3)WKMWM(hI|@BzX902)hYnHF%!Fs<^Ea!=BQ1b}VGmLyBIx0Ew8U@i&e zxXH&J^=b*jhPk}>b~J?e}W%9FyZ=1(t$XFW!7oPHv%8@7>Kb)Do{ToO=?-=EU5q>9z& zdDKnw0HF&WFmw3-0QKu@bpq^iDcYe<;@BBpnJ16ds$3vR_Q;GmAg^xzo%+gBLP6+f6gj3EP+M80f-=E0DVun zs~%`rg2@9#yMhA-%J;{&0-<28Rls}_Kn(dL1K3nbS5`pVdyz{m!mH!UjPBs=&f)5P zC=cbu9FifC^Ry5E!RwqpN61(!dPUh>+ zuf0brwasB2F2=MY_wBa?WQ8e$MmqjLi2i;|}!JOkL%=D2;u_ekK!u|qH+SK70$ zTIFK~))Z;lMGhMoBPS<6OyaFYBwom*q(d}?0`EUI81bK9d9UiFS96XO9Fa7{)&j#-7a` z!m|S`EQbV~g4~19{^edz&p zqDS*E>>?)!Ht+{M`_k=1%lYmY9zb5B@*dR;O+1c2a>g73l0YM#qxGvUizIHLmNpIY zu^li^{{UKolv^NO!6qU}TnrLQoD74&J&?67CG8aPpKX1MpR%xQb{}#GmfK* ztd`3Y$@3DWHiaiUah(2n6&#i^3v?@NsI2(OQV9bf7Cri(dI>G9v_EH!T~L=6(Xa=+k@d*us|oTtyr~RHbjyqM|~(p1zm^ zw={~fJbS#fhEUr`b~)+S^fX7%HCR;ga-m#fE2d`dw!p- zGj7tQSdp9(7d&IyvM;Wl&hN~T9(yvbSz<@4LCGUMPY3j^T&(D687YNn}NHjqIX_aIceC4$`wECrRaK{zdsI00&+(q zr?)5cs!>l7lgo)FE>|S52lemPnl5rSmyrF|&s=ai(=O5p6(15TY6r`ny*b8u`h97r zcP^zzu>DGPiYK4Tn1mS%8l01lPs8x4RBP{Cb!JbU-&rAr*hr4wb#Ay5fu z)Bt)D_leIYtR(jPWG}cY5EMD&@&`ElD$+|takqDJJ+Z{a42Y~w?V#{ay;z!ATHLL% zQ03R=W(qO5Wd2{RR(SlpZO+W#5O7C)(@IPo!b%7PC{`F4`u+x)tY1?6@gap|MkGcs z@0H~Gk9wnR6t_)*a?rr5nHwXH0RtUsciPs|sA(f-3L6JIeuLYJt8FChZEpr$s6>iqgQl!sIjak8J)G zW<-(|j!7Cnn;F`e+;i6+m7j5EH0&5$7{p|NHkBvWCqC7aO+7~TJ}XOYLkO`-xdVYB zvFLi|B9F9cmeGl)nWjV=6z$=DpRcWUSFu|_K_hE}xbxewKb>&et;MS)-M;IoL#SkA zI4VbMdK%?U>gS%1H1S3B^W26P3<8qQr!1qMIpffAUPG;4Sy{7O1->`Va_4gh*BJ^_ zbCc`St#?}PVwj#tKDij;ynDo#ZxjX60*t<-l0{vwupUF>Ell3UB$$@l%NPnAfcy`b zg~=WL_~~A2{i=xpF-n&XLj*3(&l$)g9Q>xb4-{Oy#ni1506O#RN;0wp zDt7JOI&q8-)}JFHO{bxF-!g>UgepSGJYJ zb2YjEq;8Ee2+n?;=}n|_0TeQ|?W!)&%1HBp9OQmanYc_ zg}`PKMsmG+5234qceouthO~E`qic1Q!#-KtCt>50_yNUzec){we3;?EMj=kz0g;|~ z@6^|r{5J5~>sp0_D(*tE6)O8c;BY~}BysewsI(snT-w|RL=jo4Zjx4z61l+&2R{D* zOje^iO&3p-NRBDS_K}2e7a7R~zyy!S@UH!@t|N<2WQGZ$H!hc8xeSqo8(9GR%t>B7 zGtU4RwEJjbM00U1z}uV<037x;9<8dyWoswzVH*^X2^lA@c>F5{@2F2x=Fg26-XFG; zPPNo-Z0zqY=VNTfIa$kLoWvPHRSmJZYz~7w*XEzZo2@)*H`3{scNaD)?c|-Hk7qM z=R3XiIE#%=Ym{XBJ~<-{22KZDj=q(bh}aoCuPl>*bDaGL;AxKxP|Dj{T!WmFaB=I3 zl0-6%qkmk2rx>kC@+%$QVvtvEK_DKS@%<~MgNe>u>o6BE z5ZNUHebKj(`XA1|Ut7;QV>DAdaxo|61CF2LUa8?<6Ra|ud-E&A!!f=<#{^)XPPKQ? z+9_D}RnuZ%vhF5DJc2WyY#+w4bzK#2SI$+=(n%N@C#T_CnowCRqZZOY8P3vyNWl$* z*ZgYL&4!_AYcbO9_K%e zQD|0K2bi)sB&ZwlxA3M!v^A{fY3^-dnolSp$RL4^cscxQrIIkS;%mSp2Wx=fu=-aM zJ+8>oDAwb8jmXb~f&uT2dmqB6N-m_7%W@<$9I=stl_%TtqQ+;UD2CkuOO5$BAgIPM z(~t9-=&Ua-qm323g>u6##N~M$=hwA)J-o9QR(W!PMnb5->&WAp>n$gh%u&PhW>~>o z0lVf0lljmzu6tdFn>^{{MKrQwfP>-QH@mUtQhmw-B?T7Sg)xx7?!y zdvH%AjCfv^a*}0{X5^T%K3Ro*Y1aT>TPNoH(d=eOlcF0IPv1wbPwo(3`R`BkVVSyDWH=Xv9fp#K0am6KM`vc$hQZ!Dq6IV}0e9qW>9 zQYoKgZt@avxk55Mxb0m%)XK5B2XmaB2T}C=E0mT*|7UOFs;dG(BNeJ$Jn0zYFo7v$gHuh zz;Hr+)7uB1daEU)2Ci*+$fF55wm5C4IX>T&R&{A)ZN5-IIBcEAf!pz_HUcCC5y09x z7#tkux71d#h&rf&=bB{k?v6JP zBP&QBZa`Cxhd#A*0U`b5YI6A`oaUmvJCPtsVgXn<3^F()fHU6}Jj~J!>|U`b@sKyE z2ZcE}`c{muZ0ohKj5r|w01iig%Cc>4SeWB+iF1NcI6U#s;%iOPFuVN1yNNhe$x)A5 zlT#K}>grjP5;-T2^NNqmi4?}rNb&#<7Hl13YjmT#IEz^2=j5+Qj8e zV_uM}xVTkpfE9twV=J--o2fRl?cCt?Zl~J5NByGAN5k`4OEiCGmM3Xratd_gk6wG% z(`Nl`ogFBHJ!oC5h?RirWWCwysNxWExZ@?px+(Z0#ynBcbShI5qmk z`x)5Fda+4nS|+$hib&iKm|=2v9+<%VEAr1qfu)~l3aD7*XO-ut>tC%Ou`Zv#PVoKp z&E4Z9*OOW;sX}%Y3OBF0=y~b&uYM_{9Ekm{_+x40Xjay%6u;`DBtQJLZGaYL`sV<4 zuXnYzk|Zi!QwIx%#t*)K!o0V@r6SXnxgUjP zJ;-orTuYW`h=^CC zD&&pbdUxqw(g<8()d}T>2Q;+;Xtt~XR$@qFv?m;s*07Xqswyq)kLFAEu=r(v zqFh~TLK}@nK*5>OGa+J6-ao{n{N}$u@3g$2o=xzx0(oAYf5N|}@7iznev(_Qy5YKmQBDArwhvi;+790cDgUF~g zz4ksFyLA5m>(VsF!2+zrw%pS1$qDTv}+l=Y%eAEs`*J{{RJF z_zM)bK)uzS?9qszwtEYejoUnxlN=iUdlm!$ak@g}LtQJP63#D|5IOJD{W90lvmd|l(O+9Tqx z#ywL~v^t&T-mf$n`#r_+X&@?aS)^PNhmN`H_*ckY8cU5j;@0C=(9^^gVo@VOIs@k} z?tw-QdgI=|P`_tyg!Wz~xSvqe{3-pNr`)OwdwJs^vxdt8qnvHdGr=`}#dR~Av$8$M z_GI{NtLd69opF0MpKPu@Xwsp_S8z?ySK9!wF zB&=pLRI&yIQ6nHZ3>0#{Q$26lF8kOW|c`ilahOSlkZ-c@nZhtQ1P~-b860thslv& z48Q}zmK-tn6~n}r2>$@R4j%_35Hfv#QC(PCPU*7Om}vHQi+=+^^2Un)06xGD;f|O; zjegO7#`-?1W25Ohps>2qHRqLG5@jtLTkj=g3OX~c4tjo7`2nO!bGb;BZQPxyAlsE< zFfr-N3jL$~jjpsc)04xuek-xJyn;yKNU!hryoUf4X;}XNtLHc;jN^fd^=z$TCmk++ z-1s_2Z34mW5-}St=-pTy!@oaT+Pj@?Ro`oni@PLs2Or^Fr-F5RSoDar*=L32wr?sY zw~=Ip*Ev5roM$~dV!J!PF6JQv1M`dk2+8A&8uRfBp^J(!f8imv!llgiwrK5yX{7@v zlZ*_XPCD1XU$u9Mv`D-s;@wrg$E9k*RJKnzGKkRUB>IDnIq%yw_PpLC(R?#@6IpvJ zP|&=QO*EJh@OH31#0vbi{jPOA2UF0zO9r=jp&910j_oaV1`KalzIQ>KtFQxhGn|8t zoN!7FjVm94pAhDj>&2SY)bm9!l49x-KP^YPpy!^v@@tNYB`5|+Ve=4sjDEG#_{Z$p zkBKg?;J0X6U>Ua$yN>3$;{lU(v5AWeFe{$j^ZC})qts_@;SjH>S;A8Gcm&8Bn2fjEJ z=~{ixojrz~eHnsyC$&d{ds~R-M~rmKDeLTO#J)63s7s-VbW5ornk8-6!iLUC8Ryjd z)-!sH{(JubY@Z$5c#~MtthFsP*-mC_kWwP4lk%9EhZ)HyZ))Lw0sKmThWhrK99rG& zj+OF6u?GcXAM9tL^v@N!@%GopI{yHQVz<<^yC}pFN%qBP$s5d!(UC4N#3?^8^%e6x z?|G$Mlz15=AH^BR8OI0kG@~1vt&i#_;HSs^BgUF;pCq@^O9_fN;gRIa7{ZahKzcbN z?)I;)v|Uy$Oud?dQOs+vni7imkLeZD+-H`aR5!)^Xdr8E&rURymbM04c%8L5yQLtz1*kXX-ir z5*sHt7$*b2^s5AbjHXpA58YMk_5AD3bT1!xJH(cYtN2sK8fLkrJmv`8PKw}wbGZr1 zp2szx;?Igc7x0WX5$gJkaNU?);aJ!{=L3Lndy`P%*bfr@rR<}Z!+MS0>u4i*%DE1^ z)Mp-GQ`7_B*1wvs+DggO$J&OGdncDIpji%GWF|LEqi^Yq1KYKJvwqfJw7-Py^tt1U z#9C&ns!MFo9lR30_(2?_lg4rv?&lomrG6{l*lWH!)Nb`@G`)4MLZOyYsW_Q7lB9u_ z+A=@{3RLLpc1x05oJN=7xvuU9*=3S;cU47=0}y%-lzW=}i2aHF3SZpnw^zO}w6{$u zqY`P+Mvdk%3!j~jOym$h#=PhDYWUiYWdeK;iC(!ht1Nd6sL(^>DJRB}U z5Jt>)_v!lAb1X(sRIUjdatIj6^`={xgkl7gqN0ptc|23YVo1qs_6GvFD?Y`=-1uAe zlK2ojU!+`WcKT#(ZyawEl#k|?KlZW9V?R%Bb6?GG#b1DaCGZZpsGHZcpGkYNu)4(2 zv{4l$0aMc(NaMKouk8Nv+6m)imenp1zF86Rf(hp%@fGn8$NvD?N5H=nCtKmB=~frk z(U`5IxkhZGWth9KBxEi)>x$x*jHCG0PDcVaZ8ROoe&g5WYD~w=;99P?4 z9KU047JNSOSBWnnkHpr{JR6fIaK$pMqZp{6*sVV~bFz@c(oo+JFLn6TpXjf>9Y0t_B0Fl)G75ChB(7_MNS)T(W zjB{0?v4creiXc@$!j7d^(EU18rcz*?fPJBIq@D=&tY>oxJ8orOY6$>P3zuAuPBH!! z;eQ#tO<;T>bp+1w%)dF40~RMYQ#Pc7ZL?KZZNmqy9?Oo*d*2L~YWT~Ss=sa@Fqt^5UO zmRfuhv2$UuOjitq2}w|L4@&ho%oC_9I>-p)Jm;GJbUXq3PJY!o95(u9qv5?nThndf z$V7r@;e2o#YiAF~UTgK+;1|We5`0eZr-rqgoetARl323-MC~w_Xu&R9AH3_F0647V z?#Yu|BkHYDQ6bMQ8aQ_(=jG2lSK_zrd8S{(cdf>4mF-?_k+f(_63zGc>Cjj0sYos@ zA9^>=fleQ}AN_jyv*ORduL}6*N4t)D>&+)tF)+5f^Oz)ZfxwU;$y1DdO>@h0Gx;0T zqnnsO{QrwMdr(OIDBxMG7s0DmG^h;75gW6>%p^6t5|48 z=S-UA%U)RzFi3!M%^&a*alpwvYvCPV!}`sM`!tcvj0oO`0IBpi{Ann*Tov^>+lb?c zu}#dX*e3*M=|plef)PRN2+#AYXHL9G9Lp5S6b3j41a#xpt86JELd!W~0RSr;eQ-XM zG}h*vs`o6xcPt__0i0*$!yZ4*D&58V-9jRfSRe-=V1rdWpD$#kWZtciLUiVmSgzVN z+=Wz)!-6yTeL3YVubA7Gb!xf;ol0&+DafVUQ5Tparl#_azsGqemU&4+J+|fdy5t4X3 z@m_i2-E%^NN7pXz^@|H33_;X9>O8_u03O^|j(E!Z#yXaRX?fw#JT#A)l2#wQj~F3I z{vb#>_OHxO8hi!)vb=Y%+`X5GCWphud1ZIg<1aO`bFc*31B`9Y%m*g1ly9)zj(hgX z@otNEHo0YKb89?{ZVW;xmPM1~2XG@G_5T1kugGMD=5s5+=&W<|ah`gPmHJn!e!#!A zM4FwXo+1atnp4H)mbwm#B{{U!LwYh6g1{ReNu~}1RnlX%H zaQ!QxMOeYTbU#FYWnYUv2Gn%xOB=0P4JQ4+bh2H@tR+Pov$%AVuNcAYU!tP+$dqk2 zRJOmj^43O@6+2WBouuQ2;5+@ps|=k)il=#oyXGmE;x)1oxBOq=N21pax(GIqUQuw3^dF9{a5Lw$jiL z@(5EnQpfs!HR2vJ_>18P?C%p=@lA$6eYwd4B;vI`EPOHXr-`)KAn=v- zww>Y+F(Zkkm@I6ihT!42$+$5#-N&1LgFV9 zvuzIIK-)jyK}huGzf7P02?6nPIljSjtgV&MV=l?AB8hT1$0wg&2^gp@{{Y~X{{R%U z$fviHUhs_83IS`7Vs(d%k+{Dt?gcwECeqyf2>1{2=iyI?{5vh$c+$?xUN-_mrfelr zFX7t5sLp@SHTM)6rk8RNE$+PQks8S|Y{!?8k;id@Ij_P`2!FvYz9T^mwa%5|ZAVDc zS;>2wYt&S@BajZdOEDHmCp)F_!lqrFmzMJ`?z7$JP^RdcBNNLpq3FL7b|d{C#WGtYUb>$McBP z`FojgSOM1+wARZam0a&VhyMUtrNuDjNAs)uT7JNv6LeXZRPbaPb=`&3ZymBE8C!V} z;1&t|EHX&zkUM7|ll~y^{;A+yQscwkCtHQo;=p-U+DPJZdKGi>pTM6={?a^AqukwE zOQ*DwJ*1fPK^fh*pdOv;=5HAO#-9p)FAMl}9Zu)L%`z1$9h%P*cg9J`&war4spLbs z{F&utZ<0V$rZ;r_Yi8QT%6Yz5AY`{V{Ok5_;?MjNPgu9S)1>fLwWv*X=FR2DV=74+ z4x@Z{`OdiJlG{89e^1o!=-G+9hdqRtXHgpDNjuNZGrxpDygD$9(L-2C_~ zLNd*D7*eXT0De`;&T*WMg1<<75%7b;ehIXYVN=9qzK0x~oKR^8ZO_jy z+MD*T_kaMIEKzi|vQmn4&Yn*Ainn$derO_5ACS*T3MF{{RkdMZ-hl?Ly+_NfA{V z7HmbInpNC>M<3np4^c&tq5S>aM+$DspaF=^c+aI>vS?l20OWt|)BJ0uNdm~AnRMoj+#aQu2iLK#f^YaG*TS!~FpFQ&ucbf)b1i{RG06n5 zKEGO4OHo}jA&Z+I4fvZ$)grc3W-?qLdv;;|t?*CHjGj2Jf$l%xmHz+_uNv;^ZB9)_M3AgZ zXP7A-r8jZ@dRMsoCH;ZCG4OS@OU(nu7TTb`R7baHSws=8enrR~&m@za3Sw<+&#?9H z6=^z6gm<%FTPbEHAY{mpj@chd`8&s-wnxH01zyEt;%#?NiscbCm!p|4pz+^k;eXzbou zLovx?xQQvc5PsW z+0hka6N0J(FB|{}E%=)K8SuZveJ8}0_P07k;%X7H=W-0Hs0+?P`u=tCR*U}t1h@D> zuQb>CmbY)F>M#ZnK`bRBxY{xcFd(nf2R-v&V*DNWCm+JwE3XgT-NC5XZNw%sk{FSa z&BjLu00H>WX5(XH#-9}YC*X@4TkU&U)2yCZRtQo_LYHHom!A9{2Q~1Q$A8;P;5ztn z`$4tVC%N$xO5mgt2^QmmHswJIzWrT0mX6a{{RH6_agn9KWMi`DkPF7CPy5A0)Tya&uaZS(!b!Cp9~W33fg=N^I5n$t{{RHE_;Nt-R=t#%pE9`3v_0%oaSY%uS*T2&v>0g$X zU+_%r6T*758qJT3?qt+qWSR?vExigp<=Plv@;c;K=|_S*I{qHg?X0f#Z|#|oDm=z7 zD82_$xi~#~Q(Fbw*y*)M4a8exkzZ)wfI$b-IUberU&cRxIv2&ubc;~8)2weG`Qe&q zK}D34`_?0pdHPq@(4z$;sQhM0_X8u2Z%N{iN zf2`i$S?F4o=9aTGIED@G=H(GqML9ANKVREF8DbChjJC44U z{e^4Z8q)k(rHvz9)8W-D<93oD;|4N#C10q{E8)M6AMj6Khdw{lM~JjbjVDH)TTipS zq)bNh$1*$e7#y9$gWj_l{Ng+yyJ3952;_5vj+GNA+DR-q#tnX=`0M@&$MGw}cQQxe zmycVrctMU6EJisWIou>n;GX#>72^7b>^t$^(&ZqVLDF=la;&i8Ssbo9f>aNs0%S%78lV9r5p8qv0?3 zCufUqbrT1Q?U9r`aV$u!wT3cVBd6j>plMlH{NK^EnKj9GK+?6kw$ft-vftcLKJyXhQ!@2j{{Wv#`;Xzr>?h#AhnAL-TMKPQ zTS?uLDI#L=K5|N&mBGo!e|r51@aBPQqFLLUc#m4e5fcyr

t8JVVEEba@q8hv>3Xk-VYIkN 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 z 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%0DWC5ZP;f?i)bf9;;oCfcjQVsxm1PFR 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μH+_YXL$OS|B;1{9Cxk@N?2#7%!@c< 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%0DTh&mqv3%Hv+1t5&~r{!ggj?o1;2OtE* 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

ti!_1h+n4c?2t1|23B3z-l-C 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 z z4R7K>8|AXk`(}3@eR#-zkndTNTMBT=un3vUrXI7R~pZbF+Gd+h8}}7BFEMl#J&sY{pf80 z?lIl|2fIZmIVdwcg(wHA$J?Yn*DYx`Wmu@ye?l&8cDv;WR7SG^RC3C1A@*ue{{foe zQ2-{kqP-In193<1zp;8Kg^&c#S{NgwvLmud3|#R=LorEoS_UGF``21-96i54?eH;? zs_fgTPy(0zs~wCGkP4?>xMZ0qS<$G=UU;3FYMRY1Q=pH3Euu4|^qewgu&;kBB;sh?##Vz0GnYM!n<29AFrzUfqPI2=rmm;{vBI9Tu`YB$5 zyBa3TfM69ona{KYBD5i3X~xYSjM)Vdr=SS@L_i!->u1wXt33c62I;P&^~OC7zFZpb z@)+i*cYVB6*l8i5;j}{n%&S7}ELP|p0>9UbL{L_QL)MZ)AMm8(G=?;md^NAn8Q|$2 zzKkAb0V=Am-}<2V+V&NM!XCDF8{n_?m2*!xvVBW#G80yUtZ{0M_YjU8g%fz*ZKr?2+hTPQ8KzO?Nis&I}0?TSMZUz50I$d%w@djpQK+kuUy{V^gQb%Yl*REV-A3 zqm-B~aeZ!7+2bqpjbhUa7n&@w9waoP2IKgp8mopvFh|AfMEJvRm25Ro1?7hS5?#X=CBx1KY-MESBKNjU-^WiOm8VHj0A9h4$j=%O z3XA`S%XQ)k%J@(TFDIfBy?Hhvar<3Hz^(Le@7o+9z3nO)L+6TSH;jEQ^H+8z?MiM9 zz>522S#t?;rn~ue_oc8LZ9_B}lV>(|jD{`u;thn7IWBC@ChU1nANUi*!Ler0Fdk+v z{d5OAZ53Q{%FpvUS(0FoXWqryhd<-Y_%0D<@rR@A_b;ogj0w)0<<3c7(U~!Ds06HP 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 z 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

YV0u|vhuHc!JX1P&b?_=MBb05cIW#J! zs;^$e&hPbg1P0;zr9RJKg41sOsy)~Cl*UbGWsU$?rmJ1A)U~BmiIn)vJ$kqPJDpa6 zrOw`n_iN}nU>@o=qwoG-MF<0>H^ht7t|6$@8>?tse!mmn>Qzq+>w8H~Cb^(G{zV6A@MImx8La9nRU^xdlE61s57 znxjuJ8(kG*LE*oz(fIz!`=l_M^h;S3a8_eHRXld(FzQBPuRM6BMad^n_vGv73h&tfMlaVoZ z۸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%0AyMAYize6l1_+fw=B?-_!@s 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

-p7(eCC!!__OOfr<-?=B%GsGKA#!3Ch*5NkQL@95gDEBjlhs%KTOIh# z_rm%^oYZ+~e%?{=ojQ%(_eGBW(@{G2yVpbC)?eiC=wOfI=N~i)R(=i3EV^+CqHv{` z1!u(G=edeM8dqVsNI*nzkmY_}0EfUCzEywbTh##1Y@zPa(~6Y&>sT-^=K~#1?%BU* zS(tyjBjLH)oQVkd_WTo^q>6fXU?2aNi5h9f6He(%bD5N}GKo?j%8l#EfwX{SUn$es zmU^^F7iSF))#x0F{O7;5#&0mVQ+tY5&Ct$$XC%qE^niC<4m)C!}WAiV}T^{q=WR9mhcIBw>a}DULN}O7L zwQR7q9#dwYWq+bKBcY32)o3j&(2*;}&wssDL0`@-wOZx@LAJT?Xz#zg<=dktl8ieS zKWac1oScyPEx&RJ0%Dsfy8mhN>~FNYvNafc`-a9z+qOGrw=ri^Bc z8_oX6%9*}~umRv^{K(C=SX?X`K&TYshcW$yFRh>V6o*$kZDVngdbcyoeheG z;g7qk>!=D<3lborQ1aouJC!c--N7KQ5jMT^EQvPl&NW0Ob|`OUx#Y7SBQMV6;C^3) zTPl^J<0oUm`L@6+N`G;1Z+8)u?D9!IRie9gLFy(Mr3zJlfIknJ9k0-onEnyk1qJWy zj;HpVi|zzRBd;qV#J)QR|9ru3t`v(obup|#OS=6S4Ve$2cf5hAXkpzApc;k?q^YKNAY`<@n3e`>ud zpruxxL=0H*=49T4NRWEG_I@vU}AsYt);G&@}?*1zbK4}M{a(aK8 zX+S_O6GJ}hiGJ_(Jl*+3@Oz>Mn-MgV0Aj#I*P)n8uZL_3&2=@SIosm-GpZiXyZOL({XE;|e-1<%SSy~$g4~yYqJ}?M|1=j9g%+)0*1$Zc#N1WA~ zIG5*k}_5g4bTs*o~JKa ztFq4yU*M+-)C8MgKa1AbW_TxtPs)W3MD@e8+cWgz3sF{(w~ z%$5C`|5?apz@Boy-Kv87!WsR`mv7P7R z2wiB6xP|z&HTqcNCE2Lccnp&4gs)Nd>yVl&bPB)My_)$CNDQ5WlDL%QiFdIj`@?sX zjSonhTm%&Z9OBqtWLP~cJHZ1b;eNvqY`h|KPCg*)QYk#OV|T>D=8v@iJL_f1#jbx3 zs)07oD?eG9Ae8TN4)mw5l~4j;*5~Qvkmeh!qlnpZL89_|5-*U&U^FQtHSQ`Qn2X}8 zDdVq94suSi4K{rn`fTR zd($fT9|3Y2ASp*a8@6*ZjPT+HgVGK+Qr>&n2a@!8@^z7aSC4FFBXG&?sX-MHhvm}) z<|?`g;>Zn4~hD|D?MJL2?c7H>qT?NzCTvF96WQz{!1EYil8IhPW!iTl}TL^Yq!Es^e?q1LD1;*`s>!} zn+Rt}dXUc1zN@MS$K|4Y%xiQ>MHInQGSCbEHU9LUPfcfuMqxD29RNtvz{g=?RTxai zW~OB!hEnZJuVL=Lg;IfV29u}~e3Pi3jSxJ{s;MxY<_XrIh96XqDgEe8sp2AE2=y!T zzH~M>SD_&axhV0n=HO(A_Z-0lA-?*wLNY7JI#jt^51U@EVD-Feo{pt_iCld8F=smU zjDcFiHNQI}y4ZU8Df#3VLqYwzqRih1wR{aUPGTRoSJH`XW8#~{8$2+K&#$`a=I#Ok z&60E+5(GM4_e^!~A7hKsT%4&~wkdO;`RxavW)tL@+B;s$s8uVI_6QCx+X?A?=TlF6 zD$#xO)}}k?Yxih$;@3~+V;Ggw!11!SmYIs<9wa;LuZ`|hkcf&7eOwSXM2)CI{>3TV|RZYtowy4bwLKEmZ@!oYao_jTfG(nviWieYpGHh+L* zWg_i6%H8E2LRjlgb4 za|FIjMDdE8?45z#a(#fW9^+OI?vn*A&UC9S-bTyNpfdf+fZiJF)Xn%n7S;;FvQD@yOo0lu{9k-cu0`v?gD)^Cm8tQRJY zrN{#BD$ZIte#C#a?CohG&S4U={j#S@{t-dN0vTd=yJeDz7@gY_Tiq#}YdceMYRl`% zuzpK+a3vPX>;GEN&DQ640GsZp8PUmiHt8FG7GBM zdq?i}*2`RGr_Gxzg3_`%o%)Xl8rNSe+^OC|NRTLrm|db=U}TkG=;$o{onumQ%~M^TZ+rax9wMlNxvUV<56-#?6I|C{bB+VrcL|7t7(8K+Vk7{`ud^Z zomCMN%)&y3>Y9`At&YtReX_!vZhu-l(|Q!rJoP{pOP^F%ep8&w&2(ixfPcYbr5J-Z*BYfN4CohGV5}aiI&!I zKsH75`BeU6Y#z^-tply~I28%k$4wLhnC9QfyA{u-J7hlh?s=F+w&CD1n+%ta9KIsp z1>@V*KcObjJFt46S4-{@kHAeJIA)?P;?HBw*;Q!fXTZj>UCO?tHwY%%0xlAZTVQ*? z3`4GXf)Pj)vT?*aQu>8$t~3OKV&T;sS0IUVGc22#cHf>ltpujnT?j{)duO;h+FgCC z*;ukyZCJL%!a@XtyU}aY)pZXQSvojCIijo%r2caL6L;nK^h&c36At}SSD1!A(7d^3 z7f)&-^lbrceGpOQ4eNo0W(vRQDI)Eo<+Gfax<2G04#+piWjLk0G3?DVV1bC1ro5LI z?txFH&VjIyN{fN&caj3BBGnopq*Y+pJ-IJ0AH1riU%e-~)-$7bKGMD5?eUh$Z1*HQ z?a!LsVy0rv*9ecThO0LVxl3`g3mv*YaCI#uE;KyGqp+yJ>w(#SEzcz8brI7Xzt20= z5aRe2GJ9Z6qOsWuQcHRM+<+RtHdTVv6l(BOWXOKF#$A|;qeC=-|C`;PqTVT*gc_wU^n}lyh(|y zue=~=t&M0rI$WcZ1&>kwR^@CI8Vt$o)!f|^WN%OsG9R~xfzns6dSsY929bzP+qM~f zjGA6VvMWHrEON}MMJ9N;vT;b}biQYE-1O59!1o99gg%guFclx9rKxnmMd@Pgsbb%! z%4fBBcyE^bskQt#_Yg&OMFM75`Iqm1{IJRUOUd}NXT%VR5f|LNC%Y^mlpqJzOvbv{1aY{ zlOU|7?Ux@QQH;>Cz$Ik-{;_NoMni>kj;dNKgL2KJAAYMRwRSA-Eb!@y`lEvmHLl0= zJOYl_^#+O_?p^Mn5tDu$;g-_w$Y^<1uO(tJc>La{s3w;GB;uC5Ti=bm`Ra*cQR!Nv zn}y_FF3KZljUFCZ`nIc~(t~0`nhN#c74Tl@BU?))kf@IELlY14hz^YoC03114io@L z?holL_CmRkp?UY;gi+$s?m_G){M@;^A9rtz-T>$u7fnt-5s%_v;tqcJjRm+A*K|T4 zV)5^OKW>2|luW5>Kx&5v1hnFC9E zs0g9bTP#aP!3+y69$ek!3V94#T4jM+MUOpc51dkxRQvDm8x;|pbi37Mcd`7`LQunu zo&j|eT`4-Ohm3;`2sVd57iSic#Go@LRE!ep=?%jWfz`Nwlr zvsjHIoBCt2J|a(Lsld>gq;WF6UC=`_q;S@@^Kx6M&<$O2nSZeb&~pPVj&DE`oq&jb z&(?$l5n8>C!0h1u-L01LPWO{I1~B?3cU+dOBxN)_@X*zgJ(h}hWlx1B)yE8-9-$WF z=#7ge_Se!+wSu@a@aWI@N+>X~!WRl>KW1OM#YP`cQo49@KJ%)^DWjpfw;ll!>@Wha zxz5qvlJ7X5u7b&`rfmTD&J18dseV!VTzdN5J@Un9h)MHxw49!T2?D3Zb5Csl(kpwB zM5QQ9*#19xecvhF1#C#>ShY!6%k5bc&41CMr?@$u$O%$}kGnt-Kxb9Pqn%&b{VL#U zPB#@Bu8$f~Yh$%)J!N*RW|S^S`tE$@B&UiZyjzcq$G-k*(Gj?8%MgL#*vezi*^RI> z7AWtJibiVshgys(xA_YTjGOjKUaCPH7f+%n@dN|54Mt6qfGOSsK>YjcR9uziTD|=> zQ4k4u1naG4t_ZvBdRgE_{qBh7b-1!A0a+VsP(#e2zy;J2UMp8Tg<#s? z{;$9#E70AEPznuO_a_dot4ym{UKEI;VfGfs+7NS=Ml1v)4)LUIQxC*+&!-k%t~3js zdZ&UU*P3P$2(P*LdA~NKDMgQT{|spFh!kF)raNZlRH6x(sViR4qv;7VB=xJREb5je zX2Br3*^^swfs>y6G;9gb>}hr{U7=}usW7y%@~aKYb@oF&G{%Q={j*+J8+YdV-6Qu$ zw|rTXR_rJHc(a=ezqL6A5OwY0Aij$yLc{o-DGT^1YUccNdH5h0z}9DgVMw0D>PzQ? zRT|<_yFrADU@Kz{{`Oq%1#r*#%BnZr-ga}nu#n?gzO4BvlR3)dXP+)4zL6kx7Hbyu7k9cr zns?@yn%M}JIy%Sn^{fn4B22P%-l5E|1bIB;%o8adJ*LR;?)#`@t@oyows&wo`yda_ zt4azLyda*fEDk4o(cLX90_8 zLI}yfVaccw{E1t)xb3eU#ZuJ|gZZxQ*L6bcn|=e)At4$Z4zD0=5ZS#(%wcQRZLZMk zN~JhxoEhhj5ze$YJ*2o9oA*46XBfHoC(kT+(=KO+P=T31UKBvv|mZK1wJ)?7>fhRqASM;a#y8S24ruPafAO@ z@vK-biI)A0^hvo6O{vodU>Eo8!n-tD*f-+S9owSmUbWPxf(8d8qLqLFwwXu1>?- zT1MY!5Q1D@_f6$UHZM`I+i24}<9_ z>*)kMgp6^Kp~Gk1_e0J2bS_5UQS~2rCps!EBD?d8Y;nF^q&hz8ZIcz5WAy8how9Hs zDd|hX(&>+ddDREVYNKhh_|e#MMWWnQIOVsOT?l~#X(cQN|BZ76dZ;OTzpIfKiF<`m5-;^xciCPE`WW`~J)%;QB#pqyB_b#X=rHzP9l7>eCL!eVSe`eU2_T z@emXl;8sWomUlusRE{?b{!+c)JsY*;dSRmOWHU|Ms?7t|DU@Z!B@gO8#T0#ROEH5k zXymY(fc`Uo)ZmwMV@LBnk3k68HUyB0KHG6ZpCG(ZOVsdsUl)DBbosdWokekrk>=a! z+e^2V1dMSw29SiY1bcC&_d<~=6`O?1JOpZFdCJuLt3p;O(I{{t|cme)D&d>3vcnlz;T&bhBc1Z2B!w2tfGJ5oUkljt%|#BpXuc?+W1> zAOh0XDV!{n%Bp3m#a^b|#lBwQb*e1^3;B6mld+|q!zf7Gtf^^;W&wXIIvpjh_Rt59 z6P2BykpJMnd`4{lliM7SSO3(nzld%33tEci8`X4XUzum8K>_f~#;>c%dI+X~kCyhP z4SzA^LKxGv^7C{9dV$(8p&gH_d)g!w=~kZ=0VxF7tM{y(WrDjPe!$Xmqhf#oQL^eH zfhu6q`lXV~M}Y#^j1J;NDK7f1GdePF@5=!NZo>pE22;VZmgT6;I1hysPSU zfl&@`Imi-=kugNe=;Ft2LjiS{n<$becOg&|Z8V0V*g0%3q9K(+Ie#O$LHUUwbbZiu z!+~P{G$mzv(4Gr{8EBh0t?jCu5gkjlzb6f6>!s0PYfb`}5!R-bCL_3&D*hEE_w^`- zo2i9eob5mQtyS(%qn>4!%0 zwAXy__Y?98eenT$Xk}ah>NobkCC^Tl17ZzRuJ`u-UD9?KQTkyF;9V$IW+{A;9t5)v z4#9V7#^^%LRw}muuZ4e7Gg9C_O}Q5*_CHX$;&9*n-VlHbfZJr)P2OEhqgr}f@Gv_| zWNspr;lm~!AHJr&*Ikg&1TH9L+QyH0V8hh--pag@eQ+*|GC6vj>B1o&AZ9c{{`W~M z32=;$RCih4IFB);DYHHocRREn8A>f(aVbs%jzLc_{$pQvK#*nB?p~dd;W`N}@UAs3 zEwMe|+cly(521rccjJ$p7s<2n5*7+zIUDp@+G3nyHrZ5g|3Annx?VstdW>;(ql)S6 zz4JEwVAkh#In79~{$4eA0_jrIYz{1?L=X-6ZDt;9dJ+z*ix6^tvY6QlSPXHMEQ?ZU zdcgOnDD^Z7j%kL|5F7i|S?cdtvkolJRu^-MhzzCbxpepIYNot+(Tq(~cE2tW(Ps_n6VnylU2|+ueONa!QZH?%nD5-$P7(%7&VzEF$KW%Jwl5kI(z zEW321aKi=FAc&lUGK%NcW$A|p@23hLR*QiGsu+tO+r5+q1Ki#VfVNcU+Xefp>TI__ zX)n@GI?YNiHhHuTDHs{e$EV=Kn;%Dx8%i3WqWGWlvHxwCBk~T9L@TXIR+l{S^=)P{ znM*N(g`T9vp#WF@HvYA1LY}sP&5iP)-uxY zDfb;l@EOJ2Cvrf;4x>MwH=9O`De~rq>S`w7up8#-kr4M%NGJFa&O$^SJQ}Zj#0X@u3JQXj78?&&p6zn+8GVR* z6Zi3HRS%&>Icfoor!*}zmh;x_@LV{JyC(_KU<|dn%&1!i%NFX18ZS=QW%S9q z^VqUz;pvVg7u?y%32@zze$^uzNAJ6n?7u-u`fM%aFFN}`8U-J?r!NrOG2akO5s zf|vf-@T-m0RxMG%M!KR(em^t5{x)ufRt@qO^_OQzi5Lhi@Mo`Lg^Dme5e4f65=cd_ z?&Em*y{D92M643;6GCjZ@?%zZc2DmCax^F7thf@36?r!EBqrN0s8dbOCbU&_2?;(4 zxh8t&{J8*Enhu(%q{O>ug}Y16O5)~T>cow%`^TyVz4IWsf{Scyu9ReQTgEd`q;yvu zxgM#i!hU&Wvd@s)sB`9*3b}8f3hk(V)49=c-hmpZFNXry9n22KKz zwpW#5>O4HKk~MI-S>z^)Z)&A=DuR;OyU&R`I=NF!smsgSR?vl`Lbg+?tUimY2L~(h zz+QS^kT^FbSkvcBj>6HL4}RBQw{w(S*9#!)FQyE~b-e0r%ZOU6zoq?|i+pj9ZU!A| zABwnU?F8}+1^gZM)|kKn@C~-R!wMf#NB%(hNojYFo<6Mpl1d9ivfz%~8^qlGob+d! z!mrk8=cmKQN^=>xSrU|_K>_1I`VHA6M9T#?bI?q$c&e#7-HzP>g}SpOJl3a`64Y>Z zby}GLdhn%q^NRH%8gCgj>Yr^Ikmdp1E!y3ZV>P``_u?-55Bq;y580d5k7wWOmw-?~ z5JDxeTFf@RCLriN9qoYz&NPkoB}NZrGwdVKz6;3oHA7}m?%9RCQAY~bK~y~9^+hoV zkIv~$dm=$SwM+@fK;we2Nt?kngvFG0AU+dirWfEzE`|Ln9y`(VK$l$@doj zarK0!@EDn*brL)WIJ+S*7?D>r)@(v1;(pJF9`j_oiLFW=t;(U)9l)mbXT*5fQC6{7 zUG*=cWyY3;D+qay^HoDiNw*guP|;&PaVMXa?S%p8?AMRJn!&a*{Xu7&wzvFgnPFA` zrafhu-1zfFszLVlw${e(QP_zB6gd&MdjaXW57>5z4pX`sS=!)1{&%tg&~I8*T&~SX z$j3E{{J4?UObp(i^4Gkr^ZD}8X{?C8xysL zoKHp0p(r_@awtWjIfRf?Me6r^fB$#wa$WEDUb|oSeLo+M=u^Kp92 zqf4QF5PpH%o=z_d79&PH5?)>vAY=s0i<{Z?m9lX3kWg7pAtRMJCzj3s5!3DzpSX59 z1YhV`0P2V`QLfTdYu5QZol8bao|XaV8M_C|YUY|fB8lLI*`vgnYs7^omniJu;_KQz zcs~)>MFcG`X8%Uz=NCdBR0YzSg0$a2egL_p)lC-%+o4cp7`=15dwbTgug{I4T6rfS z&+zkGj7^iTIzl1Y=>t%Uvgm4)#L6T6{`4y^Lga=`k#193FC9biDx_0EV;t3~h&)dP z5l-t*>F&g!K#6QnD={3vDtkoeoSv75F-bM_ZaxYIA@-w+kfI$OFiwx*<`!!m*O>6s z4Z(tv(HpBS|3+^$%4d_=Afwo;C1i_Az5L5)6`eY99w>zTa0D$O+a;Tkpg(*WV7vHr zMY4pta9=vUL*Lhl0_2?A0_e5j3p%9(Ipf`$r?Jp1%rd@%FdeCMu%kRL#F_WDbv}-p z=AoHAJIUj!79+($cf|rFs&j`rd8Wwc;nNFJdMt`rEW6`-L#4QV$WRmfsmemx z-!V@_NpNFot330v`Nf$|k>B3bBl6J*j%ktwp+UdXLZ=bL;LK!RJe}Z5XMS&&1cT#u ziqpymCST8rOYffA&F;2XNIqAl0ta8m92mdPWO%$0CmAqfo+woRQcUxEw*PidTE&z+ zJnm9Ew?-nT&jF%F&sejghsK&Y#~gn<`(aUnzzCa|L$8^MqzOV<`$EsIYZaU;KA{QN zLU1_D*X*skA&GDp$eIf{`yhiK-LemoY#=)EO`MsXh8p8j7bD_-oiQN)9+3!j&Ig;~ zSO0}M^qYNbc-}QRbytbASGiDt3f4JmdoS54?VP2pH8_!zJ5>8fH$iOUh^*i}?C!;@cCakUxWJ!AHtsTSdi@+$Zh(5?*?+mpc; z3>ntU5|h*sUzw=>1!$ix8YYr-5STG?^|NQAY4IHU7`B&-;f|I`3)hP-cEH%8ZOBzC zuyq=uiZ0Mj?%m-n6z_TzDlN|QMyX(Gw>-6}&!DIV)40-i9(BEGSWbk{P)?Y;4va{xhc&4dd3=Z9Hh>Y zIdmoZ3}~~C{ZCvt?)Q~?)!#3Z|7{YtnAv#)#u$J zt9AS?%V}+a#GU4X$zJ@+>)A&f=-651XUq0=lr<#}e>oBTZeV-IB;;wTc)8}A|42rm znoOhoEn?ak4M^#J+~a_=XR~D%n}pOR^HX;Kr*bj&VC6s5xq}Yxpe;jxlkribYVTGJ z1uFSdg?11SLlD_f0QWOUs4!HCCoN^9dHq$ZC00GKe{elfOwQC zuE&fvi?0y9f870XLGRvkX@7Xhs!bO$R6CXMZem>AuJQ7Zs(XjcwDliA^C95$;%ldd z4%_z$Z1o??uj%Q&J@Ec+h8(rvI2Iz_oiTiQ!8#z_w>v*Kn!ILH}M=k^e}fbb6#aoDYd1!>0ehP5J+JoTp+fprn8X5w2oBlz&Z^Vn;}0NSEOoP z6fk#5OQ3@IMFpo##TMMxZJs}U184ooqd}jox>6n6r|^EEVNK!PrwV{=9*69z1rpIS z7!q2N-j)14{O!eQj&NFa;W2eHP5I}zXw#_Tl7UW3DRh@}vLa?h&-o`y9kSK~XLOr} zrQ-edh`wi@1xe)I+8-xBG_5~r&MT+ryx9Z!v1h8kH=Z=P@Eik4?8f{$xOP~$L@i!V zMLkqFqeHPfaD;i1AQZs{fu;uiycU87{(Q|JpQVa@g+H77?cCr59eR5|L{J-xxB;Z? z+gy+@!+GLi$q-(F8)lsYTd*~} z8D8egfa6qr37+(l4BB7h3u}FGWS1lUmKm5v;c{M1D7Hs~RQix?J~`+!n|klP$?fnC zVAK!S1b$phVq&pn_pR>wxrju09mxPzqC>tswh}#i{Ksjgu7JrOzh?-^o=5Kre6>At zK*-n%x9`Uz^uw=eik&Ev`}_6of)g!=m+|nu8Y?HC#J`}y4~3Q}eSO+{JzJ=ymcIu9 zir|{^BWum&Ltt9UFHmhSU$Std>-m9(;+?22bGkV)6lK~1aNm#1xe$7XpjYg(Gw0a< zWm^51<(Wbs#MK`|2xXI+6^OHOH(p%*MvZ54BSMQ#RssN_qL*}#;n-)dSr1@*=>>>R%30o*+iIW@BelEK{ZrOf-b z0d&-)$>fY7)Q$NYm4z=l{}3jt<@oM#6G)-xDvPF^5&E0~yH+xKDNlXbyrj;@B>8jF zErqOpDwqAw^t`RZ#b0M7U(aow*6W5UJhUXkgZK0j1fUH!bNfm%uEq|*_pDT+SEo1M zCyZxke#R}>!>#Z4i?_8U*&Em)Ph4Lt^h%JAo)!Qod#*5a=Ib;iT|wE7-MnMm2WG9> z);uvcfKjT{WPwqvNxYO5xw+x6uZvG2Q?ExUF&=+C%s2E&msXS43q<+d$GGh;fxp%~ zv;>d@f~0vodvo{H4kz%5bU@*~_D_PsD;RLSe@LD;^GEr@-Q$GkWD1^purp|rXA=pB zZ#E@z^t;Vi?i%xjfl~eLeVp9*JPU^~Sqb_XNu2(mio1vh@Tq$i)pOY*;M^@h)c6&^ zT@ShG^>lwmE3hXFtKSz-tkwUwW_AC(^`&FA0rBqhexBBDTLwum4ek zOb{xp?l5{716{^4&wA}W81%&!YWOb6nZ`^6J=t8yM9gLxzv8`Zl;yuC&XjKI(x<<& zDcMSvuXaz?wOaU1cJDRlI;#-zL*Q$|XQqs@D$iD_$>!d}dPL4W8KFwATX|ceR_6G$ zm+pN@5T=_#;z<0O!+88caJ!!-oU9^yXkAn$L~GJy`6WkYHzbXkmfR%pvpCF zG?JMY*?#y)YR}EBz#sAqGb=R`L&*M0^ZLU|G=%LU($83Aal8mog;9??yxiu!{7uLl zzH9u0tg3twVp;5F))J^}D6Sq}=+!fYg;B6j_`}Cpmc1WUxm17HII)`lbRR03CtBeq z;lU!cEA8mA)y9aV8-<)+RyM7Lnwu``7SXjc>wEZfzBJ2S`5GPd<;}XDlTPc^CacAo z;Xe7YrG}`=MZDx2q}W5v)Wm*(3&NRD-XQfsGsTRnKPu;rmiXOF#w6WOKw-PM-|S+d zQ*rly^}X}r8}7rXQ^Zc=Pu{6K_S9Tjqe4R@w9idnVpx6h_I~-}d6a6`+epQhY;G22 z#q7ceQ=LYTveeCh$%J%|q=z64C6q3h4s-Ygm)<8`bIZ{=?yL5_sp3=mrwfIUrYr?7<94IP}}+t z*-PhVE1G-~1mRm{VXn=UQsyV$oDS}ExSx4DCz~#m`|o9Jxnx!2;1vy=4=24*4 zy99dnh_fIt%XnXjI|EIdI0M`|yTQ-e5IU_?J{Uz%XEa`p#H{E~LZA{1YUX2Z+Vh1z ziZp&(oz(+j+DR`kB8_o|{6jz~xU^ZJhV`roE=+>Z#Ku+$MXAnPg=r>DzkD-8?T#hn z-~4u|aXQIBz}nr==ep?@a16wBIuR+-^CAg@SjR=f4elmBU!+VEox<_k27i{Ik4Qf;00UjtXDYnE+ z-MgFVFHm_rz+v@S1PxNiQLKXGjoF zayQp5@5Zq#X~8xGwR%|T<*UoXGWcVnNsoYh>bzIRm~2`8pHJlx*O?#w`k{vhT}#pQrO&$yzAfsDTHV>ik2cUrW5?Duk<; ze#Sn@;rJOrxeVbhL!R!v{qc+P5{2a6dwzaF%yOT9Dl2aqV{*8uhOFrp%`O!1;bwC- zHU-)^v+N%NkhmKs?y%rj@0)O8={*Dsk(>7}wK^5|jR>TQH3 z$Mo%Hrw_6w{y@RzSi)?1k8^-6oCaFCs{kQ7z-!kxtu@%bFXwZD(f|I!q3|rk$wsyr z3GE*VbL`uMeUu((k7xGNfz*EVNrG@4Daff#L@|$Iw7KsXv7)Meysuv&1ZAiou}vPW zvecA6W5LrcpAKV;q`D-XBh97DdXbYav6sv)X{f44BR;i6%*o**XLpa)W%$o^#h;^I>`t_W#nauDC1q7tNkV~X>?-eTz-DnEhulq)!++b8j# z%&{7#2Q|lC0Vf{?mUq6?fqPK?AEHgFV1nf!ii9NnMdQZ z=_};-9<7nnw%%(S3_e1(C8A&*()Zn}aHBRN?69fbLfWELPm?9>2I30J`9JfF>GAk{ zC1My7cPALChyk9Ev&&{n@TWaeGeW5~{O2;^o9zOI=aJeI)_qZDvlA0_k;q$hFs}PIMIS>PLQyOV|D;Byv47Baxc;FY2I766Pz}pNy4biJDt2({C5~ zS60h;>8K_=V~KpxgoX1z)z0^GSb}5Zyi3r_y-NURAAe%kAmjXWL#JFr@vR1Egn7uR z>_8m%l5g5NEpbE920#;~A9JX=n2QQtiuAjJdU#ePCX9LkHdL% zOKZE$2PxW^6dv1?#-%*0#ye^Zkz*B{x5IsPU7x zaRDTr&bzx3b)xY5Q}QE&MwiXHhz;Sr=UJcnfR}D#IOY{9KcyGZE8YuwzSFU;#jeY` z7M+^?wH|Xbr=BM1T7&$-CO#{H zMH3CG9`_2pawdyt`n{`TpR&~PGCAycI*%8BT=TLE9tFGGkM}v$#2=IpHl1!4XfScK z%iuz`!9VX-0fUqtge1O05mZ_ziJm?{v6=dBFVFd1l@D?7P_Z*j{~D;pa`i6nlV&Gr zv2%f6{yO3ewLqFVk29BI)b-%R#>W|mmwxY~=Z%|X*JzXbgp`B92OiGMJ4j&PyHa*O z-KJJL?26q3RFCu#_1YLP$I>ChNUEq>vh(X7gq7S7un zZXxy_B#3R5`UW?v9X$b)V02(G%6FyZY=1UeicsHX*B-XVm;&QLhttWfbBdvFvxDI# z;bx2y4AQej_w`a(??HKl>oKh&SxN3r5szdItU(Isgp2|X9S^rJ*^{i^Wcxy)7xMxyG|X~qcm zRsFel>pTaeoe5&LNKI8d69!sRiCX@<1^A85baSG4rW z<1QiVf#jd|NouIIDF+#JTVa79km>81t{*H=_HfNO>^{ z1WhjiKo7O2Pgo>3y0bEwZu8(3?Ekv;wBEvdj+#gDLVz6W9Lj;*w`o**U9NzOm=!mlPk%Od&ax=B&m+^3q#NU3ebQETIJf#R!T<{r+a4cZ)3)&A z$944bn)eiAy|+8g5jQDZaQdac0btx&_lC|j`Oqd=_4M1_qvg^1T6Z*>SKMiOUk;wNz5#8t=)b8*l-sYB24!Nqhm)4lF%Ym{!%=ctu0)EN?se&*)7anU1ZT z>Lc)EwHSg$6VJzUNjxCmN6+@Y7CjhnnbJN33BjPvSS}IPL*K>*xuH->T)iRxeun4s z@>161<92a*#Le{4%8bQ>rWE$9q$u{+LHXm(n_lM*-WXR~3E73M+NNHNk1!m9f@oHX zWLspvlcvpjPwP9A0Ll|>kFYG$=puJH+n&kwE_1N#sZ14rkhDrBk+lMh93G$6P3o)A zlIm4|Cf(b1A3De|^or-??JSKx$@-+(7@dN6O~?C;E$=xA3OB$6sN7I+dX?5i^pudU z=W%Prz14%#llNa}8TAxFv&!nc%C2lNO_A1}w2Bt?Rt1&uJ1)HF95cG3u&;Q4r{mYp zvIHiS4ze>eC`FcnBoZ_8~IMjaZzavSdEb!vW(B+w2E)iqjdyrJ=E5%h%7 zju83BO5W^YO8SI=V0`E<)4(`xc7fn6Pr!nawUofqzPoSL7=e&QI~L7HUy~CnCX0kE4Y2O8xx75+ zgq6$G9y|t`9)R|dN8)5FM2T5WO|@kvx^RGbQKCwL`?=7m^M+S`+Y1@`jnMmC2Rvo? z%)QApdrHIDh<5iZT{_r)lmwGe-F9UZWEnRiqFzI z0cu{CSey0zMhTP3K9hRTQixTbX_`H5ixIbdrKa9acJSiE#rJB|p3MX-glAs@8wG?% z6Em8&qKnFG42e?DpQGDvg(Lo_HY*Txy@fH(=EAtjN!MzV5MtU=2>`s_)a+>QLI_C! zv=vIi7Y8uE*Phjl;tor=m>JS_3UlnfHb4ZNcz+c8AW*szzAnD*+0Z$TB2GYVF44Ihfz zp=R}OftShl3!)#v266WKW2@HmbwBt5NV3Uc_|=Chy$`}!f8MZp_PFmWJ(%CDVdA8y zd1uNijN7A#iK*9&;mfw4HCF~-iHe$kGGffuMQH~IaXzr(ez!oN#r=vkjh}*DFykMD3kX` z&Z0&HXrdk>k&%>(#hw#sJo5^G7I$vqNg_vB@HQkPZe^!lLa z&yhZzwzQ~|V(Q_R_jz$VW>FJOixHP|Wkt+QL~ed<{?_?uJobPp8O8hbtbUi(qX(Xn zptW@~qoMN!meo^9{tP;>0<1IqzM!$ThgxIZPY0GI_DB0xHkYn`g4$2QIZK;m-?;!G z@2oZUPoV;M7`&C=x6(dnC@8I+&kEJ$QM^5TlBHeVE{$ye5!DqXlTU_OSN9dwP-$Un zZm#fNHNu3saiSEPJhoHX;&=XJf#$HuaXH%eG9*fD^y!7*^Z<2G27_kRMyz9s^Y%~$ zhT+sd@xLcp)F3ehJ#g8TK+boVXBNVTFIKv##=N76*omk5@zIgA- z2oI<2w$fEKDysa>EiO|zw~wNC@m4#Wjq9@&goz_N4Q3TOWqe@bl(;5XV;{xS~d8a$JIT%Gc?O<9|v0i?wUMSv2D=FN50mVz%Po^8!r1< zarn*6q)V=7s5*4>V0o&V(>0kU5*Lafb6gMQc5jwny3n&FqKlle1A%}4I~n^kUGwh1 zSubJ+#~6Svic0I<^L81sq2r)2#4gwA;T+JNM3y}YBNLB_{o;R%VvB|7m{ ze;wgZF>~5*$#0JGL%SCmqimxNUIA#kSeys*^Vc}IAD=a1X)1lmUD7%sT)EX14yPrq zUX*)r2y{$Umdp7Iq=4_85|~+m4nPNoVrzfDPyKslU?iCk+}AhMCeX|MqP$de%@UM) z!ek9WzmqXY{;4kKJxCAbQLTUfMw-lo6HZNK>7qx^A^ryCAqA?snnC$lj$cty{nUv?}3EM4>?ST-tg~t~X%V zB*XOrM)&lCPu;R`HUVRmCGK0;J6q16zLOzhcf8KXsN7dzi?U9{qvD-GAXrw{RUH{t z;iS;4e>^+xwoPML)0|KO2#!$LUEL|>4=Uh40}Qk&`c!8DL(0cJF%T1HHA3J@CD8>o z8C`SlpAhs^W48prfpqN8JU;6Q<8N(4U82m)=?(ep*s%|*&K7qLUSWEBhaG-T zOgb#!@?gZJWcQrPehhe}bv}r{^Fyznx zd1R3;cLdc74?6soW!p|_{WF0rrGZsCu4JUQbXQ$!z8ixU4YehS>JvmPzAK+P@YfkK zO}dcrG5& zWm?$wtcJ5^%`D*fY|{^wc>FdL4OT>-NIPMHoSzlpq2*qP(H~flNtXrr%K{ISa7228 ztjVq=>MgA=!4+Z%Mf7rzu%sKAHlh9F#5pj3RPB&F;^;F3Fv|NtFy;9do%b&K!Mk51 ztek?ziH~1#L!J~-0T~hDWII4sdc-8R>gwa9D3x?`PC|mhP4@RvZ_z2)GGodmvg4J>RYw4={*04S`F0OPHO!qWYm+o(Cq?a6pl{J?NArrVm-L0<@N5 zKbD;?Oeb47HS^3Wp_j%s%jP>or2+LD43Mht*`F9Pa1I^F19d#d%I*M#=Xi}}>jDJ> zp&F_mAU&G+H(&bCE`flDcQj7PBzwjrk#4giEpsHoE=)WN{S#GDPHz`$8!qx|by#5C z3q>^nZS{lwiMG$~DTmlZUNa#(jZ#-%7Wl%l)EjpTdYqSQ05=-X zTin1OiU>axuH3&<$k&x)YoytQHobk6i2VN1&qS0*(W+$GIX>V%ktx{Qqma9G4JUUx z|CHw~YJ!#eD)z9P5`oxd?vPVYpuBH40w)geL*J zdg1L2wJ-UJQG_SG_DMJ%=VvM0ge;7SxZRmgGo}=H^eeJ15cTEL$-d<@+Ie53# zhC;vPC%tev5iFOYF(7IUlA``QX`Jb8+v&*9V;cq-@6P(BU)8>ofJH={4Ao`)_Nj(u+1GFtkuU73@myE&WO(fw*%=nM5lmn#6!>@nE}UWBKY?M0qb9u>F4 zYRtm@8<)+?U5+RD_AJpzVm9~2rMed7dZw>d8}>n{mlJT@-bGdpBsG8X*|U;4{C9;H z(=G(HAEj;z;v}(WKyO!F`|eE@NCu5($&70=hO5-=dD;D=q^(au{0zEVR<2U$u=SfH zx#N1hP~``}<+Nf?Qo&b_VapS;Gj>~E@6*{+Bx}=C33UZmiB!oX`u51|-vHj$uV;<| z7aJ&A5y{l}yjU&YzEUFhv%4tJsOCSa2nWcBawZ-ae4COpMd6?(_Ix*)9%z{6ir~L` zjyw=O!g4Xo7lfPU*Bxk~?Kc4RAnS94m!vC1lHYD`(4t@*>Zu#h0lD6#$7yv54^nLw z5%2{igH8U)7;9d3u@9pdg{9ufcRw2{&MCaHMAM)Kd3qRY-AumW39yi$z$V$C-=$I! zd1LmL^~U*H9pyf^XL1-*OVs8TMjcMm9}MP;wYi#cp(nv~rG1-@{T3LJ<39P)EnMNo zf!0xZHt_+%A57w46jupK>dIQY7@+t+m+E--McnD^DVkBj|K5lUZTZ07rf`$((MMVu za~?qAV%OwX8BDKMv9D5(PSXDuEkkV-Q`x#z(X%!#<>qAFj}m*(_l;-8t|;91PcV;j zq+%>kJo-+5(jKz#C;tS+r(Qh0fa;i>=ToO9zHiiaPRKjlE{6_b4L7}kTuFvfpf(fL zbeaOdr9p5pRgUM~vi=-xbik_!C(A)W@xzLCduwh?50<|#C_xN^h$A#@y=d}UW%MY$ zS~~gYM3;G8lN@?3Ed9-9*~1p8j2LMP>jA3pKIhB)`&M05^-FHsLtz`vYZLJ*@o1oa z?HvrbIGvJ-Dli83c+xHXoX%GWnmjqFLGhxdU)~;l4o?jAd&4uf08y?A$T2LFNPBAM zBKH=zN%?ay&@>xAvi(7+jxXg_LgCZta2VsmhrRJML7_ZAWkoVdU$p~WY2?_U)t{LL za8P-e>t&a^D0ua}_ir>@RjSFkXI2lEJEVC95K`mp#j=EG7-JZt{*YsE$~#HUsb2&* z4^2i;YhxklWDrVV_6D$O{7B(Bx&t_Ic|I(=JY}O2IXp{>eEy#fM>6oDN17B8oinDP zo|-yJmqAi2B~HEYi7J(;JpCZSX~};^KAzfVZz3}c1tr={E+-;LYz!oeFb zgd6X?q2j7i02ASYd}OSx{}1%SMN0)S&)(drl07TqH*G)xwa-6f$TCA38BrLM|C}0W zb>G-T+&q!Z?5?_cUWBMkon`N+0|4`5weyzlQa*>hCNYYZ;EVlJV`#uC&V^HBuWo9> zveeb78Kch&AN^X-e-P?r6nf2Oln^!Ged4sJY}WjrxH@^Ar#d5-5ip%rFDk8`_AWSF zJ266^dSmg097FDQ%*XcjCD}@sb3NEA$I#G{Rc!CUfMNm2hkZ0{7KIz==^N~U(9DEL zmI;DGdI?r1Bh|2u5e?SH*yU7_#TVHbDtPEjmwv7dE9a3v-#rW_D0l-O*XMKlN?*pW zwz90+n)9PU=fWB>Z~2La%^f{KN>OY7$b@`eUAdfi1e;q@f4TVv3pUEtsD*h;?2pY{weuTstJ0~K!W|{z{Cc_*RK*Gs~=^YgEB+le)1<77q0lMe6kFw9# zyS-?VT?(ClFWqR{@$v?Ux)qii7&&sB({;zzq*MKF$Pv!V$twK4N$DfI^Se)DMpsTe zxJHp}G_APmj|w`&7Pkh4??3!#T#-@qJ#~vNgg!?P8}@WW_*rUuWQ?=7ka(DIOQ=6I zBV%o!AW(GMSXm2K&`7c_CS<++>Bw8IX8}ipPqO>(LHmathV*;BHZtOskKv+$0Z{eH zWZi$87vb#-Ippq|gXNQ?w3Cr~!S+WWRR0pC`V0O-VgpCOVA+G!qhIWgotT-L-p)8U zL%XWhDoT=72sKwUO;VTEf@9H))W2V&dcM}{+$x-|EE2?c#oq3ztcWxQAMffJk`}Gc zI}+{qC2IF;2JIpL+gQts#qva11zk{F^7GcmPksLsvX!C$1kejP0^#)Y^`70XnA^J* znAfH1k*;WsaC?X6Q`UjsBBT={{ykdgJdW|?R4vq z66GanbuZ1q4D~MvDKqUBjPAA-9LDxpKGzF5468Pwlf;x>vP>8u=&3eqpuCQ&qm`B&9LKHz1dj{3BwSri z*K2p2AV4>j9x=c1nw|K#laTU`kn919?=t%1SeL4ZdoAz{YvSa1-cwkh!@x(K8hS|I z%Y_H)g#)P<{U-vCNQ;LNrFx10{#UaWm2UTWKki1x7O$kpxi7khXjqfdUnT0!*tal+twXDCwCEs2D0)3G{Pca*Rw9@q=CnpQ zY}b<39uq$vLtsvYVndoiiScXu_TU8}8;}e|vE?S=hP>4mIR_4&JGDnh{?zoQ6y1Ti z@v{WHXe2%j5(d-Eh62E*{pd4wzERyLk9>4=2S3;r#aS=Ogaqi$mxFlJLCVigl%FCx zzfqj7Ry2K?8O=a{aU4yONNjdy3c!??+#&^0XIUoT9-pb@-|sVey!Rp_I~S3<`X#%1;qa>JG2UZjYIPov z`7R)XCEq4wUa2cv>yELcFW~p83qeNQPj$H{jXjXJK8O9@`JLjM7$w(G@WaxITH^ZC zdmWzzwb-n#(P*F{~ip}_Hbw7hP?{2TPlg{tKK#Q-(* zDW4iSh<`fSG1}9pTKf(A;n2CRNM7EheDtw8{*OGq9X$%7IfMG@*CvY-7xlc3yK#!k zZH|O_6(;s@LAf^Xa!v|6+fy)ZXh zya^x!jh)dwEqWO;8{G4AKfLO4Ep(3oIJ<5t7uh%QpI)Iz7V-k&d9`YpUyuJ-J?Qub zG{F86g5i+6A{7*z^?WWi7AfE(5ptY=goMHm17sJ2v$&&{pTuOpMJ>BEPV(!zTEdY> zGMcRhKh^p{PJKVPvlX$kR3ETm&IxV9Lgil_Ez`a-6{gMx<^6d1Z#>Cc<-aTtJPaYl z`0(lRq8>DAYDLGZ_;9Ke5@dqOC{q%_M#d=xZI7c_ByVyWPGJwl5vDyZ|}QhFCMn7z4C` z5f+DNf(l%S&)A8{kDWJf)mBrzc6phz&BAqga?5p_4v3kzh^#J)50apW?_4(3r%~qo z1w2KeAdC*RH4++Q>WqGm_U4Pf!Z`@9>~6@ycV0u}M+NtUwQ#;v`HgwddV{Ry2R!`Jtk@hN%r2)^ z74Uz5YRzPY5`Cd)h~dosdk)DkI%SnA*~$6xH*jep0omiJG#NJf)KVoJFT88QQj9_m z20Wg4XVUlfYw5vUV-EZBpgZ?N*xJ*&HGddt5<8ATq1>k{<0lYCsEfu1Qc~`VLV>$PIjpA6 z_O^_|Q&ALl?f3Y3dE;CiDsd|`PqdAvLPv!Tyt674jC4Hq;{9ekEI|PCwJu>r;f1sf z>VeuX-PMiZz)Y>6PhIvaqUO*A#aAp9Pf52Vr`{zw^p0|parm{SCF+*l?XoJ7KB?&D zft%)F`p35(jdSE7EA;S%p!ho}E$&;P0*bLUb}0x_kEiw9cz_$Gyfjnv7KO-=`6$PJ zk-%M?mRBxWa5#}x{S`Iu<@Ku~pr+4*yyxkUh@n9N3bKOQSh78 zR6in;zoQovxx-sfPnP+5;^}K$-3Y4BmpzvkS)ME$H!<=3BUKf?2{+;z8Vs=YNX8eX zpJXj+GCrp!VGbqOf&y!NRZzj1Abf{PZF*Nh6Ar43Spvf-nm_ZudbxYMIO1fU+u0(8 zPG;xXyOY&_S$7BK-{9#9?Ksk)*R8~ggIy%_@R_$mcD_Ci%Q%{kksZ<-n|U}bB6eck za+-?o*?XZ}!gbQzR;Wk=ifYW#sskqYZDLmojz?=Oca-IV@3%$Fh$q{ZJo_+J6vEGW z3uD@WWV%7=Hu*O~1o`63>7nLwON|Sz!MQhtU`$;71xBA5ZBasftnKvmEulYhf(c zDeNb#xlECH@tC-ii6(O_u%3U&+4v786w5$Q-BbgWGfe%)2-LO1vxi0AsKto&7Y7~< zfVx+b=zJhcb4p|1x?+BYb)vs0&bwNK0#7NjV`JqW$DCt6E*0vKA<{wEx8c*Yotnt zeB63IJ%~D0U4S6T&ph-OO`6C~Y(LfNzoI!hth|A~#UwdPeHnXS(GyJ!=Zp9eHuApW zqB|VHDh%S^Mrd`Y%kDeMy)n@1mAf)7`ihGeNNcRn^*)l|O8pyXF5Ig1-}(axABg&^ z{G@%uLdQb3>yQKNKVaG}wZeyKeco{iU0_^olYr+In?{vMe@{8$3Gle=HcM?kJ{WWr z5f}!qr*B!FeLj6Fg?yY4!EC~SK|bnj7Vr8}4fP~N%?YvxmIjAWoqx`1LY@uiikaU1 zYGzdTqEUz-8}Y+3dzRp4>A-%SroXSw3tb+FIEg$$n@IiB_;<0# z#B0+f7{OS80U!d%&Z!-ChDOs5{Y5NJHlF=!KW3BgNCMpEVZs~szRphgmum*iRPth#)jzo!f3D==Tw{5IK5#J~#I>;6Cr5cF`E0GY%Qlsazq9w^M?~35 zXc=^>VYsDR&WqXN+*vT>CZ1iabO;He8;JAE4Z}~H$h-N z_Df8L#$bB({H)a2@@`32DGe(mOQqlZS{!-W_ww`Z`k$(}5||8_W29_beHP6%rQPhepU&)MQ=ft12iMN^bxl`nz<7Yye(7O9 zMCR{$7hE_Yh9jz<8&j8|p0(C^lW)2srcp5sWM!oJXuyxOqTj-%8OITXunOP(LjiiQ zZVdM!$JsLW3)*wL>F*4ZRo{`;s5#HcX;;|YAK_0$9*JVz^OZ#a%42}gYh!@;J*|A7iLuBzQga}LqAg89^AE~wgTevWUVqXD}PL?>KZmu7h!Png~9=pL|SZSunRz5y{@*gj2x90gVA=$j%t1=W2 zr+|h;7cz+QRIl8&X7eGlzqq2i#$f$}cH&FDjOoNrWowsBkEQodzkxi@Ws|$ds`MU% zGG$->+onDK8+hm7(08{4tei<|P(c4tIeSv4mqA3Fa@r|Bi>R&Cl{YY-QgE4a8VF@N zirKSn??7zb7Q0lB3s*VKLL@8jE8M(|e6D68Vk6$k#G5F;ejeiA{P3LH^&g1mOQqZRqX%UJT^ha@$L`~nZS&Zv-k1$+JX|n~11cSMdhf`kN_*@dcR7fPkTkKXj+K)DMDzvf~+B`v6nnig2|T zR_V_6zp!)dUal$Q;-P1y#>SLw0?!*iP%loBPa;>(Ux~hCbhL00k;8gZO0PW(tgkm6 zXhr+3ioMBl3c{3qf60Hg>epZU`O&TvG3xQ>`NK-mI@wmSuqw(~(t zvZcxkuzhNRV7r{@DJ5^sak@FsW-l)+Ep~3&o5Z;(VbJs2qh-C2z|d*p z=GbVR*+k2lS)0p{-pK6>`7ukdCpBKJz&Ef}(oD#9q3@^ee7(>|(x?}+2|e{My6oev zr-a<(PyA5uL54%lVa+$jdXRaz^7fjG+^37FZ_#r=Yx+sfJ+!w$UIYvz?vposW`F!G zp+V#PKzeheQbMj!DYcCE9F>XPT|JkX$+$;-<^=+ml)b%vxbhm`IBhOlq2-074Y$-} z=PkCzsNqOxdY;H<(=@k;ZF>{9w2t=wM*Qo|qtueTqWNm^s=N>~|I`#)(zWEwkOr%& zY)p~*AhwW&>D@Tby!hv(T}~~9pJWaA6h_e>w*|Oljx%-s=FuGKUIojz(+bxi8BH-R zhjyhuvriZCX#N&_pT`BV?{9%+5$R>MMc_<&3E0FwNH*bw+lKA)b{!XJp_KfQMF5;Qp z?Iml!p^?x07$L085k$lDY97kzKihP>b3YM|bqs03Lw!=Sh@h9jcmNeXY#-XWw!EwS zSR{S%u-kaEDL|JTx@P_TRMNdXgCCZm4p8}fe#^a!72p@XPJ(>anRT8b`w3zv<@fsQ zT0-c)&ZVHIv3wUqO4D>-t3)^@Si!0Pk}E?@Qx>Knr}f!nx?W@A@Oy?u4m_|iG*r}R z=cN7g_vu>$7PjVHJf^?bJ{4#D>Y<`2B!gU%+3PZVNtpY?k=F#*8&l$VK3RVy?pT}W zYt>^P4fVXumpNka-OB8$$G&{*WqSEBbjrZZD?#?JG$(fi|H{}W#? zEp{wW;KdwVP5x+jJyIneA=$q9VL!E2P%eEvMENc4)rXT8+$NK;N4>ZKE@nnlkr zlH_aaA`vkYuJdJ9(?wgSl{CwaPY?sUeVVE@_2j%)N=Knc57k?)I|NoCUpNX0b%Z3~hBQ}Q| z(##>p%_+)RgqU)w943l($B@YGl^?i=wwHY3GA~n3O?hjbxXhnxcj>GTEDNRoy{o{V04Ke=ei2`e2s!M`hj7!j+rON$@V{U-qGoU*uL8IP6LoceH9*O%|W7@JY_79 zh{o^9%jeir7H4*LGur2iYyxwZ0}xb-20^?~7KK_r!ec49jDqE42p>NvX1|PM`&R6! zcU?btq@t^y+NosmpE(TAOdN@lwZ5V~`eW<0t68*W&Rm)Iw9LLI6%TA2H_Y4wL`S6! zU7eg7Yw^t8MX^rn?ieshcCcFP-n(K6*kb0_S;GRCpe@zL4&2aLKd81w`c%o;t1Qu! z2JGDP`1@5!FPr+vlg252LFO5n2hIl)Ar1($k#lg)c}_`0%zXH|OVycVoy(X6M?s>KQ(Z(RFbWsJN*~AjIxF4JO&g2MgfX<`T(8NjSeV zh=^N{y`ktEHtK>C9dnnbvA}o6e`}l ztM}lK<-O7-a#+Eax$n)(IysA1uY}7_O?7!-pvlZQt3{y#@`sakTQdt&xj6|VJHhy6g6tU%gNv)>;~ znlZ!6CdM4Q-HQtn>Vt|~Y%mfXA$8UKG*L(7edb@Y!wYV;!&xFFuG3n+kGzTI=zZ3@m3k*L zDVH0XQOs_Tq~$J_k~t{m$RU=>J(jqhX@9lw(u<1@^Xa*SsN(=vIxaIPBq7o?>Cv^k zi}SG;WU~eaJ3B@}B7D1J>5L08-@lkNy$CF>2^P4zbzexClT^wxI(#fr8{Hp`7+0ZY zGpPmMQcncxk$;R}tnE7XBzn@TmfIldy0MIaPB@7;J+Q)~^_BYAtFJLH0ZL+hUGL+* ztbBjq!Py!GxQ~IQOxTt!wq8~$qJ*16C~RZ>3dTdfb+8{3YR;OQ7*eej@U<=0!$_fz zj%*|4w9^iqCz)^#jeY|9AF%A{4S>&$dr+KcvJQt1Wit@9>3$4~p&x0m_NwW)i?j7x zL82mvUH4zs%iMuyzyK|>HDGoFA?eomjU2P^Q$nkW@@Govq?SX5xY)(QS8>Xe6qlU! z0Ej~lZUD`a`O9gt!-dPU8Xn;n>B&a@Rif2C8iPr>`XX{TpO9F^$JHFf{h>LnoJ^M& zmran``*B;R1|SR1G`Ad22@MUIk@=Ejbi>q%t+Fq-U>T;f?Aah$AkUPAGogk8GCle24JnvOUr$no6zuO6uWxyY z0-D)fs$4eT)-O{#N|2Ata)!$xn;=%0tZP8$%y*G{bhGnBV@W!5b*4Hm(#`ZD4&gzF zgT~_a9xzm}JZje6I3o7o>A($zAN9Idk z`tZ~+cIC(H$PXWi?jM{EWEKV@t7~?R9`>Ca>-!oGwV-c4DP&Wjc^9h3b=SflEA#ME zVluSTugA9No=5u!_mF}SVDj5!!X2&4zihY-(v+roI`#eQ}2QnZkYjIm_kwQXWr=X|WiVL-5OD?1krq+Eac$JWd=< z6yZk2I)BXjVac7Y?w`f1IPl@Ny=hq+BCYJEXRe2E8vVq?|3I%l&NOWeTRlU2IuoBs zc`gz(X$N(VLLw;9Vi1TAx+DC56`1pK=5b3;?3fapcOi5x*%#B~|_DdA?VEqj!62cB$TyQvfyk;ev;0Umm&Z^l@KP z^shd5$CsxET5Da-e3Eev4yh;e#+`>;52tz8`Cak<6-0?Y*#mO+@wxr(`rzB6fif}@ zX+hdt7%wX*$@t2S`C?={{Oa#bklm)gGiMrm**{OWw2~$#1M*$I^-~9p(f`57R#1^? zu>RiGOvj$lYy^=96c2ELbis%CKb8e!`hg!zztQCfnDm1Uqq!KNl(u|$@E53ILF{N7elAXsfen!K*se^X=WVXwd5kgx+o0`W|JWVjiy0z7!^AYCUV!uiMn$1ZkPQ1 zMuKLT8$Mjc&&*k*^y(&b6Qhk+k0z}8W{w0;iPYx&R1J@A+NoClK&i>cai__8oDYX)Ak184ZjL`wspoSFo$UvOj1Vn8Zu+EEga~s9?~6!6aVujt zmBR%R;EGaw@kX~gH^c1v_>-w8XO!TG20seXfDW!h*A4r4$j$GBP31dXFn>)Ns4M3r zfWb_avF+I%i4&#p5LrV|8_1h{)A6$Jr`N!i3^Y@*L|-!t>+{t#;p`2H%=S2iD4-`Y z;XkYYYwid<7lPD_j2cR-=J!ckKpn;HuieOdP+-{(RxEM&7lzyT&a2^lHY=eyz{3bu zh-F;69B{AX(gRX>0udm~U0Z%o*8?R)WRi{|FWA0%!q+}x29Lm8e4BlhiHQA?Kogza ztz1konY*Mf1 zo0IkTq2Rshh5_;9wG$okY1!_eKM(4|Hqp{b&59gXoyD~DjPcNW^-4*r>0)$1Wdsv&w@lCEXfyP#lI9BmlQ}2M4janL zV-otw9%FO;-h|a3iUu_vjDjd`SAH>_0r`Ohs4qMOjt;7Fy*_7a=fDMOv7?noj@#2y zfx<3;BI(dVE4i?j3l5~l*JZr+jin_zJjP;Q*)xF1iWMqwTiE3v#+fz7lLFUozva&lfPb4$X9uB&FIM>C?~|4 zV0k~9VbLKy-nJ$;hT}YGp={iRG5@j(!#NJUApCRt z6@y3lf<88y@Tly^FbRFqFUB{=liD253t-@ava<}E?P}uEJ$jkCKt#rCLyIxnS)Fe` z>)J^~qtWLq`wtSypKCp2&u3^-c>i5b3;&U!$!)uRuNO%j^RCy6tbcmH+Brn>5B<6H zT|P#u7=P3odp8n=k#XP9A}qo+ue~$NE~J2(Vc)*U&c>{ZD#$XEx|-+Sz%P`yuTT*$ zm*XjhWyBZnExcW|-l1|2LR!%r>7)BKFJa+l9=)O<5(x!mYDOEQo_Kqnakoc})Oe%S zzN?tr9L1Yx2$O@geg&C9@Mdyzc!Z5sw194yd{y|GVf-Sqz3~37MTrZc%l8t+$OL;F zsKwW1?#{$=uw)9}o(`(^P7k*vI>&?W0-Hgj4(c@=(p-um#}g0Zx7VXEABXye7T#z{`4Ed+%4DR{am&ibj*~A4NA( zu`cEVK|cO(cdLh%VAyNn%h`zFt*!LImZ^I@Jn z^p|11icf8=8~zjf(8=x^6%7tzJDhv{5T7fe%&{|AAI0Q0bghwok#+a%~F88pLdTBp%y; z=jg}1Y6o|t4?`#5$SPUn;`~C%@jBPVByQ)t9f?vDY(YQ$dL10IBTH>qi047APdyXn zz3fZ2kN0e=k}WyHXSLm!ZS&v4Wgu+R&8Mc9k=#Hj2NKOgB`XiEIDT zr!v4(MEB3c`aUo;#=AbS*E{5wSPpkW_6qODmCiGwjZVJ7&Ae;_bU1V}lxm**$W5I& zM<*LFmK=^(DRsL!a794$?traV7a;X2aU^sx*EB8b@@gF)BNs3!jYz@iMPScKx>Gat zW0uI2gL6w^G&jvyE;SPUba1jQFPAkC6)`NZS$w5T?neT1JVMw9RE@<_O%8kQ@NB4* z>}_xI+wlsKXQN8@me4b)PT3Fx;W}-(6mjZ9?s{(c+(gE}`J8)gvYH+_Azv5qXCqHL z`3CfQ83|NGp+NDPeNN6Ujb{u|L1JhoL#}Y_mLH|qe_*j_{Q2{oPOzEw+z!r%tUF<0 zAlcMrl=jKw7!c;oT-@HYkqAzn?~C_cZ$o&0Db_iGk@QC6*2EJIap&(KhF)SahhWEf z(CshHw#^gP<|6Lmh?-NEm=FUM_N&H7ovo|y5F+7B!|O5Aw-s+?#fuO+3@#?;Ersgz z!kJy5|HB6cI7>W13U+8n;ANt^<9io?Hr7V|3wFq&PXG^umwCOvf&>+-?o0F$i59Q^ zaavr;glx`0KhuLd4GU&F@!g+}E3!z8aLY&~unh$HlZn-N@^ec=1taRys9WKV5`+}@ z33X_L?$c)t;b?mZfOl*aQ$UC?0iT-?R&z|apgQ!|&(QwgX z<<+qg)JMt?knS$IMc{pJhJe~w zh2a-Pa&q0_f6$wXZ@151?@qT{2^f{birVS`6H>h}7owc}0H{^nS~q=1IdsH_Ti(nb z+h@fiPnd6*{}$fMnXQ?0d%eKZo2a?Ql*nJ)S1%!-8{?DLVUHr&gjo0w3tnTjH=Ro4S)}7af zZNaJvApeEE(*;$X=|+l`U~C)!6}ZKfApf)bzEm;r3)T2}F?Fshn4gq)r<+vBtcvlv zmx7&{st~q;_201ZRui1gPBuA90y|_$%41>CNkJrlF zk(WfQL105xxkXoQb#ONujl~r&sgt|D^h}a%#1dfY1QxF$>t#I@70EbnKq2EwN|8ta zf^B-u`9ln*^F}gpERcEZJkr`N|?z0IKC8OvPxX)@j!3d>AHD0iU zXaVn`F@FIa;QiOJTlAN|i1&_Gz2uP$q&Te$p6WH3`e(c&hKA2Hey6&$)+m_4a?lrl zKRZ07dP$4?RUMW%7UT8IV#RMQ+DE|;BRP64Q95wKveAyR2les!mp#&VqIa!tNwN5_ zgWG_oZsO%9l5j3`(Oa)Zf%8A=8QYQBCQas|z@2)+G8*AGLr1|uKtFY=_20N`o_m5K z%o_%z3j)tT30_8M-xV``dvMWJLj2b4xgi=G>7RtFkH3qABtDfof?9R`pfdETehK8w z*>T-17B3L%a=-4uP-x8Jg7lRO&nhi1dyc97_D(hWF(0gI#7dYc?+s{^??7{$ouAA# zb&DUr$feG<4>ToY0z;|F=Y=9j@nQS_TAF6<@-pW{z4t^_9Ze(;wwK8afx&XHQX*dK?FMZPLpF)SbGkzR>+a zWW!O3D;cQCG0r*j;5Tm$_sVasS+y#?YSO#cbjlWVjT>-YJJzb%Yv|-(y&-!W++K8j zZ1PSjCNoe)sBG_Oa{aCZ`IdUd;URW(?f&62vDayp`)7v(-(ObH0D`;{7|YQMP375a z{pw~CerLzZ5)mTp5QD(X{u;IM@^mZK_Q+YJ^~iEvXWv;{sc4l6A>nf5GWI>B0R;vn z(5tumPs#WMj_`UwZeN@%x;Oj@A6Ep+mQJ>DSnn!+F&-o6xEqRROG+l#T<CS09F%_R*u`7r3O8KR#`<=XzLcsO=@$W<&t;MK zn`XXDI=JoLhdg%kKiP_#nMF3&r%LiMd~EVvQjM$hr{6k^pPgMse5UY&o>qv|uojsho9$Ld7F;Ro$>uN&nypWCxjshx_ifezavp^3D| z5RS}&)pst*6Aw%?J-tHJdsCC|5)$IOOT2)>;Oe2RWnrlm$@X3~sy}?<58seCGG}g} zfd%1C?|+V|miPdz8sXlnRP$1HxRw9k3lbONM7mY@c%ph+fsBK!UL%d_`i{#ebTKpv z1vzrk6d>xAUyC*gb%Oo9S^6lKSk1+@m^k)5;i+Y=-5EaprUxwUwr_nt(cYoAbObOM zqlKTxHy!WXi-(c`zoNch6|>V)V&tFs#W#Br;y7U4;)U(9joEf?vP1;cs5B)eB#m+( z>pBj#d+9tKC@dkP%H$-`rb#xQFShL$sn*h@td2bS8PX5-#k=7j)}2bvOh60%0s;Q@ z4{C4-nk|uCT?h?tTe7-LH9~MIawaUiwPCqj`;(sS+P8=8+2l_K$8%v9rYew!-r>zY zB%zD@xYX$C5o9M<3^5?VQntW{Pgq*$ zn*(OoFn4@F(msmsX<=iN&(r5nS|M%casV^4L*Y)B&>stGLI!ASJ^z7Of~*nS2=DrS zjT2ku^6c&jCPz5%z!xdRc;Jl;Lhr^Jrd^|7(zkArZgg?~?tm6u%dRF{R{8adi;0JQD8G)h?#nZgi-!?<7hnSZKti)L z%PcDbcHTH~W4!+J(5c7$-4%5!*iGpq zxf3+8Pope*uM2qlKk15!U~x?)rd2lM{}bztDZdLb)ZL|RVhIqGPC8*E@4l5XE2(T9 zhA&kn@e8(tOZ4Mt_yHFmSdH(aMUm)=vGz|-U#XcJ=|E*V@BWQDJ$9H9To$5;V3D)& zWlx!l`OZZl zP7pPY#wG1A_sZNEL`KEBvC=0h^4o#nXEJDYuc84gVrC+dVCdSk(MS+U06Z-3INe2? zdwT_IA-7>;&kvHd)mfPUe$v;f>0|`{|7s|FujFJLfE$xKulRfD!R3?@GmQ@BiUvTY zdrS~~D7v^vKpj+mw_UR>#6n;T5{UAMv@Srt44?_88sFOMN_dlU`~&bEbQmy(@ny3} z>JFnVR5C7E$nDS(1!Y7wpeSBvteD4RRE=Ih2t}6+cFWT;56nZkK=vv~Jp5LkR1!Rq zO1zkT2SJUW6K~b%-UpP6&KaURT)ady{OyPR+PQ*Fh0MAB+_wUm8F%bYNM#Yj3(XGS+2`NQ%CugZKCX~OrC}FPhOF^C zgvPhbgG#opg^G3w3#l9-Z5nKzog4Tc%n1$ai1h+AL{$Sd&Lxf$B09}&5cC!Uh-rRy zO&OChf=lj8cq;C)*BgO3(mwTBhDIt~f9!$gh;!`~fP9pH;A;+pQqadL?g*dhS039m z(e&;n=?tkPh06nqpz!?3-BUM$*sO)hzc_xUjg&hYg~+Q8uz3oehH zLM$OW=F+3r0yqXE66Cf?C&uG1_{ir<_@d_Hb&JAnANxEG^KKBxhJUOuEHD-Nn!Bmb zRxl?UGn(^l@)O(qKD^{;Ja9gsZHup!uMtY&5^fDVOTA{)sjj;TF9DLxH8WpO*Pkp( zb_tRVm7D*Th;0mC2fnnI(tAIs@!PvdiintfUI>*AET*Bls}^^uWKGA7Pay~xCm%P* zqR$cjQP6h}?Q9dam6(4Q%4Cw-e08Uv@9?U;EMZTt7w^cTy5S~Dvl^s~e3=f4bq zfxhO6^T6&&rI~U@pJpN8D0YcRLT~pw0hr zY;;socsK%dZQ{ACZCr~NxWfR9y!QTuz|}_{Wf`E+YwFzPPLCsV_+=h~*fuPjR*=FP z-oAV+1Pdn2axyaG(3L4xGWadMmTC5)eyiU2uX1<0Gb8WJh&gxt#kZ^$KlZ`uvTSg| zPQq+{)cvn25~_Nv=MxitRw4gIyw7}rWNmAm{TlzHvx`Zm7dt8B7!31;5qX$e%l3_G z^H^x&M?+WbZ^`PlAbacxr^>w)%+5GFsB3+%m`}z|zI}eT>shgncl$};lL0b?%8OQ( z0wjSws8{`qn;qdyI2;l7PODy1+vJ;>vc?B)SQzeU`)xv+#+_>bwX@az>P>YRtKE<_ z)3F+B2HNzd-5y;(oEo@lbYVK#E*a=-@1WO@CS8mLcqwdi>7{b%Ele>f9`LNJr4pcT=a@BBMSo%f}CJ zgrdrQyfz)$<1wFh)v^7?%+;yNUU#?oUb+A)lrw#=&N5L(@{!{ml(Miz314$7mcyTe z`mqSmH5kHPKl;_FKI|cbWE(+MU`dy}2^$a?VEm0psd(2;BLN}CTjjV2>b+r!8KJPb zB4gW0%7@kkw;Yu=&sa9eH5HRtjT#jtj-SGA0K9S*`=qVW-X`eI5&jp%2(xLx?MimH zAl=RT*rbnk@(Ut^0Bhi7Xgu{5I~#of&~7Z+|K@TWK+qCK;8nRy`CD*uJgI%(U zsa|*?Ugt?!^uq7gyI0y~B;VNABoKKHUx!_>oqfC|F+$KywHNZXopuYwt^~TS*%1PG zae_IpdH+@1L`PQe?QiA-l8g&ySZX81i5ceeel^XU6tZLr!`g7vf|D=Fu6->=GH)2I251Dp%*c?MFxv_g`KxOhXW4 zQq9qH#L9&NE`7G0?@etUQcKTzmCf`Q;2d{xzMfGO44$r+a1M}HEWo-S$abo7 z5n_(KXn*h~neoC7$6EPdHKWsb&NiXr@iL;^U}wRjeMQ-M<=I}B0~H}BL>T>-IF^Xu zi)fZfl)e3DoE`Ega*juGaq&)76atW-J(nG+dZev0)FZ~TaD;!6oo~*j>|AdQ{y$k+ zaq?s>u24s`iD=38QDSIFa?!#(lo082@>r!7t257Z@zJM|3w!_FasBmPv%@Vunkj8i z30n?bt6o`)Xh3_I*Qa)G$n!}~kVHQ`A8)wE>*+r-<{aPik^HvK@|GxqEt@T2{llzm zQUF(f#+!#udV;Cd1TOU|$_9Jffj|)o~%{wTW zOGqb!HOxj$gsrpfzbk}ZN9@vszFu;Y9HhoukK^KbxSkebM=T$Hu>mC}?j2Y1m-%AZ zTgQ4TfT5Mv0K5yrH!$H-DBR+fHsJm0xC0^Jtv~URx4pE9SmpthQHDB9qcc^yy~38o z_~Us2ieA-BSy*+M@_R}j`6^1j*^xb1EJ?KkXx4unuP%Ec#h(%BO9tR7`i{VZpC0c!M2tKCJJCRUaHd07)|IL(C+zvxt37Vf}F7SnA z`bIWi+_efqlt%0Aj+j~RgSSXa{ycxx#ltp=`e`n+=iw@-YrH=KD#|Ie_o!^EYaU(~ z?Ln)6$cvOY7_o6KKAMA%0)+UtDR&Q!-?Z?6G^C!u1VnVlPZW9eJ^{2FX}t;Y!k4Uu z?mcLpC&lArKkil~xF^I0WfF~{MZ2l>JGX2v2Gfb=8+*lQMz&)YM(QOc=5#)2W%!2? z$O8%>MS?=K1?R=AK_PPvrh^^PT)-6ix#8bH?vbRI9_$Z{4x#hHkBcmPU-y*Cktk@y ziP7;#4|6qNw-y$Yv%$KcS_ED8$9^4rS+A|J5&q~DNQ`#?78=)G*{nqf#uJQ~FacS{ z$9!j6v?rmK4Iu&;94Bd*$dkUHLXaZ&&#J(#8f3_n`HZ69OtCmd~~b>MZ8e?^4V2Fuc`Jh%`=R?v2Nd4A*JpliG~6s|4I@u z(u4efwwxQ$Nu;Y3vQr2`hRWqqd7Y>A9tZk}06dH72{F~nJ=9Jb(Z*VLxeD`RkYGzu z4{c{n6&`S!-kdb*@+SQ=X|d=Q^Xm6cIt8L7kc(LPjp8<<0)sXXxGbQy-iRG5kw^f` z$1@k&-dfBNzlEs3AFS`Ahb0{^Sfn z2*b0^unEJdo$_fvG=oyY(*fwO(shrtOij0%b|g%(60x|)5U+XtaTx!_c+HvzxNT2b zKDyU&iZeTb1q#&|FJP(lon?XM#ll8nsJ6VHrn6cHdZF$lVXa)A8lFgz zs$kihhsnGrR*;Co*SjnAO8Vb*jGE}CSFmgY^S$)*?)7`)M=Wwi&{bbEtb1=cv@ga& zYDYCBvNCDVc@OZva994&2b>F15j5e~tA7LZ_D%$>ID6P%h|87X?LtBSuU%X(?#6Me zNI5+7Am;W#&4(c8R~6Hz8b()-rhT|x?p9u-0vtew8eot0u;oNhZvEtckxTHn4 zvHyWG@zRspg2N2SDs~OkW6cggfeh&nEbn)8ezGZ{2r8t-OzvLyzWU6i_wJCNoD1f= znc@sp9Wm#Q6O=Ao$$-48z#fG#bmP( z-Kl$9%YyX9Unp+<7~7pq{EVFq1h)Ho(m{KK4-}U8;{MjX396Dpt*v1v_sGoLj<^RK z`LJrwDs3w$vbp2{B=rz0OksFdDdR5q1=2{bTs$|3K%5pX4S`=s=I2 z^kzvCSTQSO!t&F+^f$kfJj85dejf{3mqcu;>4@?4+^!g=-|bP4=gfNoR&~3-b!#e% z>4n>cG|q#hBriU|g@4wq4VJ3ePR#tPoYkxm){1Qf&I}E*Zk#f;W)ELP^{MuvIO{Y*N^CKBur?jNP(*u(>TDza5QZqfS13d^!Y>~^bOQ1Y} zrn|mWyt1Rxb4EFK6*9XAfJ^w6srI^@ax2npfrBkSD8vLrfI?{*=x3G)RX)QU?8>J2T4p;MSy1{ydS8;K8=)6#e4%w1PEJ8)knwe2mb?! zNTL-p^IMaVh#S*q5g}duLT0jqjSSkx?pY8tUf6Ek@xhAZshdhF6rK@{RPGK>A31xW z2%?!JYT-2&sufIQ7y6c9`+_-K67NZC08?>lYP_o4gX~KU*5*eswv%)htB`MO(!7AN zXr!9a;$#1O*=Iwwg46Km7=I_?T)Xa1b&PT;6ZSG2?x@Z)p@ce2cQ{^0GpfNAWM7j9 zwB3Zn32M=H%`-gZq|@A|0WUL|Nd_b8lgZaeLyfLMlDFYC&Vb7*5Lerk^)@sg4siR# z{8W~Bnc%mCov@RPH-Th06K$qirXZ7fZA>=XGWO8BAJO3vHDQ77{LE-3XmkFKL5D)C z*DJB0NA^Y#pA5S92Z^RgCw7-?=a(nvH2*J()aXWeUQh}X`ZrnWb7OJ`Wv}kMw>JWm zq_W@VVb8KbIi;228>t0-retp4eoXXosZMo?-BYQA0f)l4?t)j!gM2IwpGqkHRKN_L zZ?Td?eHH+kUPxo)Ne=d>I0xG!&GZXzA{SWZJV6N=q3r<1aGYvcLJwu5Gl9luSuX>;v(!SR~BRA9XC6dXjUh}3(;U^%a?_&#X#z=hC3iL*yjNyCHlCn;PjLSNU{ab=l7 zYq&$IXcy?-oBne5K-d2Qmy%LB=iGU@DaPxC;dp;O2?0yE2I#m{a&^mrR&{&&cR$94 zd!{OyuK9PPhbVk2uv~GhTq?+pV!o^}px)O&&?wYBjnDis&oTQtcYbrlfUUv}+hLn3 zURW#={(CY!2Sn3kBY8yBsnvz!>aV+e!SK|&iDu@^pY|SnU#&iKisst^e~q~D%~qHa z<6rqse)w)lH?{plCe43EQ0YRjiADG8J=-9^;NE*30#O5NW=oFw_G8TwBTmXj48!Xq z4W*ZzKe9xUO_Kj4N~iglN9hitJf1YRn6ENo1(7F3hxzs9 z1$zac9=9*JL_EZ^JqZKDe8_tEe&=Z#O$2ESVN~pwarT5|fA?{tv70kTzuBIg`TfU) zrZbc_Ez3HZS9E=LRW@=lK%ufQ4%{$eZ`XQf$K6$qbmThmXy7rhrThs=^1Rf6E zI7nvcHRv8qw600yxbZ^vyU8u1%NY1DdOqp%G=QnPI%S-~Mpu3nBH48@aj#CUet^&s zq5cR#?$@DI**h1}{GScZix`{IBi_4u`_ryR8 z+jRr-R}Y9jXEB=)WM;be5iX_4yrWffejl&zpZU&TON9A8+1_h}iw(uvtJ`Xp>v`*M z7tgDo9ysD*pO4PQ?7Z>+W5A7KTySS|w0HBN7+tgZ9@zWM+e6e|UXW>b@bI;rpHUAS zBvkUY+~;#P{mo$g%86x53P3kYA2eR04(`7Q0FshH^iO+pcMtWp@^i-^|4$>3=I^%|>F^=^$yInWFv?iNR! zDpusDwa_WZ(Z3gLCD2)06%#;|$1f9A-T6u09|R&0ATsw8D*HMyhIh`eCA(bJ$GsEh z>_MvWz{FzyI3fdH^M+a7WHzz;lC@1bvq+wYn@R)v#7j%@^m^XWYjjIwka`3KhYG+~DxUYn>RwIvJ;*F7cYa8o*_isY1o0#9wDgZNeA;z2# zU+Tf`1b?kQ{Komvb`U+H9!s<;mk0duA+Ai*yBNBG!OsJ7wBj9kg$sJ%v z3WKWHUhbp5XR~%C;a)wVifq>JN5c>C;0PyV0WQA0&Ew}Vdek7yWhW_J4?>9^3S~RO zuP0ISbsXgS+2DjbqcI6R0`ci&49~&(m5@u1Oze!dHQ*`QaM`AzwBR2mutpyfrIr!@5bPL zsM-IFAY5<`Z-YQ1=l*HZ_UH6#x_I8VAI%1VDG|kp19;nUIA_=415I2?nS3a3!~Hxi z#=F16J9`gQ$is+9lEi0q*ug_BXrTs&zm6uC{(jFeUQdX}gvK3B{-<`n!x0_+r@cE1 zabh#<>u#N-uLk&)5^P@ZlUx;V;f0-F%8Nvy=y{>A-xEly@rJ{}>=7(GarWidi{|J| zPCrQ)HIX9xajKX?>3d^h4r7nqM@p#TcVB8A;4;_O3{R^q6$z`fyTCNj zNjxWC;u#_@B59R&B6IH@uFd6=1n7K;DiVEw+AmXHnZDy=k3#&6<4f}6Kl7=e+6W=@ zCVo7#6^NCF_}L}20aS|H7aYGEd{u@V+DFRF9YxlNygWqpXc+KrbXB&>Jx#ju`R6HM z=+l`y6mB@Ahxw@bd*~#(ixHTwscO&RMA48>ZG%@_x5y?IsfzN(LI|Lq{@<-(B>GFO2R;e{XP zI~O(fK>Y?kN7OLo4{1*_;zb>zNIkO*O0GbDRz_OM1?v*uqKsmX>oCgMF&O%8v88 zL}LWO8of%xy~iZEd-so7gWP;>LlmAugE(nK0{y(T#s}zrO{0=?nGvQZ!<3^4q;<^Q`%%>&)#TH8wVu%X-!r6b zP)CjrRFXKk%%K~SjPZJ%_S7NRWm~Fwj$UrZ%KbiP8(O=chh0O@oBQaa)Z1g5*EJ#= z;3&mgF_m2lnS)>ovixyf;7v$P;EmiFdxWS5n9>&wFVu8C7*)*q*^V>$s=}`MJN8Z) z{7qVE-r}S0`hY-yMMML+x3%)Q043$YME+NiBYLTV;#V=Z29%$L!5q~tK`S9!hxjpZ zo{4*9VLJ(oR^?73?M1jGKU>D@j^$d&xSBSj<1s8Vtp~OKPaN#1eXjmhUW9&PxcXv3 zmjQsTB~dm5;)9qKoaXxeUmDJxaR@)bw5_gGHXqfOY58Cwnpdu%zUVoC9yoFwn;x{A zS}9&x>+&{3atl3J6uBRMI8n(Hwdli4`|qsdh}1L8-JKg3T`k|nvXqO7G28zGeJrD4 zVbpkie-OQomKlB@u46!jdmbnpIQiUc@R{f zz5TN0dG3gdUA7QcB)HHFkQlGyAw8#Cz31m8=znisR;e>Bjd0n4UB#uJSAuGIW<)EF zXI#E)+Xy?hNIX%A~ zs!A1tzQu&$3ps;RwSOMMIs9i0S#_s`e?>zcra1%oF%&Rm0{+_cou)=Aoc9F<-?gHf zkUw%X_jKcxUN%_&#u8Tq1rt8Ht5xKOzr(u}PRj|3&9>JN#S=nJb}o5eJd{nc!l{5x z+m{%@L`QV}ck6Pd&gU%nG$n=B66b}t5@>%u^q$4zvqJ0=64JZ#Lnhr#7auj#yU_H_ zuq~`_>UESlH;AO(b7C~;_Hv%JO7U!xl`c(fp`&AQaktNyIIa*ERgL0{`Fq7i`QLV{ zA3`vjVO?;M_Ai?wb+jwPgidYKH#A_37m#L}MFvfB6Gen!$pdf$<;*#)Wt_E;26Ke_ z<6GCxhNnf%%~w%q5FoOz50qMb)1DXd#NkZ_p~OdE@QVi+;)RJ*bqt>tyXAda&)hUM zY0e|b&-S9-*Tcya;J0Nhs);Nv&=z2Kw;hH8r+(+mGdm!74=$TZMqo2Kbpn!q;{o$` zRBs}oRgc_0AMSFx@(%R*EjUENN33LEPJ{evIq&>YuOJtXH1-eUOVcgl+&l2q>$5YB z1j!U3DKfzzx~{^v?{$ZzGu2!4MNQEc9dF=B#_7~2O;<8YG7Wg>ARyDDWTlJ)gSCyk zyHKE*BZm^|@L4bS4%YGlSmwo{&yB&qW1r}pKS9-33?9Y$;;|nF>38%Z1u`PG$5Qhx z<8c?ee_$OCxy9eaE*W+>4$#50SglVSLBr)P5h6Y0SAf2gzlxSRe(lnY>FiH#X=UOF z_Pc)h543`l%sk3uqV>sf*_O8g5cY1o{DygOv?@~k1WEXrl0yDj>yI>w3+N@}a|ES4VQ>E^wN9%+X(xZln*c(H@zI`pe?1NiP`DiT zxvwLv1&JNeTlje)!tu1`cNZw78}{e!#jw32Tshv^6SLhFv>-Eyc(3&~)VqT-**dUf z7yoe)K{ST3pt2zaDkpibdzmGHGSsz+{QhB#k9(D$gvKA3e+=Lt=y}oBW{(+ogB1G5iA#zlK%vqX0)rQ@Y*xN7a4#;Tp?OIkE_bzNHIzK$oLw&*HjD%9;vdSNqQxY3g$~X6EQk?>^F_u}37A<*$ZZ%V zVS#~Y>evPRd$-pG^qI;<*QZ_II` z(6B(O-XVY&k$UxvORhi_BbFsymGVCjT#mFzyyQ*Rjcs8+qaoclpn6r!EbjU+Y{=#*i~F3Fw15xKxP0!jqTha>$DI@wY(5c69LUYM&Fvq+&Q)J9`wKvrM}_I)mlw zJ2c`3EwskANc6TrEbni^`?3D3dj~a$EGZqm>@Is=&Z~uoi?O)c?PO6?bM$;h^sjoo z-Zs0{)}Mi5ePV(gVm?bBCuE9pR9JfHsi)e$z$Q-WrCCU8_|683aP7h&i}U*DU(^XXHPJQasepYSM1cv+dQ(cE==bbf1XSLS}rjFOJ7m zuG4mRWd}Q>Nx?1o(xaqB0so@wgU#CVz?LPnq%qlndS&>`fQxjLDw3Ur{`E}KlT%EI z)XQ#-WdGxrTPs1LnwY+$V7Z0NOl-#NZAw~nO70VDZ!YoBl>u8zZsu4~cWH!!42!?e zMhO_4QLg}v>exxe%*^g0>xqnTnXZPV6bN(GYQ}!N57~I@_E~3tc!c#=#%|@oA>ov@ zcmj#Voypj(Q3X+VsvsOJFmS?MFgi^6qu+=ym9Q25yqIAm>nap5cqHaF$AE^N2rUg$ zUVLtxm{##|r*c7Q8S};)%iwd*f@W^4kC#2RBHr%V@NiRi0?j8c-;n3}$Ie^c)33;ayB%1h(sJ z44rj^Q!0uXA6AXNwWKPHn=~+#@;+nd<~Qby*ALUnZ?p~8NtIcxg??hdFVg&g$QdUH z+jMmq%KBLy#D`bzFDzX-WS_tgBJJJN;bH z@KJy^e=Vh0toNA+(qevx3k}(f&9)nzH07ajS=%>L)|=I7aazIzz*^{FTkU6d-nRfO0eRI&xh|qn%J^zop<|% zpS!MwgawH$g!}1y$x~cHuW`q0r>As&VQ+eXJs?8jEkWVb|AFpb2oNtU%NL0{67;)K z7j*lx39Q7(>@bDUfutkH)22B=OtLB zw?%#ki4j=%xPEP;a;RjWn0aBtde=1VJ5p;EqQLX#jXBUM)2-m3k7Rz2&5ShYdy|)^ z2AB6SFTU|h<3|THJuYVL_LT^CQ>`C$k|VJ=DC;@o-<_R?&V)Ob0i}7jHvXdu9+^4} z%Xa@jVr*LOOU$#xU>P&c+Sxm~?A8Ds`SeIAHeh;xNGny#KglP+CA7EL9{t03b)d4K z+;{fRdn%Fp-d$W+9ybNvoHQ~BDv*kQHSuY5PQIzcj zh&%m1uG%#mPX4DUcS@l4!&$d)W_J6}vXmncf|4-pA4lFmc)zL%>xnQaE;eBbxd~rq z;+=bUR7v9^68}t{8(Z%4M~*7O%ejy_FH;8YD0k4RsATg|gWt=Q-~bM6p;abN|2Q>X zb2Q}Zc+2%$gWC!RXl78x+e?R2(8p1^y)d7{hIcQh`vdEE@l8*3QJEF{y{&9Vh1N$V|xd8$ta4DO~mt~cYynk;8+$py|uA2*}h-q4siJ;svt{#7Xr2VDh z>RhY#Jk0n1QFQL{O#km2-)s!YSxts%6GlGHHpd}{shn~?M26)tW4RS+W9KM_-TlxrWIRF@hD2Tj%JyfXo+rLTQwF#z)VnFliEhD8I# z@IV%Bz(KB*gr=vxozrXMdYyg&b+kteiy=WJgS`bd=xFr1zo0?#ov=59!1ISx`p58p zS!V1vOXu-vqjt_8TVsX@Iu2>6fMK7wmsO@djL)Z^dkv*$!2(_JVlbQiJ)57NX@c)gzzMsi4F^=UVM>};;13YHGhnO z#1CI6NBo6r?Lxs9pE&y?mfI576wieM8;u|1&{{L^+#BBbTClQm8x4OcQKD zkacoTs`5_-Vtw61msjp(t_UqC97ZF#ZT^=X&Zu7Ai3d(Ry)15I$=XsHNq5`P;_mjF zI5)oe^>mM^3U9}ZqblRfB1~`%HXIi0f(CK_J|ADa&1%9{sq2?Mym<8b*=Ir(^jrTh zuuoOvLGkJ{AcA(7?rFr$V!37zXszOAd6XW5fzRUk>o7CDzlIA+Nz$p3^U9d=?F|jl z!t|kDWK1-3hY}rUPuf{&^vKfPWamvAzOOm@Y5PC0~{vD@*Q?? zQU0F2CqFUc4e@D&Kc$YU-3xXu@%CXx4wp;fzonRo|JeX9@na(yy_Q|2$jB=#t5UEf z@zB_9lT|bOx3>E*-dW5kUk)nph*gp(i{e4jVAkLM#byoEYnfmvNaFR2<+O~(x;$@d z`3!oV7cStHV9_B81Uu?r&Ojs^~TQ8LD9WXu()Q0j*wufu*9Aa=)KdbRqr+ z$b8mh*rMgr$K_>dUC+8>Csx>lyWJ!dyA#RsxxBI4F&e=RfTz#%sv24*7$QLKpaxR< z_~P8V;D-6QRL_q`dRMM_lqnr|Zgy6_X>B1DjgH(cLx2Wzl2(M2j;KL{=BEj3gCPk# z>)$S5d{<4b#VGCKX(5;eI@cQmnzRMZnqWy|1o&^B?yJ@N{Sx2Z0p6XNV3!#E{{gC- zZhuXp6YU?QiKO1{k{#74((57)r051FzlF(WA?9@&FDNL37R}dr=|4ptG&(Nu!i5P# z`;SX=l?QZ!n6#vDmlhRT%5Ogdw8r!fsX)uia8&!yVWA$YZ{Oo@e1W8sKK|h-QTidr ziyk77djnljr&K;B^McxPryR+c^v#0!RXj&r+yM`|Dc+m9Lgd^4)o?3?p1c!4j&TXB z7|a@|!C6YTu{WHK9B$D|Q8FVpxtoPkS!Ln*_*6VA#4AuPtJ6yIL-buW#Wl*-T{0#iBBXzSSY zk?BqIDh{$$Fqk7_c9dx{4(C7+PUMCZLo|%Vs|yyg6I1m1V*KWRl@r$M8WYDfzhBYX z`-_88bElxqv5$A@QmwScLtKRocn#};BWNY(<|ZGG)pgCFF4~Vi)VX)Ny8iWl@1sr+ z5fXz@L0=J>!+_@i7HB~lRo6NW@oe|>hue$fnD-P?)^1=I*>+| z7#yY1Vt5i6+VM2hfw@jTtJAJ-1jg4MQmyW)F|cw=IH4bI$A8%&n@S?e2AptSL*NQF5K=)wU{6kwHF6#-q5 zVO&0O5LulR9D=Iy$@5ykf3Xod2kdHjxsIstnX3RtO`yA85-0ovsm}Z#0fbGfY z;ZnK`U{SMBX8kf>WC9~%z?Y5Qy2D)n+Gw)zG1%q&HAUWG`1{Rl-`NG$qf5@SStszG zM|5+PxBe%^@%q{4h?dG-L}0obo+^jjAYC)OqBL>@;{uJ<+gW4_i25j8EzCfvco5Eb z-PM6Nbj#>Nj$5trTKRb3bZ$qHp&-tK?>S`sCu%6yt>%2}SuGN^ z%9eg98z+-g4=n)x(qqgi@(oQhp$(+M&VIrhjzXnHjEn(((dzTsGPhT||I6g@no^gC zod8aMm%lbGW2cBMT=Q-b!;CyE;Tq3&pq-tl^HL{Du+(f@aaOfNugZ8H-F(>(pi<4E z{}??})D=srAg#upnGD9qEqd(`b>Ok7e#WL~Zf;Ai`6yrcPuD3WSzXq zDuGj`7GZBSEc1MbrSNppj~nBSTO~q$RnI4H zTY2BU`;>X7+%6rTs;RZZ<4@xAMQ`q(n`kG*gTPU~AxhyQY2|eD&%uWb4nz^=e^)qO zxdisKOLSIiDQi!?ZYD}pHtY0h8UXm!sB|enZ?0V@KDhuyjX=m=0dTD(=swFeCqQJl z?~NzKRB^E5{bEA;l<6x(AbV|Jevs0eg1NmyFWXE78|slqkRvkyE6qyKCwHgWwzTY` zXsR=S8a{r_G~}LqAkB&OmGD)#RL!xB5=$yvr7=lRiXJN)STo6KQUJ!>b)l)5sRh># zFJV_tR%#COug1M#Tv&=HYXn@l3mFl9YDJJorI~1W391S+FE#|<*eCbIlrucqinJsc zt9M8Wkg3V}ywB03GG{3f`yDKpw9%x$W{P!5=B$@_DxpRl+HGBq1pS%wGuQln>sRTd z#nH)nl?VyF1{)KDXP@t1W4F+mgCItqdb_)cAV?`9MmO=;rK7z_)cPG!p4vGA^+*9h z#<{DI96j&UomLMEg!qnubvHdFQzU;o-~;({WZ#4cp32eDY3q}713k2CdL$M=e$o3s z-Q<5D#pb=Kr2b9CW0}~e+~Xt6%V6I+%2g^DpBl#|P{q##R7n&-C6>y5)WLF4fGkir zK%rx*I8D$SY0pfjBeX|dgSlUCe=aJc%$4T%n=FM@*5}^y6|#4IXI@ z$I(H8)*b_u3{=*d_34^@_7dClud0H^&aZ!kn?0iw;C5{DnZ$yX+yd>hwCzLG@0>0cFI&u9&sV~+q@KKs}!>xrzIH_9|R5hYEQH40gi zNxNcJOgM__#_KffgWu{zUo1KFcd?|aJgQn9Pa;ZENyAb(iSWlc_21nbfzhLvsu@n- zrP5pO0&qN(VS2udurvmWq!)r#ZOLJ*T#wx#ti6w@28oGiNJLq5t*zF11c(wKDvd6Z zObIjMY80WG#s`_-19|S$YZdPDSe1@c*&LdJhHaugmtp!={us~>dg+bk+c|EGHRzbw z=Bh43l89ym&n%ZGk9F=wSx&_PtK+h!Hi>UOMH%R-%O3K_3@^`utn=`pVGUw-@&yeKH|Y2Zh~ z$L9VIkX3apJ;WoC6GYI#tTYO};xmT=O%)Rnz!sPRST0E*kSQ^KRplUU8XqB>e~9oh z??2NDVk0ZRw}@pBy~!fT&+^LHHp>}XZprbCDID@2J-e)1clj@i#gcQG&gv&ay`3t3ow zUZ$4!j=4kLM`cvFPKX`bz-k6}Wht~FNp}V8=u$Ik@Y-udo+xW#N*kMMg{In6?)Rj6 z_r6?H+dlc{Hiqz|)ldY+V5sXD&08ldagRIUj(m;kPgyLY{>|>E;`;cLb=a8iDzNeZ zGX5_9Fe#YXSO=}`=-Y*Lk$o6(9DgC9TtcsD5Z(x>4qD7s0d<>GPXtwtUwkzoN# z-Dbo?p2$fK^3Hk%KT29iQyDG%7;lHBmYlwucs)}=+fy_u8gJmO!Ln^yXzI@|VTZE^ zR31H{tz8&nm!>GU+L^Qucn`+IVH<>RrSKZKzrcr5NWS&T!I!&NaH!hDZw2t*fM210 ze~t`g@PqZ5PT-5?Z6m8XWU)_cOn68>lZ8gr`Y70Y14)B>uxS-IT>gx=w-Zj4-z|1i zF{+aARZqV@)hZQ%M09w-r_YgAv=YYRWrA zTc(#!=eDtvQk_A5ZXxsY8r2*svrE?Bl(p@R+3l3Jp5M!bn!)vV-?1y&Ef*-BAyXL; zM5-&M#26qs$A#^}?3=d_8in6`@k%f$yFDas+6^JAsiQdc-O`{!~#_Xr1%q-l>;YX$~gt2r`2h51==h`L7clCSJ3mPC7 zvxn-ERFpc}#yj%6P0gj^f_DYf^LJtFEXSq3bYDqS-}?6c`9wUILCqSiVy!p*NXMqZ z`${Zz!wF+|L(Z83(rU}Yno{E_9(ZQgIz8?WALx~U+h3gZW!zbrkxpBBJE?9BL25c| zdkb^`Fv--RWh#9Cc7g+0irPkE)Gs#y3LGl{&As1sT(IVbN+>1@q0c9-bEqI`vnu#s z0U|QY?pq||-cCPAAAJvV;VBbCJ|5Kile)S@@|GU|UbmJ#c(r7eR}FStR<-KwL(n(U z*A45*k%mPlKZB8gV->nRfX=AqVKwUCru?h!tU%UvYjHoy%2Z)MAefZCrEmM_zJ5M^ zpND%kh}E0ZzeG*=QDg0b-Rg03{(nvwQ!285iEUf=J)Bpj%hZ-$S~PM1(et#FE#+hlfi}FG&tRg}L)>rnDk6n)@L! zk&HEx$rB;v=$)re#|Glk1cO(ZAl7{DD#1Bg)OELML>xZHl4A zT-^8F+KQI`vzM&WUHistYk^9se*GgtKUEpAuG!-P#&!*+!8bK?}cUS0|9p`KsDG{;sp(Q654#&DL1i1?bb8DT=cOFK~ zEO0`>jD3TA;TLGen+SP37|ejKAp{u3y`jVwO+7V9#me&^4$(`;r$y|k$uW9B1nA=L zRKU;bm?ED!n@Kp^nVYfW29%E8u3KR zJrOZEq)yndNx6^F;kP)XLp<`MfM5qIh8#KevEV;O7BFdS-nF0O`d{Rhah&*&iZ^p; zq-9a)KJ;;qC&B?3^#31yvxtQb8`JUJb?}CitXRsi)3iEbnSGhB+MmT?5TUsk#8E}< zLP?euN2-JrV5DYS=jsb0u`AwsfF2n2Q*~IBq3Sewhd~*z<8HfaD`H>vHGe|bDZOOJuV2@4U8 z(tXIgby`zk*7=CvR5L!-9!jrVYib2l>< zQ8RrgYxzIGfbms?7vPrj6H+Q{;Hk z&hGUA4%lS^_%&f?|~I>tbf zJQU9NX%d!JCe|r2g5<~zSIy8Tx!BQ5_xC-x^W~7Vi&3J|jx_h1lMdi)QNR`2x?ENM zfj7SLHxC)ez~i#(k*`w1j{d*6sM*P%iH;eFWI5W!zHYg{a%AmtJB^Iuwofw?Fj&dW zL4{o$yak7~#!HU0l<^^7a)wE5z#R|zbW1C0>xf%>J@NEFN~e-+)(9+PZ{Mn4=Ir%DM_2ZiK})2rGqaAYDeH3yy0ba%}1&s z1bSF(|8a#F12Abd9e><6R%{C78GMp;s5Xq^C_%`#9^n;tu+KNFuLht{VhSQnJImo`~N!{Gb}SWiHvnZ(R*%O2^BOUOLq1# zuw;e=(LpDjCBlM<;MuG6^iGhB^mRpx8Rlm2>I32(Ga&9e)#7j~y6hGvHSSDnowA~= zycL|Nv;m0mndUO7mZHph1gSKlzIESt|6Htx+CWXM{oE=x42V*qmK4M&Z|8MnqUYT) zOrbRG5gBePMq1!oXbd@YS}`QJULiBlF>F`Kg+Hap@|702Yc2?FVZ}?YT8vu3&iqiX zTbe`{iFMrzON-L~^-n+a8+{(aFPC{#8)kTGD$4PN_L-JkN_#5gZ2tiRAIqSaZ)Aq+ zs&K#m=0q;Z|DULWwW6~+ZW#OEA4+_Po3nM%-4QS&1WDgNH?pcvdFhCEQE8iyPQ_mF zX^fta13?Z7nGpdV!uBnYTQBN(;5yx?KM;VO3u4=%30y{&i}Fif+{FDWzWJSA5xWA( z&tE`B6BdqQNe7qS!mZpkf|4Juq~~Rcs0M9X4kEqEA>c#F#n*#*6wkINE8JHo=f<`D zjq^~LLvDkRv$0K1vc`?3VFQw1ltSdmw$!rz_g#iVI|)peZ1F8Rarr$2R4De(lJe315x5{7S+ff_y`hFOkl_G)l7_wCG?mrQn7;BVVURIv< z>yfkpoo>;z7zRj6k@K~uIh<~c`?lFS6wuqkY?BF6#(p2PTvSGJT(f#XiUJ%tN%)s#`aC3_bi6j{(eG39~lGA%Jkr+(%$(G<+YR6D#T{DJFp~D{j`x&>zr&6GER}Hp)+} zJMSp9WzWci3nRdt-=9N^xq((u{ z`_y#B4@WAT_mKHJunMVOiE)BohMCGB8(IUa84%!;-?Fu~1Bi7B$V)%so2v-YwD7uk z+S^CB#;zk*F8&%T#!t|1ILkAKZsbZD48qd}_JNZ4gX!^2!-Tm9QL`WtVZu+a_Bt^r zkY^?SekpSZ<+Q9g;Guckm2SHeSn;@FKD#)4{O?`2@@yjgq|{+h_Qs7l3iYc#=A#*d1du82qbar)wJdDD5*DI9Nb zW~SnJnwegtN73&SN{(bf*0qnb`%|yY(Zg;mTxH|F$J=QaJHa3NjW+f7E7nR6`LqjN z3^;UBU-+4Qmihvn^2iF#FOvyOtRABSY~Lf^D-{~@rqhGiQh5=i%4|K8NB&uiJ*;ZH zEXrG}OaDkhuZWP1=gAJ;;J6B_Q9;xSHhO|%IKilV2s1h|UG(6xz!=l~m~@LW+taffaY zb)}`JFs%&8I9PXzhOQo$=!Vssi|;V81JBwIEQ_;vq;&{t-p!!09Z|(0r&Td49f}>G zpE@B`ia%7^L%3id9gTY8ah<~N#OW{~YL3b^`VkB*@G=??(6?-g`bw@myhXRHANj;B z9?lgN0p-*F?e(%}Y2Z&Q{1QXl89t`!_gy)R#hMm4Vn^=(==kY!&MtW7@Gh&@Xoeev3m799hAjhn&8)sa|H17Zb z(3DW|97nS1TR*Zdt^G#;tKpHTgn{9mo(2HstiCT7&55shCgcstB{__y^q9&p&HuV9 zKg772t2%tu|Bf@j1h~S@ds$qi-^_U{`SwTQ4UPm598x{`keMBd9RL_MYo> zl!toVE|cCe!^%PB3CrnE((Vu4@KG)0t#o}m1pyup3usxu{=&iB+khi0H(?~KZbZXW z!-;OkYiTurZ<0a4%Jt0n1Q?o9Wo^>^=o$ZiLSED(uTe@V$|jm(y#fQNIf5@1mR2DA zMLKngoz_iX8tg#h+m^oDzAFWyU*wJjBAh_cDH|4tGRcS0O%O2OiP+a6EK?TJ5%2fs z(&S37u%bG#XNh)oW%012wdGw)AcJ+85p)*{0XST&zfr1w6U`2wrsgA1L@kXvcnz#n z`KpH8rnvyHJ{U=IQNDVw%1(y;*Ym-6za~8O7eD#JtQQJQRc({-JFX6|9jRmHfztvG zPO2(&j5S(;x_Dnb{dVW7aLuPX_x2>XZAR0Y0d2>XqA&W19zt2vaYW&=u}s)PgE(u) zNDO`IXHJCU5}m;3_>CfuoT0+KJ&)P+Hk~y_3HzR0wGmK>%&wLiCx##&2o5U;ERFA+ z7P@tfrVXo6bH}+T%n$bB$@Dd$K(4r}v({G7>b;q>kcTAy;b6YYM&-&eEqcSxxpZh) zU`fB5z5OTqIxno(!l_K{j%V3A!qF3|);Hb}+8u7rV}FQED89E!!z`sgVTALxrqUKb zU;w&uU)TWyXMXnI*3}0`;CM%10cwVc7uX zJXt=?B+^A6_0pm`RVkyTGaF&k+zezEDALtUv_KlR2l z>=d55{3?vT7TzKd#1xw{_6|35HC-%)ZsxF%K<(? zXAS7S#&&Jqn?M{bIhls-Qu_3Oefpn^PiL4oo9&CP*rnlx_pMB=vNa_1m;tw1id_++ zu{^12XlP%}QFY9KsQ|(r4S}t)93_2qqig7W8E3$Q;2yEnAC%1rxcM&ZfU0lf(=4AA zpe~00a8oY-t8&>=m2woNDaa|PnRoyak>yO?F=tGpFm~sS{Hj9h4!lWzUjqp1@j0Is zy?HGM3-J~tFjQrU>!QO_q#q}EC`IQ!pNsnM9>R-NxAVA@yj3}HO=qTtDEDs)1G!jl z5J)UaUDwiNVu1gD?l8M7-tn<7rAQCP-|VYkAezxenOQSn4}l<(9(iY(;ha32l44XP zNv5}R76wJh^VvSX-?Z?iY+L4r4R@YZKI1|`G$>1#4Gg+}Z-^RaT7ha5KtN$e)>-a4u*u&UW3~a0#z%0b zjmTI_eK<5{g+6t-_-l%Pwjq#3_aL0G z1k7AV+Zig&g*CQ1Q7Ef?-JjJ~F7{TOb{ zNTah2gGr$Vk3Ki}8Te`sGf?^Cn5%NnycSJc8YLDPgGF-#rZqvYwDH8ZFF}3ZR|Bde zX3#`Tj#KiiuSVbr!Mm7>SJ zJXs43ZaNqPz*(e16%xVc5h*~QYiqb9_Cp7e4rnQH0LTpga7 zv;z8?^NA#+H9J4L)6) z6rMh~`ME-Tv@ooBWcz&T1zDHr`HZ(OB$U$Zn=ZHDf}!w-7P>apg^@PEsXXwE)5`5K z`h~b*ItBizVhbqQil7Y+sGNVtihT4+C=Cb|xrmCBGo&9zTf`r`a@g_FC<#F+NCf*KK1}fpD z$|KeDF9sagDkKp?Ehnl~HgmR*?Mh-(A)6+*__TcG^H)&KeLogPCAaAvVv$BLf1#4I zUW){8xvc&^0AFMLUn?(%7lPEa8oX7cUuloR4gX@$ zazwYmUPtNd-!}vL?#%}YLm>!630;Lkrm7;XLnoB1NG($E!sE?PL;m=dAY)V${br`E z+?$+7-%jN8xI|m`4wUm!>MEZT{bKskiP~dL$IG`gnWIp600VCdwYcCzlIh1QZ^skH zmDqdY1-yNZD+?~`W47|$QQd{51vruU{ zzs!gF%Doz9blJq#2-^%_J$eZIDa%2{*Os|LT5b?{<;(?qni*3~UYt?ao*0q5$`UTKyS{0|Sn_Cqd~D>`0}*B5$#O}ACjO+|jI<^FtpA`5w01&-sw*z1|q2$gU> zFL6I@I?QFeHMPh9^7m^GL>Q;Z4Lz7Q}3ej^(D{9(*RcLW;m+N(T>P0H5l zlnJ3EkmX<20iv`)%_GaMzZ&Ywbt(@q7!(iHm+F#qCyBK~hFENi;Qo9mTj1G{Lr?=! zn;=~HhYPdiGQMhg<8$p}Dg8{6P1KGrm$ne|z?PK9g7qrYNWJar+1IjCwe0xt(ZZ9; zMJW*?HoXs-Ft6){c?eM*C|6wQZ}O9Rz@7ZN|JLQanQ9IeIj7?MkOks`AhhgSKERH^ z-pEmgB)IkUspcBe)Yo|UbLJ9S3$;G}%kr^PDn;%?i?)H;@46L0Z0aIa-jzV+kj*h* zKnUhCBZt!-LW}-J4vc~*M_P{2(=>L|)W-o>wODF<1!bfjPdeb4T0Z|`7=|=H$esRj zC&yeB@fdwvv5Cr&3KXSdh(?0HZ+0RJ)- zC!qmg?FQpX+L@?b~rp-VX{=PtRYYc z;_8%m6AVx<>sQr7S(vexc}rttU7rQAH@iyQWu^O?8^vPT;Pe70*EUQ? z54dPP;nKHHdOu%nD-NrHLaM{Vx1O1Ez`7|%!2Sl278~bFA`A; z{|(R_n~;MyWMdaKM5?>>SgR+wm7)J3=8M!1?X?-_wIpMjzucunY{zZl`Tq18HFJn_ zBRi2x^?7e{X9^#Q3i;xYjC894esSP{;-XG_nAASTWMn-5WZQV~`HV&89U%mF*YSEB zW+p7H*##icpYQW{z9Ig8`IV1{pp3p6>LHcik@1`SZaMPyO8{UA&jdO%{?NBd(Rzqo z`o+>wBzIwNYQf={*br5MUa5X8I@*=RX)m<_qtXAqQG^3k*gbmjmoHB@W~JXrY~8OZ zFRkuUHg)b(GG|x8q(BNYFnZyvQW;B@9E-(Rp7Tx^Nb;~F?Y=bKo-2`TTS7^gf*uQz zyhAFtuc~(&o_R9Wy%o&5CItJf#B{p-e0zlqPIA8E~s@wk-2UK-3{zrWV#&({!Gz88Pjh(dtwm=n0~%&F5SE8 zDa7=0+TmH`V89Lv!&Lb}>*=^s~tmS7-B{gy<-!-Pxl)FDkTtc#VuAf9%MTc(eLo7|Q?ZVrkMs?iIvW^-DUT zk1Akfis;6F&Iq$>87ZNodWi)Gqw>FCJ~non}I$;P>txq$^% z)~0iD${|$GgrR7^q{wNCh#J#?TyFQL$BoU2BWw%30^Ifk!F<^lBGY$49Bo$5g-{k! zR@-Ncv!ah3ly_Ko`;Gto0wIY#VGI70^BbA7uO)a5D$omo8?TFat6#@Cx?fRkC~(wC zW7?QjO?E$<5p8~kJj9-*$P9J9k2%1Eykzp5clhJdYI+n4&f;dK|EQW`i=;JphN?!xc2|l;XxkzjTGiupzNP95 zZH_B3)|RicgOghBcLcrdvkkQe{}sFGvgpgopmRp&GYvbx;qYFhtwLbT^dwP@UJMh=bwnUmvpFxi3~U(8i&oNB%kjUV%q58wZd6NCdJHl4T z1R?*27C`yay9!Mn9mC=*C*u`B6tnVssukuVcVOb3+qqo6QdqJ+XV=ea-HkPe)NC}x zI`n9F;xa%_Q}Lr+wK=KU?o#}Aly&`t*7VXHuyKKA4Tu9 z4b@+>{{~`?9m{@-6yY;J^KkH$7w$jPhfL>RY>k@uHI8N=Zj*iX`((cazk`nT(A%e4 zKl3<@@YXL@$&fNL6~FC~k`sXpUjBD0bNYU3Thfoz@|}BadcIPv&kei!RCQZ_{nnlG zw2xW08mxE`ugM{kbVV`f+q`O#qveHMiouj@xS9E+tYGHWnk9G8#i`4aD-5e5l#wB3 z+=jB~&p)1T>l+)`EE?Zab5k;QYlU#nLC|RKpA#z8xWUV&A%XlRk7+5!qNVR4`rLS0 z3Z$U9RtH@zrJ_LmlGuK$TMFy_>QZMLh%)CNl&KeC$rBZ?7)_PlPj$P|BDD~;{@?AK znNn*Jr;+28_WS6#Neh~@D7GjmpXnmgEcrpi*&8i3H4rgmgp-_pQ!ZT~VUCkYepySC z5j7?K=BHKMdeg$#qpHst^yoSLuuEB^bxmujkuaeC-;tzRkwTghwtmAHC6uuI9r96jjd~%+6;0!WygoCY`;F6+Fq`% zQcbv3%iwn{H|g$u8Hm^{lu?Z*Y6I#2yXKvEK|o`3rl19%aCSmQEpXH~^{o;_}s=zSpU{MJ~$g18^ zSuVSQ%D3rUU83R^oZH@a9=*t_GPH3>;4OUT;OB=ErzBn#IxgDTCeWsPYz1^G}rH`72s9o$;N~?Cdvj8Sg%pUjmckPZJRro#B z4)=lm>UJ;r?D<23m6m*ht^8Xb;(LYP&m2Dz?U1Z{b}(`)unr;+JfiYXRiP2dB4J=+ z^H!l1lfLu7jl+VqDO0e>mQFuA?`S-c`gU;9pa*gsX)i zQ(`uDi%Ql^73^cJ?}QNEfnW8xJO;Ie|Q-vkY5*~UoO};{)+b*-!S=Bl1*nMN|_S@bamQk86Q}DSNZe4Aec*L zo@cws#%P%XnOSxPM~Jv|ph6jVv71Js$I3Up-wjTy`VrjwId2iw^5iz<=eKiK_xswf zZj|3YT0zEW>G|ZX*Ij&qkpCr!d+$I<=XD=v}Al@|Ntv zJn7~#&-^e@PSy)S`j!wTk0Lq_`tJYw*E`vMa*;{?FViuNUU>d#-gMGY@`Ka2A3uKe zQquSV6%R>n0SupFeLi3pkgCrp(v zPUkC!F)SS_|3r_{FRyD8o>bjz9eXs^$g^zFV6<@Gqg*mQ9+-H#+#cI)%Mrk9WNfkV z@xA}!J02_Eh#{Vd;!v({N6tAJ4FW~({8pW?VHFbtdMELxM~ert&g~zh8gl zC1Eep0Pwlct`g+Q+Ddu1*Tpd_mZD@-kZr|Gk9Y(X62j+-)PL_`RXJLFKGO%jIwJ&H zJU8o^E7|2+vEB2X7O7t|?wV|COmbI61 zU+*`_M-!JJen*8#-fA1slr4qn&KtHd5d!Y^HkOa|%7R3*g>r=xl5GL0^gn6+e@{ig zf7uYX<-dNDEx)^dAFAaC?;K1Rm6qh@t&l99>ieGRmf4ghG;7|5^fDUgjMD%AF{-U# z*{0Ae)bToz;#m~qYO0eS=!`F40d>HSH~Y$}HM$=PP2>j)zR$f9!b3Ds^U3|u8X&uw zE71Ni{qt{mywaJPf!4A<_aGAswe6hmgWyis$dA9qjcu9VyT2qeb+jXEJ(ft9F`rUL z`NrmPt)5znt!04;yV#r9@Sw7X*V7kBr~41tiu(fOK9<+b7gne1vGV89XJb^FPxnOU zkLPFT>>Zvk){>`@b}ltrqIchUjpPM1w2vv>5B*Q(50CzJo~qNBV(2dkxj@XwkB4VV z?t{V^x98A3gf3QL@{)9y?2k*OL@`-;xu(d+EgxIhK3g}W-5JQfP4K2(m>4>1)P5EE z@HBfVeg2BVzr`$cvb<65I6vWd95%IZe&^Oq5piyAJ@Pg$Mcq0d?v%jWtlV6~djRR> z2M1eT*`BTOd}Bb=BxuGBQgKMb&BJKW!D;oAzE6^q{;g(p4M%%ny-u$0s98BIGyQ)0 z>oWl(eO~tm$y&E{=S0y)tK0&P*9B&y_2_VCehq#U}7^E)V_{M8F>3qMh^- zs((8BX@u#`Q1AL2y*OuB1wqOiQWa{NeZYa8@W`EY(5Zgc>@7Y!s4eC}w*VX^M6}er zsrtn5$I>{c?d!68$fLOfox*%|h!}m>u9;pD(1HZY}#|t=$9f+e8K^UlzJTE(w?F z@jZ(?$*Z^_%Vv?4nP~8q7h=uwWH?&b0DvbK#uR0NNC&UMe{+~5>+gJ3*L}}KERWYTr^_&wKlpeYSKCD6uGFih{nEG!G}`$_LR2|jj?S7uuP?hmj}q&THvgH7Q={< zva01xXZ7-*aQLqZ0tOIi`LxZWcOYZVTly=(r&refhNk%pWS1>Zq>E~}zEKE5k|BB+LZx||;>m7i?P zo!yOVh2;W;MvWSFo@ou4i(GO{WoiyDgIJ7M47Tc0lwm2AmoH6@ z*~<914N4an03y2+tFOys+}m_(D?JC|0V^#VhnxrSltE46JsQbQSZFw^r(E!%V}=^o zTLU!xdP;JO#X$^km+FfnT^&sC8$YPhaj;;0gc}(uq#{R^{B&!zn?({-)Zl3`l9!P; zl2@-pXR4Spn&>~6MqG$$RqF;>5+0imlY#ACL-hs@1}L>!)^e zX00;g=nVRDv8&;bsp_lwl83=pr!l?uleupPgZ$nE=m0IUUuMkcK!tw2b$ss4!(e@Z z?~d)$A8T~Eb|{dbo$HtLJbgOWBrIPmu&xh7*69_GV-dX>Xa4fgH~*LR=oo_(aFA{x z!U%nwYQyDgynEHk_c!Rhi6 zpeH3EN%|Ko>jmV$m#e398}CALIVcrR$h`M2=Or3hUki+6u}njty37LUxxo=F7pj)& zqBcaFXvX8;pC(rwU@1ko$FWi&ITL&U?xmCR!8&l%okALUpD$u==E=RYL99UN?6C~z zyFS4WLN6;SN_mpl@UXzsbCY?0?Iig-PR`ISWb|~DS0*3|bGc1cmX)jGecIGrrQMj90QlPiH}#6{9Ts>&e^5d%!v+)oM- zE6T~lhI%U)7`gH!$0QQ05CQeh<~r%WS8Mrp>bV6%(@9_X z%nj5f5Y)c3u2a=yz}!!rubO}R8C=p5Xt7%?N)hNn@IZ_Db`-PpG$H?YX^Hqg_>FyLVO~Ayi_X>@+wL#j5d{unD$-svoR&yGK8!x3eqHa24C=2Kc-yZzV7d{(3 z=J9h=_jh|QJ^zoQ^M0i2|Ks?*E-sQ4xwz)N_Q=R4qi|979+8>7vLz#mxZG=Rva&~J zBucIoviG_dA$v=GzUTW7+#k+8@Ar9)=kxLO{_+*}x2GU{687X2zPt5u(`+&N!t7}D zKag3t|J`0qDNun#;ZW1gC&9&mnL>#^xn>eLB7FnOm&onEHc zWh+n5hT0x2mFcS?f1zsm;i{c&l78i3N@u#t=7+pUA(-vibph_IdeYQy<0GHWYcM8B zcgs?|7a43+|6XDn|#K_c5>~}rpENG*;NJd9jH0)d0eWe3^n)^~< zG@BRIlA)*Abq=f_s>HCe_Uey}ms%0TkwA{Xz>jSHVZJ48~pA{JunjGY*gQum^I$@V{+;??(Zk@rk12L{mH-( zV3NKRtq@-rD7ytnICrX_R}q?uv@2J|6jIPr zu^U0Hw!S*5aSONy&ndR=NLGgN6s!M^;I@Y@`p=;QrNUDWe`=K?zoj8S=(5TsF6@sD zRdU4UZvIO_$*{{fFMdm?ka@idq&&RyC#&_ljpr*_25V6rVWmD1zEA`_9EjB8e!CIY zWFSgKZDn-SV1juas;_L&>m3Xjh_4>^)*Q#;km%@k$V~iH;Qd*GKha=>`=4rY4JLg2 zXyUYb02MiL^aNr@(C+VDp1^0kAOaSulN-+S@!@>0lcTJVCNe_$gF4x*F?@|!>IWMkiFySU+)Cc>rKBt7J=^XtVqLQ;=7q3J_*azV9pg8lMM6t2aRmO#Tkf!Bl`|Y$ z`^|P@mAi|Ipg5ez!4}1vti+s`BlaO#z}8V!dU@~h+xvI%&zH0M@pXXvsiWO6X0Vcw zvXG=jjExaSpV+aLAm^Dqw>~ZFW52?@`UryjW%?EHa6lb1gJRZ%^=jIQE3+z}{jf~_Dr&}lf0aPnefsak zs5FOodV(ktGI=Nm0C*S6QcTs|_^$>iG?{u7!wX9FeT|s35iQDO;K9FczUxRjRa+L2UDpLqVn%N6)7;$mjsGc_J2H2SSA0|IOjDilDD_nFOCMnKVsq zt^8NaO(F(J`5eK?T-!V7GpA5VUz_J|8CF5TH@kA{!^m5k5UJlpMq$O}`e)U{8It>8 zy?P(!{?&biBGs#}Wy>hO-n~&1*-^Yc*FZuT9!ba8+Rh#$$Zz-Hh*DHsE_4h&LJ%LI zJ9qM1f&1(kFOV9{%~B&UGi(Kk=5Fq34v-dKxzNq3`!X-T_fZ)EdY=iMo*#=7Ek^Sz zpG*Q)>A*Of!4f`{6&W%A}Cl8FI`k;tfJZ`!%edR^f2?=MQEzk^9#%{*^ znlr=YCa%0l+SRuf6nU7zBn#VlxwCF@yDCef2@6(KY}g*pxli{j4na&v)_~48LGIhz zUXc;|L|*urM627~YD-^rprmmnS7)H-<3(`lB6fc$ZL0PAMMi1<=DTCTAQE9fO`+0f z<{PwY#B>WcsP5A*5<5v>4TL>TPSiw)Ncxp>zhc{Z`^G!F_qkDIEJ-t%`1vR^P`|UPI_dHj>vN)-6A#|Rc3F3- z0*hX(Ei9^Xj?m(hJ=@9iF+}qWfUnJYhjAOumrCbGIG=ing z7=>b5Szyrz669H4iMdVV*pGw8kDFzQ>ZN-78s&G|(|5-nYl_7<5+CY7;b)ZsNHris zQc4rZ8tEV1GUYY^gJ?>C=a3W=2AJ>w7nlN~aEe8s02iA=ViY zY#SLpYEvrptA&=F4n!u4KO(9q?t#sQV!t6OE=~!P6=fvHedglo(_2FFp%lVHoO(uk z5GXn|CY2L*^%le?{_;d0)VnXUFq^bqI%4p|^|?|8=W?$U*Z{0_Z)Uk-fXSvkSp$Av zA-oVO<{;1T*1$BWMq7fbLLSoy+^{o}3d0u58`N3JVvF*$=r50reyZ_$zh(thkPs)l8JWs8pZw!GZ z%TrQr5ueHKW}}=bRz)r^Ic&X`djll39zV$ummpsJKLZfDFx_4?^chWW>u^Xtv2A%r zw}s*54=kzQ?&*ynwmn0lqTk(CN)w;-uc2gO=TT|RJGJ3=F)!QU_zC)0`sKmj{q4wP zr8KG81Co$qGLV05jJq9H+}!BS05}L>Y$4mNqQ>XAjA_~#7SqeQ|Oq# z44EEI$;6KkIA|X18EJBHG*-J422~`MNA6*Y{m1Yd#}NV=&1g*}ov&pkfzD{ro zml62ws%^O4yT$j8kRbsw=mdvzvr+J16^AAW5k(E%wTR{M%}RbB<&#go+2CdWJX;wK z0L#>a*(SS-PIM+-8+7Q5q40%UXElH1@6%ReQ&rWym1U}HWIVHTX&%JyWHIPd z{7%%>&o3X35Lo1=49G7>JclWS7_;Op_!)E za^>QQx2qhsX9a`oSCsNBsmR$MjQdPdy&7>v?$uAYJxk=EgdBR40=XbPA3j;H@bR>f6&SJIKUmR!N_anR&dP#P&qawx!vV0c8R zaQaiM5H4vw^P))AgX1K6?4Q4zEgecl&)8dK001Ds8a1({-lFPa1!2xLu7l>rrt)Z? zh^5N3VHafPx2D%LfYN4yJxx@QOh3*WM(0fx{NT*ML2#^L(U+pmrs8Jj#^m_XNT6nd zZ3S;Zsng;BQ2yG6Y}MEc0v*NMeTsuL!0l65^E@S4T}PG}e{($}#@(Z=4q64N)cknh zBd(F#w$#IMtl=%NemZ&EOE{~0BM6E<;}~Sn^NGfi6O0-?&5j`swvo8|&%7g3?@SVo zuKqFDT7c3{08Ke${DYNlL)1qJTf%jAgYef6jt1hUg1Np*1J!X%7o>|)1ojXT-?`5= zSHEzAk-0~sTJ=tbbnKbWyupglBFTtBoHs?0O1G?{YxRUqzCj$L3pc4oD?L%5^s;*^ zCyX{4_v`tc+B1d9NK7p76yH!{--57eyb5VJAUfUf{`UyZXpm@c0_LHQ7C5iO3{etTDwZBt;;2Vduf<$<0Y+GBZcRjL|fTIg(3&N%g{k-mL`_iN% zDU-$esCB2S{}$if39v`DjQb_^HF|Mi1>?**5`P>gyj+%pm7#?2e( z7_b=asc{8pqkI`1zs@ZgFlv28x}m+4Z=j9c&+-QmTpy4u_B zmUBv=1l%NM#I^a-NyZlG9>c`#>DQPd+zZT2q zuw>=5aU|u$w>n9PJJMb|U{t&{EZ*juXgGoZe%HiNwPoa=Z%y}jUDyB|4KB0m>6jE& z)LY%+qo=)$h_*)`l}yPJ#(_3HNvM327Yb$FJ`gh=aHP~65xd!`7MBBQ3%>YMyZ~Gg z6Ew5WqCy;~-fVy8>-bGnYyD8n^l@am?80fS?`0a+-^3#UBp~W5b~*FtJ4W+XI{c7Y zfvq69)?&x|WDWC;4Xob>1TnQJ5XiQ19N>S!wdqpIw@`yR-YN)a{FYD@IsE|?0@i@l zz6KLI-Z=JOp{!OX#(M{>DbuEk7MN2aW9Ah<89)D-F8S@WPlXj2UOW!I`+#Zj-|u|- zgxnXKsaifRO?N@Jht(yvr!jFAa2fDWl?aGi9VAKFV*@AUaDYrwm%2P@A~CVfWdEwp z{1K=`e8I7z6vuOfNM)u`Pe)U4dOjIm;3#St{7ju!9|sTMPio)!zD7_CaPt6 zjtH=CK0iwEFMR%UVvNZwN|uR9VLEk$P_3p7$pvgzH4bLg3E!X_s}6AH+2;;24h}E{ zkT>Y!{!gpn5;8i6HM4}fkobHdM{8~p@*YHPeAr#z0~@hU9KsL&Vz;~MF*?4-a0BG9 z2hSY`!dG&<8ImY}pd}J0J_KxZ_P+Dp#?0JoRxb_4bra*0RTO>Z8+mf&`M4wd0x&(- z*%U&#o}(+A4H2(uscaW%_mbDV~h}A=4-Ptp# zGWSe4`W4{3p!Di2czLRR>KjkdkRuDd2UkSmp8fsE1UOp(0D_RG<+ptF;MgQ-bA+Cf zz?PPB9xWQTtSn6=6`i;Ie-mPJdGG~A`k!8ceU#XA!+Z8miN<5<@0xX>3{+2kIW3(z zuJ0c(r(j8CR;k>S`*>a>3q>IasLXjKrU+x_(+>s5DV*H2RTXBKfG7bz#IAuzhU|74 zhhwa0mx&CAJ^f`F6U4{rbW|zkX^t*t4E2klq5G8GVt{OHq*Cl#SPA8x5@GDgsWjdj z5Lamf!JF(S7@d?D%GW@ekC^dY7hjVnfBbHE4}Vx-QHPZd03;xlO4KjfnDJRnwf%}J z8I!xH0*M{j=0_98Bzdz6CrZeBjLsN_vdw!PIsFQEZi&MIamg)&ekU7iz?`!l1;GE5=!5Z(TZzfg?yBIQt~-!4slbe*9HDDyDl8QFRZjuh?Xx-zJz4E5=L7&C> zLGCU(48TET!27ol&x2jQdlipo>K-WjT~a{#5r?Evyqv6Ui0?a%i@PD!G|B z2o!mf0Uxd@?1~R(R((kW2nYzgM;|&B?HIKRlB3OkrEh`r(6DzDLHwPC41-pkTUmFk zv7MZg9#k?w!u-}Vap7--eLb;JPrqDK7f<7wb;E{m{RpUv#rG!3vg)n#gtXgZ4)vqM zuBWoJm66TL-Q0~&w2sok-vA%4nHrSUR|fCWu6;5*L+Qk9TXH|c8^bo%j*KspMm&&M z?g(NJ-Y**lt-P0dwJM&t1^UBAMhJ0q0$tE`cbkmxNbh0G%zGRAuRpP(ikfP%E7t&UbMqf>rS(dc4 z&<$RKeNk{~`>Pr8u;4Y7p!7R#^Ye?3&c)maVb zXKzQGrr6(~`95azrf;j8BgQQ@-Si;j5K>C9DKn?ysjw$y+fo;d7mYYK*J!_X+cvg# zC9T^AsM$ON+fH&a*?uO-Y`Fhp3}YrvewIK~4mqkd7+t^j=D;(usm(ISKw9vAv`lT8 z3*GL(^ChVU7{{H0zQ|_ZT7TZ0u;;Yr>pL0->@VLCCZcIS;R)Z zCFYaiaHj9~k&XMtgh+TZzyuv5Ok#=!8hnW&o1&lqdC2Vpmf-Gd59LUSdYSlK07P+< zwFP@h@;DD8Y(`l`)X~7FAy0o=bq^iDS}enhN%{SXqE>~2FM0o0pgp8OMSqBsV$MKp zfFp|R{G!?{LB63;Reere9JK{u{kwhc+xEPVtY`HOdPzXB`dG_X)3nF#<)@bd!?a&= zkl|)b9N6-0U}9ZUT%Xg>iS6iP(1j*1ePJ#R{cP&eidBh%I7b%PTfDmy?AGC9KZA&m z+9X%*x9(1$BZnzzy*H|Bz%?#GSU{VQbbV->agxiv3aLv5FpIALG?oYDB69V~eUC6+l50&yB2D1dS%qEiw*C#!ll1#{< zboHHsAO)illFhY;@bS&cW--?Y>txf=r#tM@8MU*O5u6^8_F#ZpD`h532BHAohP5IY-Zo zR}abISY#;asY?6`l;vlJ3h2VQ+_F_Z%=@>Du zO=*t}zWHJLDPX`}JZ7PZ|5?gGfyLE-ptX#*XSe-yTBI#vmb%?(Ih1zAADsUm5EL5O zlCBv0WSp*@=^%Qnz~aOAdQP`DD_?>*_^&iaf=SCv)WyWu#XMPRNuig_RYKx-pH$i* z9k8$J*7UEKuu}5f5Kr*xU!TjV4|9uDv5=%ZbD~2O>kiYh>Nh)ba@&%--MH!U7Ci)V zh#yk6IU=)XfYhcXX&hDuE3KJW8UKW+wkOEduJ!0oG6%O(bj$@QL}=KYWV7DtFYz=W z9rG(V8Lv|a*8k#T*S66HFiT1y1PSJ!i&AGCY`tiKyUn~#K3K7S00bix6CG=q?5hEd z{3ofdJ!hgC)+uld`o|vrirJL=dwEfwA2PY!Y=%4TDoO3y&*c59`bRupzBIO&s_rnW zEqZGlZY@qyZ^-Aw!8we4RdY#Y`mY0ScGvH{oBt0KZ?tn~+w?;=CgB@vM{c!8zWL{% z`#d5hFBjY@W}mKMk9kL!d_=UJ%O^@*s|D!WS&l&itS_tZHZg(BX=i1xuVc1ym6g%scptExI1=o)4jL9{=}rRxW1u!EZYg1Nu@WXmJP(!yVf zi?nY=XNU3Cw3|MkZyUf3;kFH~1Yvdy-cVv`8$U~KM_Y-fiq+7A$H6k7q%GsG3AA4# zql|U6veylqVewMPTspbXXq^sQof8W6(tvt>?Cig$uN!Jl8l_WrevB|h%G?Ox``7I7 z!GZ&D2+pF0u9o;M1Ikky9=IFdh9k@ql8a>)g9_0vR3&ovR-&NL)|ta{&#R=2i%5bq zT7V?nTwUdtS-!@2`PWq8<3kX+TK;syua^yJKWH=wT|OqMmu<1{|wv#Gl9fU1~`Rco!wU z-_+Zt_|RaLt5m7I%IaWT1yHBI8+aczZi>lT165Fnqs|JarGACsj*4+|d$C!;&&qZ( z%uS3 zeEfvxFN+O6>6gFZx+RFB+PJFM`Y^yND|>N0^YSoueqB)VkAEk|a^S8EL$h^#}YRPNR7Qq`nW1r zS{ZuX^jA-;3f!JO%@gcHr+IuA!eMKlvTN>p4o+$g9zkt^ru}rdY%%--mJxRXy`C=Z zbX5dOHa!vQH>%vXg~D)#SJT0hFV4E9MUgRqG-BO-!IC~tz+XOtZX@V=>cI-q58AhX zJbepv|AIS^0DPI6ug!cFQZEyU(Q8cB4yz_-A_RW-KOe98s=?K@4qCvBZUf&1VY8%> zm|G89WAsF6a<|H;*Yv+}rcwRM7S{p7qGa((X`1}j{~Ug7sG}&ia!o94=Bi5_MD&u9 z>-%(T`H-FcBi%gb>YkTZ>H>e$DwRk67|9w~M)=K)H#|9h6vw-NsKWgY+`X^s*-UYn zK39@VZXg@c%-?qweNluqU}HYc$e2_OO`ESI&(5T z@Yv_1ace_AX{26~WysPkG(ByZlNoCxOTLgj99JU}T!#+l>sf7ke_ZV;S@pMr(E84< zQ`Qblyh{6z;T_N!$9*b5*Qu8a(atLGSm9)btCvIr4ym`E@*Y`Qj++{_cWLJ+H8%>8 z%;pV$_BI`Jt~je)p^&`vKxCDCN^%{P+Pc+_>I3hqs~HBWYs@>@VyZY6QB0Khf*Ot6 z=l_9tL$t}A7NR4U8{8$0N$f)3+FAK($M*LL7RFu$z_r2(XZ4ghsB2Ka-MjBDvUUuf z!@eWOKY9#ta)77~WkzfKLPp=7de8;coZU8B3`q-9cnULS#%@+L9uiSIm}lMraYlgselg+9j;q;3qH-;tiU2dgQ# z-Ny;2;KkQKKaBeUaKG-De5x=}j>v~NBeu-~vq#d3pIT^y+gnP#5^*t)%Iu>arVjHQ zyN!?gV|m~j4v!ZE0N$sDv1QP&~Ur1=STN&)^{|VS~bJAztO}; zFna2)nO*Dd-CEuDe9CHYWA2I|DHhAXm@@Sk1LRJ-##DLojso+W=!3@*&u8Fkf8dtoE!<--O)fJ_;8W ztWZCqM4RlwCvTl%f7khV*7*lm1)1I_3j-(qQsUfHG!cWZ*uM4q3d6+aU9?h5KOzdf4 zytPlNT)Oxe#g^4vsx<|0-oLZN1=9O*Fy0NIXPB7?m%seH_8$oH%_{)u_9x4F4~O-g z_u&ip!O_#bjSgA=A`@nPaD@`xo;VDU}qX&Mi6ZKfB+o>1f)%`Z=*@3%na8H zPd4xKaACgt&YIwv@W~qb2fH@Uf~0ZR=r7J5!h1z6KH??LAs;pGs!*8+4f%bSsqxg` z3%9ZhL;8F`MB#`5^R|+JVkGN}wR`*pDi;|!A z6!uiPKu(m{X}m~0rb2;K{Muiy3y-KE{=m^F>eVSn zn_$3@G~uE@{b-ILhsnK)z+9T7(vEfsH&EK%NrxzSze)>J06adzFNRFgS)Qm744Z2- z@9}d`0+@UyiX&^?^W>w9q`GF7Jfev{W<_*vp|zUA^U9lua9z*vyB~DZzTxnfyfR%YNLZnnKffL_9`^^kFbzusk?I1N ze!k8s$U<9P?LW4l>z(UcM8cg1vZ|k0`^VT~S}yj!%S-reS8$Uur0}gqXjN{(r}R`? zP~T{i$$HpkE2jUrT$$saz=ubS0OHLC{RF z!7nle%w;&kXaUW3oxGnj@U)J3MgunO$E96hey$cx|(~h<%DBbGo zf}__w3VK6=7E7ud`R2)XF}u?>^Op;#0`EWW9-c6fV^hvhI_N{2f`9_DaL%0}XSz#! zJ-HWKqKi5YgQJ6B4|7{(w`Qlqmg$ddUN<*oJpS@hxL7Ddbb#rFuc!^WL@nDjx54s@=K;y2egz{<>+R3jwwy2;gA19I&iR>J&0(#FE9UtduX9R< zz;_Oi!-$v z+QP1hefuDbWmNCm8$5Rq-?tXoTIg5cA}pU=$EtVy8(kb?%tYLaOzP_0%D?SiEwTF& zibubx(mbcp%rg=N4^Z@8i^<^6>NF-KcV(v>83XpQDO|7JNth5YK%ne!Yko!b zY^~GSUwKcIi5jaUGWGKkiZhLKbSc_7mp+%vt4?%n6(JHHGsJN81&< zn@0L)WDC0GaeKx?=`>UAIza$HTX5TkXm{pkCn|+^R&!)L#9Nocf7{~wsi<@PXw}2= zh0YB3!b+l@IxI^{6V>0UuVHRSm7}VQV^%0nB6$yi$^@WcK0T|ki4VyoXGUeDy9LV# zal~adfb9K<#L&5$UEYTUUk|8*Ccb~P+NozM&AiIEGx*&WfI27OW#B$P47H{iC0qDa z{+R60xQ?kYMtW^FI|;ScH)?wk7jF`&mefOw@DRlEXXmd4u+7PPl{^s0owwkr=&I z$@)7%+2|QoT|OT--@a%(l(1sB?IGQF%R5=a#p%MZy+>CRjMd~l`zzQPNe%%r4lg#| zBC+D~e|&71FCUs~2mdCVu>VM?xI+Gk&W!+krqpXTmM(IyO+6*ypy z?kV?6T6$~>J6DiSSqTN*TY{fV#OpU01A`;I)eW&+%*07W*irRN@ftQb=Q!97N#l1yMxFaUnw`7&S=X`X-+$3N+Ku?>YHpSk7JFk`%Z$Q~7 z%aZk3Qz0c`YT-rJy0}*NJ=I%bfX)^38116m9broDQyc$Ad>Tyuo1nHm=v~+L~5%*BpUd}9n^zhFeKHR^3sr`B;ZwV5_A(3 zZoyjKPkE#QE^%7TyCm4&WBvT0!^!zgnBisgI*Z1Pf^3n7@7tEyC#tig&Q8$R@Z%Cn zg6SKVr*uan&0b!0b1w5Y8K$&J;(?sp2}gN5y6z4Mre&8FGkTp<>*VJ{+5-f#amG#c zt+LR=;8TXPyO@$3dFrMC7F1Eo{a9eK@6TJvOaF#tHybur~RW3>&VCQdaov? z+ON8Iwl2Ys#S47f_Oh?tdLAg|81mB}_}u*pSDabq2KAZWM=gZ<} zNXENc&|&1U89GRow8_3TR`3N2mT!^-1c|{t+k5K2deLfWkMyy4R2M^4+naunHVQqd z({zWWzOfNn1yT7eun*ST8g;zoF8+SU3j}|b^q@QY62H#V99q7^964_P={ds`w~O#lrxl?V+<%HM*SeBek0~3GBK0=-p(iL zBn9m{7Z3N=fZ&Yb7VnY%xg9t-_KdyM|6=81d7N-~Plc6R)VNVVzM7j$>)^1c{^cyF zo5Psrlo|1-d z4!QXLgk62Y@tuBpXi3_B&9tEQ3*k@vX0?YJ7dl`4#^^$se|M6&c~G_}N75b8Vy*oW z@ErCP{RclN^E`t!;vPUf0pEUS#)4Bs=yVNG7Kz zxuSmLSCT`~K9M$sNyR)h!Yx@YaM5L}#|_-W_f&4OC4Ga}{#O#2u2;pKyA|}~vl=e+Eh9L;0e;>W z?&WEEpe=>1`HnpawV&@(KW?j*0bH_fLCB^``7#~FeGQ+?>`V-U9AH5TE&g+Ooo)4yD;2v zm@(8dc~5OFmX~)S{_>+i!sSOxw7GDzU`LC|ZHY%cMv&wLWe}Cy!R>(g`Jmp`GSw<3 z5A+J+C?QQ2N*wOr(^GxvrQ4Ce{zO9UjqdCFdYZRaGROJYUtYXO&OIdGUPz`DcVWBd ze5m`C3+CK4?%~uikJMOJk}N*7N!snmpK+&DL|x(qE@wDS5xFVYS!P9Z_b zUbUQ#@+3NIG_`(qnXC0Qdd!fOOey9`s`%!(&iasI4jJcy8$}v1YcS_U$etK_q z#y2HOi#e6MIi)PxWw9Em#9(Dm>k#_JTkzYNHR*q#Z`rB;JW3l1NRp8eZ%#qy5Bj>+ z^QT$HKHe8o_a#f9yjLzuIIDwSCKi6R|6?&{spe~z?tHsBVwC|Ge%m1-yCq>OjIpw5 z4976(G;|MJ4Pof-8Eu`A#2h^}`P}~TQ@rKy?wF*6IR(am&zdH;DZ z2PNgpmu`lACLxaJDYw6`0#8h66roO(+9!90+g1$_4UuQlUGqTb6zF|MTR#{)cCz6^ z;gy__&Kz3>IIgay!}8eE9}*hP4XrIvg1(i;#VjZib^7Zwp3Yl6)67;W8j2;!*4?b; zZT0#T{+_$-Ek}%-jQE3SPDRX3Hh>>TedltY<~Dx;9o)+!ju7ry71t{bj4l4 zJtm=EfE-2%RZfT)aQ;rpb7KAa6^V zwXfTKD&faghn%4k?i3w7zUjy+;DCcPo*k!XU6=^{G5pF*l~?lX?%njtsQWfN_f2?% zZf)<#G3R`@@GrSG{!usgWVp8HO(uvo|I%}gwF5ujr9O^4`g?6T?;^fK^qdgTtrtJn zjZ=hjLoV`NN4|n_bo_Ll z_HwuDFm;iXZt+T2hKjwQ;OhHZ5-bPTQublBjS$ddS%7B)Wg} zK@*clMH2qA?9+4pnz?kxE9F3WSjxmMZr9|7*Z214M#?N$${Qpp6Cr7^gZk|}>-vIj zpp!$>#K|VI-1GeLaROB9_@#(a6Vh8#VxD7_2!zO=I~ch6#hRnO)yslw2;Q$DV86$L z#o9^0tH+`K2UZ!;{<>6_HWoV;>8&2Fh-A4qn*)4{62)#8f8Tsp?$NIq(h;ecWm6Pl zse`1x5Hi5qTIUL^Q6FDw`&7HqNH!Dn(z#H>Em{V&{k%SkI+pbexzU)}KcqJAx@aex zE?)#oZs+LKYjifZc#oGDDmm^B1v^Ja$lioatV7XFyPxHs_rlwlTpDaF(CB(m z>d_07G8SzCE6B|*vP-44d*o8Zk}U<&=QR@>W#SHW)g^Zg^Ke*bx#Ygw%Qxq48Hv+Y z`y#B~>Qq2*cs+gpcUA`R(o6YIhvcAu9f8I;HmT=brpwA-|L(uswIy)@XY-j!klGeU zNlb>W7bd_WTU8wVM@}m-~%(-7UD<#!ckP} z^3J5SmG4*IUVy|#^}kDVFzW4qS0VX|C;vibWEay0iZgM{xCo;|Ds|m<#VS>%Nwz@R zRvCBO&HAYp2CG9VUuf$|x$4XlBo~C{b=&RFqY%ZgDZB|Ol$FfzvHZFJs?ohIYPs0`%2%DGr5N{-n#g) z;NC)?W)GsGqU_xTmT5SUZ`K2?{Q@wcO-Cn)oN_gzjbu)w2@yK7yoyg;zsyU?p4fG7 zXjL$=UZ& z0@fk{o95G3BhUT3XwdYD_8?o5$E(gso36TCzQu!WiQv9h0lHhKxLt$h&KQP;P5a2S zf1K#{5{C)PR9t!?-j)?i>~ONJXEhusQJq5h;Z~Eg;veJD#{R+CbVms2!@>`wcVa(s zQCyrHj=ym&JiFDgSR_0qPSzE+74>7_0&;U&G43LkHcBCB_zrjEiUm{UBx51 zu372#IH%KK@!dsbrk>G|7sKL3v7&xa02&c*@LWG%ZG|RZbWnV#V@C1w&J81|LS`X~ zN}No|qEKP9Y0s8Tyd#>nY-zTcveUC#alBaTA zf5OmWWK)CA9rUTbTc#T?JGy201o`d`eZ1oL*i~H!hhK`7NuESaZ^M1Q2L8oHK}s=P z$nUi<5@H7jI$sp9y}0vntf{6bLt$K0UcXo`gm&Vn;+tmkB!{Y{x2FtS=FPSzOi&^V z0b>H2$}2HH=Zi>VnLYNKfSui3e%R>hK1D3S(Oa7u@Qn_Dp=r_{{llt~7SpGf8;C!y ziaO?T8k8RNZnN4-_{UoD;}h^d@KJL%DzR^wysvrjI6s@7*q06xdwY^dWAcyA$e4t-{WPsId!}jLq1~6b~7DK$C)KVZ;sne~Qlkzw! zYryd%L()O%6JKvjiS;>782}N5H=CeLWG-mpi(~X~NzbnJT(wwrHXazole555@)gzj zg=bvfZVl4;w%cm`4e>GVhRug9#X~63Tdkk@jr*_6oRLH!q0FE!8&~;OrAwDX&(8Py zs8FnJHAJOm9wcO|xp4H$(CM(J=2WpVi}n31noGFP=Gp!&iCWcf$zhMdNnRrnT(p{k zUor>#N$EuiNj^ry_t-XUk5Meddtb{mye!&0htjwmW`V@J^0280gea+>AU~7B7CqI0 z{R7!pO)T#$6&WPiO?Q-{5>qw>rJ&y;K9|(GuP#rYM$%?03t`pWHd(VR_fGC~NCrKn zURPo+Wyu;e8T+{TCEOIYdUnHK#nT(tJ;MH6abVOc+-N|Bjt0Kx*XDP&`p*d6VgEk> zTtTD0fj7*|4p` z+aq#<0uoMf@A!(hEZ0QIwMUd#0LM5ZjQ%}qHfPG4BsOtK1an4@pPLLbyPxnCLU5v1 zjF6mk0Gto4Y1GJ>OfN~guaD6?6 zI7@~*-AE@VX#Pj>saEHgq{5r3R_kb+gVc zBzJcZsM@GTFmcqMP7Q3KQws($5z3x%kAK#=#gXJL>xBb?PaM{q7c#sJ7$!1g7&*yq zI)0*qT^UYW30Bxm1j7Y`?Q{n#gPac4p8Jfkt^`eOql=4cOk@D)G2lJ+t-GRXmk|mpZzVg791Rf6^Pvj_$9f%1nk~4yOQkb_! z>fT^x;9zy>{{YvbHW804fgqfz3OWA(Ii}T#wiY z3cI);Q&+a2RCYwk7$ZLZwVOAXvI3tVQ;~uX^Zu10vq;`xNlmP)g~$Mdjyd|&6C$jR z@)5|(EMoA=1xNYiw zZ>XyRqsF8t+l+C^1?y-VKM>rm}s1ekS!T1~iFh2@uLA36WtVH7&$3I`n zfpsuuMMP96%YlG%&t90V8+3UgQ;#Y75Jqx4jMYoso8#L3_Z*z@kz2N{6p5IfN`thJ zy*T}78BTbkC>i$vdx4yO6^O)>iAK~s<%a-(Kl=62&H&t9+mV0);Cohd&|4K?WOv`# zfOgZnHfgk0l6ZT8{4gRQbinq;@u>D zzbiOAaoV}lxn1y^8Dzqdk~?Cof!5aESaKH}bOWgsWJ2I6SxPYZgAS^5+x4eg7iNqZ z6i5yU1oZlJ^{th%PbrDc;(lfauf1a^*bF&fEL(i-BN9nwJ#*_#n{HTeM@_^7jy);Y zn;>ngyCCQ99OKvdR#2W-1Tr3gup^v$RuWACZJrVH{HlR+z$xSW^GGCt)M3j8JaBS2 z?@-Aig3PEr2`kPqNJ3-~etw~f@%jE#Mpn?MzJp|nCjf_hcHQ6URrgB+xEKT+KWxaXS5du!ETL{TI}9n2dfA3!nhPD{ph3AdJA;IPKuZ>=*kM|@7h8{0oH1a`sd zY3UebauG(}gB*Szt!KqJQW)*pq;LW0_5ABewx^neu1Uso?b?GWH?f;MVVG_h!(avn z~r{vnt9?Yv=`h4MnK8u z{{XHiHCpIl#Vg3|C_<=CK43Qg-1V z9AIOo^Q=*1%#D(+2T`~AkH)38pX@kM9#ouixyMeXt`DF^-09>|G;xCMxmSRoV2pL| zSdzsRx0v9#9f9b6mA@6j%&N$UNhGi%9lKR)=#C#~+T0QV2Ru`n>WeuUrt=&+u`%Z= z0-h=53n@E_{M3XBQC!RhTlJH5^&HK>VhHx1w1+ng5b z$E9S;a$g}=ZdZ|lcJo?SA(##T;{{0oip+H?+Xl=9&f+pb{{SYllGj3YxQb*9aq=F7 z0!QIT?`0=?sLvSPf-z22Mr8mnP;r2IbN>L>tE#ag?_kHA5JzA0nvxoAlwMcKOsFG_ z9<>_oAQ=)jY=9VJE${l(xi^04kQT-=$Eg_U{HnQPFpdg0s6Bm+J9T8}F_c6ZLL(sK z01R}fqhwhb*-S;SGm*glf}|{?}#G2ZMUIA8iBmhoH#Z=UQNVnt`&M-$)?fK9K5k~vqN9~d_ zc9B34h0V>%ci8=ZY!m8V`ZK~?3xFF>64nO+!s?n%Hu>6C7a(e#&kSGoIGG!qQ zXvzlSK*8W~-k}Aus7oRPlZ6>?txY=Y+7%lha^KdfsKIq<9ZqmCdQt;*AQB!1PCx|q zraTdxDFBr?AXcTjsR&qaVnHYHrpp;)zBu-fa!5UY3Segokhxzd5-^~jr&@edtc>}L zi4P|ugZR@P-2U;v0I<$-a!piO6_9_dLQhPeo8Q}|1ACVxFpxKIEr2ozz~k1V4f5{* zoc9N)^s1#;v2h~-& z8R=9qir+Goa6rHuoSY77>moY&aw&X_01gTKYc}rg9;A0WivWw3Ae@f>07}hdjm)YR zMJh0II`RJi*Qr=SFsQ8CPSb)9;hYS-qQcq540i7cGc?9{H7&#;JADuN9%a7#} zs^=#>_p36-8M41A3*7bRzvWfD!U4%`pkUzj`qNI@iL0v+-z!Y62JNi8fH|&Kc%(*W zljUL02c>l4Qp`}RF~$MM1Od}EMq(vaSz}xr06-rvf6kt}nK-m&*tXdawnCmbIL&u9 z&$)LYByGlbb*?s4Too~^wm~3_XWuoluIf~v+JA@-;Xmj3)77F)DU5;1B?AnBf(Cw- zlq7d&0oT-S7$fWJS0$AMTizsX=Kx@w);ymqtU`Rsa53AC;;PM{9Xl3B%L2gUU=g2s zOKC6&Vej!8>^7XyDRkog=;A^gt@Ha?~U4C2!$n@!07Z8F(n|h8xUI!JFo4Jkmu|<+qm_L}Tz~BIQ zKVQOs_hkS=P!2^N!zLkC{1f(oPZQGD?Jt;-m>Nh8A8?amhu~}5$ zkP7zy063+(g`OwIPizC%{Njsic)(&Z2{|MVy!0dTsWk>L#IiBS9ZzxiQ*&cew&n$* z2xWW{2t5F+mpX$+yLliS^{m6GMZ0ivMsR*o2|krlS&~OM+({qAdj9~NikrLKw9_Vg zsb($;=XU@W2R}-;W|KFR1E+hPH`f!}6M#+Rf=DA7sNu6MAZ7!V`AY$i5BW8}9l2f!Nf0Osalz<#AB9VO ziHx<>WKdyQhDHD+jB)My)H|J3Tjr4D0t)hZ?^_6rLlC1RjkSbn} zLq*)eyWCuziq05hgV1KEvjNB{(~wV3^TlbtSZx6}0o1YU$6Csg5F3X;bIBdJ?Nam} z!;)5MR5k)O0a4$P&+2P>0v0o{@CfSMiss5PVp21XFi0mAr5({Kffu$3BcIBoT*;e3 zK?R990|0@X{uN!~5RooXfyg`_e_win-eVwO0bCL?dXMp|>`N&5un5RG>&0yr+SFx5 z`G)NJ3+e(qciU9uGIFJO@1Fkv zt#U6D7Hk(KR~+&`8t!gTl#d-4ioC7;OBbABJlh-VN-ie9Q&h#IGyg`qsAi;*9}rGB5xf{uJy7Mr89`k^*tt zCpBQAEM`VKKm>qC09HpaT;%I zpSnGB_!>(MV%qZMAxRc^&mqucAO5`qI)sT`Jk81#j&Y1<^{jicfq**!#zsy*4z;!q z$Q1P;F(bdz(y=d;39-14K_N)({b{X3ZBd&FCg;H$fX*^P_34`GwAnEfD}^io1c%Ol z56Zcv`F!Gc1CRjEw`$bVi-{EcfQ~Z98Q@cEKs7Ze-Nc-Xf;m;e1N`Q>+W`+zqxk|lZTgwMzkz06d?1k?YXIc5%0RGbS*18bnrk6^jf5z`*|i zJ?g}R3Z%GICpbKsB2aP00Bi$}y!W6Q>}jFefqCTPI2bjTbaD$a<2V>%27Rk;1q%|p zFka^)HAeOx7)GbEEDgMx96dW;I)jSIw}6OcJ$!8MJ4 zET{s8l2$>5C67Oe`cM{S5&~gyxz8VamHz-at9IjV*1$(NI1SV5S?ccU4{~#io;|Ad zrL!5HM|kq&VM?4Isn4|rk-5>Tf(!8Z$3xPp-CQc4n34(T4gmZqeAkUJourJMj+Ku) z3Ad}9F#sInk-_|_HFC!X^9*AH1OuFKIPF?7qNYA)$i{i?SgMh;E2}<0&I6I0R?v+B zR#L>U!3WdR^`a@Is0@>x*kUrhK|kZ|Sr<0j-E#5;9I*rM3h2DBLF1sv1bWs@$vc=T zgUrZ7P7Njse7OWm$; zfwB%%lh@j^8HzqOkl4Xy_dTm>c+I>oe|56j&0h^G94J1Oi59DCbTMx}!jx^<;~lu|S??;ieYpS*Ffp17 zQR>3qVw5}bNav26bgqurVGibDf-&vSO6INC4zjnHN}LY)1XpN^%?hc=1Pl;8x==Y@ z#6E7;1qj`YbUal{sbpl7d6^)35sI2cjuK^d<2>g)@s9O}dvdsTL%0wK7~s>;l`A7E zdzkkK++~S7c8-{&w+%1McdmFK=bnH4RZb^YnYWyfGDhA(&#&QIcEb#)R6apqGt;Lc zosq9H+_fdFQ!Hx4D`S!eBig36wT&HQA+k<7XQ#bejTB{hIXDE5z3)>pjy46yWe255 z$~Rl07>q95bM5$6GrrPflqdv@^go~HT?_9dA^V_baUBn(X50x>s0$X-Kp}wj{{Z#S zOz&+45VWX_6c3c(5IFV%q}XHmiYRR3BF4#^AjF06vvsDH2s|NQ?l% zAdi&&C?8Ep3t`xG9SPmR{40*}PmFY54q4sYYE#1vyeMRwc?zhbxjx+2PjhS>NMS0a zvAMs!UnqQii&Hb}NpkjA)}B(vkc9zVfa-p{b?zyrXK`$gMbW-7cx%P**siMTZ43)9AO-cp4j5P9{5eDUtTiC_QOuLjZ{MuvhZ{FKp#L$3% zF>Z6XGN~u7GwDG?q>W5UUmKK?2;&~YsV3ZoEBD_2b$2n6S!tz1~y6mC*fF(jUY+*WR%ICpjV0m0ppN&G8rLJEb>6!h9S z1KxqOj#~Nrsa+Rt#^m6CI?7ql&J#H#WO{+_D^E~$S7i;2rv;gKKaF8QEK4(f@ksV0EhNAPf$6^T-X!{{ZXO znPg~pADrL-K;%}D)o3=Xu4NK(6aX+i{VGI5yDEona6sT@nI+6gFi^Sl3UQy#p4yT) zz(5Z`MmRrOQjUgOh0gu1-b(OE19wWt*c^<4Gr<+9EYUhMNL(GIfMPiwqOz7`c2W*O z=L8Ntsy71EN{jxbmE01ogV5upIqm{Tq=>^4$RP3udYTdCf>JdEj=1aVRj2a6W|4O8 z80Vn;eJKGKoXiNo0B|u%8b@fz0Z<%nJdD*yCk9*txfErHKY05O!jgOSkd2=+rz9vN zKaBu%ma5-6gUA>^FCT?xU9@Fqk0GYf`VFp|XQeKmrduG2Ab|YYKX{*BYt4Q<+uE*=zU`Sb*s{{bL1mx)mL8cP{Y7_Q z4Yi5o(xY!R%7cZ7oLjfmpwn?5cWn>C(RN(Pfr9Yeh*}@CHd=^MhX<{2S4&<(6BCZ6mUtcg%$c z-fvul-O1?yjp@Abj45;8& zD`$5#z?j1Wm?0ackhT^f>csE|<57RYTcj* z6n7aM0HATlPu8m4v!s7F++&O$=j&AT{{Rtbw~VpB?j&U1zGH#8alyxL>sR$Vh(6BD zph&Hn# z@&IOTy!NWgtZ6d3tU86g+XV&8WA6K86Pm@YjLpdDQgG6$l?=N`a-#r@nvQu9gDR9E zNC1ZKj=tThJAW*+P9&3qk&*sICG5!n+|j7xobi#KxvUy#>Oqk<=sd<(1Ow0xPaeOW zT+(JqCRB2xC`k<1{4rd;*0X1)%LuyEEi5f0C1YtYcQ62u0OvgBjW1oby}sFLcLnT3 zf#yOEJNK=ldl4kGCoVIs(U@Jw-A}!Y(ivk%NM9+x#mM^6Y8)eEOB`!r9uZ z1@o9;OLgS-;=HR@`0Mb`M;d?IylJIOE?;D6XvS7R4><$@o)4{GDS1MQMBFv;nUUiBu(>S7HFugWk78TwLPF74e+hmyqppqjOq#9`U9fq+5j$4cRK zzZU7*a@>8c@+hYYS~!D@kUF2BxVz&pBe(-q{B zd|mKt&W&q&wvZUmVrd8N*e}hWZ2pzX__Own_;ukqd@%*qtNo(-lND2JyOz~JKRkqX z&IcUwD)}@6={sP~#gJz>;~WamnFO10BPamm0iG-6PY!<4o)^2-WU-p>Pqc(bxg?fS zsz5zSJm$UANb%O0tO%OT;kgdEjiP^*fjvRT(xL7Krlt!;`=;F{K?fMeHS?#5eih#8 z+Tqn&;%_cke3gyk4I2E!@4@fe@UNpL$aj#HRKPe_CnwUp-^E`O{4e0GTH8<6n&$fL z;)+$bfH5RDE0)0n@uUT>1^6Zn744^*;in@5XmN!4TQHv*;Eb&2=qO^m8@D~YT)s}7T>{}0X3kK`(qv>14=g^FV_Il?lrOqB+GA*lvl>-29Kl=0y zGi%K;x5>4MJQ927rCJwik*mn3eh45BdV$s_iz*{P7?QZpZnc!`%QCEl@^AoNzgkaY zMBePNsa@|I#LMO20tY}(PPLAOTXT87aPY!AJR(>7~A&z<0NcYIY34+RU4nPOFKaES1TZ@}ppL6OO zh=EmYRLX~jZpXJ7`d7#Q02VE0X|B@78*j9QGs!&T_i;somTYzDURk1k(;hdzxR=9I z==Te&MCMSk#td6qp$oS4BJZOA=1H7aa8 z(e+>K`-t?NF(sPb@<8rO!NhOQNnGUPB=KKm#<3F=k<2zI+*58z7$YB<2k@_g{{UwF zb4|JM_JZ0}AL!CEI!F+JW6vMR{cG;uJ+{T=iJv0?>_0H~slK-%->GKnX=Y|rU>6&J zB%0>d_9*hq&bVyjX&wDPD&>4_@efV#MTPy=sOYgp3rQ(v&z68^CmnI=Uz;8_{i%K> zc#~bZv9p@MG|(3C{+kL2UTB61d0BJw9oYk}IQ781#D29!s%h(jZqzb>#5Q>3j-Q2T zrNz9`5Yr~+8CF-|``6@VgX8axmYRiyz4o1FG*ZhOTm}+G*6@@+c<1I~;0z9ez30JS z88u7Ujh3>_XL}Ly#j2JoAw9#9*N&d`vQ}0D^erJ(1esP`ji3fRdl5s2D#}+VRDs2D zz8Uc(H&DPMVdWJA41VrM>s_gR{#!5v;1UZCGyeeVrUosnk z80*uuG-oMxI)Am>DsNdKLZ=KIfzPKsYUsO9B+6xpqEZQPyOl?-dvveN?-Kk)@rIS+ zC~b8ww(Ch6t4}&iU`SMfj3_@b&nG=A3&cMezA1Q=*y)}g)K+f}LNRX*w2mKsdGkma zV0iir(lb9!uQkgXNttAx#zGT*<&YjfI-zCa-9GJ{MJ7~?1~}yB@UO~CzYP3k{@ahm z7g~;?bK(n|f3roU!W`Lz2O|x}Td!W`yZ-=&{v+|0gL`G8>(76Cb1O8mEVDDD0AuAP zzV9S_zu`eqm5UZ+Jys(u%@SNO+Z;^4 zG@K4W>Bl0y5%1R3*-m0zgq9=@;;~!mZ5j1Lr@gkcV$=MpsvMBOh4(ea_>afl64GF{ zp8H?Y^qumwDznSCdya51)Zk|xmGd{ozl>5`G@37kq*=gnvfe`AWqknZNaR<^);|xt zaq$mOpIW_HC)2IwS*;+QjwB!-ow&&A4;0!(bF=iG+u~n@?=B1x>d;+)p_$cA2cS@S zBi_0@EmjRgnJl(QxhzN+$m^UR#=kck;UA6sJ#TrbzNxEC;zJv)u$Ejvsk?HMfyn@Y z$R{21UcuoXiP!t>Eg1|Bicq<7cR0>VdS?|b-37V!`kyg8$4~)Wkb8{u{c31r3hv)% zhS>ojnb-wUfz+SIxNih_jCh91SQ=#-j9F$#!NUMDN{aK(i#{>bEbL;^tV7#PJ2Je0 zg=I{1`qC~D>UN$i_|Nd~!FJad9w704g>AF~cU&k63t%%7jyd(sd0nUN8Q?uc*xbXf z2C%)C$+2)Yi;_V&QS?%M#e7FMg>^p{_=spxc~WUC9VQaQSWhWD7AJxSzXrXHKV`jT zH8?dnwZzmeE#l3#o{AP2CdLGd@`enco~IZz8d}>QX=z^&G;KyCHW$&!lmLX2b~h3_ zepS|6>Pa9*Sr{QCf~1U|4o@}kErx@v_y+ZCXPR*=E#$icytXlsl7CwIW5Qbd>Ma~e zA-RO8ZRL3MDm}(2ww}gPU5{>CpD+Ty+naIz-I z%I-K`p0%bSivo55V*mn4ApTT{DBjBy7OW!y-9cbN5uai+?ObjD0FOL5qFM#iwd*}Q zQFh8fD>hv~>Nq@c(z-ouj1W#0nL&>#!1L-qr{`asUl=uQdizzsj?U~{-rPrpiZsEu z!{Z?OoE-ftSUn8nuc`Dlx%*UjV$)NfN=+(lLKxIImJ}Z`_Hn`Jc&W6H+B-nkZPMgf zUg()}s%B8di2Qn2m;5{Zmi#?=rD<0h^UZB_EzjCy63FH_%N*pMtfb`N*Q9u};69am zbh^!~*LJOA3nUh(R6{Gb1=&Y_gdFkBZy9tmJ+ngbvTE?N3*R+K4p%3RKEB4f<-Uq* zcLIH+i~vD6=rNqv!}=6=o(#Q;8SZYH@fT@{mtyrEa@&22k#PGCpPj|N}5>3L^uewt;`BFm*BXt+tC6Zij))aNzzligsm3|>uaflJJKqy(OJQdP)WNP6Ii%QK zR1uO+IuDpuMu*VeCjF+bpw=&~t+Z15Byb5Wu3At`?n&H?xElz-$0QurH{n0pTU5T* zpzxlw_O@EQt8;T~t0CC%i4M`Yfrr{qkUNv@UZJA?%$^dJEQg3R&0gYgo24>Oj5jBC zJNESbYk=|Bz-tW_^j=!n{l4B%=#rorf-*S=xCDh59Ss0|Y2g0=6Mt>SB91{Mqz%f9 z032r-sC;|k?N7s2xACm8#R0c>NuwxU7spJn$8ldM{3_MkOVqA(Pd4so*9wFZLSTS? zbH)J2sWtVz--dMG5@@MC^DX33f`&O`$YsYo=9tsA$L6oZA07Ca-e-z9F7?+8V+xp# z-L~iFz&^b3TH1f@3*s#n6R3+#R`v+oyuwYf?<@R6cjMcod#A;J3HV>bk0WVo_IPCG zNu(H6a&escbgI7${uOv5#F~Blz9PAcRJt;v+d~u}!Eqi)bz)BkILB-gNZ+CBUk-jO zuf$Ic=(^UGJa2Du9!SDNx5#|qmnW$hBd2QXJ|lc&Zw6Syrr6lr-FT8ReDx9!F|+8T zfV^ju*1D}X!8#9z^qU)96H9|jvx+dW!ET{a0h7Xk?TY#1;@5#SZxiY>4K^wN0JUya zeA~uOLJ#6&-0^|U0C-P}em#6c*RFK?JqlkDT4>Nn=4DvJF#M=eD z)h~2w+x;e2QxeB$sX7jYoH-c>Cz|^A;qSrQ9TMKw4QkNel>o9#ql3vKAZG-T-@STv zrSSJdytJ0XPSUO5nb5}saE;qe?1kr@x$8h5Gx$H^h3)KC={i20exU zM_6mCAnhEHGp^tpJP)Yj*1in!IJfX!?dGR@ai?i|GR&&-%E2SHQbLW)eaIR2uciJN zYNqPl8||=Op#;Y&6ShUhNAegw^G?rkIHr!v;-`vr%@a&`EN|n2)<{gAV!#VT!y}Tz zpXFa9TKrkmt*qgm{{U9Hj#g66#IDhTPfjtAe;ilSpBIwq=SsSc-5`=k?b`-NJ9-TM ztbVod4bO+;@fNK5M1;krAyk(jeB&Q^N4LEVSj%l0yW(Go9ysxp^}eIwX4IO_2>gQ_ z677y-##ytUn0BmXy7;kSb#1I^I)&4RxL3M@_C{o79elO^9zP6>;=ca?_J z)Ajeh)0M;pRJ?N`Liy?f9^HAbs=OU{YAxYoXC%|MLjVupPvu6ARhy znoH}5%#0o7EEonGhq1vJ^~ch@`pZx8xtc`NW7TDv30hFs7?bTW zK{lOZYif`U!YqXndXjsZ@sEdd8FkH4IbnrRNUVyZ7|83NKt%>>JOz7+Vaf2O7X z0E%s_EMXy`uu23w}bq2S73=nnv`I znYX(z2Lo^a0A9RjJv?8Xz;5uS@6M>{J*FjX{B+c)cIdj{{V!)$GVO6 zpPOc5nr*QL4f8H>%laSEy3IfKRMvm7XNoTuX26-Dm895@e zd>!Ij9R~hu4MXhdaV%^iLns*_=OB9fSJhf4i~KP#Sm4$yH3`^Zl>t(|xMBw*G>S*V zdT)ZY{{V;D%r}v0*RueuE*9b1N0?`TrMdymc;>#i@Ft^ost6k1Xpk`*_pU%01Y-nO zU8?v?!d@~tiX~KyNij<>+yUxCj8|ddZwPp2NwGF|5X4nNAq4%+qo=+`GoF>CXKfiv zV@g!JD}b)RWr#$UsB|&zY7yEBi9(x}=iNs$7*5Vl+wGN88&h%yO%OI(Dl%r|jXT zcv3lTw0k>Y9CBmNNn3^k?*jR391MSvUr^{?CeW?ol`rn2YoYQMc>>`6y!7o`H~uy7 ze7azo=ULG%qhRqWNhp29dV$IOsVmskJEP;B9^+ThSuKs#%;@g9VnNz7>*?0MpzyAt zdo7c_+cch63n3&11Fi>p`J=^p{+Is%2|}YCI^rWg`aBk{!!7{~0AM>2kEgwR?}RR& zQnwLG3??-SVq_td0oZ;9i+35}e;IsFsLQTc_mEDZIL})6rs93}TYek)#>M z6p#;oyw)~}@wZ#hBaLq&w@ZdVuL^<`1{{UXK|CLNQg#|wJp)?!O{3ZA=ld?ra!F|s zkwU*c2j^aU;r{>&YZ^AB@mp#BO_&9|s7Na8#AiQFYu5B%jJjT|P$V(Pj)i5n^M+LW z{{TLf>bgb$0EYD!iS6y7g5hJ_@vHas1pO)$yOg7I&7}BWX?qIECGMau9Fox!@;+Cg z2cWN-ykGF&!`gM@*hd|*>XHUxW`u5+1ZC85j-YyE*XRjk-{*bg$rxkzh#f1yzBT#x zcec8tLk+w!AyqMs5pmFGJZJT-G_hQW@c#e{{3^88uA@}@GJ*3-@`2AE%RE=wJ`nJa zhde*0TiK?YJ@YI`K6l!z;N&>Q4+IPf`M2Ti-NR~&f{7u?QpbUwa7Rq_udZ}u`$dE~ z-XzE*?fF=JXh|)KvN{MP%w`E7ia60Q7j{E^c?*T8=t$LfOW5T@Z>?P;FXp#S#!Z04tOKj)_;#~)%0aVhFPZwV~tkJI^2WwVVP+y}3CMW?&QCqK;=CT!W?fo8Fc>4sDxeLv^W4x-9o+5x&AmDn3pd{A=Rh6x&OE;s=&ntELk&$0#HfVT@xL;C(CW zrfDv8E0u7LKqQX2`Fdi$Jn^ofapCPn?(J=EFQQi11VLGcKYI*E6d6rxbLd}&UKZ1I zK<9M!iq`u>AqCii3XXaV)D-PuVDq_`o@?_3UgdwSQtcpqH8xp4#`UO)KCR$eF~{Dn2jSe0`@1;Iw{t5yw6YAdbJstJ?Zzr( z)vhP8_HK`=$DKXxEk4H_5Uf!J!BD*PI3x~njE?@b7^hV{p&xY~)v05A4^g+G+;& z_fd;gzHm#mwYCyAJ+emX<0SAdo#D?DS=~;8>D%UUyeK$q4cYE7k@y<8%Er*#`!`C| z6*Tx}h0LzYw>^g^labHqUK{ZaON~!Zd37%)@l2lKB?@brdDB`Xs~xX2Dh z7oMDbYs!0;QIb0l$NGBQTUZZfahK3bnl5OrzK?enoZau#` z#JJXy-JA##X+rr!abU_oKQ?*JGyeeArk#wW^gdYlk#P(gT*oJwwYN%74U^Dkr*1lN zUS;9WiP|59mi2YJnC$U7sFj~8tIx_8AMWFx)#;xX^w(QUZ9!*&?e{2Mjv2Ce*xkU% z&lvq{$^0wum&028<5bmd=DEM~)U*Y7DackvZij>0j8!?@IZsKG_MZ50VPP!SzA?2U zAV#jFw1XHMNNx`Y>0D=wK05dpQqrxamS|&Jwv5_J^AfXVNZK8^CAc^h>UMv#U&Dbd zwtOq1?NQ|r@ZhR3`IL}ways!{uB-bz{2}`mmj;{Q?Ka}s6KmPY0cE!!kTz#H#{^@) z(x9s!7<@MI2Zpsz6<%1|$8&Ra8nwZk!ZLrxj!9rbjFYv!EA%JAw^tI_Bi$|4 zu-XcvfJgv+s+P3!fyy@lP8g-eVGEI%7``=kSO_yIqF7wcdq)vM1n)J?vb}8 zfxzRgKf-`IrMWQ0g&?UJCvJ1szj0I&RhIVPyl)vK{H(+%^u{VVuA;UH9MVM*Zcs?u zRe?P-+LKMcvAjsmw>*--9DY;*JI8Khjy>}N zBo6Defa5&ipQ+>8zH9iSreE7y$#Dux$O_YB0Dznf_Br4IUr$}k(x_#9tRqO&Z9J7h z^Ap=V*Ma<1^L(i^`{j_Q%ESgN1_tF|Iv#-gdQeh4E5V}iL~y*2V|f55$zFLluSD^n z)g#ewO}(Y$>v$DFq7K?PQ>Kbsn$0{2njCL6n?EWItB)YPW z8*_CQ)C$E)m49=d+@E>@E4v>TO{@5_&sBD@x3!UyVqyuBV>@{n@5w)%T(R*-$655* z1;(Fo_RH(6uALd%91yC78FG0fg4rN-HR>x3hLx#G(~Xx7e8QvVImQPcg?%yL%l#i& z)8Fj2&{|vqR!zi*nLy;9V~^H@q7=`F{?YNKVRd(@_W9dNK^3{$cW&MD3>6%o?^o!|dVP#gEH;+$S|J;JwRQ?H zPH~^W*DtDglSk7oCbW}Ug3je#qDW*oH(hvNQa~r^Q7KzQTZ&5P<~$YQnY7rQgF^zj zS)3ro`AUtU~O8L9u@;USM8DM+FO{PEq01V(3 zC#UqUqJ^`V6qUh1Lf~*X?n$o{_>C33kp>ajH14^bc7_2yVS;^rVteA6w^BLTx;Dd3KM4RXE-K$9w>{Dnf} zC*>ZP>6(`$2i4Fetkz*Rv<$%Ga5)DZNk8FVCHzCONW4WHsRQ|7ZIV)fwvo^-F~=wA zUs~Bpvgwxp0ODaY<_C;?-wchMFLev?Z2R%Wq=f4V)FmPh9;g zH>mAl{sp~~$zT@oP3JMlSeF|KJoEV1($@FG$hKKQ-pX7qIRGExJZHCB`9r~yO)bT- zNs(DwXx+F5J#)r=KVQbarqRNPrj6b=E6z&iJoE>@Q%HAc%<(+%zMnIu_d9t9k?sLK z1%7?_k4?MPu1|*^@c#g2o5z*oK&oXMi2;;$8-VpS_s5HoKeI1YWmuzVWDKB;w?l$I zD)_2NVvAR_iKUGf&f3{h_*@>n{W+jb-08d#`#Wf`>8*8jCZ}?eTr`0vIYcL_9K zu4_-mdY6S)!;)OKxeQlu+$1k(7Y#H-^CF*bPPL>SwkitmQ{>AC1+KfNXqrOB1Km&d zcv+)6LFC}K0e2yPQG-mN3KSGLlHf-sGHCm&F)<#Wb=qMyQ3vh@+5kj;A@s1$bYE z{v)QHdvSR7aY?7f7!_#wAoJ#N$zi;aQ!R>e(#PKR7cpMjLnIQuF_ zR@81`(Jt3bMV@vB7g=Nh6;C9C&&)cHr567H6Ldy`&2I0lq_~zCm_1IXF1v z`ez=s<3A9-D{0!%xYG2)9Cm8#9f?NT%f{eO@Saa2>sXnyC&L9KyN20`k=4LC0nScO zEzNp{wQllhb0?CZe7ON~qyl*Te@gP-hH%?z@!D#7dkL*)8`*-8&Go?G^z`DshSV(G zblEMY`IN`I2PY&BG3nFwsph_j#p>>S&*A-JP1ALeq(<^bAo)=mLP$QGliRmpUrT6u zua_D}IceBnGb*tQfO~W4Ump1H%+chQ_9z+ViHkzYHjw8a7GuzJ*Z%<3UFMJR??#r( zOwlxZ3kH_L;wZ1Dh&Yz*hymHRl7wLAD~t?|yj1f&krKYg*Ow{wi(C~lZs031Af9@U z=U*=P(%Rv5=`8MKYc;pIa?lVmSQ0UxPDrlH#UC4dAq3as!;`)JoN{?+v!f{_^(1k? z^&XYrgT@yAH}Nz+Rn>xD+)O}*5X=roB(_dE6VFW5Cd-Rx_RT9pxzsJLVM}KFD2puN z3vry_fm~0CqqnfSwX<|cuA~HpQ;aGm2*;@`y!%(t{uR7zc?L#DJV~SJ(ob}HD9tk7zsy9!nEqEtVOPfTszLr^{EU~PPSeV8S zDmosRuXOVg3t6pf%e|W)G0LC{%BLH+KIXn6x$#x+hl-ncF6OjJ3lNCkDJPZ#)7R-* zvVPDj2A^@GrM%YH#xUt5(};uMV4bJ3B(B3Gsf%G++D6Xbcv^iLb+6c$p>wr&R zO!`;OS{hy3Y9KY0>RKpx$u`b6G2689oQ@lwI`*k(XRIxZJ|NImRw-`A)uv>fcCkBi zk7nZ-^{*ka)UNFBETYtHB#PJ{Eu)X-5dz&oIL}k{ucQ1MV{LIF+UoFL+UZQYM9Tq? zw1@7JP70{W>(`3mekA-pu(h6R-6sA^yR?zOm6u}3naCkCkjDqFtz^?h@-ufq)pSR- zSFzOW*X0haI|M8-!5wqySA0+69W%qeAJa8SH9J{#EBVUW$8Jom8YkarQ~p`63I<5e zHS!L-{{RW6hhmFT(yb$FV$4(`yUao8Hi7M2CDeXA)RGJPJvYQntz9}cXNA-xVena% zi0z+z)yG9*98%o+h4BLSIZRU4!X#fBKEJ9`t1@m~J`;r(H? zu^yo{{;1c{vO>0oFwr>gF8=_%lgG=FIj;fuKk&V@4IvJ^G`KaXC3%`VXu>4B*t1Ae zJQ7@c zR~aBFJY&=v(T+xVM2xZrU|E9<<%sE@TFRan?nKea9Frj`3Xpi<{+v)2KSWYFBVDf) zsk!;fWR4Da`~_Ad$1I?u#tSYE4jVo5Tk{y)84!jlGTXuZYZ=N&2_JMY7|t?%aa`wL zDzO~NCU&U>``~_LRd|iUlB0Brr*j4ek;Xw8_Nx-w$0>LuoEK6FF|&+w*p9~(ByStC zvW=^dT;u`nx$8ihNZE+A$YgX>eV{NTk)J>hIITegG!S7vR^)&{1L^tIG)yI_5vdXY zPS6ep4;eLaOsIu+O)d^{P66x3@}QDCnppOj?%cogu*JmjuMKpD><+fL%6U*%IQRCcL~jg? zo62BqA-|PJD;Yp|?wxqr2nXo9SUHABLXGTGpoqHogT=He3#(iqOd z&lv%ZKZKs6p4D>I@-|2i0>N+r0FP1mRmP2WGiNS7W>$W`L0Ox|SKP{lB55)d%E0n7 z*PgiIwru6X#}|`vBaj9ac_$;Er!|i!`qEWdLF!K<>J3=5y7C-}oti!fARZ67q@C5v zHSg7963aEc(el|)##@lYfz#W+u&#Rk?S!%-ko(+Tt^IZkj}kaVq!(j1!N4 zO1>S4-O)w~+BzD9BSK81h|3(6z~k$VDY4D-z8Ovl#z#&my;g>DR@h0|^Af6vq5zzp zanJJWRA5zEf-d)P2n?nF5u@0OzMs`ctOEPt;;X=BhAZLsP$Uj_jS7WpDWCBAXr%)Jz8{AM_ zWpqrEMP}u~4#Bv9C5+rOs@K!vG`wFNu{{ShANgnK=B1Jv3&<|cISQ5#- znB)$iWO8}W<3U1879WV+_`qU&^yl@dhSZ3J%u*6^2`6``82VJHWZ8~khR#V3Cjeuf zD>G185Cu61P7VRif2B08B2wSJh7^=4l^~qtfB@_0D%?dFVX)2)Ndt!W#bw(pafLx3 zMg@T^3D4tOutZP*u1-KX4#V-Sl1pPJt0ZU@&i5oR1gR%J-6}?r0B(Kg<~=ew9D$l7)L;#gN1M>A zjipbxq>5~kVntFHAd-2i^TzTtj9J_PxQEZn@1FfC6qDSd6`7(a;C(+z&;k(1%gYhY7aV$XQOPRC8B-*Yz)*4yJwFjvCXoQUSlT$kF;Y3& z4<4NM?^C3apOuuI!y|Ax>(rmdvD!DdX3kXz!74C+PxFe?g4vcZjLZ)JfH9v@%>Yi2 zJ3N6%T&Ym3Ngs#52Bi>A9T8eLA%S8}0LQ6MP>h~{4E=ij zYNFEBnkCTELmGkdIV2Ku#(&O5L3bm@q16~E8Q^5F}Kh=jI*96zdxn4I?zKIy08}hyej^i_?L}UTZlkA}w{P(P`**sc|B7I1R|b>GY;* z7YT1K*_I;b8}Yk2`j5t~!EWpGDNu`sB(^sD8pYItyydp+$svOdN7l1@1B%?I9n63- zs`-C5Fi>Q1>-d^@-@T-1)5}!_l#`4T_m3Y+qY2%;SwSWE0Ar7*=UXwd`6m&^S%^~1 zc_OeHjh)DWE(~k2gB)^teF^Pak)YTK*!agJ^%&{JRgN&De0x<_k_bO2^k2%hxDiLN zu|fyTMtQ1?ZfO;Fshc!~SqrqqSLXRgKHQGgdMkot1s-C=fE4kHt0W9nLXyN4Qds1i zpI^qUTPg`yxRG5>LBJq-pVqZX%E2hu)_ic%NaaAuEOW=!vhKE&kv4|}Zpmz9XVR}b z?p>w7c0mA~9OtnWpLuN@P&y;#Ke`ECPvQB~C#i((<_07&!sMK1+ltw=x>zF-ZD@c| zfChOPAK_RdhR!Y!IRhgk0nqosplebKtC!doAuNpNcE-qG&(^C( z#Ep-Qz~B+U1Jm@aiD4%SvP!51HU=0yIW>zilwyP)P8gGdMh8Pdvrfb2Y_0}WbOaHD z{&=XOm&=_BNYUhAk&JWeMoJUOOpFC?LHDXm@WUWU+wYQ89u#xaHBokCNh=%TWJFeF z#?yjJ5>ISaba(+Bpt}y{vxzulWZp&T}UJ;=V|r+ zRHdrWN$X}!ac(A%6B$+~Xe@XGJ-;f(y0KuA43-SIZLB>pjQWmhOPSeRMH&N;NhgiI z{{XF5*bq7<@HZ2a&g1?`tQxwo%F)Ko>a0wTIBd7;R>5X=j4LYy$z}%_`qV)Jj!eIJ zXMxv@VyrT^mROcjR0aWtK9!V}nNYpRr`R4X+qXB}0CESeYCkFwBvSckWC#Ns43BL7 zCY}`T0muxX5=MAG)1^7%3h}U4TnvDtApL2>b7J^=X(J#gjfe_9ej621=G2soCQ~CU z3G0rW_Nn4hP!;1RXd@i)`S+>XGzpm<_W_I(kHep>YD}Yab4Zae-s%YlBrxk*z$)+p zm0$?tx#p-!!bua$@>K!ObCO4|A6nCmODn160r^-k#xOa@r!*Kira-$S=ouS1ARfF_ zMhxT4$BqXT$G#s)Ktj)t{xp8YO+$qmmtvQE;#^#FH1nXbYqlt+{SlnfJ}YUE&xZ0cBm&GRrP9OQMb zry#}x;dwY27#~UsDPFL+GJWlYXPgYyT0$~k0hFFW0|W4@*D8_?_$TH2!Fv0CwNa)- zQivEZ#zD!)KmBTHUD*KVRe02dUT~z2G5C6MR1$P;vAHOj$WT<{>*-c)?gYon^W$Ox z0I584-}I&XIx~S7+{1&O-;G>uor!U|KA$6)or1{B!z7S?V~)7|1zwQ^%EN-df&pRx z>HZYoC1Z&d6vo&Kg(sh5R3=xFNpP-;M$D@MPrYp&!7Ce9fnk-Ca9yY6Rcz#fGD*(^ zt!c{XGKVP}F#rGuZ%p^=TrieM4)&HpJDd)G3fPZS*m+iUJoC;!&oy$nMD1pvw8Az< zVopim{RJ>vuAbkTdo6rc6vxf`{koGQ+2@A6m$#YiMG- zh+aGb0U<*II49PxLvTUlmmu&7>Hc`CY!YS-ASFgIj(zwag;{HTyIwq%Ve6bo^?=PaI^iL5_;erbb+@K~?|(gVWy?&X$Y^+=p?&EC(Zw!`8ZM4Z_|hQoBeFFi$*Vui$EiYg}8z z@ghbKnYRR!)BG!$lFno)8E42m;A1&F=DJjy1Q5tu>Upa#6ml>p9-xqLPuK7i0nVGb zU>JS?P<}(xj(8Omw=HlOd8L%#07w}gpnf#%O4-H0Z!-uVgBcYHrZ%7}CQk%+sU?s1M3rM3FhV#y{XeY) zDKj!g-@7s^1JGc8zpYSzm5IS)kWU>whwEBXTaxTl35qab}p zf6UM`qZ3Ca;?agUBR!2}-Jk<_2&D2s9S`}DZw}d9;TY@8sw4y#u%#d2l+Jy$y-A#uOUyE+knqJ8l7QX z@!*}n=LGc_=}?fNw<(7>}MryiUpX?#zL$K$pyKq0HZ4QP^5-A z$g1oMHs!$^gA&7$z~lV)sd2l1mLu}dAm=&h*w%85h$y@YGF2Ivl1@0t^)#vw>x>*PxD=4M-lUEEjkz69`NbL z`SNjLzSq=~uk&y$=1j+L}tnvo=tAcT2ga82qfgynFx(cWfzm4LF3!>tkk_5{H?E?;|dN5Cp+q~MO{ zir=@3%23B^1{{t!>HakYFz}?3GIM}>nz<#(h^|Q)1duy_oK|fl&6cBOjigQC!Y~=e z2R^mW-Ale!1>17}0Caudt#nb$WKeO*0CUY|+}Vbac9za}5uOR@)A6c~#jhdp1Rw=F zi5bWvpZ>ip=0qPl4YOxt!9m#-s13AaFTeU?QV&t-sl?pyzYNV-$GC5M*0yFPguz6xF!9dGom2SO1#+O?X z&VdQ?hT_1E0RVGRUnw^DZU_W`TZZPTMKZSVOW+UzJ?cw~ti_eYfk(;+1RwLw7GgNN zv}mT=8i02U@!LIrolCXZm5U4xm_2h>Zwjt2iCHskVfl}31f`lV0&k% zs!(^-)+*bV)fB`}oXHp&BsV=PPfxdL0I}QIUTXMg&gwS_OCnFzAtz$ zP1Ppw-2Nld{{Xg@Av0RU#z{gDeqf{D1A|DDslJ&($CxlV1x|DAS+FEoIgy*3fJg*! z-m?5Xsjj_b*Lx;L2Ovs>FypR0O>G#Nl(LfN80U@OjR0AdRDrPMk&XwoVH>j)_+YFF zz${1u{NlCZR$Ms^k}-_+{{T6!CHR-AUFk3*>GQ{JIxuq~JqJuyAZv zAC3HCz8|!@W|(>5H^vonk9-PFJ&HSf&3j6*1mE2)x_}5LA2H8i_*X4s;|&j7ypk;* z?Jkf$!0G`7hXr`gJ*(m)r}*3AkBWuVji^Oq723VBLoorP?}5iBCxhC)xbV+{+d;C5 z*?!fzMjPY<1e}wRQsUN##!pkzw~dN(-wlC`QUDnB%7c(kIjrPqP%7+{jPsoH$FJd6 zEu>-;NCNKT=EY5$&`9Vl;$Y4D;4%Y{alormWN^wkJG%RRl?}01MP2^@MmhfgJ*oE@ zg)jgu)Eu5Y>vXiSvUgWGy>kA>)nt3ygA^M%A&&z+dWzy~{BPm=Tc0L7(grsT&z-<` zC$(aHRgTts0=JTv4nPrS8;At+?Ztd=;mdoCLsyd8{t))8?Hj=06brbVZ0ohX;!1?&AINR@lcN zmCkA#xQZ55&2cOFvV@EPIu1^ATMr_y4V|mNAb%>PrZ9m_QAo-=ai4l@@<|{?MDqzD zhB&~aE8B9@G&1eTW5xm5*PrFdtMFTv+R88p!5QuJ{3{YUHpqa2K_?^}cYguP$mMG?C5wjeTla4c)g->tuQLf@{%$X6$1jYZ==E7IpAQDN91d5A0=xw{uNFu z^@YivXpcA~5A)48a5~APW+6`L0bGJI0`uCcg2fn+*~Sk!Ak>!f{hw7ANhStJRo$LD{&mi4 z8k_0RJ;bp`1*ji1g@yqC06DEvR=H)}+1|ok*dz{m)rC_cGN>MDIKvP!eR})X6Q=7n zT8m=d@&+XICxiIcb7^pqv}$)Tz#yMr@+jqRaI!3q-QZ=|0iL}oy!Pf$1E>U?u_LeH zTOmUXz6LoMJXUO|SAN5kP)G&26`NLM^6PeE%?wIT?WzFC!N=+AR&7cutD=H;06^_j zu4G`_SvEyIhB8(EG9G_4{ z04&)+aDG5BpH59-UQAbb4H@8o4}L{&-hZlhb{Wo22Ow9N__M`Y4~5~9U29dg(;$gF z$=-GfBVYDMRyaKc0By~2AxPH@127C#j~>;%Z6g#L+Zf{tI&=R3)~}S0?KSYm;qEN- zyvEGKs%LZbjiP6r>IOK+f>y0P?)+{9sn zvj8v@4*tff!+!Smay*5OOB1{AH$4VAS3L&5W2oZiO}G=G1QaB0kJ-C=*Ei!29QbEI zbhOm9rL%WIBcCieiAdz*)MxQDmG!ZURz7t2wd4I)NqgH%ol1L`GKg9T-wPTOoy2FZ z4}VJOz7hD2+GSGO{Cck79yCSUw-@`>*J4zzZUE~OQ~yiIzNT(;7INYdHRch z*D5pfsZ6N^emyI;@JGcT2l#7GwrTI8vzZ(zjzSkabW%FvtqA=&g6%JDt3*O%%CE&mB}Ra`~?Ql z*wwT~WkR5GKKEhIYUol_RS~l=z&Q3E)r)1Z0)g1%fDasXtqYL6F(KOnBz-#25?4jm zNTm5y%Y(_|sjgF4vzE>uJ7c(Gw+b)^9+eic;$0`h+H~5Mr>VhVX&B4AgCTG;Ule>t z{jH_9zPz*Wh`)O`iC)@ki(tZG>w(IH`Os$K*5}qS%*y4qh9`r_9A}KzL1S=C%AzzX zLCFo%=qvMPAKGJI)S3w{Y|FY3(xfgohR;$Lpy2UeMtn5*-43-X-ODAV<-7jrRsunc z=lHYSdSac?qK>E73WhaM#hX0xdT~h1Vo=0_0o}OsRW!TUwHq{@C0Tb6Nm4uW{cFvB zDER90!gkj2=+WD1mr^lF6`OC_*B^VIy^2Msx2ioEwH`=|sBD!3uQgaS*K$mXteXa0 z;0?Xc(!K>>+CoIPz0~#l#72XDV}(l-h9GSNu6VCG@ptVl;+xADu5`gXi0_pGGrTc9 zTLV75XbDE!pQcmlw)qJa_RjQbGBO5PSO9{P0Xwm;N;+AZxxxU%u)#gHgSMHZ_^aq26LCP zv=|3z+(M|`z&~HYxr>hw3k0^gxDN%Kqy&|R%HzI0NX>Y6#&3=?_)gaQMDX#BPZ26^ z0#dIXvyt+(4w>CyNEVXY37UdlXJ2SzMC=#|UxLoO9BxM!waLfzMN4X4&pBtL_0v$RyyNo|W+@z`J`yOLvI7tcV$y&Sea7*yoO> zzU1;g&ucaOdzUdbEX$t(}GlwRDGQZx5~$i{uB zDK3ZUI(%I4sg5@LWN)|vNMW>l1KzqzZxd*@`xZOMAA1Ea&yul54*XT(KMiVw!hR#WvADa6+9|i%zU4$=@`7`NjCK6$ zIc;-Dtq;;0#ulzbN#-a!Re;Dn@_nn$^?wydrOzYYPLRkxWfCx4j8^xD^{F+j9?goy z!tD;6ml*16=kJeJW9(6Vy4`Lfks2mB1V@3!e=%8;CY#Xo2tFkEdg|wE>JbJ}pEDy1 z?Z;Zx)jltH1H+b$s9x)Kli9|lq>bbeu^8$PwSG%#`iF?^=e*FYwQGqj^1CF8GrB1G z;E~s-QR`l@;m_HZ;y;YMQKQeSBI&*rZ9nZXE!=FcGoRu=ciuTI{VpAn7`kiy};t#=|S+v0&rd+P)?6C+ypIqkX1%C%C$Z zf{~KaKqsaF8KAo@(fTuKt0}o% zjM6T`ckRYG9DcRce{6-d-uP7q0E3)zMixEB`C=V?#|(0T#s{OY%jymCAOqbw$K6V{{Yvo0Qh*fqQ=(l@@qJ*Bv9rkj&LwJ z-O%J8PPNzkK=_XrgmhG%2&cK!@IuD80Gx1lcE?=xt1YEt3*s-tjU&Nk?q?HUykSd6 z1fVkZDobYvuWInvhIaD^j$E%rQP7Nx zlh-sEHD_bQG*8<0>r}h5({+1Wh;Aez8+UXK6LZ9Bz;Jr?;Mdds7V-VQwKRLS$1~um zRvhQs@~;Z`o$!mpw)PiO*x57?k+h_0!JprH@&MzWwdLLkTb~Z<`aYD`SNF3-!7Yj_ zGZFpVsQHQKt!CqWgnp5w&y{O2Vy6R)Fv&ijt$gR>?~I@DjstIf3_5%=IZ-T_W(&J+ zLS%98+P$MlxR&EhlkE}tZVAG$!2kilADw(5`$Ab+-0Co2&u43OEHTL(Wsot4b_*YD z;C*U&UqC%7e~)&0M8D|L$E(Z`IF2^^#~cFPE6;!7qWnv)_=irlh*{~O0HfdDMo z2Rr=+Fe#|q4{G>pr)m?~T;AVmDJuyxD3U>v&CkldgQpeUPZKUnDz11e2T{i&uIL&S zmYx|Rw+cx6&w_K)rET45%uqaAGq)@TFg}K@#R0=Dqr0mq5;BeeW6gB7w(1v_e3A14 zdh_11!mM()?#Tgw1QX94YoLqF3RDaNI_D%*a_e9-wXz18cM?1>xQ}wXHWXvm+ogVH zc<$y4uM%2cS)_vDE{JDgv^#X%0qxJ_U#EJtr`q(X;_{Y9VUkI~U!bqd?~PXaJX+S3 zE~(|)+FLtBi-H8Q7T^Qi^r1&nbndQwQSge*W42kI?mO$JRuU^cBqfM({?z zu3Si#c7o;PBnFmDEN8GF_53S$;79gzTk1Bp7Fi}VmP!8V#`x$D@i!IpRppw!vYY}- z0&=4OVDX>Eo4ed+&fXR9ANCckx7uX2EQq_rDo72FyMv6J)ISjXZ*Smh7-m~$xYeDI z!l*K0U+)q4d)KtQD;RvD9m~MRFn#Oi--=%hb%j3KG;0 zh`eX@rwQmqi8emm>>Q&~j!eh<*> zjBK|zh1^~3!zo4wE;s|eYwT}_KLc(2C2yuDh&3Uo+yR*;kg1g5^l`^I&pj*X8{26w zV}jRfh$4YfIKdz?C>S6UfxsOrL2aq|)8Wl;$DR+7BG;|;9YDka$0=Z;@_BFx&N(&q zPl5bo`u&naa*{y_Vda)k#l|{<52-cee;M@1$%^e{ghYyvByrp;eV7xIl+HjWC(^m! zgT^A3I(DIZE$+#759MDU zcy7y3(eHG7JHwfI&6Y#NS-+Zt^me(9B2G12gmx5(mXYH zdn%QXl~ftQU^?U6aZm7FJQ6<|`(wa%Hku}v1cmKv zZPMJx30$B7cXCJLUncxE@U^C?t7=-c#IoF3+&<$GA1aVX1M;u0yh98ScwD@?rM0WH zKp5UO%OD?jVh&p|ZjlgI_N#wgljgkO9V#l@% z4wd&VgJ}L4(k;H)&1@x%9qiz=pd4iL!RP?$YjJWj;Qs&={>wMoeVy0#MyGiskeKF{ z{TYCd3zOEx%s$0mGIZatv=sRHu{okv)SIj#bLF8AwkDi?g;&AB@60{P*y(O(L76I ztH7pF9nHu9xXucna4Y6tkH=ECxrQA&!pgydlQqdwS;pLjIXoUu>sp@)JV|}4TIjcP zM{Jg_Y>twHwd8D&cPZ)r0N1U5+78NVi+wg5JBXsQX#Dx!RLjnJ;e7{Dlh5Z-%GTy` zRzEwoYP#jrR)X+b-{s0j9IQOj2Om-RSEl?r{g?b@;yoR8KNV}15bEyd%#JoCVNyv@ zxg7L7@q^m7J{b50JKq<>tgO~H(%W2O8;hvC#kCm7`?(`I^ya@pbZrLO+S~{oCBQjj zz;1eh@BM34ex#qB{y6=aVA7zP;wzioYRbV<;(L~d3a^pFlhX`v4}4cc@Xy7%zKM34 zG~aBR+^ZFpq#TXIXve2d%e{TY<2!46ZwhNqsp0gMQ6%>3pY(%{0Rua`@#|j+5aY)B zGR>w%V{LH^jSwz(1YNn~xhEMNt2sNcKJ3x&n*PIf?>)i-%s9q##y<-AZ{zK*qpRuK zo`q>W{)=NVS(@r1f=HPU1z7Sr{VV8y09#{3n%W5A!w^}^VX>3Kk4|gKemm(>UE0rX z&kO0>L3NQxGA~>or{kJ{JnP`S%(nKLeVH;y$N((ob7UMBbLx8iO?`K(M=j@u-^l>1 z&ETOy6Fti#76lO_+(&sW!9;nUpA!!Jg)?#%CJNWx!r(QKA+OE{2$?OiGLdPJx5saHTI`@AecvG zGtSdHs*bWD`=DpPJa!e_d}YyM)b$$(Wz&q-mh*05ypKGCxE>EUIP1q1^{>IG#Cl$z zdoGJu=d0{+fce-F|d%~Qo=#~vcPP?uL$@Edz*P!d)& zkDQ)PN%Z%?`e#hAx3!I;g%x232pICK*l}7=+Qg730hK}IW4=2Ih4wHXJ0Zp!1E(WA zdQ(zN3B)DAaKHe15HLnNRy?uCDD!S6Hg>9V@&Z0UI-FLypUYC9F~At(gZ_E0KgUUD zap2uXd*Lm-7T>*=>NnUSL&jg!bf(%%QQY`r_J#4p9wPBIuAidnQND>JUO_8>w@kQ< z0iV6!@j0u%1^)nNe+23m5cq?|@ap~~)=~W1cqh7LvxYD}?~*tz!1=HZc;=^}+Ia8B z_VWo5G#etaY4VjSOsZQfK^+_A$G_)aq+bu$ON&pn`z$#N8pgy7?rd^?oYqp;P`Mrd z0Kz{AUTIKTX__sxI*VnRLmDpAjNwi*jsWXl4g68~NoA*M6FruL7Lg1?b;|``^rz2! zo<6nuX&WE9R{(OLw`}`Y&%Yh5p}Etor@n|w0vtygt_{f~k{=wf`ub9_O6_QT$M6yF zysH>)V1q;pcu>R!c1EGW85{r#sq`c3Uwd5L$7`fXdG@A^rLmEiH{Aeoc=~>|@K?k8 z$@Kk6V7^Fg!^rCz#=mzg%m#2hPg?p%T)nx}JS#oCjuA{mPD2s72*CjQaY%#Y4~SZ% z-x9UmFGtyP7MhnHa|Q)OflfBJs-4FjdRNsy3_cb37fZCZo;?N&tzZxq;ol1y1^IR_ zW1MrIg1#8n{9&i){vxy1bmqTk;(sM05jg@r2K}AJG0&xYMVIYuW8tfdXd{l-RCl)9 zw&ntMr~noi83)ktaZNBj(!cNxj;^b1HKnwZNZ~|swa;0JZYUb&1x=4U9ktW?NYt=enpp7oNP=&OSN#*1jn= zSCCoU>bivUl(N(9?cF7kP!2Gd=rQ+?09Na;AE6%#b;&hYbnA&CEp7pY7+?*+50rz+ zZ+iNMDCP)+#W+GRP6d8@e$TgeT9lDo-A{L6vSwMJayW6p$@UAD;w*|ofvs=_G~%Mv1{GnH1z8OPSXXz^UOF!+h=BD%YiPq(@d{jDP)&NG1P zo|(>b?_Xd1CpO+%O&q^#Bn1*+a0hITy=ZRk;yqVX@ai;B!)Fr4PDp<&Wi#pNUkH3o z(Wda;y{X$;S{r7Cn&MXqcU+uj0P;I}=bHT==+IuHpNV}q0W`wIBaz|XaNKgE^0o5RH;xbmTBcCiPf zeaE?|-k@@p)q3b>&@wK_Rh)rU*87~nSDnTbdh(B8W1n`fB;;^x_xsge@B?NLH z1yBX(E99RH-3t#A$!(`d%L0`s=(|HGILGT>cX)ZElS9+Yu}ra*%CR4OXRS<@x*Hi9 z&Wbfy?qj@)8;D*qHll5GbJ6$b1GacMuZO-P_##ga>L&8Qtak3(3hdfl`sX?NeQWea zRYi>L3`g*Tf_=WDn)!$0CAZt1zSyEu6ux2=j~iPA0te^$(s59?4o`Ey zudIAC<6Rq7M=N&^n99tv8A6vQ2a2lKBg@vp%RR_gEVFhgy3ZRL>ymLMr^g^wWP z9C}xV-FzPL$A^%lwRut!ZSHQZq0^@l7^YU6a{xb!+~8-50Q!2~6A}O#G7fS;z#Mm`+(r;C zWIHj!nx&1rcM2_tNp}>&X$TAIc`dgvKG!54WJX#Bc*$f#w!ygplb+< zT(bstX2{#Ss62Mhu1$DP!&{4ZFCNEC)8*49Su0v>Ao{~U;^G1*ke$jE3V_f>C(Q%@FNK{;E~8Y+yWFP z;QZk8?Vr+sJcHvbPBh7_BZevM=1^viL=CtOqaTT`1K}i=dNbPE==ywGb+mGqRgH%^ zIpu$cl76-8{{S1{cp^#eE>hMUtVD&zTc{j%;EdOW_!;jmZ{@chLIgQUBLz_MI`cuJ zZJ%>lJl9sp`12iCn`=bdYJoWor{a%{b&nEjKVrV}S3?9FM~%s87z4`=-3QjLHtJHl)aW&z z+P6#6$h;;}!Ow z!i&;$y%=46o9zsnNC*aa>VGrVyqDu1iEnQ0SQ- z!V9SP0~s5R(Tw#u&!-jgj+b_Sw(Z(9L`f#t z6p_H)>N@*W3ds9E!dCMgCr}6_k~R=~@%q-ch;7WaG6h&-+N|Fyo_PNN z>wdM3;OBvK$iSLskTw-U{J6)idj21ccAAQ$wl{IU*JBadxj5Z}ftpWLONz1Z4~U|; ze-heWUQCgsI0&el6e(^ub==*5O8O_l_Yo<#gsRC446#s11P=N9Ys7qS9C~iA9FjsA z$=XptCwBgzej>e>z`|K%iJm1?+IFxVIqC&s`WM~`9jGh5GJBoqn zj!k?;;oU;s>&15rC5glm7|IdzMIiq2`eSZBv~san`|HEbl32m8i3=`AQJ+9_oK?>h zcz(xRx0c1rTf}yw83y9GAe;e@LMt!9(lpjEyDX7{aJ_zEjOX(e(P|pznQJ3QA$`F& zVB{0WV_GQp8S;mYJ`B%!_Q%nnhDKkMTp`0D{_xL!I#9y#!}*YfC?vg6W7+f;{0C?`lBL|xLTfqMS6K1p%%8Wm~dDnt|-5shW))IEe zVIBx1`hJz^&kD&KO(7=(Vcav1!}6*|ZQn!0{w!&7YBAef%+oCKsq*Afa~hM%@!0JZ z@K=g7X(rXuc)#P|u`$Oe1W5T9Bp<@ROT15|CH9|mC0MQ$3?Lw7anRs>e_Hs9#spe; zf+KUb8Ex2?WdjS44hZ~3X{%b2a{6cN{{Z4Y7Q-$5zP}}?n(RH(y}=7^S$d%7j!5}M zZ4cRlP)pDw)!FpeS)+nhS3YN>1?)~UUqO66@kOv2baxYG-ZD=p94I;D1J|v4gqN1f zy6BYq5F_RbfIIZ4=3sm!C+weVeRUS8t!lcB)y=jgwq<8VjzVx)9?UQ~&3#wk&xi5p z78bW2d$Yw6jH`{#I0qz?-=2A_?;d%blb*~TBegJ7&l#?tb<~~RTke$o{a zdzM>!XplR^Lhkv`Jvt7ZtKshq-!_?j21m+f3nLO2a^Q@fKAx5Ko{>9SL1g!d8VO?a zBWUGEP@ct2XqxB;O(c$mStBMho!gHpex97tEX9Z|^07Ds3lK>3rY8ST?G z@z#LQT3;jZpTm5 z@u^%amyFU%hD;Yo%!daam>_4`zM=4Tt0tqQ*+yDfo;dd4objCWHRoRvyfC{PP_&GF zps9{o9x}usJYeU5Ge}c?2KX*5KTf!}#l4)6F(DdA!zmCcLv$e95 z1#tu=ca5a{#{_mCoqP+Vc(+jSZRM7osyz47%y63_WkgUp7Roh8M?l=n_9lSzc#K~+%?2NIx@cPq#QS10l}%?RwnGUJ0FUco_>oB+LkRL zD1itVO)s&#}Lk6U4!j6551=Qp*LiXIX;}%)0$bmZ64m%B+JG(D=Xk9 z9FRZy_4Ciz9>c^Ye=)vEaIAwTx5_K(O&ZMIk2=6yLXNqOScckh{p@o?-sp!0e0{6K ztVOTSaeZzs;xY)vF}fb-Ad%lS^q0f7M*@3k5%S(|FSw=v;d=r$_O2htJ^{G4xSs3D zl3SGw3zFNUa@(_!!R2er;rNZ>Zwp&oS=edX9qs1P8IJKz(T+$M1n2Opx@AT--1}!$ zlTemc)L^~1)BKeZ+)WwU%DDl^J&DQV-o701maA`XuNI!-3#pn%5t0rVXCRz`n#_4tnr2k~-5oZ=zmWA0;gAt|k$zhxd6ZzJu2z z`Bp!|w6wXi(-%UYRM#!UNb=lV+4(H5kDUVKSE3&q+5+SZFRSbpwlEyPVC zk{N(rGr|7=_14NM8aXC>=ip67&e+XtE*4v%Cr>XM1`h=E&T;uy(mF1y9QKaOENYw)1E$l)ImRiON!eWc3*raFDD(*-Ygz6cyv!dcWut6kED!MU+cn1M{xk7k ziLN4hN3@R7W+9?B#K`H41GseL_aBvf)8RW$h+h#eFLcwU>b5SE1!yjz^2v)C-@FzW zJmJ4e``5r;0s9t*6~?U;w%YMxUImO8!j5tu13i5?rPPaGLz?mTgj(-MgHe6*LKAyN zvSg_MXCtmN&MU0OOqJ z>suP{jC3yz>CJbkYRe4lj09~FRcHR{ka_FrUl(8aGsZf5GUe#27CQ^uVs+x7Wx!YT}kEN1>ElwXLlT68p8N%@R}bAMH*dOw6_Yo0|SQO=abK= z&U)9bYMLUxp8FzTK*mAAz#LE(K04Jkjci>tsnxFL1LjAOc>_7xanyCMY49GY1*|J+ zZMqg9Z&lnC$Q+N)^sgq@eja$HU0KDwvfRQ+@{T|#a(?mjQf(1r+ z&<&v#_#E{$PVUM#f?*G)oM^J%3zHMnAT?Jh4DsjA8!zXBh-@&JS)n&^3OB zf5P1#S&}OqPCKD7$P8UVq}cuvK<({cU&EuZw6$sCiRMHCLKle}lbm{0jU&NYH;1jD z(sV1S?sV1KPoEJ+W1hQt1EzRA>!pT2vI82#rO7`aAY}F=`cQ0_bK)O~{tuGJRhH`B z(&pXW{P^x8Eg@FiK1L+)nC+e`FT+0)r10GE5A`vHVBwVQV8C)S^e6GJx9_x5uGo1x zy^WMkd6i(5nPon?AY+c$ubq5F`#b1!Q+^6p5SZ&Z{FFJ3xl z_3vJb9D5KmZ}~_dpvgX?Kb=c8gFrxoY*2xfU55Z;9A}>Ni5$$poumRmQlw`G2Lh!v zvB5nVrmPqM%dmli&m)fG*1U7aHrESi(=D`$$YejsPhO1r%DS^zO3<2j3)ZSOKo0XEyhoneSdqV{j$}eoI^BH5bTbdfgocz?0G!<)jMwuX|M>c64{pH z9SeM`&p$8t(oX8-I4hY}s_9@Pj^1ek45>Z1^{*KCi8S*W49qTMk@rNX%vrI8TzV1x zYw27>k@;n9;#N600B$4Lao)0SY%OlQwJ5Bra1PPH&VQl&s7~tO;dXqFp!j1_(H<+g z?xi;BBrODBHcL9PFn$OtwSgGH-RvvreInB0J6LAfJF5@APgB@02Ca3;huZfK=Juj@)cnd6eU1V03dZgt!oyoW=x}FpSjVj@1tmMA&yuiUz``* z+fPyLn)$QG-wox8@_kcE`&?nyV--MHFJbf?SJhWPERICKX=aUf?iecB&+zu_GfbP# zpDN720Cs^UNMBt2Fj6Cr{|uP@F(I{gL!Ll;y4p@j>Ieu7{ogK z_{SrUO8Te69vs#5`x|7uwfh&(wNYdzJqRa{asL3V}_G?JI|>d`}VK0ekn!%j6AJA>h|d4Vxu4;GmM;)21ZYO*NW*gNhQUcv80hn z8;qvlHjhEiTA6G!&#gaa-xOa$+K!3g86>@wc|L1G$3FaY9Fv;fvHh0yhx$?Y$STBc z>Bm0x$tgS80mgV+!0>ol&dS=>+RMxe3mBK~WOAq6cdfq==^AC+DJ1t_WZniC#@SZ@ zo<~e@bK4cv#Umgg;|ieh*Mao>4Q6Z5O?553!ra^&c#!7UD)~>iV3G(YJa!;^RI9xa zE-9-Y2Y8=DH#)wdYpXT9lE~&n!37F8pdB%sRQeynf44-D+skEd5f}tQ$7ddyJab)V zj4eLHshi8IeU?tQ+-kN_ltcs)NlwG$T` ztxqMf{hj+~i z(MHyiGZtvjrZW&MKm?P(z~4_UTOD`sgvyySt__z zkIPvVmm`esABPo6DH-y$u+26za2wCOStV867DnZd$_NKOpqjfX8`x&I2t1bs7%?9> z>Cd-XgettgX;@>E7z~NG1K4)zYS-E$E)}pFXxd2t4mkc|sM?!rMtK$g0KzRFQkTiK znhiY+f?fn<3i*ubzOhX8gwdvonuOFZH%JjBJ7Dxh))af8=6snX)&Xo~N0 zV_<-gpn^|Nr!}M#>R%!_{bNIp_Ta}XEJJ0O?cn_fuQeu>;p=NMu&gSu#&R}{1MYt+ z>gQ<-NV(kP6(fwEPx8%ED#|w>nXmx_1CIXy)~v~^XjYwMyB}tanImYJ5`=OJ@(z3$0kU~G>F>rf?ND6USY48CA(4vm%D^4O9@TvgNcnzHxB#)hJazp407_IQ zQm)X#vMIu_>7P(XLCLJ88#8kzO$$wiJ5RFO+oi-$=OG|`%yFNu@~CdKYb`;Hx|9;# zT$8&jz%e5~C~R;#R?Wi}ATf-pHXLr?@qhs%>FGoaqDYV!JiXii+~?`qq%2di(-Pm8 zj~N6I4=J9*+ltVR(P5Q|X)!FD&Pi>&4l|xQezh{q5nY5x&JQC5;Cud+Nkc^h-)Lu% z6apBxBd0~ClVasU+(_uF8D~UMv<4iWdIR~?Npyvqpinp<1GIC`>ru)Jl$J5E7-Jv| zH{+U;%H3{5B$G#O`-oR6P5>ZsGtl$UcdF!e)Lg3P==3n}42{53fJg^#9<`j-k{E}V z3P{B6!31G(&T(6?q)|jyXkgh{(0Sd2Gr4QMqhYDP(PT&B^JhwcP z>HR8XXF7?DL|`N&voT!Y9=_P5gv%exAIhPzw1RLxl(0su(x7y7Cjf)jj{g9yMv=@M zxG91Q1HY5UT7_epZ%ebFvbYMedHz|8XgCYXy83h^QM$2RsgV`c`OT z`^NM0jzK>zaq0dQdPrxP1C@E002C5%IP3Zftt1jf^A#X4A$iV0_wQ3X-&06#N{HJ~ z#!zQCIN+1%`PH|?akkV^AS9AkuN-IAnG}WN$c+$V8%X4S6d;KLs$>E4W!RDjJmlo& zp{uJK#ihBFiFP8k^BqirFs>V*jT8VdQyJiK*Pmln))}EFWB`ydLXU2}eREAMY-26%LuRWI1QCeb zw=w`Sc{$+rIsGecSzaVw3v-f3@Oop{wP2*!V$S$--ze;Ic?Pr=aWRYMl|ryMLxOl6 zYh|$`=4Enn!B~Pf59|6>akW$ovpD%qIodFJ_w8C>g1H2OIXNTSvHH}0QWaEa!k~Px zW#zuLE=X1}M6C?IVk>V8w1US6AP>aXK(4Z^Qpl2S~an5>FVWOFtBw3LVU=n`t^&a(J zL=Q6NGW-%4G2@?3;;h2ZjpV39f}

  • CfYlQ)Wq-8$={!%k3qI!5Q|!t-Uyy%bzVV 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

    )ILi5IIZu*TfH;hcXCd7no2XM~p4yW=J8MK88 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

    FeasJsekQuVotMeCv@tP8OLu7% zj{_tTkWK-|OxMxgCVN;k7t}QfnJtzw%m5{dfzusx$EAGb@U{tU^$Y1^iYs{@T!R=; zB>6z!oO^-zSH5`HdU#IaNq7G7Ru^UDh9}T;`u6KcT~C#~PbH1_inLhG9Hd{Fmn0MdJ6mZ;T`qQ{3Dhco#YbOvw~xWVg!nwtUG3dWUP7z zi7nU75=KZ&`F=joaTd56PPYdu=+H2EV*W07Q#x@AUrA2(+A z&*5Kf*y^xf*xTHRCb@8{yn-26&NmNKSK{RVJV#;V%M^&;&m=XxV#-cdxF#&k7bH6@y@D{Q8{Np$NX3w4l()G*kgGLEifUgO{x-*a*HB5~9Wz3WFhX0Sn~me;J4WIM zQH%qclV?HPPIYjYc1_@THlN05?e=Qbds@- zMLW00>Q}M+`R2aLxwoFDRBM&UQK7WUeA*YrSi#$VS^6E zv&relOxM?!O>u3eNogg-%VV^LLg!)mdLGqnrMQ~8@=m{LHMfZD7Q*^{RyLRS{&v+6 zF48i)dYpwd^=HE~HM+IW+O9s+6gxzP&gBFJDm`)ye52xRS4h*ftqy2+c{0F2k}_B^ z9WnstBNg~Tk?SRnG@MqGKo0h}KEpYW{# ztDeaN?egLgDMQ9s5PrDn*!op#qLPBm9>N=tAE4u})~U^?mE5S|@W28ai~-ubyTzXu zG+zq27qH275`*%yfL*(QM%#*V3_k8}YvTTh}Ff-5*EO^Z_a@t+5;UC%B$57G6o-Xb*ds}!xirG_gk&YKF(E57UmBGJ8*N8%YJSHF6Pr=el0!w$U#USf1o~wh` zAOZMbnvzf1^Wp8a#mvng+qH=0Q*U!Jg3zfLJ3;T$sWtVj^n%R_-$gRS;HrcfcH^c! zYvmsud{@zQJwjxHXyl9*D9*~JLOCmsQMd|Z@-x)@EAZ398d!=*bnAKD2tI6}WWF=I zBc^gVuJ>8Bcx|TJ9lw-`wRdrmjDJe-pNF3nwNDk#Hi;Z@!EKQ;?g4>suLq__rF$-= zbu-w=lc$_OJ3=-N;xIAv%_fsAMI+$PiPqA`<2^R%3dbS|gn2m16U#5+1$`y(b6dHS zMz)^H^8O1jq%FFxH!#2~bCb?G*Ui5Ybklj_=ed^jEycJYt)xHdK|eNs5z@Yu_$O}# z<*ddjV|k*2H}axU$`g(3eJDjAQNXKtZv@VZa#e(iTpWTq2NmF-7(cVD66;%;?`E1) z{*fEyqm$h8kbaf!7PoGhRf{24EWq_R?OrMIU87ww2FgFsIo6Kj&0PgF7U!y({Wg0!Nml9wg7zY^Rt}Ebw2}N-y zisrVvjvI7WLmO{7lPU?w>^b1~ufM!C3qhnqz7+WsDFEXdxW!EXXntWA78#5DshWZ;2^7>DMxrGsI=u zV~_?2q+o?!{dG9D&&Tdr$}H29FKQRyKB$Jf;Lf zh!wa4IpMpGwb2hG6jI|}uEKU7Iz zQ4Fm-Za8Hb9XkL$=pshU`<+58tdeI0W3RZY$s0iovnw!SK5e9PSg~DPwDGL581hIU zlk)!n`s<@d9z&~)F+7mm9y^*0?93Lph_FJjfCd4<{VFdtN|@x~ae~JKkMe5e&6}xN zVcF$_kUc#Bto007{Hu)QjPt6(T zf@21|8r<1k*+yeA$0W|6vFm^VBoW6@IIq$jO4Q!z^4mrk2?27Wh2t3_zBc%g@W$@y zZk#a9HQ= z=hv-sJ{cZi$GtX1d1JaXrMhCuYo+4c>9rWvS zJD9hU=rA%l9dZvnYv(;b_J+KR#M+;S?{sMGfC|y1vKE*ea8wR9VFOR;CO-t zw!bTDswO5_M1h&3Z{lIp4mkQ(TXW=HSo;07keiZ>agK9!PP9UZm~dcLKXVf_g-VmeWUjCCm

    W#Hk0q6&{ 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ⅈ{6^1s_xDb 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

    )BZER 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≫z>-1ZzgkbkWouZ@92p*K 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

    s=kBNYE}LhyVZqkESt^ z>sVU!;?~+ytnkR73>6GH;~emM)@}%GwEKZ@QYAu*zX@l(BYcG zIe@&s-y)VL7*)s1Amgy&t_>o!dJ_Cn@dHDr-HA_~bP=VF-C2CuR1QK9%D!LllwKOW z@hy*tFVyK5kt~o#w+vO?Sc1SrcwzFVUPo&Co5tQ5v%j#tn8h8v%f;mejy=r1c^q}= z+}FZhAn=BvqFqU-wEC6Y=WzhqcWj+Sg5n7&u)8hU!2+(i8X%+UR+Nv%V{l^p=e=MF7vPgSu^)lv&iZGO;y=PzS(>=Tiejv zVzrh)Bbr78l9}nA-Rs!bLbS28OFJl0BZW3241B=XQ<-3S5;R zAns4DF<$Q~85TL>C18;jNV&mvI3cn4iizI9VPpuSQ#%#_03A+qnuYF7vN)1v*f=Uj z-v0nNt+^3HM#C|d8;fH+`qp-{2l_iU_`w4hCp`L^#BWpP&x(FCy|A*B>9LaK!ZL^A zF@csJKy&Y3Gx%sxHLd`lIW;Gflg- z(=4H$D6Ovir7}VzQ{|j;I(4Wu4GKHhglu9n5>CLNV~)Iko@<~+X9bM1$bgWfDa#D; z*9W)jT6WgR>e9I(&j6G95!ceGN#9dBYpU4!m&G3nA5@v3xy-h5wpCPtxM#niuR-wF z!#}c(I%}KREg*q295JY6bRe!9+yZ?o*M+KRq@h2&u5 z_cZmr$T*J>_zOhUZ6|_AN0!5B+@t2tLTejI@FtPryKAehD$q}98Z4Jn1qcT`WryKZ zJ}CTB9tnZ%ZROLBrMGcs9&~89>UN&JeJkQW6nt3m-;QoICe!U_)3kL}l4xwC%SfPo z^c)eK^e4VOs*>sl-)*jGQNbO>-4XYJ|B2$=TGr077*&vE}t}nO?Ps@GsA** z1yR)cezo?OhV=V84Js>ZfAo83*J`RD%Kbg48f|QNpT&^V+0PZcX*A`>F4$5r$pgPn z&c0>vw}dWr-x9;-*)zxID2Y^zw3!&d>9?pg^iRbL=~i9rafVe!bq4^PU~`V-*A?*U z&iyVY->AzxjvH)`8b%`N&}8EoIOm!T<0osQ>@NgpF=&<#6#8mg>ImLksu(f`9e}{W z83MZ&nf4Ts%BrHBqp9N=8LIjl%{7&}-A^^tj;p?Dn=JfwVgTgh(zfnx{Imix#c*;; zj(_^xnpZ2C-sYyCI;1h7bH9K$lb)I56|I=wFaf~?6SVtutP5W#Dj_UnE0O>mhyMVo zuC#y*DBjq}1adgyi|b(LX9eQ99^cG(+hPihN;smwLtI@}zHqQYKPC z<2Wad4Sl)dm>ukdt@5ZtwVd)X-=D{|d?VwM(Opfp_{t2wyJaMR#N+Pq$4X*tz0aXO z4{4Wz%HHX3EhD#AG0PON6C|OIK|_!S-8|s+uc)O2v6cv(E!TzQ{JeDHzGe73XMJy^ zSf-(WCZTdsOSh60Q`tc6*QqAHpNS9I3}Be|4DD0j6x)47J|i;85KNV0h9nWRW4EtL ztEoosVK(fm5r6{{2OJSrR#^j`?8}e|13coOx{~N4IwHJ8WRiHv^%Q{kU*k2@@@f+4 z;ujEz#Gq{Q?!c+7ebV*E#8$?|v@a>Q~y#pKgxY8+ec{ zy6+@~J&NE39QvB4@WRga>hWdMB4!LWnPPG{JY%IwmG&vCBkVma7P7aE%S-#Q^XDh= ztPd7O#?DnnlO<0HT7D>KAX+e>By&as6gk~;D_ z^{N$*gZy&V%dFtEitQ@kvJ5s4W9i4`Uqbvdm2K?pq||QWm@)u?lrNX)1_pD_>0dqg z(l(P^GdwOMie_|Tq>OXOI5<7)=HPsc^c`>Y6Mmgtub`%EYL;P;|jp6%9ZY}gS z)O87+VurF44!)m%G5q1d~m$dwHsB_;j-4Q<7Hd8-#=t?_gz3AHaPbD zEAA+?T^jy%yo*NCY^DGbkw=9m7|uE4+O&VMw55w2hL;!`19I?p2$mYIC@cosQpNORw5km-`W&2Ev9v)1Q&g}AWp0)M|j@m!7%-&XW zo&h;N_43Y-5I!r^9($%1%{R#uiOBgzcK-l*P7mkpQFnWR_OFEOWlcWP zNcsxWDfKm`kDPpeaOOLQPbqg3l|1lAr{`6^6Cg|IL{MA1vTTu^2g&J=LDsnMAL|k= z@I|?Zq|dQHAQblZ=xfow6^Y=6Akdf*iDK-a88PqpRh@et;jY_n)8%#u2~3a&PxG4i z)5P|Abb73D+(}~-1{*}9Uvk&I<%|(n>yqSDPjOQ9Dn+&MZy%MR>AAZyUZguFD40`$&>yGe(!FPM`A(`?n0C%H`2JPo zpA6$uq}p6XI^0JrTgzkab^{%=fnKQcDj*9PIUwU}ayjYg(9+rHb2(~wAI3;7?lk+W zOL1)-+M-BZlX(%A>IO%zt$Z05g0+o8{#Z)Is@=(OKw};-H+2J^oPJgM1Mw#2f3aSI z%!w)pfdiJuJ5RNI@!=+h!&s0=V`C%vjF<(w@BsRMI<9242|I~t`ypRDnRUHPU21z2 z8(+4GVJO3JC{rVVeR%Y(b^Vj=ZEde~(v}vmIST6-X7iUh$vyg4)}9@`(=V+Nbn?Yw z7$7f0-y*ue?v~ASA~bO+++Dg6(>0rI?m_VEU$U;8lUbx5B3&jJ+{*TFLJHgg)mUSW zy}H-XzYe|@=^hG-Ek8+(Mw}&i2If9vySC!To?qSbVqx6bb%+;To%7wK0Y0TdG1Tmneyed*ZH^G_V3OJOizNZLUvJ^Fns z^V`PW6n$@6xVkcnTR9X)(VT)tIl$;Xy=(NVTZGRXycb{($_6v-UlDl!079NkLhUYA zJ;ID#y3fCZ8i^%S7$yJCvFXir4>w-Jy73@~Ovq!_F zEgR{0+<}-(S)@Jw`1~t?_;2IwKHlR`wVLIvY^~Tu6lOiHKqG)V^*oyUI?n1XRN6;v zcW)~)2UYV1S#jKU`c(|@yC2!};Z#>A&G4p_j1(4@DDuwO>T}k*OAm!!9k7`ZEiGlY ziGxI1Fbd=qt-SJMlZm-YnME<`^`K9Tnrq z-@DCuH+|oi3I;p%JW$N$`yWd*Flq8Ua3Vz@JBUDVJL8X~XWst+V&6!%`iyZ%r0yzY z``E$8I{F_<%+)`&Ei4*xK#`*bS;+tq(Xj!T$geG*ekxUdbG?fEl7dK?9*A=bne2 zE9bu)_@_(Nyg>S9i*UDcPY`6dQ}VkN#@vsguckf_cw*ie;4`u{@<0|@nK=Lfk)Hh3 ztMxUDzUOh{-CEk#!s6~&JjDbkMFf`51A)|6$go{YH;Ke^Tm6dMN)F{Je9n4pudlpy zrp|-+Df_oWfJi-f&(p1ZL#5=%?p<*!Q$|zS~m=65c%3cuonc=+}%S@i*S+%>ll2mBmRouf2 zK1Tz;Pr|;E(fmcHYp|`(lHO&rWT^nKUZANbsT2_9cd4Utn@W&&f-**WeiesuTVdSF zgB$=en&|F+b==$>;{bD9z3hr*NTW@;T<5X+&}z0mR`{!?>TdUMX%r#aJnr4McRrvV zMr*^o1oG%w$b##5l2;Db1cDj(9P{n^SJ^%_(WJlAZ#V6tX5_U(sa;2k%3$%T?{U{mw8{ti6-c2?rcc25D^Mmh^+P8ImTFMJci<_&+&>|hU zA9=CBAC-P-=zkdeL!dz!mfq)5wTxv#0<7!@r$TtFKNtSdKM?#~roV;TOSsW&S>v8J zMlCy%4pkHbjCbVHZ$LdO$t`8+|N2 zwi$%4A&FW<$mLa!AavrsNL>qCmEzPj886k5x2m`#r#$5Q^Iur}B!wNLzP5&IO9GXy<*=&WRqH-NBEgc8eZ_CSXp*}7;eY79XeOTn!?`Q_^#0sD5A59 zX<5vU0o)jE+wFpS*V~%v`SvU$KPilik&W0H5fHshr`8K zZ?x3C^Dggz;&vbwZtO=)oLAC+5d1fJtk}A(?AA=6mT1&viBLJteFc1}s@r&z!S@Lr zjiDEcRm<(p@Aq@u;MKhile)S0l4=mk1-9viLI6Qg@*hlhuQ>RDt?GJQ7bPK*J97{s zQlo0C3}wAJuZjolC*!~EL!?`1mzFnveh=$$Wue?4ISeRfFhmJWN znF({a95CdMPDOkjr1&RU@b91E9cN0^taT4FGM_1TvgBarK8L4T`@7+STwB;%BE>6P zODHi&z^|AXjAzrYHJH;#_3QftyOEY;iGdqiZU7+m$K_uvd{@xybgOx8tn{Jwgiy_J zcRYebNwQ$?~>Ot6#Oj+|q)1U9W> z^H*EEnoUtm&oM!b@GB6l?nmWcR(uePQ8%#59o@usj~A6BamGPVe}p%<1bd3{opa${ zuQ!dvwmMzXS-fGy@tF74uC6ez~rKOII7>DH}E#Gdgl zlJG_%Mop>!C9+L;_ry;RO{-ZnmWO2M4;UvSzJE&g;E5b5wKf2t`SS9P$*5gXnm#iF{S?7spXtEE){cU)#pX zB#5fmQa^+-BOPMPCR{hWRy>RPRh;nN59h#p$cbo-P7dUK9H zD*F%NC+yv&d_R`+QPtl}*E~&dfX#Z5ZH*T{>R|_!UItHd&S{o*{{RkrEc#BBZ*U&w zeZ(<&oU;%>?#DQ;YvPWrdX}=mWnnesVL~$mU6J$1IX_=smGr%~on>pKM`dXe!w5Tw z&m^By_}7bg&%(NvuFYv^B^HhIF;YHe2c|1ntpNE`;eMkUYWLR~b6OksW=92gVN8dh z^{>6OM4oLb-P}473joS~UUAd#ubey&@LJPB*01$B?g#dy@`+<{5{6XZnDRQWQ|p@g z#t2g0(ikEEkS@>%82o=ar>Yw$-H>7f%TtrIoB%QIJN2r_BxqM^A(R1v4^OA(Q(X|w;1b6G=eVyhz5SPb1+HGpf2wNQ zlvhClD<)-J6O*+Wf{)6A51ur?+G;H})gbWqhVC>w0T7NwX$#LQgN*O&51_6?{u*1y zcJDN?_<9(FI{_ozVS)pUfsU9T{;K+pf7zSCcJogXwAVI^D0F^R$Q%wc$9@5=7`_60 zJ$WK|v^Kf9Q}R1FAg6J&9Z#q=q#lNm^FB|v{iHl?s4FYardizig?za#8H-2jla8Xh zFA02d)wPcjX__3s}S{ zBf)q2-rLJtU$opR?1>Zw4su8YkF9+UB1p%Sh^nAq05}8uD!s%hB0Oc|1dOmdy*i9$ zgx&QHr{ zjcei$#%*=3lG|6+H#*zQliTb}ZNVfQ2IByl``_S~!HYkKx)rXPZEawd24{3w#=_1^ zHr#XrJab;fq4;x3(ERCaZDNX90;_~jsuT}O-Du;8zn7i6a6mrQn|?(pHKHrs+BMv7 z3=h3k3aKZ6JuBr;h#wAaZ)du?wu$4Jxhw!AagK9eQ$=wjhXXr*habc}e_9&aDc9#t zagUg1JX98&Z$t8T#a;{7yfJ!@rkPPLWF*BLXD=vRZg%Vd#w(H3?!GTwU&Upn_;*~p z(_S@?d^4i%Cx_k(50ri+*Xyjl8Pnr3O(mQ%h6PSZJw`j!R@!!zr>skBYZP*10#yOe zY?JBDXDJyUn>IhQcZ@V`HrC_CS8z&ag>GQBh9U|pbByHY=x}SJ@IS&GMZ7~Ct8J>= z+Ah&6h51!?aC!ASV!uGHwD@F=1E&0(1_wKOew4P>>28EVp?4pdlyceZYNGTduE#r| z>1%0fAkNnZ199u^Qfq!3u+}W4w!7OGm@&g0#kxF6a8z!A^n@YZKy$SX*PqXYL~LOm60Uh z$Q=MY1@;yCzXiK2#9`GK6M}LNL5x+|tr5o4fED+GgBWaepnUe+_+!Igv+`QlBVNG` zyy>+h9#P(KKIj6vt6zcsDVtQahe6e#@a~$4AZHMhAY+U;&j5|Shpl~H_NWS-halvT zI6mgJEW)CMkLJka`icQb9Dj!N3(pPM#i!irHyXtIF)hsDcib@Na}@vs&rDSMjg)$n zaz${eV3xznEBVn-vzY&V%k{r>sxZN zowCBp6(&+JcO0I2@zT6b_x4A=hx;>BlUdTGS;GVf1HFpp8=M|DW2Q63efbrbWKH`{ z1~OZ%W9rT=@f=Yrs8UM?z#ThxplVk~%KjJqlsqeAb}#jx5b8c4n4oBq2^t8)cE}j# z9er!+{WHV%8byt*t&M~h$r`GKP&mNglU3~Ik~WFiRB{0xgV0vX-lJy@yNUT%2PdAC z6DNI&dWDbLvB>*YL}5mYaxHLK%GJ$3Q^fgY+ENxcOW5 zu~$vNVS3b!yS-=_1O>dlOjM|$A3?*?gF>lVFOoqz<859#k+<=NZw6mkFofIR(b zsaylMl12e18K{%H6FkRH_)*|p3hL_TNztLTxt+w96OQGx~jw2DK%xzEr^u=5VHu5(PoNJM6rBWtUbZtbJG z9$5_JgMe|*<4m{Hpok;kkmM7CSMpe{0{}8lp&tJLrAhN;LuF0?03N?u5^0X)4yqPd zS1h@~>ymwH6;;{-kjkKdN$Jl)Qu(gCnu7;kbpxS;=%yPK^5^?_k)~eGdm=5F$ z3CB#4$LUikEQm~Mu0{Z1$m5}=$l+t!P8jvUqUn^IzNHBvRKX`>6MzqTwHmh#u;)0> zO#5P!4Le9kD%cnxay@^gPZAim^Y@QFqu!aRBSf5MYh>h%^gMT^F{&bvz%k$)Q_mS2 znTBvZDjDQh!nRHaCjx*YNcR@WI2{Q7wJOHJw+=sxlfd_??JmuZ#NeEkJZ7)k7TjEd zRO5huN&uxaE=k662SRa=t!9#?UmTIjfO`98x94`ln9+$m0o?sfW=Rt}yqN=@gpcJ} zO}p62SLz7pT~rg5!5BR~s&ih00W%+Vyi4+SAOToImU5{agbmfW6&1sQ*r|0 zM_gpLJT^Lip0w4O)q@O-oaMW8?f6s@J~lTBPdt&wzB|<5Zy}rRfx!dXv{PL`(vJ-j z5Hd*wk^Do{)^yV_eS~8j4mm!9^sNZxDv_o~PPwS2NTzjghi^bJRdunfUt=|pvt$Lp zT>k){QB%4u0szW#a#t9ts?uPC^I!l79ewFaNh=R_Hh7iU4hH`C z$IbnF)eXC6CD~dtzy)!Pf0I|)rTf1!f-(s?&rZ3hj4kFzD3go~fCm}vkH)fY`-$&z z+%ZH|O9pQ0+k1M}b>UdUAZ9t_e4rom&1*uZogb##jT}*wixaR%|I?0LBlsTv7tajZsJ&OOA&f zDT$JBG1qZBj(^WeWwWz6Sptk;0oS*!SbPS^E6Bjd^`!OK3jtBE#{~5Np7|gBYN*Ie zj##i_dBOJW`O+lA%vjWxU~_sWnljUH%k~(6gJ7~TF?rlH#`x7IKboo0IyCRfh}yv-4(X6+7}tX8OOC$^3`PA z$OtRWIR5}Ws%a%vGA|&L&If;E_?oO_50I{M1`cV;_PRB&{Otk3$2@1ZTC;B8iFX*e z17QGieGNerc|>R5!NDwXpL|u_iu6@T}e5;<77TM6I|GPZ`e{9^)0x$!i#l z$kDU2ji+(x^sRfR3SY}Rhtse5%~34=Qlm0Sk)E8NawG0Y~|_%Fl$9MM0r zyg8ugS|yl}IeUA2O5Vl41MQmMA1r|RJ4W8TU{tDSb=!<&^PULzty5MSxdDzCP-KQ; zF_2DLnYjZ6VUvJ8aY=C-GjheSGBP^zRHP;FU4me61~c`n=YAKt^yzIXu*G zphFsAI2gj5;L{)=BKfY(jEn$z{{T3tZYFKYs#IPzN-G6n)Iju6Y3V z_B7W209mxL*`9Do0DT1{jH!*q3lX(RJ!@FWG%IOh#CJkQia9*6SmSmNABAXH&9$UL z6qR74lh9_eAd(3k4#gm@Mh{W%TFfEK9f|V{5CFmU#Zf$l#^o`#88_nuj{gAX6vf&@ zw)44|gX}7V5)3#5?I#0qp&peHbuw>h z8+Y9R3}f1z<_vUTbB~nt`qj$J*=%M@Zg!}Qq+}EFfzVVj;ATLe;NbNDR>4kp2^%17 z7&*;BAZ%c59AMyk)?>L;$mMc}C33`MiZY&N7#Z*|1@Y%`^ zm^tSi>Q{AMWcffJFCVQhQsCc0(UURZ2tXGjjDb`q^HT&cRUDJIui;i>xK~u#OpAaC z_2bjls$BzsBP`(Za6a`Orlm!ljIZVx+aTeA!ym%0#0xUAy8wP}M^S-U(V#&iPRSgk zka~=Bnw~kMd03>fU@jB}$NA|%r0k0q=n9}h%_&?1jF2-_m^((%Zjb^n**@KcSdMMw zOl9$mDQxq_D=MlI9x~l|1CLq^8|p(FyGn}8R4+UZ4;=}s=W$?E@r)h?XB3%(uKlj8 z3Y7!p=A@cuc3dcoZ5by#9FNzU3}p2zyowdnKO>E43Mw`#1xl&}B{05~Td{c9F-i{<1T;{*^m{{T6yiKJElZot98 z&1apw85uCABR#n9PkoH!(KJ9t!Q@k%^c~F-IAUY+$N*tN=Nz8GoYF?IZAmvV`=e>W zKU!5_No+R?2*4vJ>qAAx_S9-KENIddSjSV6KR?Q>#PTGFTX9ly4l*jf?o|BX1ArGJ z6=7d7g1d+qB!745Na>2Qu<0ackPXrCz$$xj{sOAHAYb-~P(bK-6*5aM=+E$M>PJDx zYNc~0%vpx_0|X()C=`-=j0jzVu}y?y0lNMbbq?6rxj>_UK0ze>++|$*SfKjxd;PH%misEei zWux3)Lj|4GlZQXMVgMM&2irVXWYZrj&cwS27$@}NgC^bdBa{--W=MA6Z5SCMof;yQ zE``?^wSh)g$J!Z&IMB;IPOa=bA$%U3L&+Dh>$g@1Me|F3eUfTy2~X!ZQB=!_%G*6&&$o zA#_ZI#{}c(J*nGJj#vi4d;!iqefm|9QKF7V`=orMAOJnX2T4gagJ(hbzA_WKQ1zP{XKcA8=qp+DP#Nu1CxQD z)|gOz?dTYhjl}W(c&5zeF}#!Ifr3X)l=C@we9tAFKqM3+o_OYlQj%n1NYpa!k2nW{ zIi`$DwfBvg$qU=*`cx?K+?13q9Pn~;)3@@gvl1iwp-*FsqIsjNx!OKdomZuW?;H89XtCL;xo2 z0zl@q7ic6Bpp%Sx8qc#;QrL}ANf~7r-|lNgiE`Nl0&*}qaoUtpxNfY)c#>sgEWi`D zDi0pjPCInm$b_;f!3R84p^Sb}U5$V<^Kp;yrZv`Ca^E;@z=4c@ABe3=(!>TPjhD;X z(QaTy52^nE3a2IHB1s|+tsuzt>DP+0s$YL*>33Jq?TkYim54ugoaBBczAf=@#|X4* z>kF-ErP3t5x%)H`M-xcw5v%o?LZ%5ywEvS5(WdIAdROL43o#PRfs2d%ag(O zAEj{q2i2ES(yc_3dGiR>%*+Tff-(som36lh+Xjv=v|5J;1xo;NkI%gTB$Gnfia6Mv z*}!whem<2+lu0N#=yrfO-P5f~BgkeUfFO`J01wmi6c^e#b>xGPGg8tmO2Ewsi((8C z01Qq6HBieMOraO#3P>A|<@~Af7V|!B+q1BO4mig+&wgqtLkU+PkU;=~GNb$}Hp+8d z2N`5=bLFlEN{)8b80Re``HPGmx$DQJU4+BHP^zvr!9I$0D&{#E^EV&U$~1PLdZu9kHAP-*@@qp>W`d8b#TV#IgIn)bc_!EfG+z zGJaE@y{lNusx4?-x7v1RCnp1O?tN(`g9=-jFfel2?b?wFf&g-?PI9Z$-mNeMjo>gN zJ+bxa?^~%RYNVM$)?>ftPca!l8C>-4M`O)iX(EX-8C5gR2pH%80IgImZdTPLkO0V| zB(Fp7j>5bv;#bA}JHi&Xra56K&;&y&=Q0t_!TvPvg(qZt%-0b|2zOj51c$-eIL}<- zvKLa*-tCad34dy&z~Z)L1P*O5yhUMVET;vn#{2H zyW{JfQtIX?HH-M|);O+6U{x0%E)-_~@y;`W?NcpwGq#sMTBNmv_Y~$55JJq&%Oh#37c+Ve!@9D-X>|X|aKz(9E z70khvn0Zazh5^9*>mjJ$Q`lR}fnRErQa~peC-9-080P(Z@5QbM0YQpDV#d=>|Q7aY>b8xTSr%s3@SZ)!zN zqBeEN$rv1xeZ?gf_c3WEIU5A+m4G)Qt(l1R?$}!W1lbOz#tRA_RUwlky2=I`yCV+g^_pM17fa*?22aq$Lr{zd5(8X(XRCEm^7Hkq! z@O=UN>Z6hiIYwkESOL`XdU5P4LCJP!#z<|X5!0_f%AsBDoyZuT4_tTl_M?3arthK{ z9J`3(35}$HRAZCVc0J8b6!QN7F~egR`{NkqqLGpv_$+{(#ev5e$4`1dXPz$D;~ zN2j$WlOVRO8DhH>FF71^$NvCcqm9x59Cv zh@8c{3fzKu$N9x3LY3W^;ki_~MGA5TTOoS!N~J^r@HdbF3{Zg`87 zV<3?U=m)vze;UuVR>ngWU@?$KKT5v$Fe->&t_rbl;=#uQ@H7`0EtttIqgX)l;|LgG zm~`i+KRVBzGavFw%i$tAH8ozbWxRoVBjPD1s^*R?Zd(9#m2i2#gnKA!ZkznBV%ODO=T z9nbmxbrTu0lIV&_8FD!P0BW(Dw!{)i8IWToh{3}Cbi^@oNR-GF1G##0>r}qh^D9cT zJ3=rSzyuE6{r?r$FAcwO#xviK z{=HF(Z#}U#RDu9j7(H{-@TnPzxw@0gMvdGwY5^Mt2Oj+>G)l_FrDZD-Xh?PdFj5ZF zk6*%^*3n483_y%+-I2#b)AIbPx0!>;W*EaCFmw7-Cc2C!L{9CFc|3i6Ye)>>{Ac2L zygarBYnwzwf#Fj$oIB*6gQ>(3ur{Rh+1%TKb3%EH$1)=0o+`BciCh6%?}>rS6bg8JRd*h3RMVObak?a9dR_||SL zr44mHVep5<9}*i5(UvSmes14@Mw$ z+&LgrrQ9U6x%4CwFUrVEARRI@^c5At#Bxo_kPhIa0?ZFM{Y7WmOwd6Oog@QsGJLWr z01`Uj`;NTTT}Q;rYZTiOFCZ@GlVBxPRQ=P=Gm6;fl$v%mBNox{Sh8fZ5}E2V+rM9> zG!i7+8Im^u<7nx{c?_Qz{vK(+YMx8sb=P zK_z1{jp>jvl6WBVSxGghIVQC|_`~MLvU!ZbPDV*2aa3iuk#=nkaB@KhX~(bRYnjnJ zZD*}Iy}Z!~*pu@*w-EyN;S=Wk4_Z6y6gKr3vD=?lBEGR?T3m=ZYp=B=oB zl*buW$t=N_uldDNiwhCCeEpmdg_!-*gN&bldgMG&@h8Kc6rC;g`>3t%8a?6_kwlEE z)s+tbxT>$?p~m9NBPg=RJGp{MWEWe*B0*RK2QQNFV~<0 zrxXar(>@&O+Ar8dt}Yrh!XmoukC1Q*o^i)+E70M9d2&Rz5u%mdv<{z-<6aeK@eXUb zq>y6X$S?^R`@y^Cuear1qo!)FcN}s!+*klyA>e&#)O&%lu%J?=Qe;ve$;*_n(;KR z5BPUXxzSJ-H!>hHi4V(?agwc!H&@;$rla>@@4xbh1F_!?rd?(#=^(9G8N3vVj?$iV^U&{xaf6l0hBT^8c< zNZEpy@_-2Z^&|ZAUrp({<(9c-&0{*LVlf8cn6vyj9YE=t`HSMUiHBK@rAZ|De3lFj z-Uo5ovz@jEbbk*q745adBvQbvFu5dWs3dp#SJIYuGb}&o{z)t{OEDQffDfl$)$(t{ zd+4NVNT7+Pw~j_o=;P$T9Y^K(SJR29O1Ad#`4O~AoUu{U(?6N0TbRwH?sUFvS@Nc6 zM1XI@zsgV6t4BSn7kHffq?ZV-!1X=K{G+XHgm1-{>ozTW4!31|;daoYc zYvY}7;-AH@A8L2cqFQ)^LxR|}b1beAW_`**RYF4zq4uA1pKaE=8L6hv)hN7Gq{8WK z9qqbZF(fIGOE1?1^{v}`h~`IRWFU?R<8L3&kzbhJ9`OgnO+NbBr_wI1*;mX-r<`I& z9XJ^zAAXpxtvn;~BuwcaiKNrC+lkm)L|$elX$aZ~$OCb~t*oA?za!{y1asv#Hsiv9 zoR4aJa@!l-ysYdtfI%evM?qY}+=<|pNiU_hjb8$2mnFeG;Nxh{KO><*M85tasanrlH8r7eomX~l!P$k+#+?E@@ z_Z<)ETe8gSpDoVTZ0!di@z%ab@Se4)C8)Kyzr8IX3Fkzln9dJy4mx!>74*iLs3f+? zK>`qfV3Kixg5JHeMbWXes)HZBi~ur0JwBA+u>^Gh4a_<_OGIR8%M5BF=F7eSJ-65G&l_0Z>Z6}VtmGdTvBoS)* zlQ!wMNrw@G@}1e>bkEDzy?tNf?+jnx>DSjbl18OhdoP)^IUU&b&(K%MDQY}Dt_f7z zMJ%LB#aI#u%JO?2ezY01*5}$@6}5u%!}=7njWSE8gj_L(&N$?YmN;is+~0fniS1o` zC4?*^EMpGbZ9q3*^di1@@V}3|HEE}!YMSgCU{~5h9J%9xj^N|2YtWnGSA(F6-ubmq z_UuV=6+u(aAP%FE@9S7S#CjeejHGKQS$6MG%hQpQ`JdL7a?#8LOgfTEkGy@e_*a$> zjb9HTDD!J~tXfTu$z!=x9y6WYyVpskc+*AHEj;^c>5}WrBtt43l;j57GB9?MJw+oq zHlBxB=Uuc=EaC^WM|UYCV{}A-H!J6Z$pm7&@5Mef(li(@q@L>C9wsLZCI;SebJLDL zI@IwWi1h1!4eC0CiyWbls*$^bd+r2dy?%fA%UzSk8lq|1bSF}o*J--W4@{{XeUhJoZwXQIoi>4CRA$f~Ts;00D=*F1~^R&+nwKTOr8wU+NnxV?%) z<|I+<6HMIvptb;SsRFp~1bhwAZ*(_ZO4{aIw{|jHjo>VJ{t|k3?Zs<&tKjq=8n%M+ z-rmw?f;bZ15TTyg95*V&b;nbl)RyLnpHOK2C9u@hZ*Ad{!Wl5a)#Ti5!2{)H$pnsh z99LkE13J8N$>is7JAlvoSU-h)m*G44t*uoV+z7w~6UptI{x#}1-X{Le&~9hbwAn7M zK*~oX!>JhEoO|ZBTNTXOvo<~?d{OXM!~2EPb>Vpk|+GPzNjk1Fd_n!(WA34x{1pz1BQEJ>-)B7I|34*2ljX@94vk(wQd>WAUF{ks_Ev z6Ze2Ktc0))jPiKke=7PjK=`d|tJ_;gGDOn?U8f8~$&s89oNFZfq27@-OsZ9>6 z5m+W39oZ41NNfA)mhCYP#6(6Vj1h&reoZy^5w7X))a?vIdcym#VO zlTN>y;_}gBbY$|`jANcg;5p#e*Pa#eG}lntyGtzl!nxQ;EHZL(I(Dx#@$QFdZjCjL znP*~-%n5)nRO6`xkOyun2f|vVyk^TxlU9b>Xv+TV4Zd&(I2a$wlUEvd*!qHdXk}4% z5SKyF2Y3uJbDrRurMP;YX>noW&3j#w&DXqB zs>gFHy{(jXjP~%Ixd6%+rbanE>!E!w#ac2=sGsdPbx4^OI2l;04(h_b5Ohmif7G!5%I0) zF~fNr(Ok!mFi6=fPhF$akTG9I_HdAI|iG zWP&u_(v+iTViZx%{8d|9d%Zzy z3r(pNQ!I0qTn>3w=Yh^K#eCiNKOK0}Td>t<)y|U?GLkg=91CgJKPX@TVS)Obl56ST zijyt$t9do3xRns3MOR=T41CAb`sCLO;R)imy|z`08F0z4gS3w09Xf;gRuV(9+~HH; zUcISl(Q5beTIjcBM;wc=8d8&xC77}aDOlY>K4)-2^dlqisT#A~ z`R_*X{Qe--FQd5DFB!y~JkzdFvjP!CS zQ*Lku0L2$qDKvaFr1%Oy2+bXim34J#Z4@tW;NL{&5cmoPJ_04#Hieb65o<^EzR(-*blNXj)bjTltcAf*)bhS3q-rn9cvN(nk zmZ9*!?Kn9AA5n@1bRQC}vaRPS^IYB=EMob9H==JXZHAWWiQ*`=QP< z2jS1HdsmI;v%S;iR&gfW$X$;mwu}SmjE~N~b?~K)mY;nrwwA&PWRS@Fn|9-jch3|N zJ0DK#dZfBfhh(~rONP02NYzSZ04@@&NOsS6GZ;vxXVT zBOui#WORNJ_z|KttKI6BjW)6f5ercfK#qixNeprhIQrIxz3@}RtEU&ZhflD&w+$oQ zTt=r12ST6@xg7^u_U{71)|L@lTuAqlCUGfDmu!C#9^aL9I=mw3=azWHzF=VQDx8+U zImgsytC`zTrE~MD4+~o9dYpQdm4ZCE*wP5p6$G4;eLC@9Q}`YW2=|tRLm`QQWI%kv zM?yw8?V9sXh&nyim49_@awE05x16~FmNXzZ$s@i4XC3R&d=jYb3zuD?Hv#|($2iVM z*WRJF-OIXKocF|CG6^oNtyqf zL4jQ-#28T{YseA_B|(HyDF6~N$-(s%#P}|CThuq3;{Z8rqjuh%I#auBq}A?^tn!a( z7UHbn0>h{$zZLV}#XDU#?^?GDrweG-D5Y18-Cur4VYri=mB|^$Jq3EMkE}WJ;Fb&4 zLzPKhHe`^3GNF`lfJa*6J}V%2Z5#JKTx{>3DVf~|C07hF_=8)klyKe=xwW$M?cgQ2 zKQyuc6qCROh|kiyFBV-#cWfb4`zo@PJ6otA9FzEdRp;ImklsX>x_iC6Wp_s9PXLU9 zM_TK=b*Z4!Bf7XqBg!i)6~JsLR$==7bd6$?M+>FeM3*8-WV8_n2XS>I^u|E1plmJF zY0yt3@X88Cu5HfM4YZsb4yPI5*TQ#xGx(2hb#xXl4cUcujs%Gf#$xEM#g%Z!uNfn; zH9v=S{{W0S-I^w=XC9n^$uP!C$W$CFfsm>j(w`orP}hP0XN?TWnOYpDFl zlsE|(2Lu!A@`L!-kZCd5*y?K+ofF^23NcqZk$B^;sIN7%(>^rcLn7Z;HI=-3;z_O? z6L5dOft(*|+wd=i{Bvb@J+;S%yh${1J1gJFk+Mx8=j0)>N6p*}V-<^9nB4YT?Kaa^ zv2k&!UCrgpmnm%cC|wTa8-Uz!dlQQC%X!;N)g`-aQVFI~1d55ZqB$%B9=v4N(wa7n zcLk%R)GHR`0QX^$$j7yC+V{fEJ6pPY$Y-8un3s5@CL~}0;FWHAccd%a)9{y!{3Cq! zRu`A{_J(#y)QWPKf>C7i}V{Sdk-4whgh0C8C_Fqvu7nh z7~-*#vl;i!o2BV7qDx|=#{U30c8?6>J;qPHbn?4QTkP|!3^K~3fC}V#`)0m=@P~}- zZX&mNZ6k<<^3r@H}8Y&=Bjkd%w!61xv>r`Q7X|7`XDPpczs~!hVhM*C`JiI{c%G-fMjDCH+ zf30d;`9p)|Dj5j}u5->$r7IReFm&7-%!g>+Q*2?yuntA13UF<_wONd)A3_02MqvMySff@foAI4&DIdG0+qtG7pVuN+220rJOg zFnaKNip_qA#|%qgkPjU2Gx$`fZdNlI6DR;F80CGl`Os*dmm}MkJ0$tZ+RMiyKmMwF zL*>N5<&g(K0OL8wKa~Orm0B?&iNPSS7%K+VcyJmmA7^sTrCe6^kJ{LQ=s zAcM)x0*{cFYbsmGDlq%G+A&`(d_!Y!x|%liDum=8zIK!J$3g2~P+s|vM?A~sh{A4- zLhdfxbF>drkIKG7@pbj>&HcmN!5jz%>@xy)6M{(W2Q^A9mU7+`wTUlM7@!IwK3qU_ z3Jx#_V0f>iFDAXWvyveUaVsQj8y_Ngz2uSLEhD}7Tupb+E_gs4&TJGlIq{{R#l z!jeICVLDl)kRnL#RF+boFy!SI_v(21RswhEcGo{1{2u~EEydO6g$&2bjc)TX zW&;_@fq-$Gt}Y-p)4I8JNk7%} zz7_Dkn;dsKP24)lrs5p1Ly^>m5)riE z44R{oRPIxPNy)}XU-72H5r8~o@OH;MtG!gEBRt3R*xJK z2*La?eXHYbdeU^gY5w1KZJcfq0H8R>QIVg-8g|y>PTQYI>E0u0ZQu`o70uhmq1d+V zykHW2`26e4ykiaL_VJ5-(oBQ*rAAU*oB|s?uxp3#cZnV^5LxI}_K2`cXLE36o?xny zMx$b6{{VQMxyZ&n>ckh?{FfHDy55y7rPu`}5zfXXa^G+hjo#c=ZWb;!Z1mp`_*(W@ zYbhl4W{TYpnxlpTac>kc$|EiiFjJ5- z*PcavmEestPqxzZ)rA^ch}442pll-ml|1BgUmMswR+@&Kle;W!B8fb_F#zP}9r}JX z_3wjcw@XV_No7QKVxa-rM()J=n6DM_kn+;yw&&&Hf`iAf_2#{(TwB9!C|ihSbsMo8 z0d2qIla`bB~8f9p1nc!_OGn`GiM#9i*Io| ztKazrWnw_cUUCnAy;9<=Q-@<8Q}CpBFyAfQDRm@+X<~Uib;#{sEc{3KEvf64v+4f; z*>l_lm1noPSspTFM#`xp9S8@E*Vj{cqervzCTp4O_omY#e8lAR1K&8ST4nx$t&=sB z(oT-Si#%j+Q~X0dywMojb2gekGp>9c@ms@2-L+)X^eZQpHHgD<(z=g!z|TF8QC_j( zZ-^S-hheokq=oMa31l&&4TosY$O*5pwT}+ymlo|j+Hzb*Fc>=yxZr?m<^jPl{LjL{qw}$+(@%k=*p{UYMJjBQhBX;1QB} z$6v2X_|xHsiKT`cD+`OsR3Q<&xIZv0f%GS**1pxzE+9)-(PF!YfK?@OSo@RSs%t{{Z|-FKoP3du693%TFD$ zkD5ZKg5ZONK7jYFS-)p3dL%6VE_h6s2p%CSMyJ${ex2*=%jAyQC@tD}(o#ywu1d5= zsLx#29d+VcEhQ|bEv#aZOw^4(5 z=G)6vlng4yGk}C+(DTy0VqXPlT2-Vm+gOWOkuakvW-l19e=zfQasM)I) zl3O2MF=!Stq1Au@6fDGkS*JyC>c#SmNWt8lf6i+r)@i4=7oWJXrityYUXGccy8Ovc_Xpc~l*lC+>69j0*RNVz_NFxA}~sFzm&LK)p_W zw7~hB$Dd=nlIXjvTbF5Kgp~_dlbm{WKA5jj_;Wtn8z;E^-THv9vz1~;P<_cYoSvEi?`)#p zB1}Lg;N*_{_dkVk{x8dD&Mk5-q&{4UAsAKlQ`pyH_RvT}Ht(1c7jecj+*bkOyD6iJ zW?4c*w5le0l1DkL!1*g(#h#}mD?DvFI1UK~x&HU5ub_SzU3iOBk50ClZ6itWtQMc> z@Wg&%!H>!i4l~zrB%IgI`s*#d?C&`~Q%DA6!;&+Mn))Nb7NFRMwSCuW000V9o7sNW{rNlAAs!OG` zYl4VC2OY@4C;3-B;E#wCtmZ47e%j_iCK4xBc_$djU`pTtz{W>W)|_vB3r#&4>)M~f zT{l;>xV2kL2!zf9M*IT601xOZ=G}kcJ+6gsakEVkc`YC+WCcg59P^BfSJ+nGFw*a2 zjteV^1G``=pbSs@wc;NXe0ic<#pT@172L8&@f3}Wl1AMyQFF(?L5kgLsN&Yl@!td+ zjWblY)1i@Jf=AvKU`j4d2+n@I8vE}rb;21+=0-m+P(j9jI>gn>c@roPf~0|t21ilt(zn_|BxGRQfa(W9j-H35 zX5B=WV5r=saz*Pyuh4ufH`>O}z?E=iho}t7m@$-9;=)!MwHz`3Juqy+v&$^a4azyMiUo31jlF zO8GxY_~YUDp;fs68wGeB&N>K!`GLvYEFfvjKU0XHhVZc zt~;C_wMs0b+&od^-w)`FQ&GK^D~4^bh?wmMAQ8du!1~rzzlsLB8rl;qkOuPEm3p4} z{Ojc%G4)Rt_>@^&T1#{!9&5UWbVfW5aexj6E9@%|4}FKj*BX4+H&!XAM9YZD$;Z_9u502!@h!E6E$u9Xv0S11Rl~Ei%iVA|Qb7G{Gs1rs^sfxvme#d9 z3tOf^y<{rI7d(aCj@=JhWOAeKJ6BkW>{W~?1#$c&4%Onn88sUlsO}(|XO?jsZm;D6 z9f0Urx?{QP(z$JO_MZ4?{u%p!g*6NB5o*Mko;VOR7C}HIP`tco`i+zYO5uhV=)h z<6m=VwiEvVXXT(+hS1o^P(8n$d~@(mP_)ypW6^al2J28>P6T#Wk`U2F!Q9g~IQ1DL zpI$5OO*&Ylvle$!!n-iI5^i2Q&?DuqifyD98bs2)zM#j=ghrXb2a;Iu4!Zi(2?iZAn5+-)webvAj>0X=hJ#Ao?`bb_InFdUIim#ZU^&s*(=BRu#)$FI$ z?a{6jSt0W!Says>}DhAwv zoE-HPlVYhHL={&dcQ6?QjCS=EZV3_O+^Hh*yDWM7V-+mbY-+4QF#cF7P6k+U$NvDX zt6Z5Pk~|WzkpQ8QcKik=O94i_~ThizJTkMwq+F zEQr9UWA{{p$j45Cz7+Aaa6QwHCRpFiJ0(^FXvrD+a4YTYa><^?;mcx1Oysu!{{T+4 z@(#bFOD3shJ@ja+astMHl37nV3Gc_}S^@4K3a_D)NU{c9@~p*5h739k5W|lD0EK-y zWJAEX4#0)MCpb9d0berwJct<*!oy6TOtFCBJlKlkrz$gmGn)EePhen)cc}n;#J69q zRF$>?mr&0fqBL0)QJ$3Rmp1x*lSsq^BB030B;a(dMs<=V*g`(xk_SoE-D@sA}MROYxR9lTc~zZYGizKp|E<1?V>O(=}h=EEkuaO5LvFwT0(aiB}iY) z3%RgJEII&BZfoj~g_atzvwNE;@5B+rR!e}NDdYkRdY{(3H&*yl<4et4&1G*rt&6{$ zv$JE&!RHz6+coqr!#{_*hlh0uB-AxK_`@SGxAV8g7==0i06cY|4Bv?!8%)|D~uW*vdBV40}oyVMG2-yX8s^g)>0=V4^;ueDg{hDn;*hs%C7IjkmXP$T`6uP&@ zF9d1!*Aq>u!iR1E4moV_E9Gw={?B^V{=I9i+ry~b$8HG_K))=mNW(uok&Y^^m-{tq zULn*p?MmV+ofJgDo;lRGkw$v2xuBNLyIk?5$BH#8Xmm%vvjv1|V4R#Qe;x;JM_%>y zKY%mCj$qM$Gv<{u0yQoUL(Ex zOr@n?{CQAhoxgd`z7nzmF4cIAB$|XtCpM)jcC&EjIS#jD*`$U`qyoze#^F= z8N7||H5v7WDyBzBLM)AdSm5*hD$P=|K4G`M*F0b1tBq#qG-&hzAU4s%6S28$4brm{ zwMIb!K=<~quD%%kvRPn){D>lO1S(at8utW$fa+_bKLjl`2w=9hi0J7Yk+BdVQ7GN> z2F`JxYV~~!;i7nEeL7Wky^Uj$3}Qm;q?I7#^&@GjX(VgTtY`R=5G=J7w7GCZOv;YM zT3ld!qwoh6@kX&Gv1hI|y~VU1S#cg*kOAq>8P7ed@0+qKn7jlhrzJ;&i* zYpMJy(=YC=r@etEG0o<&T>S0p?ceE8`<(OKzwp#L>4790Sx^O4QbS;JNj*AoUZ~2> zw$Zde?rbq9?u>f=IIe3#&<2*fcgoQcP8;<6x(e({DL{a31ZQzL$@CQ)Jq*qp#aacG z^cw_8B!Fb)dSLc7@aK;FF{xPUw^R6ht)`?lk2Me-yyT95**~p*gWf_;SIcAsbR-;S zkLy@hJ{ZuoX^Uzab+qKGD+OE^IOC_`QqsPIv%QbcofG1(hR)w1!f=5QCiY)YGPrfC9D#eq|%4 z`OR7_<;2oFZrfM@6ceAqqmZ4%ASwtTWaI~6B1BGVwI46z=O8rJ{ zCc^C&ORGzHSYYoeI(lQL{{X70#o?VQ2_m?H%_5RMLj?oz$Ky;L?Vp7r-9!(W8DXM)Du+>4cvnIM{Xl}nzi8Hw~9bm#D| zWP%7_mCSNofW?{A$acFNa(^n(g4!e-+i#lqVnNPw2L_Ya#kTh{^{pIgmWJ767QZkh zfzCiZE5UqS@cC|S%ftKF_)?084BekO>Nw`Um33Sg-52IOFhA$km^ABomky+<;{=n> z<5^j;AD23>!`~B$uFjhJ%r6mQRF>NzJ z2Vv`9tM8=SL?TAAx3~z|P3R6e>?vij%-0e;Fz=DM0dg4k{#8&bdZ7s8$&lf$}IuA4R3xn&zo!v$F;pj_{3gYG=Si;rhc6MHS?#Az68FrB-(|g zos8=!RWZ#b?a}pZzf3Fu56Cv)WbNjy$rLS>^3{mr1fFOnO}$UgzXg8H zH<~W1f3DhGjU6SFyG0a%q?0G8Q^5ZK3j0gJ8VdMxN`l@L*&1O6;x_~8N2%v0*1HC@ ziX<%*U=li!oc&3vuMpe}skOiiK*+)M27*ZSOUVkV;g<(EBkz7boYpK72L?$HGK_)< zt$Cs($s~wzxPSxaBivPUY%>~hw|C9Bo;dA6v>ujcC#p4!F~6H|h(-x4!;#1T0A9I= zu<)L)vRln2oji|%VsZ-=^~kP2;ic_xj5vw0tXk&>r5_4TQDEm-;^#NV^df#SI4wO58sB0yB4J1$o}0T{|@w{0BmtwH^h(H zPeRjtJLTywX|6l4MSED-%M-E3EI2AV`c`gFW(?wfE?VfiWC>?$YA$a}7G#1!g9Bdl=)SjPckB<#t6@+ ztp-juWlJp!PO!K8J&XwiKy6S!&dx9ir?svQ?S2HKRS@8$&V=my&w+ zu9hLN{QGcQB!ivY^(L*9V;o`1mIIapAD6W<;QAgT{{RZ7!g0jPnoM%tJBONi56>a& zPB1!tmDJgIdrYymg5Jv3J9I!m^4D%hx$pI_L3kky8j2vgRRE`ubJjqEo!3P)z z(>0<{AUMK4Fh`{!6y}Fdm=MsQV~miv-RW0!_+f}`SBwI12^b?Czm+U-q=AbwZViBO z`c&Rd+!s5Pa#uJes?Vqnx}2h*M!_T!RQrwvO9M(^4yd?14so7&HIm1BoxM5?o}AXC zb8U$EU;;(}1Yn=7YOS&YmEcy3=25%?IVXzdKeJ+zRg-H1P6!QwT{Y2f-RC<4WRNq8 z&4pP@ovLKd$^hW|nqWCB(16*(gM|cSk6>y@q;-*2Ld7~MC!zNrjaykqmx+}@Jb)Xg z(xG1^oup|%{8DCL29pz=cphk`gi;)X*R}VDzYdo&IeEPnz+BaP!IsUPZdV$;eucQ#AK14 zr;4s^2HIw1;}UOBc;$#aJt{z~7BB!tBLog{Ri&7#C}@CIIKer=tyrz{I0WaQ&jO%D z5T%d2cN_6tw_~M43aQ0fS_WUEuJrw__aN9CDIqg+-VtEkRAz22{ zgo1DZ1B%U>IANVag^ZJx1b6z6rD_RFt79MzZ~-~?rd-6+L}UaO2P6dt@T%t0$evqj zPaKTEZVJtSGFut^Dm$49ll#4y7z6{z`qg19ic<~bHU{Mw=i01GaI;D{QmQfz56XRw zMcG^IR?nE^WlLkA9R)0rfV`9$8C;Q{Y>KfM=R0wd4hL$|Xofbi4Unuz1Dd5L)T0>2 z113Rm7Xu@&PV_K*bO4c&gWKu&Q>Kt4j6PLvyFuyn6$hGU!U++!ow6%n8eadH_3nR5k?5Y&N3} zgKF&{59BF;uK}G^v(q@ou&WFX+;8&8#(2$EWZjn_GiRpWpHE7VD_=2KaDIH@a0O(j zWp6MC00Kb=t!!R!vE&vxz##s(td)2}g~*RR06E9DGgBpW1nCwCW&wd20QTaE5qTk4 z3}gYtUy2yt8+MWg0R#E|brs}Dfq?Y+a0X2^q60Ns=3;VBPyy*ycP_xsyaI5ixT^7h z*~b|f1P}A+Ru(dLg0B4Fl5>x(G8%1Mw92Jbm*gajfO_<#6Dq#a4dpp+N<73 z#z1x~fRHe~xD*0SYBlB`dmD)ALHDSTmu4kM8OR6u)Jh*Y$I3=P6?7&-?F8e4gYEiL zZN0;nONv3*qc{hXz~Znq3w4=~&cJQJAlBd9L&;)0XQf2y7%ue=0{}@K51^zt#XZh- zEilM9;9wBHp{<)+NR^_JNBMyO61`8YP9S1fgz~^WLE!hRs*a=sjsU^ON(pG4(U;3a zja|cSId8j3xkEPXy9Wg3nKauN0lc{x87H5mR*k0f8A~sh#tNV3O)Ie)3`xj*viBaI z^redeqXn%`n z8-TzpdV5wly*_M6-*^n31_1izwqucH0kWz9zyrNQ+zOJ${$ohnGC&}XhMZS^*G3os zf~0jk56Z2otF{Txsr9ONP2~)E$c{&TasL3<=}1O%m2H_#!~h9V#(k)fe6Xy3>ox;p zzotJLsv{fO$a38dSn>E)h;uEz3~pSIps4+6rFUSkki>`Y1aLpS&ov`~x;zlOc)>6~ZWVzcJl4(+>p1Hr{<6*=3y zfI-1y)6msQY2ov+h+3U6v{Zx4l(qp?qfzPvuY?AAU7b?P>dE;IRQ`1 z4+oyK2+=Za`7ng-iV|e0_2g&$E8=0GWleLQ;gsqp2OF* zXFC-Yb}+}Zag3g%3RMib1(>evpU?VK8_8xY;1iEt20MO2pT8u>=LTW`z&uuE@*_Y1 zLIz?~XB%6A`2JN+Yl)Ud+E*ljgWO}+@T+LMB19Y#a56tkR(0HYV8AKtamRYrEj3~! ztn?~flJ1Nh9OIHjNdWS8uw>lalb*kYN@7sCVyC7v-|(u!JnY@L5OM%NeB^hRk} zlJ7D|2G!aQ4mj^tqKOf=4ZMsHdx~O!fiOb@$Wlj2l|gh4xGH(;Med3#+}x_Nl0eBB zIN;{1G^|1vQmzjG@t?-8J)n?fgPo@%o`>n)n<{Py414$>k-!Jimo<>@rHZR`RD}h( zIRt*SX{8LH?NB?AI-1U%R7o0!RdR3!D?$|;0`K0q<0Jh0)Hya976gC+vvTfil30G9 zrAp;o^$(MP5Bc|~)+{QnTmXJik&(x0e36*&@wQ(aa8_&#=RJMvnAQA4r)gIrJx21{AO=ZeoO*vcsRxYo8;hZ7XMbyRbHQN~ zHdGLBNFuVH=55`bn?zS@l>zw#6Vj46nmn=E#GbhS06w(HoD~kEenv(QwM)E{leYk4 zuS$Uw?xlUHfVd-(pS#aY)bPrMFw9GJ0~`;=rJ6YKtnQ^Sc~g&0wVLD*%@Q(#O7L^v z)_^r-eiUt1Okl2g`u?>dK4Vr3<)|DC=M|o=%sjaQpaTGd(yony1w>$>eq0XJ6&v3` zl<$q*36OvQ?f6t^Q*awj;xb7%#ZtS~Z1lw2cQQnWsV66a>0DjM#4Q3D?$BN%M;=(a zFaZWXhzbpk@tgO%6ch5~pH83SO3We|V4#um;D0~Xv#d23?_-AUFnp;LG5`*F#w$(j zgsqm3=EmK_JbO?B4e&S{l(8VGJ^23s>rn4CEf4g+*$l?;UV9 zLV{SI>>73({O3Y2IkE5K4Hnuly zJDU|k>423%Bq#%)L+?{0!|c!>k=Urt4^fX!)k-bj<<4+MbivW{3k7;H*dixK0PFK*jn@42x zuSGkQ9^L-5`+I{P^(3kjk{IT`HPAjd_>;uGB-cDSZ>2S^ooecfc0mS5>3|PzhdIT4 zS)@J0+HJg-62&dRQMr^53FD#3s18$h=Jwef2V`8HLB}8GHCijXc~)0R5JsbM`G*5O z-%(#Z{8adZsc2VX3kz6hjZuTSVm1-#Ynb>~@e@|@OeOAJ{{VS#Vnjtbi~;;d@F&u= z=DH~Q?iW^7jXbviV3E-N6=Fr$S9mYZ32t-mTsEWP2=psRrIT@y@PV024us^9)A6qt zxc#84AH)|v9<*sMwMZdJ3PwQ;8L_k>vJv#f3}y7 zJ5%mk8>DF;a{@sFit;}Y{Achtgd142)Nk$%rDX@4E#ZhCG-{ifdj}}B_NP7103!i-j(fs4E>=jHJ1|`i&^bsZzpnm-e(`gJ2)p89+h{p zuxOd~ERwVNY`clZ4m;N%?(`b6=nh}CcAl`TVT z+Kx9d$3gm6z<(BhY7Z7!>XPaH4bx$gcmPQwlwvuQ=cJv_PDKLL{S9qS-}iZx4sbGg z&(gXJTa~#GB9&*8f}rxh=N0(RZ~H-fSi6onQcI10#X&s9)9qv0k@NEa=YRpnQ_sD6 zuZDkWFBDwf*cZ_C+uK*n7iH7PYbPnlWjwLZ9C7bJGxZ_F1;Y7}GZ0V8*#K2pqClae z+RhsTX&ECub6+udBjTJIgGX~Ds_{#;PFp@-P&vm+_vNCkRK~|D!;t*r`WkCZ zL~Fzn1!+9U#sDNU4&IfcZ#44xWe`ftHvoRV2I^eToM_|jxb9o9OUA*PU_%(w@oWWb2JJGof`}k zXCIAMO+w}@!z2$74U(>;Wc@!1{EM67x5ehsZ@fM=>+9WS=|GZr?bs9VmEa#jMOz;i zJ}T;#h?eo)+syzF%+o7_C>%BrjOXdWrbLq5{cpV17TOzkGus&$;Zw{RIO~y8+v*Tr zp_!+)I2a&EGC$61@&{D-i}5{m1n~~NcX4f}5G|p$TUX4g2NEy1z!)Qu)2Ba6{0!DS zSFGA4?aj^hrEPa~W#2R=GZKM?O{W+m9r>Wh`^x5MAw|Q2r9lKY`R1w1G!ir{Z>=E? zNCsH~fq{}ub6V2*RuN4UvMZ`)Rd@T`@<8Z2SLc_;uN?Tk4QeafZBp+}v->%LZS6@Q zk&MWC{O6|}eP|lB^*={$^<6H|gpXIUxy(LkC`s6v`^-;JbJnus@t%a9OTMk8#S^(u zT5*xr<|DA_Uy#~8-;SrBRFcbI@rI>5$`6+$rcrLBWMFg$=~gC#;zX@2rL?{zy0wTQ z7be|+E_$eJ9I*biQg=36AFxn(uS2??NG-K1E15$8p(F>)< z8TulTNQem>5D8EYI#Nv%ypbtG$`6|yAFXn}6!8tdwWTG>+$y;s6<`CQ!284TuBGKu zmCA-vGC{^Y&1WDpCRUB|FjqW)y#5B3HEpWR)ws@n@#DAQQcZ?0yL5}x1>}+Rp{Cx% zu-dpB9PlbEz>U%`-4VEFgWL13Ecm1GBT4vkrKIx1KBueCx;r~WIrHQTou!6${yn*` zQ=1Nv$sWi~6 zKazt2C>_AvjGSZU_Q?Dz=)Z-wQkdnE@!8;D08~(+F~Py^Ppwsz#M-g!o+k0Pgghgp z#ed=re#cJ?!Ze7n+`}DxE6g;nikd#JsN7lU=ITos5IWpR9su3g9)h@!joNLK+9F?K zYXKwdhDHt<$Qa7|41bYdJ^V3}bF99aH5nq)5UF^PGFfwu=j-&UCapWMv+7A zZaLZr;{)`h)wd~ZTTrXDx;t~YuV2EY-6msE(ObBaU1aaKH_F441Yz#%bBHsP4%K~gdaBN+CgV}rHJFh40BG0jA7f~v73juaFA zeXB^M(UY@dXN$|*^5t*{B%GhawKfnNg5;7o1+k83mgzx7n{mkGlhdDCnlfgHOBf9i z;4sHLRoOkwBWq{@36Cm5fH^0>6&PTd*EO!2tE-Km`F}1Wg{eQ>0ABQ5I=T^J6w6lp?No8Y&jRz#LK7*R)bgzlt z9r04yzK)j?$0p*l54ga85IEyC;6E4i%k63nR^C;)Uk*VSmh6^LCJfjBlh0B(@0w4A zy3BUgwidS0xJGX+w?au=4#)oh)mc~`$JdPU?1i?hk%FYKBaic%@DGZ!+}>H;Xr5)= zwWY)j6xT7J!h$&n#PD!?{{Z!?+pMl*k~m^Ue36V1jE|*BsMy+GK+s)UMKoo0f(PCG zf1M+mPRGfA3)5SU=503SO+x8od_!??6qZm%(g??)>MQIUTd7k_PqY&9M!RwW`H#}M zn@tMBz_7N1$&8Pbs^Ed>Pkx8VL_g%FVkR2Z??qXc`Tb=An6W z5~K9rc>e&#yLFQ5QEe{H+S;-=OFy_%-59O7hAJYnwQ&FG2w#1y|?U`-~6DgIKF0><~8O5UqkU zwDInKl@O2T4jDS+f=A>lHrnq9hDl*^NXr=qTxS>^{i<85_#;JTljX)p03XVNtY2c! zyLXm&z{+$VUtYA`yHR3Ygb%vJleE@%+oN^>%3(f)fmiU(M2jhPCgS3*|k3))dx}A-QG2LBTL{Nf3 zaC7blrEDWkXu}KzECB~N;8&XXtHf`hT52=-UT9zzGUSb!$KChqUF>?6nKaR~S1GbW z0B3Lk_aB{jf5weZLQOh*ZDUZ6PmBX1Aw0^;4lq5=IrKCE&Ui!PR=?wSia7MiEFg*G zPbyf%aw4I@W((ACPI=<*XG~B?L{s;LwEhBsM+auyG*`p z@*an9SjGY5?e-jwYwnK>__sz&Ygq1Y?b0#^)-DcDOmUubj`S4d+Og=_-WO@ggN4EB zc>e$jkUGZ0%w-aiF_s?O=9>68U>9(0%6E`R>_@2ls=Us`tE&WHKp^Lzr{zh-F*ez% zk-Te_NhJrV80+dy3{Ks-bs@4rBaS_(kTh?Wa>R}@Sbz_%4I?tXBW40na5`Y%b~T?a zwlALhkVuHG#X%&1a-x+AhemR!z-JvWeR25KcBOe~rdT$)t6s-vr9$9KD@dvrIpl-R zIIo>`zuKGOmX&`iS!-X~)=&&fByh7tpqv0?83m7}YF{!wg7GcdpAYM{cM?YtlGwsk zha~WF4{n`Jer@>Z2sN8)twu3CvD_@NG9YG+uvD^Vrb7{*LTl-}kJ=BzSFxLjv3D%e zd5n`ofx8&!dteXBzFhHtj4ki=xYxt;>H40!>*r5uKwly<#|`W<59EC)6Ou>Te-G~E zYb$;5po}7{Sm1>8KKZXm*$CQJ7<|?lX4%O0CcKZ~rPi^jS=;Kj3uKX`YZb!6Hlw%z zWG`XUkSo@2w#N#(x+n@rCjcB{gYU?oo_$9K21u6~01~7g2R@y}Lp0(%ZaYalZXoXe z06DKT)jlJ5cR~}LLh=|&5@ccr%a2ZT(DWX)^Uk^ZUU*&fol{%U^y|$}LAGfXOF+?F zPRcndk{^_fzTn`}dYT_*t=tAj^F%>d=QuncVcVrvd107`Af#!Kz+~>{rF^~N-`X$3 zo+Eo$BH0}863nTLHml$Dqsil{uZ z8W_~<$jHWd>CG}IjAe@LO~))tb@!+(u9oNtzEzj08R_&LtIvFM@i)W13%N}q{_+?# zcDFYo5g-q+5HfSX>N?bzwC;M4n%#awA_gj1RIteBu0Ih~-sMn{7R6kGNj-9U3iu-P z_OH6PyqZl4($YO7Gi{dTQe!&ck_Ivc2m+w+@9jeO;9P3=5rRuHM+|s(0P;kCdjme4 z&?KGgkI=ZbT|8lCMp4NnfzKTe=T{6X6o7z9DnKCNKp5h@U%@{V^lf@O39SQLiH2Ac z@}bD>*zw-I)6H3YryPb|!{*8D{xs8Q(MsACcd~BtIR!yb0Qq?6KRSpzv0wwD=Wz$2 z>&9x#tRrRJ!x6wIIs83pwBiZ1llQ#Lp2Ma-mHH9mt9u!=E0Zq`Ul}(!%qvPqH1zj zo9_}VZ4*l>E5u?xh(`^<`t`43li}`z4wb0r`evPHr>*0IcJW)Re{9>z?jxWWAC-Cc z!(R|+_OL8=viU)mYVMRV1GY~Y?OyE`p=Wl2<^(q}sN|Evk~)$qtkSs8jlLy(DUU;w zf0YH?qxaD&$HEYP@IJocs{Ak1qkUpqTX~_H{t_gTF)701fsxxa_0|5Hr|MUUd3zDK zy%Bjag2xDimfMb;lh&W5cr!%P?q$8Ovw|0!X??M%&N&?QJ!%bNlSclLD_m*T{(6xi z8N$9m81=`}t;p*fXL88+1OU8q-#+~+7-JF0k*38$Fcc0)HOF|@$5uWKi&AUEGO|X| zsBwW4?ctBVKgzObnWVNi+fh=aOCYhgKQla%YyfAwcIk?#CyYEH3bOwI!cU|n&>TnR zmO0041MSwoHGU#|LGf?J01iR%z6-mJ7Asv^4-X>+5!p#BX6`|sm5O}W&N_cu&3}d8 z7PRd+-04?ZhKY6%0lMYO!Hzb#kxqThX&sCu9Z%Ec*DS8%Lu-8vN2M0WkKMMTS(Y#Ud3&OKmCa*cwG>Fq>(Ll*Nah#x0fPX6cU%(zYmsQfN zE-s46XFMQU6qEOXePtbYXFYkQTG;j3Zc;0Dwm`80n^~1d%sm+U;;?M*bY;0Q%u70w zaI)YYI(>Rqo_tBv^=nv>^!aU?G84@&oZzlVTzBc$iuwNl;ikDby^hBI{%uBh6;fB2 zlG2hs_Z)SgXWdHh70d}4*r7Udxaz;ovM;1tMv`G3;K5D-?OEC_%SaED!AZ+9=cjT{ zAFX)b#vh7Pcz(j;M)3PZbF93}8p^o>6#nr(gP(KL=}EK)qj<04H-vl-0H0dcY;B}5 zrr3jSD9zCr^j7DmYUCsM+2H+3NMy0q?I&X(K%{4%OoNX8wed}lfV@NTD_R!mdFM+# z*`Dg+Y1%bs+6Hjk1sD}${uy2k167|_eNR=n)RoIJe`!fPTY=!Jl2?wS6q~!ao$aCe zEv0yd#_BPfgCxLbYXH2TPQIqK;<)O6N@g}e09d)j> z3mrpHu!O+LE5L)yN8qVXz@F3y`)9>J9lRgmnI)RrP`B3aNeUX@2qSWS;S2%IW?1}v z(6t%utnOx-4N5_jjzk5$N`ky+@xZU2yes=Yc&EkdVR!wb{heVn0i>4lHN&VFGBN9u zo`83#yhrdl^TEGqw78P)d$}Mew+TCDEyIRV2Tq5sdRBL_l=nXF(tK~D>rlq}Y{7_K zvZ-usal--XL9V9W$rmd~4Np2AdX(K1*=lH?vUl!=vCadGkRKFh)-s1@Re-Z@k2nm>#DVM6{{XM* zz7qYQw0&1thTi`GSF(~oxsoF?7g2x#*`K@5TDjq$fIb9+PPe^XJYCGd#L!IpFbeQX z0n?G#*Nk|R;LeBOd;LTEJHr;Lh^`J7_;I^x_aOfOp46L2*2y1u>DuMKp%P6F;R~)% zkUoBJarsm_jr2+hb&WQHcN5M!@%h)vz6tSl)Uro37IWEYvW1Qq<_wJwH~^{d+uIfC zUM|-4L!``YVrIVpZdW5E06&*QOv$E(c<+&bUoW;mx0qyi=!1t6R-_ zBb;5j83B#tRVt;B_8YP>j&s(&(eSUr-wfI5P+iTW>GxMiGCcV}1%nKNoN>3f=B_WI zB=HXj{AckVlOCUEeDiA8(nY>g6o8}i{qM&<)%8Aw<7-`3Sl-Fz7T|6MLK%VXGtlC^ z!^Qsq4zzP+_U$4KH%oZcw#96Uq-C;52aiv{3i6)~UEgWCfVH0fSRjr@-3pM~fyv#* zG0=W=O{PqqhuxB0!HFeVJiwr{xoxL7>5t03b@-d{pm=6D{=uZ*l#U}Lu8L=AWd7(O-DFXg#zsN@Rq_vrVbbKhkl(hiIBA#}V=hY^<0KBB z%CVlpi$)CJ7(OaXDUVH`P}M9${h|o26Up*Ro(k%`;87wp&>sNbSfd#R%MU=zAaKUo-g2;iUHlQ3brF z)xmU=a4ZON0Cx4`KaEjI*uUXVi8@eQZ|!IMMZR|6H!+_?^dmhzYul`K{{RnOM;qAP zA#y^2BH*Aurxp3dsr)(dzMFP$uY9}dP`q~5_V)!)#>}VZ&IaMMbLpR2Y`!P)XN2vg zj_OITT@~eMr67WFkPxq5PMM&tbM)Py(c+cn+oj&!Dcaa!AUtO(IrJRWz)ME!8yKUJ z!!&4sD-8D@ynYq=>){WLa$DKUF0e+H0*825azW>)=z5C#2g3e2vefLOSmO@s9_0~? znQ%INdeTbU65YIhI36mm-e{cGbdiXJ`GZ#7$=>^b6sFEQbb%8)_m zG6Cnm=U+?s>r+{D+nZrOn;fwc(V~^x$>Wd@9A>^oeIHBK{6S|0#2_Be4slZ4Cvya}SY8``&;LPyV%iYvGR?$*4tb z5RT)`IR#1*atRqD9CWV__?zJ?4+{9AU$Ndvs#!Tlis(jmg)5Szc3@6F3ccZLyC<3( zmAWr>Mp+*iU=RNQTy^PERAS!8ym;Tluxa{L*7l4?97`+7jhk6OYQip7^DCr)pMKt$S;1gdsxlG20|%foz~SZcrY3it}Fq zX*TlTrS?xlFV62 z$zk()=bp6=rSQeR9$UlqTdTIyWOPN0l3Fv7*BG}*M|L>DYrBBL%tpF{0lr{Y_wHEkN= za&{3Ba~KCCp1{?M4~6<}nRRO|t@QT^6s;o}6b~@qkH8Jwbmp`?QDU~XQ$&%Zk_8|z zBxmZ~Jt!T|n6%ar>T#n8$3!eVCuctgCBAq|YX(5S-BYVe?0a7q}_2#}!`%%;N z_@$O6l^EtpV_;QO4gu$r&uaQ_z_(CeTBOmmt!SfT;0HU3{F(IV+#00%2=G50X*%}5 zsLQ9@S?lWzaxFzZL5kWG71G8hO^!jGJkHtS6yd&YeX)Ki9&#B7blWd|)M!4K| zP`kY7#*wT#?jMA)Qz;F z(l-(;MT>3TbAWm4*1DZf_NKCXXl<-CYl$vo8xii5#uJ_!a)NW$wS4~ot9Z`q#l9lC zywszX#LaYOk)jF%5O{IMd*`<_or3+3xcmx&&2pDYBno&k1F-kN^saB>=9{W5{+Xx; zMcotOi1{6|F_F+W2ASYXn_`x8vNV9kyV+y~nX)i(+v#3~@dN!n$}5%;K?0KJKXe>t z2NjE5!P%`(2k>N)+KYHqf;u#k1|5qKa6co(dv3XTc?X7WBuvO8jF_7Zf=K1V06^*L zE5dYD4}J`OMdVTulxDzX_ixAbuW{8iy-Gg}rk!l(O0+}~HJmc9%rVp);EWN*a&jn2 z?8dBa&x-s@rg(=@@pYD!qFLyArNph~+_lZwSB4Fti>Xy$>@t2*SDX$j>3@gb1G3X& zxLf#I*6B{>B0PZLbZqq;pIZ6bQ1PT52-j!S^w2HkW41{P1#Q2?G1&Cu(AQ57?J44! zWJ#^{2GkZnRg!qtWsHUD%5#ihbKbXF7$tUneShIi22DCwgHDFt2%-VyW!x3dRv(Ud z>?`H{MlDB5*Qd9gZC_7WLq#%3Shx&6VyCBi%?Lzs@VnwZ9(g_g8Yrx^2b22o8cdFdUu$Y;wIiX0Mw=W9_{!#B zBAul`C5P0IJK)tTKZrjOyfdp@9bZe5eFtoQM2h9*mB|2tm;py#bB-x<>t;2%^^^QC zCh%Wr(p*G=cbJ)h!1ea#y^}!GVAE`3Sr$f_*UWTw>cpSOV;_xt$>7h5jWzs!cDyu& zl(K}GS&~tXQFiiA1oM$!MClsczNYCUZt@2_7aX5+j)SFL&CbC9WsN@0{Eh%QCZhWj z84R(&>f{v#v4Svr>*Ps&^J=ia|P{vtyv&v`zZrW#)?}PsU7t`%lcRm&I2ZyYz=9Mky69y?HORU;>98OAfmQIXcZho03gWe+-RmjJSb0a>xh$m^bYtYx{Bm9;-IL1NhJ`bIl;qnNyi)^@${y*Mkq zPI;ws#(p5iuxSlp_Z5&f*q0>mcsy6n{tK{%KNChY`Ne>3!bqdUc_$|=j-9_c`ZwZk znioT9VuS57#TytSSqAA2-MdS^?#xfG8LywT2<@9zhVIkMS#lMYM+5omIJf_p()xMZsdqXYL1pulLHm*tFA97Fs0IIpa9zyya zmu%|19LFi2mA!_Ut@T6qc(QSWYZfJ z*yxVsRY@H-p1r;68IH1{_Qr`p@cHO!Jsw!o+)DaTel zhH=TSWAT)6rj{X{oL;PwM=E3x0-SJt`TVN_j}7pZoNIS)ZyejKK;7j?#mOLb+;hkE zudMVNNaeIxrt_hUDUDPx;BF@v*T)-nC-8{hnp>&5pfw|xXHm7VscLe*VkGF z=i2Qpk+#hm0u_PDJaq%VPPHxTU^(9z+bVc+;?_GQ5m$Qb1H{OjiJ0JVmq zlKEa!gfZt}0|(R7ps%VtV+*E{G_jSLh68-q0UE?3u(H6x0p)=>I9n^iNMdV;rdmt6gCoDpd)DEN?>%J+<3{Wg;4D9k-iAl=^JCDo9UMAO|Y$p31$HWyE`aQLrcM(NzEF^?p8E|>adSw2! z;{FqkcDT8YDP9|hI#vO`=hNOFvU{x(Wu01EMg<5cN|whz{;KjXis~lv+S1h(BG_3J zkXrzP!}IB0sb#3#URj$(Mq4sOhB(}LO5lCqI^@>@@eEnIz>r5Y8ibKFZS#U3<{abb zTk@c7Uvteo4Dx-ohwm_whFrf5$01K)(!P{|pu{-0g@FsWv*$jelYxxa$sQKh<6EY+ zg3D6{CXo*NXHYhfI4yyKbA!;=)ZQDv^Q zLRKDHJF5ccxCD$I-49CR{43@=%vv-B9gqYgk3&-3%jCMb>HZ;mnKWy)wuBTY2_+7D z@CX?l1$^UW7ujzb-qD&wR$^LN3p8wgy}EVnUry?c=jqZS2RS*&7|&6`{A=dKx0y9L z$Cq~*^9tpZ=0Z3)9eW(hL0#J4Tw+p-}tEa!Fp9KSRe#@XKU^9ddhv z2;CcbamvU+WzRqkIR5||_dOQIE4?4=w&FQmWg)|{Bq<%gUMtBwTcVvl>Q6Qcp)Z!e zBEG`e$3LO`t5~gW%+G)DPQ7~QkTu=Yz`zq55@S=e5^x8rkgju^R%AH!c7m1u>*7H!*AcEa)V=o#*cW){3*#ZS5Zs+f0^X#aRndwW}WkO`LDZ4Pn@fOyB<$69M~*&kH+dr`f=(&4vBu2S7(dBh>H8oL~p0CXph z%DE4SmU`x&rM{|7$kCMSGouv@NFc^f;CSy|XJPR++QQytnZDWfd3Hr|zq@Ipz~$pO z83#Q(de;}@FNv0ZD7UzHBD%G;iX##uNPm4HAdB~lf3aUA!G&6;0zFlfPX_@EBFTBNqc>NdXw8+w5v2x zml;(HwH+aJwTVhfn~?{b>}XZ4u;pRhruBIK7(HRangliU1vC z#{rn)Iv#w5ewlwl=a)2I%EuAZ3|Y@=rtjRpTBf(tJmx>Q~M~UOT!pVn9`4 zBpeOHIUgfqjMi0`#5K@iVXh>ae6f};SPU=+?`PlhAC+e0)6i|*Xnk9AZ=yvKiIygU zAkGAtJGte5&$VRQ_`k!tObq&Vys_M_T3;!eGY>t^M{FATXT?7qw5?A|)2wXTdkZ@}9qG-xyy{oYGY9BLJF-5c`d2-3;(K^On@?Li>5=jjN{hJlBai1+JUQUwVd1Fb zy}6EgWw$|X912mbqYJlWoRPcbJ^S>pAn`tvbD_e|`f@f`wp4h?6-VbP}W=&a6pXg7)D9s^Gd7B;m57 z@u*dmR#gSSBObekJwF;-$-}XH&UyJjjQ;>4Gx<~&>mg9883-UQ?yNY@Pj2)QSs3!$ zhG|IL1~%rO8DwMShYm(xaq54_sYG)iV*X^LoN_@6^{dHm4!~KKES!zYoO>TmwVRh= z+^rfd#F0rPzFLJYszKzCNY5BOyZ5VMJh-4TC|j05WI*F+e*1m6qCg^%Sy-w2xC5s? zl#{@+%r2TZjJO~Wy#b*~wj!akdEJrZ2&95YIS4Vq$LC8esf{IGB}@=F>yF<}D*O@}G!)E4=WAoqK&~mRFL;5R}61R7y?= z0Q2wpVzq>Ngi+}CnuWW-(%(nED8O>6NG-=)_OFwCc{TjrBmUC7n#$8ixshX6)Z^UY4ZD9V|l3g-6UcIL_0ab6mH9wEa`Xm(2Qu zKD!zymOG}m`IMH(+TF)eIOrvec;1&2MIs-Holn$-KNFcW(Y&{VUY`593`YPup#D zFQmFns9j}DC?lyGM;|cn(y+cE_;%jPf9;DYbs7Aauwji<2}===m)Q5tIXSNfxV`aS zn=JGH0A_um1Bn_Yl!isX7~?r31B&NxYhm2`_S?i(vqwA-PRk?4Ldck4oPbV$5ne}k z@uK^{lK7uU)U{=vI4*_0mptqeOXx~2WXDxI%ZwZx0Bhwde~4cZbqk1+`tCgjH7^ad zm9&xhPK4!45TNcE{{Z#ZU+~w${wMLR$M%e&mcFsjG^z z7N@ZIU*cDZ^_@b^E^jY2ds~^dMDk_U-#H<8{vHSfo~IqfeJ7{Gb;Dc*IKUtw8+~)l zV0dG~dVhzk?d%|e7~^BrW)_#=fCk!6q;8Bj)Ya5w_Ci(O1z>|sdi zT6ohc%EKE+UO)Qys*N+ofsim#SLI>QWM?(e3otyzl_zsCxo2j(P3PeG%}R!jUegW2jwPYFGN!Jh)!+2-)oGOLRe;oa5ouv0SPpUsU_5C6AEqdZfuG&bWK!7r26~^7b zejR=5)jR>?s9;qZjnr=(Ao*&~wNwImApL(j?mTDkz-qAFd0SF>5s?&vh=k-0Ks<3@ zJL>-c2YgDhY7tu8%`65YVuKsQImuy=KIu5cW6JJmqkU2J9N!asD|v1=c#BIDvlNmh zbC`c0*YU5Nd{^RS)h^_VNxFvi)!pkA(jK z4(;T-k6zTEvo}(+D2NayWFQ>5{t=$l^uDvE!Ed0+V{4dW2vcg4lgIPv^sS9EL$cA~ zMu9}vB^4f4j2RpNF`s@a)zFe<3S5;Zl2?FzzgirdGFIw*C-E0edwY4M^FqzDG5LUD zPDvU3>kGl2F}c!iVv0?C*`#4g#$0~;=UlD{@p9|NI%U<5hjjsMb8yWVR*XqKrW=xoa5vzA&jUQ? z73dmA?CIl~uI(7=`W1u<8J=sX*_uI~fmDo>&wBKv_#tbiDoqp?S6YGjRznd0w;9?` zKZP`IwmiSUntkn(+v4VEE}esyy&I0wK`6m7p7{Frudo{8STq+%;2X?aO9S%}jz}K$ z=Q=;atzKKZcGPtXTWDjHGNM8` z^)HLQ8mEYCCAMP~oPZB5Qy%SyIq6?KU;fUzOxlz>qX}mmgt3!rnkQ-rckEk~)mni0l3|gTyW7X)7(wl+Cg^Bmgi3 z<1D=6wRgHd?9DSYQ_HBu1%z+CQb-w|Q`~Lq|J|j${(s z7@jYc2sr~ie-H4i%RM|=+`%N_WVcM1m6-gzar$PjyuM&yq!JHBVe;@WGx*b+=uMdn z)3anOd$PcvpNx9qs$SVN&=Cx9`K-VUxKMfOSoEvQ8Cg^1LamSqae?dyuS$u7s|ciU zz>~ushu*Uqi+Z0Md`R$wl6jhy)s4BD5Xz3AxkV%r0rWWhYsBaArmdk|TSZ}Ws94@@ zRfbs6*pHKUTo9mxjGim>M^y0e)MjU66GY4R3CJC~_3vI`t^6m^uV9f?q_%A1dZ;^3 z91Q+HolIVaiYnGVT$A>Y*TivK-S}Hxj!4|Bmk`|vJoAi#LB#qVo# ztDR#^(AH?9SYBY$%`}b`A_|0z62mCJX zaD4@0_X{q^f_U@5(P{!nZQ-5=3}$%|++eaU0}P&k4wdp|wPme%7Ut?jjwz);%M(WI z%_8T5PCl8h(<{v`&iJd%7w?GXMg)=c_u{xsTj92kc7jWbIT~pJ3Q7Th$Fb+WX&F7w zfE(jyk2I?&2)ol_xyVBtk+CF!#?#Gn7Mh2Pd~K>S-lvEzbtWv5-XW9h_T-HGx%oyo z;=f2VpM>5LuzS0^%^KeFatVbbjBHbkWr6FAa0V-fjG1xILkvJ`7!ehVD2Y1#Q2{~TZ-W0-%GlV)5Jp#LyN$3ByT(Ta zxH!)l>t9g#Cr19rxB09hjzaGv9OM-}GxV=h8e|eklFcb(McA?66;L?)0F-a~m|usl;vBlhVFE@jt>Z8OJuI{e`Pu!Ks-R zMH4Q?RZubk9=Pq)*Xe|Bb8ibONg}BwNDIJUPo+?~wTeXj@+7acF4kP&W4Gl%nfZF& z4*01HL|;?#&t|7?aeJKN{XIK^|$~ABGxF zg%M}7wVvHfds(HQ%#utmUiee^{x$2!(fK}HMS_*aM;p2H{Aw|hV@Qb(K|4b7pmsT@ zyb`3Fo-)1n066@AI%O{70^#zdcY--BN?>9Fs+Re&yc6qEpkxJvWym=ydSL$mIVFFP{{UL}O?Rt#kU?W_EG`>sNH!7Q zAoT5DP+i9IATjLWut6OKWDU&hPUk3j9%e%iY9kvJ&)EF^pZ03;mZ^PvEv5dIqTGnd zhD)n+F#{bJ1ar@N+VHpRzpYs6c6yGfsafiCJds5#fI67sQ}Y6y4(uNMXWG8(Bry5i zy6`iQKbJJt8#Cwt&KULg{Do0UNt{1|{vUXEzz|1eqCs%5ss%=oi#r_hcYb~FE5CbX zk_(AgNbJm81fDnp8T>O;(SRzdTLADk9=`tooodIAv&)_UJ^JU`f{zRFkAiJAjCs(x zDjHJCE5-HC*?Ysfox*F=!35Wipajp{0Fno>$von|#FY_Cfcu#B4bBI+ z{7pGpCX7Z`a+919oE%UqA0X*}vR{Tjw5@dwMoYi4#S2Dlp>T^RY;eSINC4v?<2CFT z{{RDg4wJ_gfu)@jM^p_BvM6%~00BWHXTLmsE8A^kh@vCz+kn7q;B#6)+p}l)j=Ac4 z3J7qvr;_Qv4m2G$#z-XdX1b7I85adt9ZyhCLHO54YouFP+oVyfs(@`JnB~5{_0`SiHdT#tSF}kVydgiiqmI}~7g{xtYEZ_7)t zC^!eV9qVPd5Dh*uU7?LuXE`M}$j?LhRp?;yqTWIw11x#qdJoE>SKM|0l0}Rh;N$6v zy5%B(Cc_Q}6k~(_6|1$h0z{dJ!jps39lsM(+`>N2RFJ`j0+YeyR2FhVBvm+6W*OYT z4!v>f(~8r-5rDx0v|x}4I47TP!m^dGp-|l5buA9o=ncg~sX_q3+yUv3exj_}X%>+L zXF?x245P2mcK-nDR?@?~m)dYRARN>`yWcis*xAWr(>e6~X%#5-Kw32U)!hc(NhEQ{ z_*0~Z&WVu>VCR#bqxx2&Y2o1#JA%Z5Na@$LN|C8jn^sSkf=^6}%bT&2b}(g{M9 z!rNGG4W0#24o#yhTA;yYZNsrpG43(=)tM2*XwK5O1Axw3ADOF&6U-qSBolx^=bT`E zRU;9!qZ7E2IUJw!iUjmB4Bs;F=)DQYN_+v>xg<6@TrM%rc{L+Mv5c|jlZ+FZfKJh` z%NEH`-p3%+xgfpuWX2%CvnUP@a!(`aRE4<@fKhUl_Us? zq#S1$Bft337K@GByC$|s;~RqE%VaYiJ@Z#5iDiW(^2Ce)05gs`eI;g6b19G$Kg-vrdQ@;r0q zIbb6jSZ=`p)q`af%#t$%-bN1{K&pEWq0cnVzGEzjw3C3$cVpj*ff-6GxFL!3;0n{c zvsjRXP#7HKcOI3R;3A0p)eBSz3(gljR(L{Gq>4_{oy2V?o}Yy?ptleS5*0#E zB;;d1N^|UGBWKiS1M5{HcTRKi9(Wx({{V$(ENF1Sw=q)LJ-DC@^$H6kN0M6%7;xU= ztVi;I6at`QBvf+}j2FrtUOw^aezg+012|Gwf=TQ2rPR(#TcbfqU`Fg<=LB{3rai;k zl0t`zcPw-GR4X>akZ=!Ba&jrRE~GFUixGmnjo*bGNJ+hm(cTH<+Pv}$FF&cR$Y6?8 z`BWAFfJ=0)e$Yn@i?SfZ5Dq&7{{ZW*mL)2yj0Nlo&VH23P}5VLo&t_T0!caNui;e* zXh9oLZXopS_52NV6UiHHaJ#TbLGPb-%jqXmD}XS4J*upTtC>*( zbJcp0o|Q7cL7$y7{>|PghJPt_O~_*o(YhAk_sOgJXY8q~8Q$XK#75gqk|KiLA>8RE zdgSqg?l`Z|4ayud5a>n-EKWVKO_Dz`K2=o!WZ^&xbKmosG*RNXBiW054n`s>2j)J6+4=z=U3`qe= zJwfY84CD-|+sfx4f_Ofd#Y%%1Y<0ol=ku!oBvF;}+1!zWNU2GXF4j;9AcLNtP)A;r z0I|#p{JYTO1ZStPrjqz(J1_=FE6DsRsgg+8D52_f zzKF~O?vEsf?s1HtO0^m*6S#oDV>zhs8bFMGY-EzWAFWETIxt`xE^ zUBE{s*2o8srZM>%dP)~80`JZX4y60jk|Zm*23(ARpXp6#`3SjVoSXtP{&7>tt`=sU zxZCnJ9hi~i5D#Mu1Bg{O5l21H;^{I>&GL3+&7lIF8ttBp`IXjOMsoQ`Q z1CSS}6+AA?e(481f<{l)sVsO>=LBOQgVXV;p?Mw2+T;P9r2haq(6sK2u;a>os-ywV z4NwPoe1W?d$m1X9ioXs#wELsw$tSna)ma=M$6d#eJ5W;8#=MZp))H_|P)Emb1wC517XoQ;g@mOZI1s?b;3w0};s; zZDS>`dIO~Psy{Q1>a*hWfbAd|Il1SXElY*q< z6pQ8+jr`rrS3Hr)qUzQMqPWRR6ekDLkR`y8YXvua88*-3I$;W!k zouRr7i9v8j9{oU|(BHFg+hbO7k^ms}qI+>85~Y9yjAM_l*NW$0m+b5ac}kPG?m5qD z)`tDrq&eiAWUm9-fD!G?MRx3Loum_t8hFX!xAe-AxT^^vkcKU_fx#>~A76gd+mD!y zrvn%y4o4ILEN%fg19F0L3CI-;lBwDV86D4hiZh7Z{`Bnyj?hU9>&0P>L2lWW-GrMt zAf7-2(txsOWoRRCr_5G3#&OhpepM~PM1*Zp2^r)J5nTS4G-BQ++;U1nngJzSO)c0$=6Mae>FZL1Q5j9P@#Wc*R?}Ve*9`kKQ{+E60Co z2gYkf@G zv$1M7Fy|vJfC&rKdeuA0gsMEZBP8*joYr=+dwFXBmfkTY21wn~zFhd9@n=`?rk^ug z%Ph~liA-n<1oTx0C#W1%^%3;a$0|zD$0p`aymOu3=QXVhyi6j&;ADjzzO~?A3_MGD zsmE)3cRK`~6kxG985{%ekzYm3s2KwQIudh`LC609T9+z&0On#3n5%<~U}Cf6W@pI@ z$?8exnvk;~cif;c;1iq-WApk{4EZ2#9XJ4fwOojHcd`~(h`_=&ILIA1?^U8CZd0@= zBd7WIr%Ruds|Lu)BywuGF2omN4gmuLrh0KtMC^;?)W7Ex+lIpDk(^}J%XL`@JBa|~ z*almEDBwnX>5#a332>U=`0jJ63Y9&GP`KoPtm1 z`c$nZ$obuz@IcQTRe4=X6Xp|vp0z}=9Jn~yo;rimo|RG6fCFk0&5{ZB>M0L1FUt5B z$lt;D#Y)Uj5?GwK0Q0xnfel3>M)KJR00J}6)a#hHHq)?;xyKl&qeMGqWgE%+!`yeP zTT3s?_fKGYdzx471X6(D7sF$r?b4~ZR*a0`9tiZU1dNX`76gNp!0A=ywo$MQ=NysS z>F-I($f;|ok0KrT1O-voX#W5{wIfU-P#wbH<0XK{)KyJbn>%S{$=ZWn|EW0g7JsmWTrrCvSY;AbNvgIO1wvUXsR z$pbun4QDRHi(4YweZ|05A$d8#ADwya=a2k5W2%b_{Z_|Mo<{QFS8ir(WU7wj0Dl2o zuf(4aURr4FVP$k}CYC_UF5tT{oN{_~ugtF)c#3^T#Z7gn3)}0vd3=Z@U>RbNpPARw z>N`}}qxLUK@k}>Gt!?k@?m-z33T*%p*P79qje<|<)vw>`hfr^?b1c(UP6;7&OJ`&1j1{$*gwI^g!rR$xKjBW_&n1b3-r z1_+A*%8oXsay>9A2c?LbA3f9Vwg&``SKBm9?Ft~voIVcU>rIMv3}aJa4CXPs374E!+bBSpvp|j~w^MOxLAqI**rX z?xW0+Puv~-tK#pB-U#@M#PwYt&Z)9+{5IZ=r%;vF_A?sJUej7kb~t zzYx!)M}OjoENxr~WH=A>-bgSBAv&m><4dp%w{#j5~6uUcZ^`1 zj2~Kz#8r7v&Uq&t4Qo5aFp#qmhQQ|pel?jqk?#d28&z?%pS|xuipD>jVbmOQS#!sw zXvXTBw_uzMW4BN7tcI1#W;mFJeibs@76c!dfr2^U`eK2nXLHBCF5FFTW|LXS zR{3LXn^z=qM^pa*>aUaj7+OVr<866$E8FX-jA|u;t`{srWDtk8dhyeW`pe?ww6{7# zn4p$NL@dms8&{tFzP0if!#jvH&xx0JYhz~?p!#u#?J=O;A{P0^dw&fE==~AXBl4~7 zu0j-#0hDC$I&oVD>4Pz1!3RJGLG`Rn8vaYm8wlnPn=>3$;UHX;#ssaeKmlgWg}42aFtZe{zR_9u+-Os58Vw2Y(!k_#Q& z4z-DW91|1gM3SiFDLBs^GgR&MgK=*htLAxZI+Z7i(6|f`nM<+z%numH6wGB6eGiWQ zH_hbgSJ$xVG22Fq4lUpXlpFz^a!EMJKJ_=kn`^7Ps9ss4v|YFet`r<|->KwrN%7Bn zUrii@O3eTOf&c>@{+a7c_$j4n@>=P0c#~9;{zxtYTHD1Cbe%gqta%IwAD^`b4JOa6 zU^@{IzX3tXJk!=De756`rz4Y7+^7$|BRr|d1Mcv6t1A&e3LL9-1mh?C=ChmV5nW0# z#zL?-EJhUV=Derk#4O$&Q@KP&Oi6>w5;`AlI@ho=5x53$RPskS{{T3z9{9mL@afia zv{8g~WdpebJxAwRmV9sE>F+K)U#a<0TU%H`I8dbXoDM-fdg8x8JUUW69ui0-rsfCu z4mtzrUz|P_jyLgg-QC?Wm0TaQ#>56t*~tft``6z3F0H#wV+f8Yj4dLW8vtNu1CR5H z0Qr;S#r^HxrEv|tm|IBg)Xgfk?={IBZT0^EKDA@ui%%Nc`8KZ@3dnb$`A4ZA*0^tq zdez>isYGw3i%yE->0pK7JT_PWPH~F*8{w9UblX_b?I%T5%yJN0dG$Y)JH3GGz9$Vv zUl09`3%PA!WG<{QKw>aXJNkQ9#F{A<{xcET!5sRD8xzZnhio2z^{=%4B2DILdx>-i zj2NDZG27C<7klX!#|naIu`v*$Mww(IzUpm(`T^j$?qJgHC3Tz4k8V_sM+YO?t9aX7 zyn{;e?Zc#GWVm7(5B~sOs(2L3{g}I+NfFmO*z!Of>kHzMmK`d1)=%_z8{8>5ASuT^ zk3X$QT=+8f!&&jijqbFVESv0tbdJvARzJOR4)xqlNCzVTEJ4%0n)?U9{{XXh!;6c3 z7XJWS(^^juTLxRHCniX)zGL@S_*f1z`C`6c@SKwA{wukKUN5pa4T%os1d>S^>GiMC z4+7mS-j25LG;_%sdCo!kly@ert7ui#k0jQAX8!;ITUy+-@D4rC zT$=e)#h(kK@U8TEo}9N(rM!k=<+CPv!w+#^rKE{+HlpAFNjU!iJuA-qSK&=NTiqO{ zHCEt&q>_HUFmh^JB>Au5Pl;Wu(i?Fgw^-D9jN5=1`=ii|b6;85UCaHS9Mgp)p>XKg zA58vL<=znZL*c&++iDi}cF{!y(mcBoJ_|AAWcud4K%{zRoXRbP(7=EQOOUPr=yB4K zN$aWcXYC8|4_lcQ2;lPcBw-PFv zJ;NTSryZ-O_}d9SoIAm~0^2=e9{sY{71#e0AYvd~191oPMsT2vu=jNn( zSBtzkt{{uc`wa7JjK((<8OYo{yVu)44CK_B#yg!tDHaiu9n|2rufqc*bt%Du;n`LQvOef186|U`wfY0`3N>vGWOQagS(O0J?mO4T znm)g!T6nU1OU;dNuNg&kAam_nKTFY*)tMbJTy0baICQN-$ss z0b&5hv8_mxv(Uw}@P~)m@n)At)2<^ZKuKZ@i|hw#=xub18)pk`Wv1FFBO)kO2q1MQ z@v6{WCdkU?F2z?o5^^~GMLDlxOP{kycFG10(g+`o21T7%+sCKs0b>$QVqh0<3~&c0 zwSHiHa?>xR)pX5L;74bv#V*ex32_S!g@_}cln!h3uJ-0=A-M}`*JYw*RVRiePB;R; zIKD9d0BFZKgh3tU>&_U72*e;Bhu;Sj7Zr4U1MqK4u)bSCXAP~KFd|KbLHqXH21{d; zlb=8ZeLT8mo@`RfA~*wKqD28*=Q$vE{#EkV!VCWZvrDDQuCRg-DF6_s(EAGdt}CtJ zklANFh#gP=0A7Pctj;UPz7vmBj9u6)HW#r*5nkK`1#{7df3I5n?)aDB^s&^RSJ5wK zvGFTP?{_5fA1-f~3%z?|9eu0y8&~oZOqxmNiX082d*B0}=kolk^E>0mh;#^b4MNqg zqr1}zP4@fa#BAIRi=Ie7Fz7maiUxfd@JjAm%_B?HF0}zQ?5a$w26hgca85E0Jx6N# zlgSb$^xmZO1h4t;Umbh~D+h=4VC1negwNi>mU0^+rA%UsMn>n6%VZpO^x}Z3K=Tw6$iXyG?;8u1^E&2f2Y zq(vpdn@Ho@*%&eNovZpB)HtWA5%R~wm<^7oi)9ne!LgSlXCAFzY)qHa=u<;=Izw?4 zt1^W@bbv4c{A=Lf17GS1%yrF(Y+;f4)Jf8mb@yCTE68OJRfi&2GfJX676m67} zaz~*Xe^KjJoy2~C=vsxf=ACQg!m(SdTT}$VBPXxFJ!=QWUOmx#E+Ugqkqbz6tV-WG zODw@wR_}rB#eDw&@gMfD()>9c-QI_37N=&e zk-F~O**p@A2N^vx*Vev4()8=!8fv4%cd*~h1WW`{F6Q0FH-{Vp?0K)Vd@=hj_)rQg;6I7By6Q${OLo(xIJdb;4rF1&Z&TA8bg!B`Yw!xgK}KtMo^_o}q=)%bdU}F6 z`d2IP-&&5+{OOR$mrz?sU`b>9fq~jn9=@c~1N2SqV4S>=NT+IK^U3@x#(pCFWbmKE zy*X#rbr_?&X#{awDJ7hqpD6r(ook@cwPuq>jz}$|k=SKO2XW6peNRgGi{p%H^Jx|bKqkh-^F^XBQuXJ5fSY)`{Yip-4nQl%#We0#5bJvVlu>2zUN#Q*= zLyt)D2Ag54U&ku6Arur4;E+K6_ai6Ty_?1#4)jaiFH3y`Pq2#qIGHC#w?szgfSUm4 z0CIWAt4%S*vzG85$Hnoy0?+$C>qeA7lFJpt4>=u}gBbwz8+rUI(Y4PWNoS{Sh9!9w zONS>UV0F*sUo6{rHva%l@pYs+R+D)w?)#;cRH`q`4&3)1zQVqgyYPc*NV4m8;wx!a z_mEpiQAa(;;nJwlHjjjUA^c47$BH!#Q%vyMZTzn6u0k2h8Mg$Q9MUUWcM=pHI_(LjX%~ATCw2%Q?sE zUR~f%4fuLyyw)|jBEObd9ybdX4o4iH$MLMCYn0~fc0UjPJZhdG*DloQuWtpgRatGr zN#{sO^Alhh8-7uq`S!1<^{*Z2ejo7Q)@2t4@zs2|WQ>5UagE=lWB5D5{u|Qb)8*1M zOFc4Vj}o+FKWHcZS~l*4gN``jp!l^UtKrzv+fKEyg)}>riKO-I?M# z2gHvSc&EfV)}O2Daoa%&Sz(eSF^K^=+BxgN$mw36tm?iqi${iAUFS?^3pD%>E-}@} zJx4*Gdij&WbKXbdtN15FFk=u^AfG9>9E|-que&@qV)})Lk*RE&GQLoaqa3Kg*l~}S zo@fOWkIRpVde4teqBRTsU}|yQ7ke~RD2RaIZshLc9QX7U%G&%v_?Kg%zLVk0`*hU| zOcm!sQa1F!90TcI^QGuEHn!I1N7JG*vSu*M5qTN;m;wiH%Dji;CzBu9 zY@{zW`@l-7V5-K43^U&wmVi8u;r^rIeQFCkjd#SvN+kwiZmNvj^a^>$Bl54c^t+=j zpKl@q^2EDI7$gq8YxCdW^u8OD#X8gIu<93@wX>zA+>XpqdNvd{9Bv0A*V?~8>{v-> z5NF5=6@WYej+7WTc5`16bzMV8@U`pse$ESxWuk3@W-GLjz#JcJ_r-j3rs{qpgI}6W zYgKvUkjBzS6or?5K>0}{1CE%lvb<$?eGY@D#ia{qujGt{nncKq@Iw$g=N#9-4)a*} znO1v?i^h%o$%-6_B+hWEJ7=Y97i1&sDIlLv(9~P`nJBETjCjF4KOy*6#-A6wA>%&~ z-A}GhVJzB=YbC65$#CUfFb3VKaxw@VtM5MoM25~5yNp~!@n9j3l+S!0sI2daG0hH= zZ7k9&XxMzk6b+*Xsr2bo-H;!Z(D*j{PisF3X}6b`+O5)=Zk`ul@MoQ%4!9%^I#5J?p^!G;4QDrI_qw zcvZt02|GdnGq`#h0Qqa;r;L0@;>~?@1AVApi6b$|EN(F1oNOtB>IG2H{{Uq<^&8l4 zH4SQeJt{&XZ7x|DDq{yM6dw4&?~2{{SeEj5g8K6Q-8EgTS`u=loE(Brd=NOVzqGG4 z;DzUBmQtaa$oaYIGuIrN0_W$xr~5x&czRu8W!3c!LUsgO`O>pR9suATI628U&MW7g zbHJMRkK#k7FNmVkXY$fxsKFRyxW^$0Z}+(8JlE{Dv!z>VHm1UVG6)_${$dUkhTH%? z_{M$f;SY=&KA&wip(XH@^y^`}aZ*cwIQo%}C>76I_*U&5mAbX>+GX<4G=aWWY;r*9 z>t3hhomWxQygenq*$h{5MZO7T;aDHyALI3}2lz{<+ay+Y&u2SZyhzD1FxwbB4c@f~i z@FZN4V>#i0!OeT0guVl4=$2ZRw=LDt9hn#$Nz5D=wwty*@T7Jj5zc#BtGwLTNW-Z428|!8~K|Ue3lK zo*K170f4N;uGWb_ zh~QXbP5x@3-1z<#1ED-}NX2}sH;tjx^(bPoSS@YdFk=ld-zPld`Tb2|+iz1<2G7x} zDXt>W%QU9$c%#kCr1FKcgeTi?>t7c9SWC@L_gjrM8E>yI6bVc&H^PiI?jZUDpGx=t z00dmzYdTD}>u?@J60(+my~fZ6dY-l8pAkGiuV~koP7+IJDhtZ7?q>ra1wGFvifLSz z7HfPd_#g24^TKxa+NP7B-3JFzq2%xDYl;j$vI-xldGGiDx z&*A**XuT{WJ5keZwOu8wWDx}^fWQocwBs%KiuqUKZ^HK0k)*n}g8ui*SOc&aSim?? zeLcOa>$D7G-WW)^0kMv8?N#*)NUjPb>jULU0IB00@moPMqMLdjm6z+|4+Pmu{{RT( ztd|XL0!GS(6tKwKy9b|f(zY~DjUF!2>|me7hD%u-h4RA|!Q01P3E*eizeDdlGhwVl z9i`oyAcE9Dsl)Qj%uXrv^G4e!{4-~ zn<6}St!r&>Z7Qq0lMy4501BhOU@@L+>TMt59ge4Crq8tyN|^>X1c9ClsW}JNiukw0 zzW}c6Z0#+yJv!dr)+SQEYJq~MBOc?9MRPtFms#+Zw-Vmn%O(RxR7y$YXFT*d0qMGUEA8oTg_%!nTh+SjDmaPBi6o& z@Lr?+r45ubMCfKwxnw(VNa%5oL0=|(PSfqR%|BRJprm+R{%DV!0T> z$vpM168KSPXJ*YSO*H0J*aNv40AL?u(~9@0W0qKv+TL$0oF16;>-p1GGk#~xemD4e zE#rvnAz1>3EMho2eF6LhS@?6|tw&6{M4Lz!*7odLGvhuk$i{K_P~?__TOLR8IZ<>KSm0%uq!W3HzrlhSF+PJm zJDT|Kz*m9%LwRv+`-vi$JZcCS$p<`p8v8rq94#)ABVe+?%D@sx#~ncL>t7pbB*Cel zEMhi%DPmL%9=QAk8?6R?i(#s27TO%rypdVmGBFZF**kHKnf!X!!@e%lwOvzLT{8Pp zose7!C6goPP~fRJ?X+P2b@lvq^FM`d6kSRY)pkS)P&1sI^y43`e0A{@-|70@+`4p9 z8;3;>70z5JI0Nw}m>*XBJF(LA`v}F%*0*rXs?bR+$0dLufOE%gJw_a47W{Oa(}hdw52ZG3e2HQS4Zht9Tw-gm@mFt{LK0!bZfbv_h)dV($QABwGa zCh%@5DS|}w_LGeO3A_bF~^`J@m|gFPrzO-)BHVUapN1U z9W`f(8b~dmbo)6Ylw!n&#{)c2O_DuV##T)}k9wX|CP#~5GDn@c{^FN+`M=FD|5s#ESgM>9BliLjFrX!@A}YW<9*N1%lOTHPSz_Z))ZTTzA=%5 zoc8+v0Q&3bj{<;ndwCHPPmc_t#xo{ZoDtY_=|GfHJbU8}$(H$}w2t!KOBgPaVB=sa zakOIu91cZP_$T4pJvPcUSmGeFGKkdqeR&F}k?+lGd{8pnOFC@~F}O=1=t;&hdgi70 zd3r6<-DG4jMA!pwUNO{UpIS}XT;3ZWT3Vw;1Ov@wKmk1PIqZMJs_T9d(e=1tZBVgd zxJMw6i=1^l`qrBl`z?r#q(l*^5y=xE+D>;4GwXxiuSocc5ucL*a=;u6{{Z^yE@yj| zd3CqK%@;$|8v93z6+)Y(ba9y*B=V=8=Dg?PY?szzYkNjWX9?w*Gsws!lj;U|ucMUN zh!NstEWj5oKIu8Y$@T`k6XP|d!G>t`cKWaY<7>18?6fV)^1#AfwI^eRAkTcg6=h|0+ zwC!tFc(n;5bdmQJKtm3_GBMa!vgu#5f5Q95S?@IarMO|s%Bv|SwoV2IJ*w2KVAn&+ zyg~a}csOWR2(ZT@HNwUxdBgek4}~55d2l}}fZ+G(jD2X6OwGit;HX8-x7m)BaB!GuNd-=L#(hUM=l(qS zW{Guk6{_z-rd5$;ZKs2fKpYM$>6;krts^l*465(JV5i?a;~t-tQ`F9#_Hw2RS!XT@ zGBN3cyC4pnkIJ)>Rw^;E@I|+XJXPR_WU;V(-?Dszr`;=27S_LQ2-RyH0Y zj>^jF0KaF$0<+-%01&{#ayaI`uD@Np$T+~~w|r}9{ON%v%M8E`qq0c99{OPU6d%DHt#OSW<8zcgG1mv95QUq{SU0OvrVYF~@oDa^O zXK_54ibz^E2RS1lj(vX$wuCe#lokUdl?NmI;8i&^z{`Sp`bXBA3kt)jB~ViHR84(88sb3NzLWV{{U=q zR11aLWB}u*;YrD`K7iGM}j6mb&Csny^es2wE!&ubdf@{`{fPloA-O1n{4hJOXisXJB_?qI* zD?5A3D3eiWLtNTTCpL|{?m6}P3i{*X7MH%p*HK%GkF;A$=O~OaG7t|tm#F!V1ozLq zd{aD}~c_X(vgR zD>QOMQ#MR3o|(teh9}tjSHf7H&e$jo5I}bVc){tB+pTsJLX#`Mlw)9a?jVuZxcn>U z--iAvm}fUhb894?VT=sy7yxV|w>ji@ub`GuC^I8W5PtBw5<-8peXA!Fn7J-^2gRK} zHnyF?j&g|Zr#R0fO5YT0tO4bUc$H=qnm3IsQgOCUZ2cG_z;-4#O;yg#nH?ao^g!_ru!dys&MBs=)y|cs#dUHT-WHYATsA&$ zo1h)=F-IwWr&!2hk=4p@G0!>w064Bs#L6YJl?K)T5HraC0QFbSwqF^g@g}9JSXfDU zZ+B}UjEjiCd6a(|j_P^ly?aZ)y4CGvH=ET&O(7+Q9fF(yG2G&$50-VEHIq2odH7jx9*d;kz+q-2(Ej&wiZ*Z{h*a43R4`{ZjZu1recOx{ri9Uy^Itc84#&)Qf?O{k z5)__zCm)Au@(&sKA4u@+%oAu9K2^HOg9~Mu$GP_(%D&Ayu8g+U_g4X&79fa}C?2Cf z-shV5o8!O4AM8zIRJhV~%b7IGI1HvUI?789eo}+xC;6IO*U_21G(DrhhB)kO<5ft4 zsQELEq@3dw>E0?qd!xdrfesFE0S%L$e=}YY@aq0+xS)Aml1vA1tT3d2ai0DE04n#* zWUFYZ%MqGgpsQp62XKD8AHtvKQ`V) zXxI>-`f-lln6DAFxVn=5Nv`eeEUpZuB0zK}1mu9@fN(lwbH#lh;p<2*^s@(-=3V3j zFD4W&I%D#|p=iY2-OrEpuMFsotS{Si`)kEuWpj zK1*r00~m!=D|E;$&mYpcFCBPsG%MS-l?<`Q3lbt3PI?RuoSLJi_~S~_1UB}v2;_`{ z>cB3{p1k%Xirsc0-E4h3HjSYrn(5<5(3M&Di5A*FH3=O9j!5=3moJ5Mgpv;5RT z&nh{0kgONxB$NLD*Xds~{1(zRXHV@Ln~SNhW*Ac|pWWo-10nYQRlD(DO7R>w-g3sm zdw7)*BA7Rq{@7ujSP|{{)VQWI+3seF@dR=|nvy9f3-#k14za8bf4M~Ud+vuWtDal&pADZ^RGnIKWMK7TiL~Q`eoI#sC8&% zkOE4uP|R022P52yhaF0ayF8Ou(EkA84%DF2WVE%5%az_1@@P+DW z)^goOlSqcq3C=JH)glP^c~>B=tSH1N6;(8>VYkaz@b^ofr%Tz}nn)@0$F) zzVXM368lht!#d5Vyp2j0p4c*|$;$!8bI=-(Q25jFWwiIxSHzKNR}Zks`++9HG7rm+ z`5%|P64hN9N=W@?y;ElaT}oX--^@YfEU*vTBy8g{+;|Pu(Cor(;%p4FhPp5I|UmrM4H&VNn zRv&7O*&Of#klld5#yzoLLilpv>UJ?+YC2TXnUHQOKoboHrwSOJ_ zPw^Vw$3C^IUc@9@WP&>v`#esA1mI`n<2lX`TFIBmq3!-8_{rm&-w=J9!=uAidP||- zHOOgXEyoJIhfZ@|!)dH*o+HxQ4Mumhl2{o{&ANQUoNfU01m?bI@K?hx8)}-OU0>>u zTahr9K(@cT3$!T%B%X1eJNB=+v|kI`Sy-$pWM);^yO@GU0FrtfkUu(C)Rz`~kK!u{ zG)t{M(&BlHfC$l?jLbj-udf+3>AnW>6`r3WCF-om6_^1o(r`Pm`gE^P@t1-$tIZ`1 z;>G5?j1gFZP=YqFBazqh74sK}J{f9u@y{e}c|C*tj~~w?F+Qp?NHwyOW{Fu?`f}&u zH-@808RAP65rznptcFvba8E0P#qrAeg3A(jPL*a-;6+>mj{OjTbM+Fa^de3sgDX!ERP5E$}QkZ?)p zdH2Y!cG@#ONYZTKkHkXV)>%~#n66Ik(i8mq*VWz}Sk~4?SrY_?Rx82#*#Hlq{OicH zzX5ByWU(#8`|sVC%#fyhwIFb~BL~!;_3qksg>$B=d9%54p;!@~I61)e$K_FbJDNe= z7``d;C(|x$nt12)K0q<@hCMJ(ehqxm>m{|-y2`tw1wq=w0OL97`d8NTX)s(Yi83j2 z0bKt83GK(>UT1ai%3FKZy*i4r2Ergt{PGWez3W)Jn#EkJ;T8LzYk={`hbFm^rZ$D5O~p)du;|=;pbtS`KJ^MmwHu@&9 zZFdAwZ97(JmOOHIIkB43ukUf+dh`H2&ZeC^?Q-Sw@JwAfEZw!1B(mXVaZDAF*i)e{} zsS#b{vVb#>#=Vx#*jq;&hQ>WMQy@j%v~L*-89*n4kUewSrc%2k;JzT}X3Iy@77GQL zQsv~4$;wWfF^rRu&s=*~&iWOt{+p^iaau=quI(UZkyM2zH~pVEOyD} z#^OD>VS$sA#%q`Og{Rzka9ms3z42A^B8n9rVIcE@!~lN0SF6Wtktqn0BH)5m2*LF{ zcEvLG*4kDv+zpYCKvJ2{Z1dMOE?p5v%Gz#?t6Vf5O{~iU51AS8(XlznApLvdz1zdO zJoegJvt!Lu8W0D}+0ITg?ag!+T3(rJJi2;aT{O)YkRY}Sinu*o3~uM9bB=3vEjARl z-5amUGGid{G3)qNMJThxymg~Z6^*2qhD(?cnRm(t;davOkAzH3!gn+HPW^v-_@`Kseg*OO3|=EuTU+J&5{g}6!MSYpA(NiCf7*=y_N zy_yCOX?b&Q%5j*O22R7AdI4DLZD$B+W4Bv$2j>{!xydK%$^2_*uID{ex*mVw4KGu+ ziYulK20&&;RVt?(5J=B@pTvF|O?KMyTle!WOE^-6U6Fb#2EgZ$#y>jrWJtD{;ZG?* zAnt9ua6gCEuyoB&?bjNdO=ojtZEgf5r;iIb3mk#a=jV?u7eC%s9gS}Vp@H$&i~bJl zkwtTLYpCXTc_cC*ZSga{ds{1L{5frDaNl9Ji8Ck-B#ZLlw*q$)mg&g`6fEXtoy-DPl@(P;<)@+}DEmZVNkoM^bx8ZcS(y_7QO^VD-3@uajQ$zLe|h$+i)mga0fbH!l(M!# z;Pn;gJ`Q-U=4-3dWh%!Jl|0DF5*&erV0b*S&$V}U*E&`Cnpo|v@76Z*w@DMOF^0(K zaf9^csw-1N;O#^9d%VOD5n^67&a!7@dVLY+)k-vVkSgri~RW;N&LV1)$|7Dm4rT8 zm;(YBIpaRn9mS&t2HiwykQg_`mbRB!)GzI0jIzNsx(KB> zCj^j4$0T&GQt23V7M)qP3B8qnLwx0yH*4lI*W;kYLE4lf`G;&lG_g)NX*AQHnk$UXbi#igPH8pA@;Z4=72v9~EB7YYzzOC7}HJaSK3p6g2z zA&v)!l}W?IT;5&ohtlFtP#PIMq!Xujyey_RlxFYjLGI>fEAl1M;$r#tybj9 z37?{A9B_f#oe19iTYIF#t;q7xC~&PTinx&264Hw5aWdh13CWy8mn$FFMhAoMzmFCrL@(p4B>?*~0QR8Ia(TNU1XE=D-qdh=Pv?7n=kvMC$}#|J;H zT$18R0=$;N2s=nq%JKgI)~(dm#&%b^BE%>2339T6O70w}$;LlAp!17#FEMZd%P~1D zG1TMnrX)NJLy0SAaTTIfr z#pJANP8gHO9@Vn4M+35C@IWIR16-}K%*vlT;0DgpGtYj2R@BQb5=BHsVheMUPZ;Um zldy}k1lX>vp1>Y+-lw*kaT}TPd0%q}&l`{72Z0(59^h#5-|C_^ z8icbh1jMnzB9FS8ah#G#C#MzMX&x5QyfnDdG>c6>DAY#;Y6(~urqB;;aa|MKDx4~} z4bhLctvVtk0PYe3GI`DqsrTtlS}P$r_Ar_`rJTugXhuNH_x>GyW8VPqy>c<1F*4Fbn|5QhE&Z`=Yazt*I$p zm=fp~6GI}RM<8MY7ggsu13#5>w|)cCnP+CV8yxRAOyGh^pdgNoFT# z-U0M17>`QqbnQCE)*$vaa6u7L2EZ_Q$0MF=Rjxd>5v-gLS0!%``Gd@!$=ol0VLB`PH>0LGD?*w-N6Vff2?7 z1|GG@&89+R%3CbVt+;PMer)h_T?0;rQylDuQoL^e06loAEiGYZEZf~cC6#0&Z#;iG zo@aZO<8qdpVBTC)q-hRFU{v6Y`;U)XtzIVgSm2Dtp+bPYy>e>0 zV0nml795a!{VBOfUKU*(3rme!qolBtl>nksknY zj;G)Bs>KFgG&??Qf=Lk({sx5b2CChD(3BW`H z2iHEee5)z){{VPOo^!|p9=+-78wFj%0Zs=TgY~SP-o~7^L@jA;d>N&Qrgk}yxhE$W z_3MIunXNc&ytRr|`4If8k>~umHZQ7@&(zDl2Hp@F%?u}oDCCcP?1Oe0QTGIpOux4eE zj^Ief2cZ0^v!~6$2j<+Tx$F6g4NP0BC3sRln=0FhQP2+GPPKL`J9e8-z2#ooQE?Gt z_ZtLf9=K!2{{UL0Xv#TaB_M&3jDg!VT*&ZSg2rVbxFJh{?rPv47K^Vjg zgfYfPUTRW|v#?EtxnKqWBOL+!Y71#tF(b@!2`#}Njw@g?lD=d?wv4IhM+5%=ulZHS zO%bTpNd#;J1>A*jtau-lV#%k)zA$Yq(kRM=026`7PJOF<&xgvZ6&b@gJdE}C?@J=A z(T&n=`SKSy!KyQx*Fuyo(IDU7050yIL0045;1!Z3V%-`rLHe4-c+x~jfI)}fk_jYZ zq5P`;^BQ?9(q)DegPd{cTB!FW$+JMh?#L%(l1ybwFv6akAH@C@BoIhK#<0Rm0>p^` zz{gt3SCE($WSTP?5wig2zhA<%t=u?7=5+&-#EjI>O$Bp0;?)aAO6+uYAOoGC_V=nS zZyCu9ts>-r&Bsq#)V+4xKF=DJ1OPV?f!~^O zaf~P!3IV|O=e04EV6i@UW@cv2KqriTA6nQ8bre##g;fd4;l5?*+w-Ut$&#&r4{U?_ z)unWn31eW&#lsW3JOSF1N$zJUb{ey!hckvnUQmZ5{{Z^xWW9vQq2*}_B!EX=N#~_O zX$RUPHxcb+IVE`=`-&FW83-yifC&Kg`qq4gd+N=*cJpHy0YUjfgPiB5QfXvsX&15* zaxgk`{{ZT$kXr~0n?$>VWVYeYzCQs}Zlfy52`Ecs{NtZuGwoENZNSw_D=AyeZ!;ia zNdREd`Eem=kjSbyB$I*Df%#TTv*$i)s3!q;4xZJq7~cd6gvlUW;GPdSRl*Bj$;GBKl$gHWN<30wiu{*_7Q=c^~b+Xl#GcgfY@&5J^qyWScg!+H~@lp z{Cy}BZSFw=T;+g#Z5d)4Zho8^WP(?fljZWl;F5ZrAMmXy6?Wti$l#pu?NwB4dB4<^ z1P%`%eLo)55=RmtQp~DfIZ{VY{=ZsDVfl6x@|91@RFT{Bsk&}mvK9xDMgjak3Xz!x z<<1`f5Kk+f=C+Qg3I!%s47gBE4;jd%QqpbX7&rq2cO3qd*%_IF?FohelHGcCt1EE> zG9sAPKthsoK|TKf9@R#WCX7iND2+k)EOI}ey;y=JmC8N@pTtpk2iW)TNf?x|3W!{S zNG*Uzt!P7S<)@ekOad|vanIrHKuvZSG`K_(M;j^t4&BTTe&_M7B3nzVSvEU-#fTuD zK7$=Piu7?KM5K}xvBHvZ_4-#M=G@&mlI|Et-IW2$5z~%-lo^;FOr}QjB-@g3OMTIf zIQ%MDh5!#ENW^58UI(^oM)z-%aLE~pK-;${$pak#{OOU|%d#hu>`DTa2*pM@>-x|& zxfF1MQNn}IARcq;RwaP4d1&t#2PXq0W3kS7pa6`>Ra_P41Rb8l{&i+aRbwO_zP#s* z9^Z`y>s^dCl~#5~%Af#bo-^)03b4%@N4aJpasfL|-lP8juTf0`z1w+hxk4+EfHCj* zRax+i0|0|0f(Kv1jrJN%n-Cz8K@8bZg-q~23cQH16;gq-gN$_J+OTY{HcBFpvcwmH zxjj2qL=NDkSb3N^8R_``bnL|Y5y~PU@A<(PBO{La{b_|QolC;faB!n{3+dCfAtPxD zv93V?3~|q2=TSumlNe&|?9GgV2|Uou+&d1EV4IjDHa=1_$v(!RGNho$u*(r6EDHn1 zJL0eTQJBdmf-}^d@zXV%a-m*ESjg^jPSZoTLM_;&W!*A1=>`GL4lq6c06Mj5tm-#A zz6LT!A77+@L2s;Qp0fI0oR#A3OjE;B(rqWyo0aa60qA=bElgDdC%om1)#yRyyZy91Y`01YIsv>ugZR;^{VJw za-F+?7#}xN?^cR9kr6i`KX{S%eYv0nW@I>!D`aF0^c9bBEK0Zvft!#)@1Lz`-peFu zD8bq|9Ok*3i2TC~Ng5eZx2xd%huVVDeGZbyVONDQ_Vz~++J)NQmMaJ;dx11FpV?ms`)rkEgAVEeh?;D4W5 zgd!C<5XBy=91rC3|CrMJW(>%zZJ zYNn4GNk0!Zk4{{Z#q4GZ6Gf@0ChChQ(L=zq>DI!KdplwXvb z5EPty{{TA2xoF~Y&%b#20or{(AI_~ARfv28w}5fa(>?jv<2!EczcA1U;AdT|dsr-cR2&ee zBy-xYSVHY2dp_>YS%=*om1;;W?lxh|VC1kIr>F9zm`My`NM&rO$qKxY=qUg`BXKTD zQzgo0bC8P7hP)qx~#!P#Tmo}l#hpi);>DaNe%*jhGT z%sKoi;x*Y5G=t_`tz1zW?J9D`a$9iZf0Ifijx|v4<^>oa43p2LTvOc`Jxs|0roj@G zQh6X_@vCv8Ivj07fHE5g1GQ7Rd0IdfRHz&c+@3r78ov`Mk8he692^e*m7=;q!%po?6-~u{gotSP;>lc+TSqg$wDC#{c zHh9<%Er28vp_PaupIX-v?GN*)l#FK_8iwQ~trUe-%AQybryjI{E{Lp?m(aPe%|g<`DK2N0B#lN~vw^qkn&NeDjeY>|?WEG)>uUc1 zyYq~8*m)IC9IkrscpT7QBR#6|kVodL5tj-d*?a&P-ZNwhafKia>Q^yDuzC1+|d$9 z;8D4P1ti3-oL^Da05?w;&ITRx)C_3Qa({Kwfm+}Sak;tiK&OuST2Y@DTnFV;gG0D<4c7n|TlJXNFZ#gSYs8wK6Detr*(hcO|o) zdw!Micf$R9#vUVzSv7riY-P8bYYv}lCkG)%PUF(P$h2fIrX8CxsTn;ut7XMq*_Xg< z2kJ?{0QBR%Rk)GjMk|6djOVRN3#e4!!S4HAIER_JTYp0r!pvzvWrlhmL$Xq}#=FscU*vHv=Qc6NYve;D9rLYvq57KN6v} zo?SZH^yJ7=HU}m~1mKa>cCQuiKf4uZ8Y5K~;b7eo6k^<;J#^vLXKN`{*^G-3e5=IF2u2(|RpF@N_%u&TUrW~o{ zbDVM3yEsb9RzoYcMsUmbdFU#LF2v5|RTa5zK>7~9m04n93U@X~JdT|Hl)xQ!Aeus0 za52-^R5B9Whu+*1k;wX*PW=M?3Ua)T`*w_Ho`27+R@t$bl6Mnc(GssAap-UmQJH-I0qQVA6j%$hE@bRr_&*qpJc2MnM?hlLIHpPInNy9@Tt)^tTJ|NHho1$Fl0H8aV^lW1oZDz28?7k z-;{31z~eQabIT~oecX}{AoKqK)~I5hM3t3f#~3BBNaBg&-oeX{y_^o;=QIGKC46&( zj1Z=yjx0!wTx2c@1EB9x#{O992*D=*H-R_KfkY`nBzy%%aI>yJ)TMZDbOwN75$|5z z@$nvOOW33(B3wuvWZK0?Z2B7bMizogza}}OeT*JCAYL*-;GA}#))%&?>G#9G8jlb` zXAI27R0K@q{LDviJ@~I@g}1|%$RuzH=qvN*;a<6_+g{pRyn|pE3Rq7`O?Jm zY4+038ziL>&M}q9&JX8K&FoRN3muzD-^nC_(wj7^9?1(TZQv45ImchpsR>aDLS;cP0E@pIEp!`uyKN5kKRPf} z%>=uNaM&sbT<4F%zDe*;#9tHZz9L<-{hkRVkh94%2a6}T{A!nswLK%nI=$Q;9|)>-p0O1Z99udUmQe8it>2 z>-O8YU{Z0p+yK0P^}1I*;vXCMH$YfL?~AlJ)xp7O4h}nXr=XfobE=+HMODZc1OPoM zvNAFf>fmE&Aou?O8sqIeZ{ht%$xSm^5xpHvhE6Sr02dr zIvG5w)-S@#8A6Ie;~DI3njf%K!q@GDppQd~FtazIUnJTygI3tgx4}BH9h3+ro zj@SaLxO6z~eJR^epXXeg__s>9xE8j0gjY^V zfC1~zL0q1{@moRg(G7EXY|<$yBxR0A;rSXk1r(eL$3aoN@Cpq1b#~gkgE98HO zKMHU4;UqR*Mb+e_`GpabKI4`E{{Ro`&3hh)@o!7x`M>+oh4l9N5=Zy6IYA9aPC1oW}^*k`|-1A-Alx#Fbi(mjpIQ(g+V!1Ulra(@4 zAP>)qi5V3})?~oOHw@Kp5o%gzhrB;`uIl$|VWq<&$0W{9)M7FQKMMH|#virEfIK^R zx^A8QtE=BK86y_f>`>qULv_J8?nX^+U6R=Q5yOr_%8|((>IQ(y&ge%YDoNmRUl3`( zwZiI`*0A1bw>o~2B&t(@45W{`2RQtD*U?@a_`RU(K~zl)G9Aj0xWlTCUtX0i!j_2i z8Sau3<-3(~2_yr7^r`Hw6qOPbA&<&iwN{Si-ul^DC5_aKf*53R-}9=I-9={yo3jKx2?{EAq!({i^;i-~FBz)0P1o!fSYK(L=<$v6d)#U5X0lIf6$<}$7bCy|5KxTutxKz;2LyTMh-=Q$taRuPyl%E7^0gV_65p7>kD zaqAY#DwJ|YH>-|o(iEwMN<)%(8;2j~ik@}_jl_N6ssQ8xf(NhZMt3P;!*{^zRi1B@ z?dTMoV0EXo#R~0Vg1I^VRVlTw9M6eS zj3P0NZ9;k<{CmG<~phS}8jh%#%5gWzF^SvqcK;WK=9p zdJZ#FCfgKWM0{QG&%}3kS7~H!CW_T%2o*;S>ND(X=QYzTVv;#_tcs_240D6)`kM7` z5qO0>ZQ~C;#86nvI0}lm1B1>x8qo1}n`x)`PV@T;#tHQaA7kWv&>#c%pq>vTjC)c^ zH)d+Q&gjmO&X%Iw%8=Z2mRFc%$P7 z!|x8qcDMc@w2D|)EYZrWySi=aJ-O+c`A_3d#Get`4MR=v)Q$bFN0gyu1fX$@sPDo3 zYtMW$`!(u+6tDFCUtHF1A%P=|O=&4#D7fb&<0Zd3u{56N(@XnJcmgJnPkuz8?~Nh> z%YoEmKg%`g-XHjlrE088nGs!s0>l8SM{%0?^HcqlEOaULyRAIiEKoPvBUg8Joyh}g zDpY2f#$$fkPPQ<2D0@}5o!J( zw|lK#ceWq)3q^}*kt`u(x%W=^C1}a-W40w;mmh;%@mu`|U1ujfQ zl(%z{{8$85Vn0K?CHqA9FUGpAp{96tORMXva;4BlMk6Nx=b_{p_nGe2>L~oN<+=^dyV}+P-=o2iJZw>rbuNYIo6EIr1(i3ZhSzQVNXm zxlVY;KdpV;;qTeoz`9hLZ0!1mv*p{W$g@UO17nam@5eOTu&lN`=fVE~wGH2hbs6KD z@)2=waIsuO@v7vI7-Jj}fJPqR;jR#S;w7zNLCu$@|1fd7H9Z3F_4c}HYtdG%M z?-H|QG3kwteMUkPe$sOj;{_Yer(OK)Nn zSI2*}?ftn+dkfpUd8C2M!l^D+Fi&4i!#SjClC{~j)+5}z^8Ug!%Lr{pEUO5^U~owF>(aHg(UU$o z@bB#bthCU_s6(jPywIfZJm3VLGCHma}rHn!H{wRt2-B`O2q@xP4bzGnEB z;K8Qf+zWWp<%8x05rxNIa5^5fukfU6Ho?ZLZX=FAmNGdkxczBzF&^vjTU(KQJE_@6 zJ-N2Jj7KvSC6+w&4cj;s`S}jIx(2y6qYOy!sj16wY$ENqXHO=jv0#YQIC{+*XNJMuZ_!m%53u*AIkQiM<{jBAG zc&9l~Fh`-?^slcxYohA9)q_~WY^i9<1kNNX&NIjZ-oAX(eg?AY(%$N+5VB@d3aX9B zpp1fj5Avo`c6UB=9}B)B_{Q1|PddHbl(H+Ei-DK}fuEH}bInZN8Tf_aG?En7Et^ga z=1b-)5HtKBo`(@)a$oi5JULbh-M113~Pa4-#XKNyonlfp?Y-1=JCG(Ww` zStKjdCj%h*P&V#->+tKwnytXn;k&!Ix|1su8{}`14?&Kcde_(%_YxaaNmpSjmKebY zIL13y=Dv+{4d%Zky`G^povzhL+Be%EK;1w+3H>YdC&N-Cx_l??Qe6)%Raxi(G-{YjErMc7KW>WC(l3;pgpa-US>0D31y-wdwNLDLZ5YKYq%LZl`ILXfda64dE zd-1VK-`fu;L_DHNz&pEh=y^O>JMf}8MxF$~!`zyqNF06bTdd|I?=d_Kk|iW{Y16Cf}n-_pHN6g-a1HfQE7oCEk*oP0uz zPoqu-*DN+}&#^hF1K|%3`ETM|<#0aJ1io7oQWd_H_b-Hqz0n~P!U$$6psqHI^*@-e zi!CkT(>z&mZ*OM^^Jfmu9OrR7{I&NlgDvE3BHT5^Y#43`x%mJ*5GWhBLF@3V!dLeR zsp?uDmv?l^tgP`9<(@g~jPYF*RuSp(wYm($kO(B@@Gvu7F!>>jWtRg0lh=;5gK~`1 zsZ2T?07>mYk30B-Wd!;S^xk|{h8VoiTs9vW%76jM>G{{^jnh0nG`E&0Wk;G*B1Yq5 zg$<0H`sby7lK9p;X!INND@|y=viyj3HLETbWb$f=LEEv$)_d9cTmZ zF9o@{(=9fKBp?NkQh4iDJa6H+^;;EakIspgOrMZe_ z>Dc?%rCk(tF*~N>G6`-$#xYiBUfZl~9lR%NPNSbKiTk^` z$*!Biza8(qJq47PaOygHGAWWLa143sg}EKRmG`cr;B6;Zou|1DU4~0558e)(*N%AK z;BK9%zRO!BYa*e6Pyq)Vf@qU>1E042sC++f91`lQ0D@u}5;(UM&#Qsgp7rZCpA)<> zt(9v@64E~@LKkt#&m@uSUm5t9_Gi7ZmR(lgTy?V~Bz6We+YU3ofsA_Qyq?oc@!x=T zh12bwZgdCvrIp7Z=Q+UX)Zh*=PzUQAH;_*hb3*WyWeiFV7<&CFq2nnka^c$`=eM!+ zuaCR|@heezAh)`?xtDejhI4|x$J3>KQ>5K3;zuGsn1EmvC!eqBQ7JXB9(m)>hVyuq z&S%r~<8ye*u_!JTa8DpF_r3kA;Qs&>XdW%_l<-+;dYoEitWM1&l0*xTt;At?_sOr; zv=O{Yg##%V&Urj~el_R*CGZx5uEfcAr&?SwQUMSyK+hvM&w3ouq+35YG(V1)o*9xU z=fBdL zVAFKy841CXBqaxIAI7|2#vcHzG%4X|QcX>zAiR*iR@@cO{{UO+X>*z%TXV|NE4VMp>KHM|?_ZA5YPUZM^-HOsj^^vZ(cJkpm*DhfLIb<&NaRD>4um9&w)IBz_f3eGFNi-?d+gv^#5+xVMTs z6e}H|1bMQ`&w>v?Gm+A|HvOwSUbY6-{tKIH_K<-KkicW37bBE-56G41l1j{XfoYb0+Vx@J6Nk zQTUSb4K$aI4GsuMyu6a+C|S#AYOnDe9DV}5+u+~Dn~xS**-L9R#rr#C6(=mY=Le@1 z^h_TEyaQ)yXSel*#~r^l#yer@YL%FI>dI91*^6+OCr->rUyUaGB; zQ@{X#PH?9l_4)nr;?50HNo^*CyeiwbBN2uNt_4GyMZ)*c!P5RZct61Qx?RQWD>RXS z9u=IBr#R`$L4BJ$muf6lICPRs^bp zz$D_Rxs+vhGv|x|Kpyz5$w^fUk(N?&2VZ~EvZj!3QmXBeK~d{h(!)k{u*|+u=K+r3 z81OM(A@N=aptZHtFJ`!s2*ZU$k0ASyIVYaojeGfwGN^2`-~a(25A%xhABoRt9*HTE z0d;Z+FaX#Av)|jTW+UK#3|d>w@e^FWxRxtzO6JlelG+Dtk;A>p1t+-4_ZhFyPXQSJ z0J8L@w-+2ovPFDkHhSl{Dsi+9*ss6*5RLttZ6J)G zzy|}<`ukF9;<~+#-e}b%+8=WecpU!#p0yOw%att1>bV%l-TG9Q48V=06~P37)Q|FM zvq)M+&PY72)%NxE>rpf_$-XKXPlrX7tce>teD1>`268`9Uj}$~*dNZ!RRsU>748=RURh{iRylS@@#j>Kn-{5#-wC6m2o? z;2ib;02&mm^%?j70EAdRj(oY{lqggfY@C$@{c+8B55@@YB^rgkpC!et-c}@*CCf?< zcqEPmdZ&TzEt5`&>C%0o29N}l@#b)O$798L&&DAvq1JV1;&``VRE_7RNWczd^nRH+WKBb9zX-d5+Oeg6Psc_g+LYv#;UBD*f_xoiyZ4<{!dg?u6K zA6e9OJKah<%?xP9E8_%n5tMb>0AYjtSSP1k*WKnewu0LOaR|9!y?qXAFgYI_X;W%? zK@i?WZs3z3YyiLv?Iim1`d7i0cK-lj@#705`!$5p?O2fjjup?%f_Ws8dGz{M-TpP6 zHSpYm<9jKQmk19+20C`@Uk&RGJNWN)^lK7`*T@jR$gzM1S%187p8o)a14`)oC&S4C z=(iT~$2_wbSyh8$V*{L%>A|m*z9x7BTEC7>E5oAOO`1E#y1u)Vm3xK8NLM{b$4>n@ z;=Z8pUFuy~tOD9G2s=pw{bAZOlj+VqE407TbgfYuEk{qczm1n})>3#Q+JV_x=jQ(a zg?=+#_-19Y)Faf5^fGyIB(b`Astz|HBOL%gjeSkv{{W8GTGLBwZ5Ew%eGFntn65|? zq8#?)9S#qu?_EEM{t0Q?y`0UmStKiwc$fubR9=@FP&uX1TfW?v`iP?o>kZ z8Fr(f94R>@0qadWYE6%?bl)2IcT$?s((O&r>ZSJ-AoLwEUW&;JK(eulc%Ow}K?i}~ zKH|SEE%e_Rcq;jI2h{BJ$A&=^(MG;z;8<<}^ZMex?D%!!Np(#=7%p!7_D5m}Jpm&C z0owpoN$YSkela}ydD2qfO}4qan%e=gc0m?$OMkV<;=BXEFxgn@HxatUdVbR+;Wrb4 zNhAUI*U|p~7T}g`D#Y9QmgCGTH0p7I&j6pG{Oje93hII%5J0J?-7V(riy)1iNX`K* z=yCegUi*Rf$A^ui`dY~)q)RKPEX7IKNARz=BDwE~x0k7+T1BKl8QwQpj?m!Zmpe_tEKgP4h`J0s$%s0FVj)0PD~~ zRz4T-?Y#O|jPBvGyGy$keaMfJ%PA*!Ue))vgJ+U`D&8>7<^=haob5e-!oCa9B8m?a zS$&CR0EZ$*CyqhqJoD?9q%9#|3^ zj=f0!M!sD5d8rBY%h;Yh^T#5_6_Bb)k~t0B4EFc0t^O$3%X6h0nBxqBK$ALLVWmEFlC_2_83=m+S2kr|G{D5ioK8Dkk(+j!~fKc#&C z0P&|2>UMfmHrFg9ww2cMG&^D=1jn3kPJMaXUiYCeeLZ6mM*BekD&V(0O?gMfqpeM0 z_8m58ZEU4iTe%2PDnu2Sgl@!~41@gWyW9_({u`^8=`*1pv6Dxs@l0o!S*w2XG`DSA{{Rck;An(t{gW&~K#wD94nFUvaf8;n zkBxTPoR+q6O%#I8;aW?Z$cnNkQGkdzJHa5F@r?6cZ}4u@SJZ7SXYn4Tq%G)VX^b0@ z5P}$OT$TV4j(XR+d{5J$)HGRAd!ca*U~m|!u^>3rkHp?6wzwMQ zotOh;W_J-I9B@e|13Z2;?9hJ7a#(3n>auvo4O7Gy&X0a#mp)EDP^ftf0Iba}?(0hN zBujfFpV_hu6gVa@HjXpY^V7a7>YoSei*W+Q=ECI$&`1M6Ky%Xr^Q@-s&EXv^eAWK| z46kK$VYO{y_H8tiy`^Ra-#;#K{Hw39{grgcFD&jCSG{R%z;#8DP&v;=$OMj`jeT2p ztVeBT*O7$UjDUscE5&?e@!Hcu)a`V*^vkVBP`zSNpts&*3VJgR04LU@=sg?5UJSAD z^}VI61Iv;oC7*V84o(65YeQe~-M@*gVzJa>Y2uDe!131|aqGo#`e%r>%|gNpvu7`q zL6Je~4mwviu6#+?>}(`fv;Fud%2^v~mg$l`cpmjpwZWYK0FJ+Bj|cdY>eBY;87^(X zHtg{M_HuYXAUG%An(=*K_Hfj6zq7WCpV}73b4@XR#dmJ85&Z8h~5g}iAdsXS?N zA!(U#OYwuZo;r3l>JjRZ+uOw<)6-FmoRI2#vOxR94xnbW(W3{s`O{$zz2MzRW`=2^ z(LAt^6w!y>$@!4~012JbeUNN{H`Oj{h_^(Lu6`UI0n{i>Nm)!9b z4toq^kJ7#*@rHuh9pebxv}qO<9k31w8QtGJR?&7^mZFjNUWKeCsV&XSSo5E8|}Vd`R&AjV-mNr>famTDyYcX#rBej&M20J%xQJ zpAq~x(MNKcm5bOJJik2|_HuY9J&r0In;Fu0iqhWd&gK~+GHr#n62mEum_FQBz#cfZ zlHXK$T5EBtq~+r!09EuqUPsgMuc^F$@oT|e7ds^J&YLuosasTlxB5(={{X5&ag)wY zGBIBOc<;x_tm*>WO*(F`EVl}*45b7rSZ60Z3i}rPw3AkWqJxAti-98uDJ^hugraYN6$Ak!(7&LF3 z4hZXyUwTi9{s&u&NbgcPE{~XUi5@(%NF070{isVqd9^r?hI-ANrSxfJZX{9jFlmg6 z#PuK(#xOcp)wXv&bTPba8L^xYPI>KLopxH4&w#HD-SoEWXjlhn9|bw!ZhZ0&15s`4;)b&q^O7b@8!zIyXt9?mVT z^}I-YmSrJO^N>jCUuo)=v03ONm0X!^)CF zg>(mu6WfEIO8R@iH;Hkks@lQ(yqMG}02~|~3gf;n_)cl9(_Eg(QdsTCjf7+6LU}ty zYE{cW4z(zBjaKH`Mv0_&<5`4r4YGsJ3=i@(?xt9#mN`~=WQZ<71f8Jv{VVgYN!Bj> z9eg9WacYIj$uy)oqV+t3k=DH)Z`wN6D_hw#8)msMA1pMoVI?^1MotX^zLq|w@gIvc zZw@YRFLrr=HcX`K87e`~em~A@mC?Q+X*!hASlCFDfJ(Hb@X4N^DC^R`1o0QdJ!{5V zrl+gTrfP9sO(~jdcn6u~<-Ym>)kX(C)%4%N?+e|@1XtI0UukL7GtVO_^3On_K=e81 zy##N$?B5ZlvTq7Y73${QT_!RZ-I-K;*}(1c{DoCwd5u}301AQ@&XPEY;w zUv_xANsMSwLkXVsJg@*DbK3*cziRlu#Cmn)n)Z`-V`}rvjMnY~f+HBo-aSAB1K6K> z1snA~y6^<^HkWM3Ve%wkMh-~ia$E4|IO4q%Shqs6*xSuK(Xz=LOrrpQym}7#KAEpA z_+oGW0J9-er(EfF&6ZT1a9bT14?~k)iK053=J$S81b4z358SI}=)I^ZSKA$Q{y%oU(t~wLnzvW){;Xf07y<)SUVY=I} zv2VSB$@=k6@rQvfbs3H1OMo{Q+T(Ed0O#JmQt_{bylZQ#+ehK=5o%r^OIa3Ca~kBi z3~-?I>5TUj8Md!;?Ok8Qz7^B0fWPrZouEWn3mMh36h*Mk03R_xbF_0`DQo`#96VV+ zh;@xGz}NP=&Xfx+fi}e+=nfU+8Tm3YMtWp*uK?CGPm0>_I*s0|t?LEc2>hQcPTBte zo`c4~^0Cin0H2(k-c%s5PeM0UG>}F;$dwm8EIQfof5$*m8z1DS2A{jM1 zdB3z)HOm66zvTqvj^Lk8)#Uyy@lLa+Tuj&h0O+>QC`iM|rC4no4?<3OHTABOWHk6b z$!_Ty?PeJR0AmCLk8xgE%Tu|wwbS#H zJ^^^gKPVaQNbAzQI_t&$7PUxZz40}*tc+QpS%%_B1mI(@On1$Eh2jr`cQHt8#k|q8 z7LYVxsL1R{@0#Nz_%ZP>Q@pafk3+P()2&9!7Py(&;5fku*f{I!&1B3W2kpN(u_hf^*>JYHk0k>lkJyNvbZcCW9ryD04KBek_9BF0ES4{UQzF=^aoyK;)M zM2Rf2j-?6bo~QM#fo~zTQM{l45Lt;B^uMQg!Fyt1HqcWyme)$e>H(q#E01Wvm80qRYIi)Y&f!(ExWb-!&pw#1CHP%stN52$i&PfRdv5Gm z?i?^d*M#hG$jyBV;g8vuN704SYI>#5i6oX%`{g7QPRIrT$I`xz@c#gXbWaTEmO5pQ zkz;RT1P0nD5+D^9Cm7@9JoOc{WpUY&=~`3R*juzwi4?8~FSO?zoMYT$n(*(7UI|N^ z8Sm`0=E_Ir$UB=h*!)RE005s08@VhnS*f1K4VO2l8Jo?@=nU5s$VmCr$* z2TGvjXXllVinV_Ow2Y6aT0StXh~yQCi}kQP@YjAY=P z=bAjtBO7jfxp%F2lgF1(EUTE>;5jHfuoxZz9;6eGrG1a^`@(5wr^h3Jvnf!3jF!O3 zBo2e6ZfHLVJQ?Bp5n*X*<}8pH;}S$kg~%fy=cpMVp60z8%HCT?RzP6^6$Zq>0DfHa zQ_8P$thX_5w1{r4*-|B0)d~4?^LHfs*UH{9@U+$v-5Bj>%Me#Ff{&I1gX{BRzQWpB z*vdA$5=lA6FnbTD>sj}j1&#c1#XM57APT$2az`Vd!l=ouY<_H6c+1DW8nQ#JSvA(A zUDYFk-R+T=aR7kK*#jMO&$mj))cz{?`^1eMjf9$n9_H9GLg1WjW1KP`JAM_D69_7JQHB(8A7aO%AcePwB*iya*zC}X$_vDKG$4?GOl zU8dRT+H^74*=crG;75??fHMzLeR&-#LR)BzO2>FCKw<`PX$6__zl=ODJ*3xnPj7Fi zTS)mxoeA>Tj_fn?{uSPMF531WAU1flivl8IAR^@OIQOq_lTNj`*pl0$my=)*oROU4 zJ-Aa=?DYFV2%663(b7jEG=Sk@91Wp~IUf1%Ks3?fUlKe64!dhD zFFp@=sdPDRF0Aioj0G+s3S6hUw>E zx?Dy5qdbHH^SC7Eg2&#DW@A0imV6oT-tSG0%I53r(!1ppDf!^Q`>Z{A9M`m8S?Vz8 zCf>_Wy41EJk1bHP&;jJ0z+$_^w1PKMEmxkZq-6g9oK>0QmDWjAO%t#SwXoYj001-e zsUh7TE&od^t6}t+cHas5S>-AON3YIs@(PU941>f*7&#fsTjiQ%R#O z+Qub-yAk|p(;V?#5!{YuesDMJ<>RU4jwIFWH2W5n9EA-jRO{EaPf_n)ui?+x^6J{+ z<5#^2EQkXJRVcBXo<@5fxaXSt23s|TGV#Qruusa^&(ftZ?@1w%nX(iGEz=$AM;oge z#_v;(&@@Q2+Y5DuDDjR5mxW)U@7}bpbm=df7%(4LPI58d@UDO=1b9T7K_!7L)b;>V zCAN*h3P~W6Hs_zNM@r4bqe!c>!?mx2Q0iBgw>C*~_g5?fmn8GkARY(uuPoHRX8ViV zi6)Cxg4D?5%94W1z}tYIRj;umnpRjw35@RHCcsV22nwuIZ z*!g3^U$dWvyeH)9dc^M1!!VGnWkgd*&B4!HXZU#nzM0bPVzt`wlosJjF$0!8fF1hQ z>9w?IStO1(jIdy`Aa9`=?l`GkqX-O$!)Yo4jO`tp^rFb3pbsD%NfM%vKsej&nua+e zebOq<**MDrK^Vsw`c#g?g;`xeTBK$OK~}s_rz(XqKDqSffF^4-5yr8W*m(#@ zz&Xwdu0H<&!_i!szTQ?)?p$s>u1`+mkEM4iR0yRi=u{l8IX>s}toEKMZW;$4z2t4d zJOR{t_MpaZQ_AA_Wui@aaMM{^NfQvnNV~TToRUJWPXew(@TbB;+YRBp8di;&vLkX^ z^Zr%osc&Q$$+5()Hh>o!di6hzT@f#k%$P%+ytWS>qtc!3V9$)D zfGf0&o}(D;(zV;d8UwU)N2A)=G6T8eEty-@iO)Zkb@r;ldzQD6KYK3sMJEU43&wgc z8Nlvp8{IV$M3QT08c5u_yn`k-#y11cVnr7-D@6=?dP8qv9Ds%y3OHUnH`M->ek*8^ zjFSl@k2omU!N(ucrHDxh0f73S}?Z1$Jd7m`G!%pnvMLU}n-4;*$PxyU>d;mavfeKx`v-WfnB$N=4fLC1V?`PXY4 z!ap)T5%!!eFdK|xKaDy_nmGZ8^4VrmtO@tdJ*ruvS269h8*5-@h(`e@c~%9B9Axw! z)wvePa-c9$8Au1OIPXj$r9ljlyny7FQ=Adg`PB>~!qVJC$q;SGNy#JBf$vi7eF&Dt z=^=_&%=YOkA#4T&;1itj^sM!^i3pp^36gL@>T-F<<5waI@cD_2tVj*FZ%}$vO%!q@ zVU-K3h65yL8NuSTiq}CW+^hYQWi-NDh*nls+>PazJHJd)+rYMHQ5Fkm!?6g60-Tl$3T11MzYFTrQGTPRXavlXRayA*U)>A%l?#$31uh-0^||N z>58isl7!`<#xuZhKO9xokXy2;QmnZcBay~2?^S-(xp+9Wnk#N_UzM%J@_VBmhYx*#31+ zFSEs#xBFC}oGEnqg8C20AHuRVjjf?(RfX{`$kmh*hpAF~3KPpGb1`D8!5vrW>rdK_ z&AKUaNh1JlBmCx_6|@t`eB#12QZd)RTz(Z%jrBHxmnqA_rImv6RgVCI2tS4@NZKgK zVv4}_E5YZXJ*iEbo2D+22n&MJ4q1k9ayaCDYMg0a7`(QO)5nZ zGAjjOLH_W_!KOg{s05KbG6F#)jF1nudR3gl&=m!nXxxej9XfjVH06L8&gq$U{KyE# z;f|#D?@6#K9jZ?plE8jqf$P+*Eb&^}h^-=;Jj%s{l5Ybius;6)g=Wf%CN~m8zCff6 zs5cJy812nlnG3O&R7lZW20M=@uS&GnGPFKg1&}Kj0e}RPf!FY&$rh7nqXoPO8ff9W zc^OM(-29pAkbjk3o62Ry(#}k%y-A>lX0B3hR zf00Va);c{*{XMQFywyd;td@~1${=EQdGYyR?myijw=O@~2aMLN(ZXYpkdAT7GJ-Ll z^r~Trwza>RHgG}QFgjq9R9$mc%a ztwC{Y@_dM>s-Q7tZ_=%S2~`1~86@s=mCiWN;ZidoY!ye~?Ev-q{sx~T>K99LskAQ= zPKBL#bzpsab*h5KF&6h_05KzZ;j#|{^sCJpZc!LijAVSE9luUJ>UDKe%+X1>WPrtb zbK4Y}u`MG#Y?eVPq((XXvPKkcQ-W}PxvJ4yAdL;xvZRf`8OT%XlUr8GQdy5e$}s&gTpIb=i|750F@E>B`Tz35G&7ZgSk+_G+u3%C+NJahj5>#6f5-r<8stE-1)MV$iYBOBS6<2~|vSJf~(2<1{))l{A8 zp>~2#2aj+omc6rdxRqtFhFeJhR9EHUa=-^h{PUhLYI(K08K2=#3(2ARkk33a1;HwT z3Zs9r=tv`z(z^L%jwkZL1&Zh85C2*)`c^I0<)M#2``v_RIfu{jtE z$F51MQBLuzd4Mn=fG{!j`twyTL`a`!Swt}@;Dy>prhdIDv@xG8;+3Re<7)iefJ*WY z;YgC$k(OD~Nqp#wgAoG+4Wm1;)1B2dv|0F??r zCmar}DbSm6B{4*h%J03|1`MYd8;SIw(ib#DswRdA;73M~2ITTH_<9P1{UogEw%D{p z1DOVSBLH*HUex=TYz{c9bK5CCVkC(e!6bozGwJEbs0ysEh_8Zv zTs{?7)RJo9v8qjMP=;1U2!f|nZ{^C%z9o%Ae9N=~e!rba zVTF;{1t^Te3^@dM{VOF4HsnmG2P%0Reg6QJZ&?IeL`#T(Ir+gL<+;uercGHF*5(|f z;qr{Ra-=99FQ+_u)GX|PtRbUfqBdfBsLvm*Y3dM-s$LLsLjoIxK7f7|f_&V`1)MNR zA==?x%8+t$f6p9MD_oLWAt{<>xg_N>sz@bAJn`#YRCdIpVn$El8RNOCHoA1NO%75i zB6S?IsV4)W0Gs|z0mwgEyDoxm#TP)TMtq&g7L)8JO^Ubn18&t7u$951S-`_5#W|1mdz~NWtHR2N@Y7 z2lcB^$+aU2FgPGHlb(HlIwbBvt0Y;#QaQ;00yD?0R5q$yzU{+|WzGS?c*jFifJsFppyUt--TG9TK*MHuU*!3L;De7*)AOmz1~I#^jv{#{srCc%s`qiC z@Co4Ok&I!1$o#4}<#`#)mvrTcY@Nj8q5La3N2)X|;5>0i!FP@U8RT*LRBY+y5rRVS zKwgA;RF>g(s>&JU2Rn{OZrC2eq}s16dv*q5c9X^rx%?|I5gBEgFDhn0H)Jw>?mC0o zv_#H~1V9YoSgL0p_^Qon%z@HJXABA400d`{4_@^q)C;wul`u&RNaXvE#(*Yi*@Kyq zWN5)4AUvG$gO8_5sL2e;nY`q3qjI#EBkBiU)jW3#xrfdefW<%=Z*SJFJf$N>m!@zA zGo1R029?e__(U#5JA*ir8-P2P133Ctm6ei*c^REqmmK>rJdeVl*Clv!b`VSp0go@1 zB;y|4YeP(mZ?d4ch{HL{5Y5WxoQeS}l3aouIXeQb&vye~aOqDisgp)Ssbh3TMD4#urxr zoE~$ZN}=b4{o6~ljIadsHD=a$o;SfP%G($P`=+8^Vr{cAT6BA%ZxK)>2m=lX$0t9X zX~$}IZaYer1w#zrAAiQKG1~}a`6LclwmBml3d}cye9;p7V{N!2jNo_lsI}gPQrB`} zZa!a?Sccru-BP5bOU-O!>s-X{02(Z> zsG}a{A~AGdwV^W{Gcj&S$6SA&wQ3KM6LEeA86)P$f7YeCg&XcDE!mDv?`-}R7unkz zRwl>*Fk*0Udm61QINzyiW1ldVA&Q-#p1pV^eNARYOe)JH+$v{wbCOBx#cHH-qNDkY zxa;!u^OXYTXq=~SAvk!yPmfmvKg-e6Ls?H#%LRjtb?*r_C~w}PY& z2<(3vt-eCLN{Hk|W?kdHILb|>zbAun7@I;?Id6fHh9^*lNR;EkOtldAO63_t-RsaAnqh`Pj7rup&5-Fvw$}iRmg6AdmgpE zwzDM9L=!p&Vxb!WVib$h*W+0LYC+{2+lUB!&sK}F+U^kU4Nhdvtrc9({Ad*G>?p27u8NeS( zwQUohz77D}lgRphm3~Wjq=Ghc6wC$~I)YEPHC`f-qJ`QHc>wY|bo}TtH6dkv(f;Tt z<&i)im=qg!Nk|SPOyn_a6X-Efr0NM^$fyVmRPoUAeZre%|<|%Lxjo1B5IbSy=>$le7?c{0Bi=c1(z-He!mPAyU0x^!AK9yGN$&f_q z2^~lraoVmztC-~6yTa`R_Z3Rz5IXX%bCn=;_Z69B5Jb_g;f>kJW*tBJ+#1r3VoYI_ zqi*DodCfA_7HGibFgW$8S{V)kaMfO>k=;sx5-5uL{^kbOGi@Teq_BXtL2kO>(e=ke{U85QHBvp_aFi)2&u6|vZ>GZ18ET=507b}pgdVW<#uuUyUW4@YF z?-7Y5jrOo3kUH~<+_AV~@kIV&sKMGZ^85ZdtN|0OvO9!|LZOb<#^aw#*tQLYk=Jfc zNem7>=o__-o7Yw>r^-wYr;o?=u5w9ZcJkv3wOb4aZ>4LCh)aVp4H>}3>=X1gLJzYw z!|eh^B<&1Newm=bu7n~D`|=7l4$wRL`{uWViL)UC0@yo`QS|%;bD}hf zM)?&=@Chddxm`!c%caG7x2Mi{)DU3(~7;G0}Uvv?q6H(m`x zGC_rM+ZXtWP&oX1^ImVI_}5a_?$Xm@tRcVzH{BV?$@Q;M7MtNxP{>ID?&lu=0HLOa z7T#EO-k|{-ax?RE?d#2NaM@M>mE}k{+w}LW*=*&CBq^P{fhrD2`=hz~)VtgSX3K3I zK^$?`j-z(ySy&V=$`@fIgPytOkjC4ykU>0T^{9N*#F=RVk&J){AB8MZD{R4&Y5A3~ za(Mp$>rmaqOp(j-Z;(7;a1?=z`sSN<@T_ekM;c*z_8Ap8m2;Bpqnv_sii>i|w0T)= znJmr0`hJv%(Y+2($dby%Q+7{9Jw|%g?SgDz+fGV#4b%?ivo0+61-OJruET3600rYc zdC%6Z+kWkKKI4ImlgK?eprn^WebQMaSk^QV7WFStX+cbAfLPRsy6o_ zSfYWnlAzkq~y{jO_rPoRR%1q!zGzfW z@E=OhyM{F}GVzg?1m_>;G|_nJ6=P*!k`^N)ap}P6PXHFl3&8~Z zz=NDqB?_`KvW$a~jP&*Y0P9p}vN$7PP6ilu`Wg#bB6+ZP>`@*M2R!4qH4U}X00#Nw zkd50}agSf+K~kUwVnE=WbsclZUbSA`cd|J-P)>aC%S-=grhM((S~JCUD#ubn})Qg3A`x3Q<&? z=eYLftjo3JmR~JZ0l>#|$>;@9y}Y*59K81)S;ErZTT6_M+UMkb>Fhe@?4n2OUoU@Kd;udWp;e2k@ocfW1o8QuZXc+ z$zgc~ypL@IuGW@3Zd0BZ6G3rJns>hxJUcb`(jvZAxGlnZdVJkIIIZh@<(Q<$etTn) z)4hCi;k_SKO-Ro&-&{zts*{qJ6G45d)=Ezr)y%91_70Eg4pz+(GqHY zG14@6+SXZRS=g<5)QK2qxK6wsMBfUt)Fw~X*e=dA-i#kRhCyLj$W5Q=fb zV;K7Wb!bkq5UtJzNFZR0del%uZ)mQzkvvw%=2T)BuO6d})my2hMJp1dj!r4H9r2uH$KqZKs zp)fx8;ptrU@*6}+n1F%0ft+=%MV*uZFBx2NI`ixJ(p<)uR^}{i$i_kHao_W-r0&4- z?-2Y{veC4b`yHFD>~b;(+z62N80;&W@PCc<{{Ru%+Uh#YR+cvm9VLP$-T}{0++<@N zyVLwZ@X_urEgI2`jpkr(Pyi>PC$>4M^bZ8fqTI7x$>w8_fr}_P>T%wn4`kA=Bz=;T zg*+Xg6P$Gw)TxNZb`!kvLB|~Dis39}5yk{^?E|SjzY6Is?$ki6>dtY71mu(JKoQRm zl-yx~AOJd#b4vsOW%(owU>>zC+oaDMgh2V&#ZCzK$E{4VsEI=!_yKu2`cMK)v4NAf zXu;$hkUf7&=hjv8nNTQP=Yfp#*EP9u6q2KGz>$!9fAy=FxrR$Chu(PrV;=qe>u79a zHD+`XMze2lnJ1RVH0dqS##|k_IOnM6+NoOIDi8|*2nVm|Pv=^BSBMb7un5YWZ9bGr z`yxtGvnv$UPCF5g%B&+Y$h*FAoB&TxYPIIYykk9i3~M!Z?1r}} zND!$T7XV{|I#g_7AUd-EK<(14$`OL9gjPH#!Q}P=vZr?5@Wcd@HzOSe2PV2;ud6m% zl3XgYCel;@Nf{q8#y_nvj-CGiO5aio4c+^mmCNg{(3jaH zLAEw>cqiBNHO|^wl&{eFqvFQ6##`ME_T=g4gMQ#KxPhJzrby<#dhnOR-9ufyn_AO_ zz0aL6mi6UNo$xRi0oR}v)qGmM)b(w0=Fd{q4AG%6Te2LKQH{t!{CKZr_(`QY>9+S* z2*%x9#R|nB8GHkSk6}xhbu~`sbKu{H5_oXhwxM^jcIgV7s{_tR9eY>1>CFNitGJT5 z18)Z$S2-B+L}KM6jHnEuhai1V<5t%7Aad(20X_3h=o-2`3M*tV21yn&TPKc9M{{cz z*~1w_9;BARCb^p}Z!Q;PrZ6yYxyjE!KMIFd@m7^$#@g!PBABl4owk)H)P58gvdC3= zBvc)FVt59wBzS%JkhU?kKp=84&*xl)w}~|KIgT5Mra^&`o`i9Ndi1WwE30A=*s+X( zh6kx9AK^v1h^;ha%0UXvxE3M0eJPEI!ti4jAJA*up{{X^p6cP7*vsLFiG67Q|I0POu{&7&?w*#Jb23az2>exGu z2^i=H;wsD&Cr#UN{6J^7dge9FZre&(4co;7WQKQP$JAGf>pvd6H>2G{rrX)x>Qc)Y zk!M^YN3?)cmi5mbxTd0zA4Td{Fg>*K22cuMmS6$=YvAvSaKRq5uGbPxFn02sf&0Iq z_vh2MmBYJZJd3`r@b#N{q>BKSjXV%m^POPKGZQ<(%zPnHiL zpF_ak%FXy z$0f1pUG}@E$7^phNJMQIF2%UQ^OKWb7JO9wsNnEb+IV-u9v-^!HoI|V)1;e}#RB6D zAE`$t7$6??knYCmU$f4$sOt6__lhp&jKwoOv`*ocV%%Im)IpIZA5!d@J;@aCM6 zM;Il5Ld9{oda&+zuZ8p<+Hb~QL<@O&r`z13fbocd5drALXY}U1n@jljb9%{dHOacN znFARCT%&d1d*-eSQd>)N>t%<|DnSGuLXJn{Qlt_l?fZbvK?(e;KfxN6uDhqL(2;gN z0%fpI;A^b7fnO;al0nD{#N_>d3ccAp=&uWaFhKtRfdkLbii%>Tfai`$2cM=YUzjS5 zfGOmbBOrbsTFo-y;QcBCG-?E_SO9Pa0q^Np z8rG*3iZ@Xrm%b0CGoew8eYs&!{i80cy=9 z$eCk5Fa%>hm?o-4;yorrK+?n{C+5qHduG2X{6X;x;?Ilqbks^~#xX34>kO?VY@I>d z$ILo${VHg+zl+u_74$IO#S$TTqAaYgIP2UTQDivpbM=rkOk$HeB5V{t-Up0>-|JGm zDxgUt41vif`F^$Ve}Mii>Y9XBOrrMRQHoHn1k#_8LF9kBbNbiTx1J)CU(-I*1eW@3 z#DJEL6O@Iq*q)-Y<-58zJ9pG9a(;3z2eid- z1b{CfoPbYWYfek3ZLQX6(NJS280XwpF}5~a69LE>LaZ=Gdt>QbmyU1m8o)teKa+3{ zK^Pz3IO$7iszY%bCh@q9z^Uu_*TKoE-d*dL zHxT`z{ho4+@km|Y2N?YOSJ^rypMRm~pK8_;X>J)nR3HO_IBfRDXc~4s3OMAN6}XL& z&^n@!+=f2Jy!XVv6ub}Ni{GZb8!bBG3^k;&27AeYIhaa$4gmmjj0yp}qwaS7 zp*#il8E3VcHHe+j$t0l&8U7%8XBE)tKN5UDtBYxq_bTcN;y}TP?hmIm@^$Cz({rTS z>eg37QoFNwj5A4cxyx-MJw5U(#I#$F5qvJWi$&Bmm({IMs=+kG0`LLBYbmpD7&ys4ujyV5@ZZKi+qO0yRIzFPg!jN>$nn|Bs@2bC@e85!Ic?)Cow>(&e2j9?PT zPFYWWYi8jVKvc0&oDd1;iow6NSmP{`Zaa41f=C{wfnA>}d~cZ}np=-KrDj5*5qXd3 zKN|TeEfOh{G26UsPD_jjJdO`P%D$cW!Khn#_tyGp{?w8Z6+Dn#j@C0cA-M4=kz|UUQ`Q!1gTGV_?eJ+#CI&{(OxG_k}ELrLU_UJw8+UN%> zqv?yN&2#;g0l3=C3nGt~+w0P&p6(4hTGH$_iyPFtl3k^iBE)gj{vMU|N5k7_bR7!a z^!RP=WsoyBAgga&XZ-i(yeC|>^885{o)L2-S0U7vBrb8l`c_O2&<}^x7tl1wMYXNE zM;fY_;0Rm3TfTYkTiz-0UB8BGI;EJ;#0 z4lRqvQ1_nku`q$OER-U%Dv1!&3KiQGDq9PEe#0>4l0DffZ9s>Bi z;Ok2%CDxV zs=W4*ZXaj`a;{DR9AJv@KZ~ON=2atFxYO)y<7af@Ia}Mq5jLj20t-9F2~x^vCO3C15^ie~8lP^G|HI3nkDY zp$RD*{XH>RS|^2mCVW`eu4K|Qxsv5s7S7^$va^o6Ks>Me*dPkK;7tm{Th`^&(OO$4 zXGdux2Y3WwKs`EjuhhQ>T-{q}`f_RMZ>6kog(lh&6A^*;v5cCDMQ&p)&ylXssXw z1|R{)<<`EFyVtF>=*`X4o?V=4xwf9FImLW|@M$ESwAlQ#jwg&O7HspL03Ma=UlA|k zTX{a&Go(R?9$c7X$DsbaP;7jM@!#VTc)L{p0EA;nyu8$sC1epRovpiqjK1LY_NROt z{g^H_%Lz4YPUG9M z^IxS}3_5n3q1tJBQpNUI)D|HCG9T|Bern?@XiS?+L*yM(_GQqmv}31PTe=7Y!)h5Dd1HxY?H%+p-x9Cc_%gUhs8Y^ z9WrE4;ajo$-t4A^N-5CpIyFNy9SOa z8AjZP@8^@g{5VSTH-LRJ*P7{m7W^u{@y?;AYFetzZ)p^V zY(awt!N7KJLJn!(E}DHq##WbbBSU28S}_-%W6ONRd;9gTl>BMol<3EfRu|a&PEU&khNXqaBe0uT)XFnp&gWz9@ zMg8Tiq%p}fY#6X70Z2TB9)mUZdIIsNAwqyhJb#|G`T6jUE9qyon%u=`$vXLt%2cvv zkO#g6eu8CW+~5ER7z%jl#YLU2Rl6DYLoFEI>PZ+NlZuUug$@~09D)z&?b4>WPq@vJ z0Kq<-b*hF@mD?F78OZ}ZX%b`jk;mC435He}CAywEewF#(@e2ChPa0a;eVXkdiJD2= z0;=uU0!PdSeR|jEUb@QGR{^nr3E++^;4g^Ds7tO-_H~NU1fn!nIo+T0`OpWVX!;hH zbEMzg%pU9uaOjlnN0p2=?47IAAP&EU8;x#xH-PP~JXNk< zUdWMI=_24Sm=_L7Ir&FZ(2rdGYt?=u=`-2sa@pzjrry~IW|CO2#AEKC*1AuFo)8L_ zT9xI5*0D5E+%3F|&~DE@r01<&_~34D{?zw39#mVBMmZJgZ?P%o)Nb32CHYH>f>FF8_I_8#A7ap zq1br`JYe%&UEl24`#`J_{{U?2vgykh%wjv1nWY1tnl?Ge$Gv$@vEV-u=~tg>*RQv}io#V9y%!vyT3U(!PTDmpskkp&Cf3mD+Za10AQ9 z^dpLi>`Qjs{K@g3geTT~cctf4j^&yY8^EYW;CqwL&A=RFb6;!xEcj)jcz(t?e#;5e z%L2eQOeJ{11YWedX}*8>@KQX5Pf^A)g_M_pJ3= zFg-i$vwfFzk;tkJS%~95TKK!;&bx7D_x74B5n9L{8sce~A1^27V55#J?@4Xe>rc41 zRtuFN<*}YR1NqnIm&e^EJNa*H_k^`sRLV;g-^PCM_RVUL(z(z4F4z16;jK2>_gdCP zrPtdGk`TZws@Nfc$Q!p7;QLq8U+}%Y9mwPR8&{6*#w6P10FbvGSgGsHeth^t;9MRv z)L@wSlU0t|CsvNg%eLK^oC3$M7#-{BH~o|T$ELgKn&a5qNJMhAx(pHMLuVtNwLHDc zQ0{hqDERB(eOA`$*2d;pyvWQYmf4?S?n4eU!Rz0O`DWi+(I(d55nes4O+MRJmOvWg zj=OSBeY0NTKV%3r=DS%9x|$5+pS{5;QcP^0cdqbybx%5EOj580V*2_*N*i7(8bw)TJ;=mdz@e z6qQ6=0uDM8$4dPJ@wKeq*rlL>B$iNiKJoGle_YqXMBG~V!CWWXBiP&Jz&T*tV0!R> z&MPUcMwQ)bvfEgX*U$w696wjJq=FV8e03GpC7am$8)G&+g!E1=0t8~ zW-1dH$UcVy^sim`OBJN{npBfrM-;wVnADCWTn=(8$G$aH6wl2Y9!7EpsNfp?LhvGsjVdIDD~otnB^BH;#xuzseLo8P^}N(=?fi9VZF6e_ z+!+f=CI~9|9ltvL0r+z}Hjij0@}hEqfgO%Jew7YQs}UuxhmHJv^4jrdawL)@<7*Gz zWOXCgn&N&Cz0Jc%xxBSkaCc>LeLd^E`0Hy7j#=H(XH`g&X25s!Wf%^x%mMY|fmh$tQuwui;mwh=xg(xIZ@sr?q8h<(}R$ zp<98H3BlvNbVYK*gaCT?`p^bct~WCUJPi5|{=IOXGlo&1++9W^C>?hKaC&qft$H&e z7i^GtIRpIr*CXROEtA9dsd7fbRf%o}2TY${Xf%v&u6!eOw^DfC31jl(fJe2F*XDNI z4gt?#4SnD6>1JPt-j^ZcrBi>;|8zM8sfns#sS{-a6VzjmTytNZ9s$-5gf$DDHd~i;c}(7A!QHu?vOqtd z=U;AU9xsbi)2&fvg``c{8vrMs1AetvR}__wqfxN8xh!5N*cIAC4!`G$`P8PWce<9+KI&fT!ah&zXek;p0fkse@un6C?L04q7p=< znTZ6PbC1fhnqhv2Q>=VP&^$Lhao=h-ts^i(u`yr?=rTXZt*;OG{{X|<^Gz0;s4dOp zPCUqn`N;1)Ul@KJuBoRBCV6a<-r!u?%>;%vNdfGA4o-8N=BoTS@us1nT}7r{ zL143}%Sh5>Dvsr_IXv;+vKrq*@B5D?<1G2w=OhlZi*Su(Wn5tP?bfig zj~wZD5n8g`ppozblk+xDZ(j9#Uh$WPbW1DkQvUwJ#wa3bi_J0(<#F=u&Ozt6ptnAU z$Uho1Jt7pDUrx3*suZMKatmiAoARok1MjXTvbKWeD{FU9B9KM~(7E6s?bqvGUGanB zzK`PlK`neOECW`!kyIB^Z<0nt$YWs-DyyG`5;X^!K63=1<3m>qc| z-oDk-wb}2q^C-3vGp_b50~HwK`d7vO039JgKC7xo(MNeI`Ee|c!3PHiZ)2Y0n!w#F z9T&mfZ&J0i(X?1zOS^Z8R(p(m(#VH{j-(v5eYvNwVwRVI1gr9qyQu(VSHWKfEx}>5&4ERTzPsg*f~xB%;RcfTui> zjCVb&ZsA!+mP@e%Adp8swT~zvSh9_y1mijDT7iqKc!N*y{ioWs8=HGX+=?1U#^QPa zN#xf#Z}CgQFR4C>{i5;fD+*3wUH4`0Uf#buZ}e~f^QMn&1a}XWe)71eCAd>0;G05y7OOKd^?{`I(7OwtLn+NIZF}> zV0Inz!KpKrk3-R?nm2V`2?P)d^dr4B)#F7VpmK6YI3MQ~8gQG$4DJ{l1J~=5O}P2v ziwZXkWDfj~{=H1Luqiv)o^$ajZQ{}{skviQ%QtXq;U?K_;}`|p5<;@6V6Hd- ze+rMs^sm2sTN5>e#nGmW?gL>1Zv^M?#e83?*he3VEap~*aMB&wJg5ttXSZs}nxpEE z0@{&chFe&z5yDAs5E8DK;Eea=^v!Z#8f@*EG^?BTXszS1lmM&-5xUX_dSUdB6}Eh7Ep#o$tifjI*i1RmUqKzz^eX42*>?LS8!Bo006;h%?^O!oT4@~7Gw{{V3N zP9$xSoPP-DJ8&!RJpkNIr`s%%;!S~Y8wVXTgFuYG6I(_+KdQ8ldG|pv5mUmRc>IB{ zfibm8PrI{e4NgRQh26)IFxbI)0rpN6N-`UIdfQH@QbZQ)i0F~hTkFGOc z3iyXY*KRe!+HHi|tnDJ1<5@shIO=ot49FH^V`X4 z7ko`<{JGilMh8+yU+8P|V_vZF*M_epwXqUOCAktw8a7c*4g#L%`d2@!{AKvBVW#SO z_3p2#=o(}e;sOP+W-XElYz($|;C*N_X>N~s`0;El%4_<=EHlojWvAHNTaVvIk%y62 zm0l0bMtS^eL*VY4s<4V?OLz%zKmd?efOyXblV3diF7Pjn{w(XdR<)|?SF_yB1a~WU za*YgepvmPQrba*=dROSjgggZvhinSU*3%f(j?thcb)63K#!#TLZBc@EcfsmS zd{yxa;a7|7{>da3pJba*w~|{|Sk7ULJ0@6vdn!&3Y#J;F(LMSyrW?3%df?GsZVmE#EBN;xQ*1i_-PLc6rMDcBgk1d4Sr-zyh$$Fqh zQe5FtP_ZO?fGh0_Yb({zF0J*5W4T6!)xgO;IOFo92gb8&5)T&XVe}(qYvuVVCAlOO zoS&2rL6~NbGq0tM7jicv3xVd2>whNRA|om)Z#g@WZ%0E9KuGd>Zjqp=ouf zXqs*G_Yyg_Guko(0-lU_5HPttIrJ1a`g2O@lza!`xI9ncZGFwX;EPLn7B#nqGB6P3x3NC`h6Q^6 z0D-wY5?bMV3I%yo`b}c>s>p>7F+DRUFaZ>bCY1>RODCvKgA~gjR~{ zhE|Jd4tNX(MhN$>mbL!?*;~bTvff>2e`9?X-ZhftCv{UZ4g{HEK4YGM8WT@o*z})> zzqC(+4xMkM>CxP4l1?|P#K&Z~A2O8#I2q~v#j4AP29n zerxD&0Dj3j>)qXWm&AT9iq6U5Xzgqo&o2w@2XJocdm8K4_Ev-Kv+DC}?Wk%`BFhuJ zWn{JhkKLvK032tzIjX*v1J`~SNF=tj5HZ`aOEDP)9>2=HYsA*7`YeJ-chFNs`3!aAC)Lsfm}bR2e&gHtDDE<^Lr;`hUg zC%#h#qPCtSnj)5r6p?B&2Kfg};$yFU=yYkMs%mP0B;QYqx!w<(^7 zjz^{|^oLOJ-Hx?sJ*?KzOOb^vysL4@@7lbB#9y=KgRZ=qPO3zjIr+#}JEUWc#IWp0 z=~%bbhavK|rTbHOnp=B?wb3E8z=!a?f=* zW{}Db50|v=Tx505Pqlug>N>G#g2#|}{{ZXPm+Joj3N*{Rh^~tyg?KTl zjjVH=ob^A>tfYQ=U4GJ@AqPx^eWLICK%_SC!EEg$t^mL|>A}g*U~`)HUxj`F*7d9B z*R^X%>}F<0+@pV-0VIY#y!5Z4EdCXEGe$PIFxcHoth~$`XDUPq!37uBInI5n)~syO z%Gk#MU4ZXk6b!ei0)t0B#R&Af6Kb#smKPWV1pp!LG5J@Kc=zFy8p=<3Wu{tcJ|sw5 zJ0m&Th{X3JkOwvHXUm*M?sgE|Apm~0cG@4dA(^(akjhGt*ZkswIobK2;!7WiUKT>y zMyF$@UE6JvTbb?4pg?|LvF;h^>s-C>#!rh>s7UQ7E5R?Oebu^vnuhyJpjP^ zn*A@m@Mf2Pv}(3dU&NtQq?st-9N@2hf~t=RXzz4xA+Xb}WdsyhQGP?7xFWTSTM~YI z{5|k5jC@n8X%qN@eQNId{o=Wj>Ue^MZlpQK$}(|^{RQy0gmgP^Bg-U#frFeMsrpw) zEFn~l8+y8MyGOX^{Azb^Ack^6f)ub`e=2;vSQ@azrCVqtCvgl;LB~($P6`=VH{H%T z2al+y#L2UbppY_29X-D~jbvqVqD=N-k&r!cTE-XLdKE69FSu?DFh&66*PD2Yz?ycj z?Qr(ctl$xrQ_lwjryXn58c-*Z1C)>`Y=Owg>-tiXUu3MLus8z;kMoKonnFGV@u$EA zu%2tpB0EKSo6V3TF~>PL8Nm8im)(3R_=$5j*VD7v|t=Grw5WSKv9wOs8_g|MQkCoj719DMQ#aTkwzm>PhXU9I(;eYZ4A&f zPK!FS;0A8BeIk)TERP`vseI?!lL9r2DDv_~Ll4t6v)Ej{kC}cU{0?nSJD4DYPq@?F z{Q2_g&U4XKkD)yWO8L_3_FmU+^)-saMABr7X;|i(V1Y5u%rVqw*1t+F6KPVpBr(At z5Hf$yHC7vKj%Jr?DO{d&fsP01Shi8{CxU-v2=oarXVoLNYs;Ild_;4Zl_UTGw>>&% z9gTgb;qMJ;{u{K8&e}Xm%w(9hGVh+PfH}bx*tAM;A`z;P2xd-)9Z2-{sJ_YN>}CgX z<%*NbU~&gOl^|4`N?l4twM&JCr8@@zj1$kNVr#?~;T^OW?R6xpb0Bh{NWB*)rYqeZ zAomfl8&m_3NzQ%h%+ad^Tt?Ug0gU78@6A+q1C`SJH>Bvckl5HnV~s&1s)gFel1H~a z>h!AeM{xtg70goG`7OL|+wML3R)RwuY!Gi%H86xe5r9M_1Cf9RdgitR$+ZuJ zS{=}yX>ILfQZQAJVg0|IdA6(jJ!!X>0%)%cHl?F1sXEXwDmw ze=$)txnNskV;S5C`MP%eDw?tlPZ{`s@HfL=3c0@4rj9F(W_xzGR#{A&6z7tAbv$>^ zYV`{(2Fp)Yiq<7uoOy97i~u|Pcl;|(1re*mmXH&H$8S&8p7=*lssge3vNI92K3E|Ou_y^V5_9R&rYg?Ch#4aUl6dz0 zYegb;b#Z}`41@ue9jT7E&SeDTFv#iKr*4#86D4(Hgw%X5rQXZtUPI=#atKgy&!Oaf zeX4yML(?rTN0kJM!GoitmCirBqwjt-y)<#W(g`J0la&ClJ-Yt@Dt)9O9La#B9-(+V z`uoyt+e0fojfq(SY^YMe5_)4krn1^dOHXX^B>R+%vD_4TgWEW(cOje>RrwflGmt?4 z03-9NYY|edh73SchQS>F0QIVE(4`h~I;Vp)T}I>1pG~!qz$E~QR4C4QAanTCHeLzQ ztfhG(w~a0c`AViSkzKPUU1VZL&~i6*p;|CPGk58pl}T9_W@p4EfFx6+v_S?5JBYv_ z0B}!lTDKurMKQ+lf_MdT$KR4EuM|PykhGh@`9pWfqEi@dN|`{x8@}&;efg$h@6^PR zWq8^-C5hcwk^7}m1~bkH&wt9DK80bbc^-6TNh3JJ7Tb?y=~@yhg)I`Gc3|0Kj1OL& zd94^kgUSmD&m&1Bi8RgFf--sU z?Nj`%Fi?^rk+6e`00&wP26+}PGP-89T!0psfQde3WechS2 zzSCk=oy_?qlzg${seewrYfQy$3rQ4ndC{pMN~swGx%{hLqmS+o8wUhCbM&f$C|Qo_ z5l(V4od!G5QcZ}H82(T;Mo-EB_Tx0yW|zteH--aqDCv{wOXPWy;G~{V=t00^>yEWJ z5{VVv8HO@Xsn54s3s>r4Tw9fwY@mz+0S}Rkf^bLSQQJY~HVKizT$Xe9d*ZqYA&vfU zfFUFl&tLGY*Jb_VOB#?y0Rw}^GCw+rN3hEfq+U}7+Stowhfl-vteLrd01A?F-0{!< z09v(#Y|)i*8lwVsF}Kz{4T+&*Mr_qbnM-GXyFzo<=|V z)kP^iit>r0WJuM{=F2WaZR^t=zm+3A1~*HXfjv|eBPRzK_oZ@SjIt{nu;3{;896_t zQ*V-4717%#c3U6=(*Pd)P**y=nRa$xEYFD>ZVJ6g* zIK~%(Ijaa!M^hdSa!DaiKzaI7Ig!eg^4T`@bHn~T&_&qE97z(ggbo7bfCuaN;}u2Z zaN9}-4%rIL(}B)^3ck$FrSF+t2e%Qc6fJb`UYZ$MdL^Zpu>bHYhDT z-R&7?87NC<%g<0fjtAvZT?h#tTrK50Zg&hY4`P4MYAr>)(HRuHZa@q$K1`2K#-DKH zD?DmtAOJ~HKM`31?9AP$w-)y@BD9LEs9&lBl_ws&k(!t6*571?(hGR)ZBX$VfB*v+ z1M(EYuN#+Wc_8GrGs)@vs(A?5gaXPB06u&A@rnf}t%%Y!Oarsa4hn&eKE3MJ$V_52 zP@zT%Ba=`djf{X}%{U~H$pM?yvHCzX?q>QLfW)FD%wRJR2pI#O!#_&B z0ST4>qX05;Ir`S|X|Xi-L@92GZlTf`A_tF@@=3`RQd#1J#6!m+JQ6qqjsQLS)$P&9 z;s!=i%aB-SJ$U|AMo?8_!Y~0sjiZGb^sa={84QgK>*SeHq$GTyxnb7>+oeqQ?o)Uf z&J-QT8T3DuPK>cfxsLpt01g5Ad(ue|Wx-Yh9I?(w6dFLF(KIa~XeT6`s4{K?*dI!f zKGMupi4o(St;yrC_2g617@lw584ClP6Yo~#$-!4<1+uJ82TXo-4hfnOLo}|cvM`Vl zkaqpt`qc9XREZ>sUux|v2SMpjG8FO#uhjnlp0%3- znxJ?UvQ=3(sSAVa&%IV93@~|jK4h&P;+se+cMgE{{{ZXL-f5(U7?ijQnNhot0O_C3 zrAU}X`;>|HzEnGMymbfjqyzzGl134Eu!hR30g|}~f$P$%n^J@Z%e$Sd#YZIPl0N}X zl~`f7J+>e2gU5a|`2Mvt7Y~vTn=6k|)1J5=LqUv^zJ*BRkqdx%!6cA<`~C){jyWDH zkKFl@NAlwfv z(;RwtAK_K)rB)IXw}Z22PI(m?lKx=a!*LnG`9bv_)oCO#OEeqQCfGCv4zF`D~W*Hv;0Lrpa(^6jA zn%I%kYAEu~Ny_}h;GgmRDw4068oHgN<^E>D865zpN9H7LF+xc=8()#farn~-Sv<86 zw(da5IUi5TwTf4>FeXP&IdpaKsV9l-a+61PK0K7w4wD0YpcR@ulX$n5Txo*q{(yBB_$r}T5@v4vjB|8jccj?}tr1vSsGbDoH z5Pi|}Fb6q5jZTXu$b)YRqXR9S-1qmT7*vI%O{6Z?B$L~@r^h|9NrPoZN{o@f>_GfY zONv^JMJoj_ z+1y61b0e_NEC(Y#fP0Fg=3D}~E5Rj5Cxh&00-Fh*cSJ49Z!88gliIYP3mwI< z3$)_{jEs*;X26mM^&Mb$e1LLLC-vzR-A&e5avRloRN{mS0P%nLy#Ih zl5PM18z2rx1pWf4Y-1t9A`+oO1Jw69shVY!g^)^wfIu1Kdwxci+`tx1k=&w;j7sF^ zo}#{Mu2v@vg+M;{9<@r-#9CGIMKzprM?0tlNjC4zK;yT1Y6z}lUSj*l z%1oqW1wSb`@9+Gn8Yc3>ed#w~t};dkbJmEP%pv7i(*Tm#Jkm&HjgTn^alv2Yzw*{*@Cf%p!Dw)CS7}+~bqi@u}mCNH;kQ*Z|;kKjcv? zK!uD*p^IPu*g5qlw@#Iq62bwDrNJ>MI1c3X{CTYTqgdD&rCExQ3WLD)IO$Q#8!q$& z0*s)kCy$v)^ydJN#;psc!tRW#vH4W53!bAix`7ag1d-xp5)#A)0M)6kU&vI51Z-u2 zYzEJ-_*E#3pt+V?M3j?(wT3;hO^~ds5V*dIGN+VaTO9QV{Pm^;h_4u#97DEH0Sfzw z@6Y&D@>@jaJ;bD&a&`>u<2gS5)fK8jWnm17ASWjy8;_~0(}lSv2^%T^1Oj;Zd*kUq z6&^^_D<#hNAO}}DDshY-erh*c<{n52sp^34G0s`{W>G0NqES9s5!?W%)u0La+rv=hXds8c2zyxtryq zaj=C0aADMb6hsy#+5mC4qaN7@B>oks5H1_aRm*JzoDvpi{W1%`_?(nRdx z0>oqP>_A+f{UV!;w!XXZ1WA{IDO?ATsVWFRDg%LnXwt@zKB%gh82k%o|rY9+O>@c-tTlGDCd+RWn!x!05Y76k{-s+?h`MpQO?q@47OZfXT=|F!Tg;J!x{J?E+_2I2?C9>YUS*Xp~4< z2LJ`=dFQ9|tG0Wb`G8O5f?mW=1=9D0^uU;|DODP6u6vG)%NLxz zLXvZWM_RPHBPQD|JRtnxrHF%kn;B-U?j|qs30)PO0x%_G!vNx3K%dip#NXYAqeqyT` z8etfDcMu86t_MScJ@bmN%nNO22O#8(WS)P-RmLp<$sazc~W zzxl;vzsIi#NhRy)m+vaZcxkrAg!dWerbPlis2d};C{6W>K;(QR!p%i zgV2ypc=sZ{WV-nO0H8pUOuOU(H%GETv~ka_N2m3!cIWnw&~2^!`@ey82kJPcwGH<^ro5aR zDH>bJY-3=px-|^tRPqLUe@dYKA=0eojw$DI3;AK)2Luu`TqljMpwrxliojSZrt)?& zV0^@9jPuvmy?6$teRFxLUps2eC4^TEBuM8WK?68B>C}&{Y@)0eKF(X%9DLVS(#N|B zW1SrSK=D<6(QMARnMO_sAQCg*kF9v`!;L>e)2vKZb~Ab9gvm2un34|Ty|Pc<_25^t zF2NGy6M#X<&Ik0Unzq23MR~r+j2)z9aCU|%yCXgS07`Ydgi2!>moUy_TWhI@QpO~2jGwY7^v25()ECVh#0vm(x`ct|zU5b|_ zAc393ZEdUaa(N=7xn_bRBz|Wvj1DqMXMPdU61e|fwl3LifuAtEr`CPoHdijIzeQ{KGu|^(BtZZ-w zP5||-Fu__l-ZwH}upn?nLo#iZ6>*YyBbE%<7pw-)T0F3#3umBUw{{WoT+mRBZPa_2w$Rip2zZ&H=ZxCAP zR_!&z1&TD@%non|dVI`-T;E3%NTGlVKw!Xpr~I0;X3cYO>9Lpu3|k*BUf-2`-K~6L zwYIytvq+U9F|4UOqUJ~4fT|BwImuzu73kj&{vz3UvdSs6foQ=l3eRw41Tuq$MIOCJ zw@O2{mp!6eNFQn>b1aMUxGV`jh6X!VH+iL)^Sh}T100V-TSob03o`E#81pAQDfGwF z8TwWg)z#;m;Hrj2+NMV3K{&-sfi=|48gu6n%FV{?4xoCU$ko9CMUN>Yfc@fEf;|tf z)}-FCG7>;Lu%%9M$9jVHSrP*Ag(q&{4>=h6)gqjeFg#VMTWFA_#DxGV4nq=7N4c*e zu=xGpOPi_mm@e#FTejk5NtCjw=jIv6BRKc0Uy53V<=&Hd8!VCygkuLd9P}LL8LxzH z>}IjouI?s|(&jM0TZkdsA{^l5oczRd>C%D^)h!Rlejf1!sWvy3(y(xZ2~~(}0yzA7 zS5s`LSk8&Owiu9l^PKVZuZjK@>rH8Y4AZL1sEFD~gpqF`uGK#sflNi)U}VHc*TZ4_uE=z|`G=&ucy@()5HwcX+D!Vj&C!jerh7^sg4Z{iL)z zJL&X675vx57HzS%<%JGFcRNVzd*-~)<7bKOjfyicJZB_+T`N5`2=`?SVNU=Od93UX-42=+bSS9{AD1M8M?Up5q5Pn`Lwu(> zVe9MbRITTE+ss0ojFKONfz(u=YIj#x+@mA{N9jd`S7(zYSa!w~cB*LceV~W8lO=Lk zDfKx1RWz>%U!Bu%I6j>^)h|BX!Og^69x_G&{{T6wg4X2nqd~3_P$~V{3xEhYJ!>-n zoy=8`=W&0OejL=|OH!xz$r50I?06qs{VIo@Zg(E0Tcu;m zJQ4w!e7E2pM?S#*HJyQ$Zf9ahj{&iOtbO@4p{K%#kHK7$a624VF?oC~A~y&}m|2eE zfCJB6)n3cRI!vnN=aNgI!DW#`mhMd!GI4F_cavqJb;C!Vhd9CatgyhWh~xpBWDXC$ zDvE2CvlQ8M(lO|n1Obk@sl)DI$bM4U<<+M#a<@O=z7MNCa54^O?#T2a%{DfcD#wEA z6oZbWel=&wDGYIgxr&krJdT_bQCnZZHI1~y?Rgg<5rd2lrmEg*kXy#`%P0T?xU&o& z{{U7fCzTo36J00EvMd4#4BdY!mI+YtgXXc$cp0xfz4(#g+gr_-myW18EQ5Jf^uX`M zXGifr!*`80_I>QqTSoaWG-f;ubiwb_G}3Qk&s~il%qn-QFC>rv{HosR)Pz)KP;ruQ zam9T7d-1=)Eq0nlg@1pk>kBdlV*`0=p!~{x$iUBUO7;C4Te;Qlh4aH{Z3M)!K@_Fd zAWs85fBkfZ>~(~1ToqMjBoKMtX~G9aje;`9;IU#kKEka?fU#7{9EJpp3L04zL?xb8 zU|p2A0lh%{de9>-WkDfhm0XdM0sKt}Vwya_6XwQv0FnN4Sz5&K+o+#(yMVw@c>e(F z*AcFG%SF)bMfKW29Pyz(Vkj~;2Tpnl0`@&Mt=VH}#~1(}dW`4%YMc=iFT4f>;YzMD zF^}tC8D9R_mXk6=q4;9sSGMy)$#7j&W9_tL=K~o$b*yV&+P3#l)aHiGY;`R<8;>St zwqVBHh{=tJ;d1LKZNcQRC#`!W-QBe4(k2NDm2Ka8pDveS%-S<= z^%)v7cYMTlf>>CDxUz*y(@S z7bne(n`^A0jL13ISFT7I85rWeuJ8wr{6*qTOH|YKOA{67Wsz1O35j2zARlJ>3QaY+ zl)TTW=a@7sSql85ADcUd2VwQBsAXd8N11>!K4XwE)ASV;v~xxYmEG|k(hoUo0iV$H zt9XrAAUVS1iB@!|-I2h%zk?Lx!`c<{(nYt*Xw_}!8RVqH2sbtya z6b#tfNdRWN+sB?UpTc&ML1P>@7i9#7J2~41DThF zp(ay(Y|R_K@PlwCIXLH^&Vip6{7SztY8sg_wmABWT$mHrs(n!ckg%!v)6ETk8oE*xj?4Zr7#_5T12cu06Y&RcOcrOm@G zUS(2&k6aDJk=#;kEx_~-v|HQTq(VjcQ~)vtf5WYE8kdQ*yBy4tV28wxq5WaA|B-l%Fm9q}K9g|?xtOzfaBDQSAc zVuBcu7rsF2PW?%Xx%!C=g5V9S^9I^fFk!e6+8)+K#X!pQ|;8(%0C4>Yb?5a zP%@aT2@Mj=cS_}s;#9flGxhaV zM|nsD5~{opV~?d%x19n3DgECEa5>LC#afS2ja5nD9&krbYD9CgNaFJlxSB>_I+4o# zY0idJXv4^os^MQ41pR7AZms16#1(-!I}S7caw?Xou2|`8OUC6;71}}SNB;m?g87k` zcj7p-z!vK04guWV7bB@7jDJe`~bsBk) zqO!hJ5P1XKdRNa^f3xMhE{4+T?(l(zTd=69$2bE#ax2bkv@K`h#n<*8n-o%L!r;jy zQ88GRi)EQ})YRP>pQg4K!u|_usAG{(oQV|f68nm6)yRl2a&itxEIn)I{{V&_D!Y*d zz5T<>5yD4q3Xd%A>OFIjUC)nvU#9q4%3J&Ei0y#g6mgt0Nhe*P_wV^rj;y#O^)$Rw zZ0#DONDI3FF_g|iobYSoeSh|$)~>Ziw9&2Luvmk}B?!dGLtrpJ z;p^>OABZ0R0OCi8{6%$Xb#OHYZKOP?Otk`JdnYw3>#d{?v9 z;#uxyX^gnQVh%a}5IcM3x&HtY{21`Zkv+|ihpnuHh3#@5UdEdX9%{ zaSoLa_LEA+DbZ644hHOk2VOb~^`8OwlE+@P0@`0VMtrG*vH4Cq5P9w?o+$7yhLLY? zF7%l76LHB5+eYKYbL-N%X7too>V9(TJ|fih`-?48RJRv55J+TMBT}+Sp2xRCUYntO zU%%6C^sODESZ*#PFxny@+ztzT#0>BOIXwWR@g0IesXdOFWo#_cMG2O}1r5mlb@cxL z!e0S+E*b2#TYnEEmrTnv*Rp{lzE_k(*-koswU8&+===lXt#4Sg)8&>)^-Eir(r-Ao z%8J7vbKj>MIR{V7*K!5 zwR|Vz--uRP?xm<{miM!dCQmBnRJU#zjNwTbKX`P_G&d&q6UN^e{C}-T0v-4xd{XKBwW2|NSoUtfF?_)X!xD%_Yl-NjR-~66BHj zSEBg8;y;JAm|Iw$_xmB#$tL*2OB|Ww48JY_&%eEWo!~EvR{El8maTBDy@^=MVcZOH zj@{2Sm+?!&3uq?$HGrN;0YbrmRRm{o9kI`?eCgqXcj29KPqY=0UNabx2vCiV3HIif zGr2BnWPXdssI;&4$p}~qebr)d)2HcQEc|BiUbUd=x?{t3BGaZuWeme4gVzA(AA5s} z_b&@xTxvQ6t;>I;Fo`!hq1q1IWAv|>em6vKt(GWfR=rsRf?MSgs3(Q)?lkRf4%C#AR34zIKToKvfB04(5xy_n!SM%O)b6#o!Wkl!6_=L5 zE^>N<#xY)%@K3;g9gUhSCAu2tbj21S!`EKfZMARcc(BfNDg}7Vzhi6`#X5Q$M9TVc#8ht zM$ux~D$OgM^Qj*wPUQ2R1~J@KZ-kx_I?k~i_V&mv8c!*vEwxjSFh}_uSKs=6pKGPY zEi7V+fk8PBH_0r0;|7#&Z)1@WQQAWsXp7Vl z>-c7qX>JCG!27W*&-QyehKdzdW_Vl50geV3b>x1v_3o*1_7VM_;h~S@1)Z1$#ygW= zBm5gaB8;C7E%m;aVSpr&r`q>8?TlcYf|V_TE{O?F~Fu z%6!iINXY#2UNLbj58_3-X(RI($V8G4`1Uy%01n*O++G{_tMLB-!=4h+KGovQI^y`- z`BO~_lt5Ht%1yvy-#@Q;6S>W5e+2wHrCGFg_95jw1`G~CJxJ&edimd5@Obde;CR{6 z25rT5<7xW-74+5T$B%{&1=>%qqTI)|h}*&g+??_~>*ha*{{R#GE#h*}+TOt>tH@D= zPE^P-{45SY$9}Zqxr!y2X4mA$p|#Ui;9$tsQtJGMz2_0D*&(|rb5t}P)k7myVM5P3fN zty1VCVnp4$2nWlOLFv<_VcZtC&Ias^f@`g{fnB9Sj;E*~^*+E?H>pRpWGsxoHUP-v zQ(6J$UMtkvJv#74WpbI`?`6S4CF!yAYp=>es#zA+v3NDd=+Lj9ZKfHY2t*m(H0*e8SFabcJ-zO zy*t4g7MB&Y7FvCPF)2|jXhE5dGb00@PBV-QR!53_Eu=$Xs7mn2a-cj>DBCFOf^+MN z`M+NMymTnMmGFOsq1SbjKagR#M}j!OT<&9xj(F~KUOBA(*ZRfJpKlG8jcIcz%*?lL ze3t&;7{LSR4FyGYIzJL=_u6ivnuV>iSwk}_sw1C}cfjwCE9x%+MR$MU{qV-YK*1pJ z8;qX5-RtxFL-?0-F<+?J6mG9FVDy0}^_4 z{cGqyi5?t^`$f5qDWr;YP*DLHXYGU2^RJCGk*!+ziWqL5TU2#Mkplw5X(TRv@^kc} zz}=P4(75j*j@e1wBLym@92F$QIN3?=Og)l_3J<3o{6StdK1`M z!#dvyOtQ*bD<Atx zuh12?wYRmjhflYMPq&T`h>8FJW54*13zAON;~DANvh_ed z&Sd3K939``TFEqkhLJq52Gu;|{VP8Ee4vuWasebBPt)|EN6eoW^w~8#YipZU@)RIb zCIa^31Msg0@Km#ZX{D@C&mj|S^LhYx5y!U`?VlQN;8MwPGsA6#NZA1-whk1ZL&i;b zhr>4eW~FCod3QFQXk=!dTUf-7Ip75(1KYlF%?7Z&j<4c>hvv|txR&P0ZUe`a$RIvX z2am?MkB1&RvbEMPwAKkUF>Que2`r4+$OH@=jDufB`0GN4RM4jkk}N8@c5-vGJxcoY z>0cw+>3Vj7<1>9{6cBlm2bh6{pZ%u%zbXqp;n%()==Po%n^L;D`*e}UB7)chmL~%k z>N?lPXGVXBo+Q48;2l3tSrjTHga!F}Wb%I#U0%83eGUsIS+1hHxRNq9#q(u{P=ET> z)cg$a^|q&Td97;pmsYUPaG?T)Y&w7e&V4$J3U>q8;n1Pc{5z)$SYWX7t;8Uf9FRWn zKK$3ndV=aR_?BCJE@5(>X(Y%uGWW?f_ot1mm-`;!;fWzw*Cg)F)$|^wz6aHx?EWdY zctWS|47|;r%Lbzr)Z0+pEKYF?<0VM#*Y&SbxiS5oYle~t z;Xn&KgaDunt1K^&&PLmx(=_WY3<}k97^&{ zu$*TZLC;;!b>Um>tE+9B8r)e9r(Rd=fQvU$s zSI3=6&6bs_>o-` zA*Xm-O0u!Hn%_;dj^hE<(Lm2mpnW^iPU7a)$K>|2;-8H-mU7$QXxi1%i4q2#t(_In zkG!Chv}BNdDo+M!`u?e^*lBu&i#anR2Olt517s8V56ZtuzAPP3Xc8>fGs$F7tcm~% z1A61HO88qr)?tIhu|sKajOJoXsNon9_i^;T8V!Kt`0?Y?u zeY0LU@xId1YnV4FyFh^LWCwU4azW?@arjrY{68|o;nYd)lTvgFB#@|5A80r@`qz?t zY?0w;8pS19SxU1pBX1mmf!?+m;hziOfi)IZK^rXWi5hYkXCPpA#w+v#KmqjIHVDzX zCR{f-Iq6@W{s3#8FIHz{k~TACFh|YvdXAO)5#h_}Zmgo@Zy+}q8PBaIuB>Axse4wH z;DGFfJisyuQb79Gz+V}XOC;4KfkC)=fRT^zl6fQbHToN=+p}7+k$k{MDi2cv!kf0zyi2WIYaSvkqY)Xl)0qJB+q)O)dgCACU!b~ETeL8}qq{)r90Ir? z_2$1dyfLc7ruc@|?RH(tlMj`XfI;Zq+*jxafV@McYx;6DdW2Hy0mzml8$@7q!R|Sr ziAv|8O6EMV8Oh_gJY)I_@qdaMj&#_q^erwA?O844dx_=*lZs1K93lIUBxlx{j^REy1J>lycfcGvMeO6pZK`PiiazH!| z4SgHpI9pBA8r`itvdRjUKX{yT`WmF{HwJtY;*w(VW}ditNV!}w7{S~|cK6`d+}{nZ zWWP}=S$&=riFSaeY2%anezoz>icPFuEQCmH?yn}4%knTjUmyTaW6w(aL*ZO=8(_MD z#KtusDaOH%x_#>T(79SYM(piF!EgsHk}+Q)d}E2c=v^b4Np_gQ50y@Hk}K=^t+qob z5^u)<6P%O&MSO?xp(T+7am-+mST~rf(1qtenW??>LOD-^{%o_v*OKodP!KY0#t%X} z;=cTakd4u*s$gw9y76BGd+cwdSQLarAY>IiKN`^` zYaxjumh&)4k2xe9fDfRmW->F#B#ec}-XG-E<&Y3LDl?WO=QSLGM?zc$CnLAx_|kDq zM;GF}C56P1z!}v!QT#(aYv3=47cxt($K_l%n614O4hSc!en!7R^{GQ!%WPQWi~?A5 z$4}P21Ne^xw0??Zh&0_pY z&`!xNN}@(dF5uv?BOPm^_+zJCGzioANQ^-NPw?Y|ithd(*g(2_%&{%xAS&%e&f}iD ze_D}T_{Q5>xzb>3Hn>;-a;qaT<$Gu8isf&`j=QT^M?A4#Tp89<%vrabXQ$vQKOLP% zPrfN4CL1M6j1W6>>HO0Z7@6^|Y z{AAMYmOF?fK4r@sD=5mc6&UBYIsB_wy)`z5$Buj!Z?zZ^Ld62E=*-9OamG(MCyM%$ z#m-{z{N?2l$dK-3IUN50bQ<|j;PBJ*d0`rp%p{uN!EJ89$e`}VLk@uL^uYG7uY6CS ze{1QINEDPf^3h)#SEp+3CV!oD`}r-(FP7|*Fd_a0y(1Waufio|bnI)4sx z?Ow5_{?VQv(jtl*o7+p6V{a%&67F`u#zxRc>6!?e(#PB)^BBEY(dL1C-S5<6oSOX7 z`1`3%t?H|5VQ&_frpV1TvuykLevO_^NjT48UfrmE)&3N;)9#{+!`kJ|)7!X$M2VeI z@qo^w?*Wo=#%tqW7;2s;@pi7-qUu)HHt!D7i3gSCfO{Y(2bxWpA7p$EnlYzXX|~#Z zrKQ5Ddx;_hdGC?)oS&ypO8N)J`eb(=9k`bI?rUU=66}pZX>bk~>6-bQ;IwdqrVFcs zGoqjlq=HC2PvkhSru=sW-R6xvk~`g@Ql=nzemZ2HooZzC)XSOP?ELA}WrE|y&`yyx znI())0U=514Sm<}wa{8Zh&L*tt2h`9(3<#rS~|n{w#MP~%ayfhU5&a%O8^D~V00Pg zzV`T88l4K>>EUE7pfD?fNcH`HD$U;dnx5FiHK8l9eq0753=dD|Uln|B@a#8!a%xjO zwX?3&j1Wc3_9xWW*#XocP}_*$1N`gD{Cl8(ZCJ{XS**?!wi^T%?Z$!#2jk`=ImhYkUqJj0{hwCnR8JObHkMZUpeA*iMBjxZ z5TgeK;P(A#HFaV0qwP&EQ9drVdxU8g7Qs?e0OfkG=lEC4-xfSKszsZ)#ZN z#&*9T=RVl4wzPdR+fTQK(%oYUgO^msT&qd%7o^v zq4Rgb{{R$EJeHU;EzylwmTVX9ah|>Sucji^Cc8l_FkDDkHx-R?$DY7<>tCH;622Yy z`%Km6yzu??>~lnggf7e#nt0{*Q&RE2iKU%22h??Y2xN*V zHD?3My-m3TXy`_M_Aq^V*N%KV_;09uQ1J$r;$IM($*`^FMA1r-N(lr?@izpF90Sie z?O&&U4e+*~;oT}2?Mk`ZhGhjn^x$xRE+`QnivnACMifyR-9X-3l5iPu>G{{gT3h|6 z#>-`IAs3D6sNIC9*$gZ~S5u?kpwr~hu-u%{5RtvtT=a0r4%e_)d+cve5$4QLs zW4MEG-PnWl{Hw3{GJaccCLoX%P|`5yx$BS0x<87)4*XT)3-+~*j9Of6z6bMyZ9l{v zdy~f_wRFA!@D8n^+S-e$Y@^tqVjaUAi~>9G4?gtQkX^mZpN#ew7cs!vV0ki_dy=0f z(b;_tJ!|D(40wVc3+nPM{2)jiI!JM}scyMF`q${jtKpQ_^sD_I>PX|anll)XuQB_t zq2|6-@yEaoM&`v@)h+F9z$V?410n&yW*>p$sjE$w8FxKn!#@%HE3QN3UTeB_oYBS( z_r}7w_V4&}UQ6+B<9CB)vbpf@fpz8a2C}oTGps-8$e?5#^$a-}?_W0C{2BO@YV8AB zEV`RW@kMYQl|*>P=U&AB0C%6QeF^Zp_GNol7rzj#?5AXfqk`XdH%foyteby?b{*>{ zxpzKO@J!mquj1%t)r@y`_Y)S5;y8#Au+IlPo_AO2AHw@dZ8XUvncCu2Vs{4pJ%>u< z?EVQ@TWe4?sgBmxB1~+N{oM7>`OSO2hoTJ<#ceIvGHxUQGx_(VXM3~4J}=xyZE#>{ z1oFvl9T*Tm1a!}0GhP?)o^2*;>x8qJFG|dO#1ehkGt=9k;=Z==&w`JMq6qFIk=P^3 zc__Yv(xC9~!mSfSxQ_BTVKamvGAID#@<{bG3jL2p(^b~hH^!>KbBtp?*sUnRaszE_ zHsDTi>7VCSA&5 zcpf7-F|qQ=`^T~R^ZHkKzI2imjulay1`o&>{c9^&(;DqWPKqNdhGIv}&u`3By#;gg zAH{IoFNs+rj`sd_bw^}DltIa2d-ohy-Jc6?Wi~bvA~n1wFr`4jbL&%Dd@u0zq|#qs zEYjaODoBtpWY5Yyh|PDlR`!-m63#f`j38A5jiaVNNm-FFTd$`-{;Jf3p~-MJX9Vufc>e(F(KwBQoGBz=jCA*)M+xG4Hooxgt7yhS1d#@1 zQIfxFQfG5+JUQeI1hyIeTz+k z5er5JRhTL3fJim$I?ja#uVW+i_Ndwf{0BPMfAPEGJL!W*&^3=2X_t;9 ziW%;bF&ncVy12#{fs%Qz)OdaucsU*@hlj0QcV&d9Am^@e^*t-nwCyQ0+beA{(kLx- z$d_zT#)_*N`VZIZPFB8zO6SCX2>$?Q4Qs;JgH!Px=9PV`PYM}KYC(Z{ZH(RV$iVI^ z>w8@u2)wvKi6cM|uH0aI4@%sU2(4I{**ua;^#=gwy+s;G!3j8GxFmf){Z%0ybvb_! z_(t1WhaOx8UoA?890D=UKN|Sg;s?O57T??JR(4asHG7TTOwmMkL{#t!o=EG`ze8h; zM1|XNVlqxT^U|xlX>pkh3MK@Q6!hk$#WkU#-28t2%J|o&HKv<+d2t8XBs-;m5++cj z00~|>!Q-AQHGC8CkHojlsy2}ybQ?LROP{jB zXI3u7lpLJ<)}&fptRK9FCAEyU;D~UbXP!SgX(VYS)c7OePwdFHdf?Z*Rdo8KY>HzM zM1^1^6M%8lZo%iZeZ8e=R{CAEHi?B;;_{FM04o0gl54D3AVez~hsfGbJbnVI&l4*~ z%G*f??u>q!>rBn7I~iJ-64=fzRvVbuU?PqWrdPduE%ATh2amj0c=334T|Y;+x}3=J zG)FNn_Yrfn1B2J6y?y&{Z5oCyn~6C+f3MP(NFkBhLmE5h1DxmUO(sjxAC>msvS-A( zuI?iFYVLKwNA{=Z)({t#s}tgr|hfo0!w(Lxz}cfdxTYy($z?U zMgV}SN#h5<9vgS=g5e{VE!K`cuYjWi%B3f#J~oB~+n=RG@D-SJx`(8a=* z0YFemU7a}K`&F3)a6&D-q$o~8vCeqwOgA}C4fsy~07bQu-c4C`ByomkK)65bpHHoM ze~-QpCyC&_y0^VB>em6_1(X$uF^%Ir^Xtc;wgynW21SuF99-^PM3%Cx2al)zO zb6N5o2hRQo_!0jA2!4;EX-nc6wcBf0R4A2pvbY)Lx}LS~+BK}u$r`kuD&Sy@h&;&x!s(sQxIpm*Sezl+jYr4 z4_rn$C$D2(JMg2!TEB^ICD-h&r(0y4qO^l*gcv)Aat16A6?mh>@@g!@$c?#gRg{CAV;J_J2yVo0 z7*>&(^=2c1&!%ghzR-02S~s@1Mvf`Cm649(xE&5_qLrDMKR9jQYNxtV?RwHK$qyfnEs3pN;xC0PEa!*cs&`XMBiwcB{U~j+#k?-qSQ%YiHRYGtMI^grt zw@Jb&A3FhnHlNq>suvNn0QrmpI2bu2{EAIqKv77hV~%77NF$XQlNmra1Z&#LQN|& zmywXMS+ACs#!Tc83SbU9`%~^TYkR;R?G|isz^aUouX>%MI~Ok|dVo(#o-O-=y8@tO zg!((;<`@D3mHzA`S z?cIzLIuEI;;GhV_1NY$c9=W6i$y6gNM8z3Y1uLA7#<=)2y*k3~X=AdFd%2QE0A#W5 zO?6T@al4QJ#sELh^Qr*0<@36cw?4de#RidS=s3zI*u;{g0KkxO$4}JLGi!vllz=Q$i7tx;%$@JhZ2$R~n6wEE~` z?pM<^+Z#)Gtzx#c%wu3>i~`_vB=zV;X-MHhlepmE1;(ySu^mfkhE3<;1YJv$nA*%2ZUj9{GLk&nWq6G+=|fmoBlJdZ<4 zqFES*39vRu&rf`JtlO{^7RDgWwOlDU7$9RA$7<3@+908JoWDsp>S6*jKe(z-}&>TzV7qst~}ivD~V>1A@69m1!^9NM~YE zcH@N^CaTMqWeQZd7-626tB$VYAi9Zeu&p6Yuox`4-cJ-}e9Rtv_BQZM+PC?`nIv;<+gepKCMmwLJb03ox}^`@Q8wVbSPjDe7F zJ!zh6I;yx1K;(mrj8!Xa0dq5AGy*mq2`$O`ilkVU`BX8_Q;+BP)oIpn7?mod@<=>= z4O+HTQg^d$0|1PSeJE)(1+=yD+`iU3hZrX(j`;di6GRbr?+GS%5_|i53Vb&h*n~*Y zmC0hr~7q$q2(3Y!Vl)O-p4OMoAFFs&E(qg2I9uv$3{g4oF!yV3G)6 zGAlOa9UE#igp-0oo_HReDFdd%z%P@u4nX4^XQdNdGpisQQ#*Lzk;kXjw1tJut%k-~ znFy9$z-4iRpRGulj!n$c6;rsKpab~Tbli#pj)Q@pY*njb%)^4mxjp{1p=Gc(MYU2q z;$@lxSS~m zp!%A^S5D|#?g2hk3d&A0KwsriJaUG~ecOlt6UIG%O1yV34(<<$2s)rKu@0zN5}~Tp1gFX7g&oB1dc&q2^ntms##gchiCu- z#PmMZtYd9Jbdc{k+%Pl1{{TH|wA%zhSZrhWfB^3L{*|PPepk+O#ups-=k==d#Ik+J z&&&pSAe<4`@~tAZ0O_M2?|$rUA*rV~?#) zwyOj}GVDmn1deg(kyPz{KxBqFPbKz+1Ohr9`TVMspsKS2fUHO$oOCCFPE!m|%HWgS z^*>6u;U<9O{K2v?F_DgxNp*BVYl-u5f*gCOa!=L?8oex-LP{VGlP?i z069N^{HsQ2O0aBW4Uz!+-{&+U84;CZjD}IaBLTVUPvJp?;jV-sj>btM40hxIqk*2E zol9^6D!axN838K95Iv8fqwK+)x~XRkl1pblg(Q)oW|B)a`$1J!Wya_4^A6p5P-7_B z*r9MA+Ww?TLhNjeZNZ3+DtJ%;}HWaRWeA=K~!z_?r6w&h@2CEa6K{k z)&BrC+`=Owc*t#_DjW=Ynx?GmTv}U%@vhM74oN%__r1<5G2%E10svMPM#$SiO|V+TLy@~dK5 zni%(6?%mGfcwh6)XU38Z#!oQh6+DhH-2HP`TIK}c0FRs~APv7$+)^22OwASqL1bVF z1mJWht!24r+3m_i@|4I%C*|~E^u=BdB~7h@0+J4K_==5$IV|YAvBpnacIn4zmbC$l zv9mgyoScRSryiABD9mL-+)7aNO}}?Ol|C@i1XIZ;md4LvQJ0gbR_X`=a7GVb=T&54 zvu4W}=F|d~iN(}XEboz9p5vh^4s;D5S zI0FKORC6ZxRb!LM>x0D%sL8z;t;7+bcTmxW1mKWy)AJ&zZE~^6B%roJu{`AW!0lHW zIF?AuHcFi5Jv)D%)H;U2`3_Sgj!61@QZyuV0w|c_@Ca-Z^M9OFUowX*vXuiEE0QTp zO&(p#6zPoM{{WsSjTTI|n#&&M0YD509C8U2O2T$pvT(6N2w0i75DK6JY3J6Jj6n-> zR3E#H?e-$G*7DDLsCHmZ6gSJBdE%`pdE@&?$b=qBW(_30WA(}P; zyQtm4>zogzRYo~|qD0D;8P6jfarg?b*EXdIlX(Q-4cH%ur$ro6w1y+{GzC#c@|bgK-)ko&tCrkty7*z#E%;~1CB-pTkBMem~F_R zl!6}v1fO5fRJf*JGG_dMX9MP9K`h2>y=~?srpgu{% zhAIf}&my1aOn{j1>Q_5marguHev}!P6KC0sNV1#^WtcZ^=dXHVh*BW3F;-HlSPbO< z0FnCC3q8RsOfam(462?v>z~4%mr#MN=TroeRD+S}KoW%k{zj8=KA$KV=#T=~(+glaxF0x}- zo6k&Oi~tDFU)GRI7Z`P6jN@-#dPr?mBxM2ij-(!(`}L?}jD{)X%ey$qYN&2xTl;)v z6hxAj&-Zy^eLX5!wHP3Q9`5EFNCsQXm4YA{!O1;6D>iV=#B$tQO0EegMpy&TWOO`_ z#;n=id0#fvLUq$cgDJ56bI3~g=XT&Wo)SU4Ha%n0_V1E6A$7W4~{ zM}PCpNa~FvGWlv5cM*(|eQ0fr$?~a?a;2B4=acyw)H#;uiLn!t7=hWBl0p4VJW29l z-BpMLws_CtDVbnNmBe^FU}yPLVNoNE!3rtC2ft2e4sL^PmQ(>9t<)bMb9 z%|o^BGU{wA8mE+Vfw&Gq=e=Cqh^}_VtPT_d%V2b>P)w;RDMUa|Ax?5VGm6s@11lC# zS0pO}Jvkz&TcFdnr5BjAZvOygRd7ZN6Q8ash%y-@V+?T0r{o~yxaX6=$I`Ut$Uwtl z#etS?-%87pNke?`ZUlg?vS-+5(uZw<+o54uU3av8T!n^5Ja9YybmSX>+(=T`#&T2= zJNi=jgoN_|-T-`(4hA^EsKc2ua5oZIVX!)9IPKb^%Jvaj8J$&1?+kYXgXnlamJTRH z%z{Eu&Pf}AlpRH~{A>fyO<0)QHFB*a;+zf_NYOdP#DGI@{0pzI=he=aAI)7^xW& zdDiMnW9I449Wz#vSzM9jFu=~>M;veu>r^9WS0`&CvBopg6>XL`B3XhY%A^LtJRa4Q z?9d5u=K;dOB7>2=k3RVddF0k(L<86SvE5VR>;Q~>4DFFY7GP8BpQ|=f&y*q7+_GVzgu46bCyD!^b5Pt?>h31yZkawC>F%t{G7WaNYE z_kW#79nSI;V=UZ;JP&$p!Em9RM&O*|8OPR1_@?#vzmi z3`rzlbtL@-T3<76)mW7`c0GRrXn0ZEk+p&30uJns=hBmDYQU-z2%;%(B5W#IiuEA! za(mM)U9ION$()VKRDur~&PTDQTv|lKPm1CTjjH9#Lce^KBMzV*K5uT7dP_)t*_2-< z)GpQBpD+LbGtNH>6S&fEVzuV3)^N*nBS&j*98DyQSez=UC5bugGwD`i2hNt>Nar)8 zODh#QP>uIVAD90CTC!%chfs^`nughJ9a=dRPu>S0f)8RbMz48oq-pwv{{Y(Lw6~7T ztkNjl(W0vyssKsbobjCEt}Q31)z;?3O7SYhtVCoItWHnR4^PIKkcG)y5-=EnfyaN$ z)765dx<}*^~}n%qVd7i)mqfZK&p zwB&>9_iH|1E@++$`$#WrBp}akGUa6*277_m-mN>Umi&*9JW%!vtGde;v2i<{_>SSg z>Oml!fJV{Ac*w6$_r%^= z+yKfF2IL+6K(2o0#Bf{egh6+28>o;O6C@00B>puUYZ^pyL+0x?Fz$V%IAGgPLxJ@j zXi2?^O{a5j0ZCj*xD0}Oel+OOq(ylZHmL*-Mo+Kl`qNrekrH*50}&)ElejwP0FIqU zJoL>*@=DuGaw^7o8-{leTzm8R)HvN2&ejaw_Y{yo|>-O?!BaGGX_BGDSWUaIV1uH;%g@xGPl&| zBaw(0=*JsKY3-girKW}K>n@~G*L zUj2KT<8-Y?NlQi&Ln;6mhC4f-Ph(bfoo3rZ7VzBPM{7G1kng){jyEtLU($h_mvOXh zwPGws1zm{7dUI6Zo^(x;Br$=NU93q1ra7+;yZxekJERRp#ye=dQK`!Aiz?muD{mMe z7Ez3r$T-ihy=Um38tkjoMmz_M;&N0bA1n>UA(xYZ{5hfR46>; zfAy)N>IZ-L_Y1TIA){_`IOja~;~B0;!~P?OUWH|j(rZZz08(O(%yH_c-?eoUNiCe~aKI1wWyU^Q0m<6vu(xRpOXdl@&^Z9-8OKmN^s5HuCO9myi~?{6IsP1bR}ZZC z^TWDuxouAO8jDMj0;2B2ADNCg9Gdx?Tm7hS?Dbtqw4Vi8Tb@_k*f0&G|@s*&R;jmFP*!e9mwz8iuxx=@u&9W-gM0-;qoFE$Y3~956};K-7PgTx;;kn z6uE`%96}H-*U3LI9Os(l*TK3ioU+a%Np4&QE?s!zrad_(wJznmgG;*A4AT9c2!xVG zO5iW32e(@CFZfTz_xfW>ZEg0JSY0q&9*vGq;Yp=!N`pzByKiq4a(vPtIR$b?7@pbu zMRhTS7SV=|;@)LqrGXnx2kTyUplcTTq){wW$Tul5ZUhAzN&C3ZYUX@J=L$b6nC_M@$vZXqBOn!3@T?Fmf)-quwas~8v~Jy;~Bu|#X^nuDoabBrE=@K9kj9`xVMGmb|{g^4p@wwFC;G~ z^`Wnzk%)yJR3MxMJlE$BhrCJg1#fI2@dAHl+%&SP+(cGFv4!0nn~LRkDZw297zFWO zTKE^mf?F4o_VPHdp(-2)e7MGUfyf!-kAC&4R#rKte!Q>xSh$ug^4qcA2p9ozjH&J_ z&YLW0B!~u7F3qQqJ^sAb%il*n>xPaIDH&xzFsBDOAB|@%x|vChI*bwl$2EbB?PIUE z4ACJ6B%Q#M!t>Dd;;X%~$qTgdTh6^eRO$Nv0FzZ?GQ|K-J&=V1a;|cH#YWd_6}mwz zuPlzh24U3teLB(RX4}|Bp3y{T-c%)U5EdM9j)(B6MY?Q|;7CZyjsQ6wY8YXUDqaX~ z8y_$5=lt2ynX+heG2h27R(;3g{Q^rjc^Bky?X;%3`Ui{#Xda)y6NokNMUYY67TpDsJkflN}Dy#_TI@YVm2x8m0 zPbqM*hQI(5&!8CRrCBn?HW^#0;1Tlo>}pnoJ2@re0OaLQ9XLOgLeZU~Fd+;EHja4z z06qZ^!lyQbY=?`w5$Fry+B&H*4`k)CVj4;*|T@eaKrMs&?GZQ#o(yNt5%bG;OT zIP@cfUvb*3VdPhY9jXulr;a-D-lM*TA?8IKa$pPs%lG&@ss%V~&-~>t77DTPZHBlJ-dL(TI40D$49n2hah7k&gBH zdEzK`THF&dNFE{zvXk4Ue*xOQRq-9S@9sRf-B@G-RB}r6&*C#knXM0-d^zy<#Tt#d zwY8Sw(=q1|pna#f$4)Vt_gx?0ee}><#P=fE-D8?k@cEcl86@$I#ABv$n)I)SaW$>Y zyh7MReI$65(Q;T2L0q0O*Xv(SL1iN>Qlgj2t_uT&9WXsO6d9*u=1&ZK4wA{f%>|?v zP{MrKu!S)mcysPfE3DTnt+Z)c-sRB|NGbyM?~&fVgjGv(G)SzQ)GI0IM_e3Ng!to6 zwz#>vdxni=RB*d_5e#w{IjrWonk<*Z-^}J;j}A%71hB) zvWQpYRs;eLeTtvPvHU}f0!;&{L zgPeU1E2z^n%WWzqj?&HxXjB$b22MI->0T>0#K*S3k}a$P?LJ{3ft>M-b;t9r{{X{2 zAa4>F8p)%Q&Ri&(L$RbKh&fMVkMN-@0S}EPl1K>=B$B8B0}gO~{{R~Kr(Y=768`O^ z%LXW0gX%H#$KhW=_{#5PvWT81DhTDVo->hw>}%ycPg*vbly`u`G!e`ec%LJ1C-_Zm z2AZ%RR(veEOT8i%j?~)47%}a1!(bc%kM8u%jKCf+GtWU^9Qb$QmZ3aqo^9ow z%R97)6K*;AfCTr?UiI{Ug#2G+J+x--cw(AdCK<99IK~ZP(@#?;cJw_~AtBDhVV_-HTOpa?dn6^83fkak`6X%eCUBD7B1A(6St?fThD-=fQp|%D;G_#PRF^uJpZvAWX zkHkM2{A1z<|+POr>~`X_xvZn6))wpo9$Yzt#1r&rEX9; zmpH)$e7>h|Jo;4fGSuvTwI-!yb!+yh^$U3-ahRSd0|)oO?OGw0)bEy9=G>}54Z9fw zt`8OYW#NB`-Zrt8D_;_iu?c3v8)!&KP@F2WcRcb(74|QNJXY71>1dja*GrrN2qbgg zJddR{4&^B=kD(Iq+{-1hxm5~Eg&F4@;(6p{#^+MR^PKyAD}PAU zZK0asE+pE-?jl9T!;YBz2jgEk>s}$&^l0Tv`+=%nnZl%mV8*22kUDTbI_ETh6y49M z#rjrDEI6}{Ac8k$Lj zwGu-ZrOL^*L{fr&mw?O|}S&E$elAP#u`Uxj5DZqjqS$+)OFW1RLp zf1b5kMv_P*4I_{X3=`L!5-Km)4-oPGUMGq)Nn^nhGn{Vi$FCLft8XT6o%PyGNW&JOnhMRZwB#j{}y^f4qBSV!nU0xVgH!mOm;#BoG4=%VeGh z>G{@?l4uLMRGO8ep|rUBJi&H`V}L;*5uU>t{44E01kYgB7Vy~{h>U8hAaYLT$R{6= z>0ccif3w^~ZedfG3>H8(lk4q@`fK6dqZPyuvdHSqltm*rIqUgVZU?+cG+SX;j6}?G z$^iL~9ONDcUs~h*U2u?T?QuCP3rH7mY;4X3GC0TdtG5^H0TS-ZxLzh zYk6mLbt}T)nc|VG!KX0CTy?7~RjMGM4(D)$o%@)we}`s%kJTjC*6YvrENxQM(N6 zm<%z_IqzRjNgN4}kT3+{g7x>Wmwp-P_R-(k>QmW8Ca77Y6ScU@vFcfdFnIQ_qje2V zD@!Qlc>s`}6tLseliGuGFT@(Qm0=NShnB&2uvS$vV;lqRy1WC$zqFr#^le&S4r%rp zo~wCnZ}y3G7@3_TmHzAsqz&Kg9@WQuNb!O371`2kWYl6~CzrYaRh6(Z0s0E&JUQ?W zSn)zzYBTD0wsz6UxEQ~+{MQ}yRH@!!HP6HHPoyRRckaG@IAWGr{?1fAVGWAU%6@AXJ-w2^R% zB_#_gi2=#S1mmY#r?Atx{J1hH&P#X3am^8Z!1P^zR0U%g8P6R_-~nFe;ZNDe;pc@sId!2$r$ORPLTI+Ot*EJK zq)y^Tkx+>wX~5dg%ORrM%-Y6K8K7}(UpSdXW-9>>v{HD`LAzv z8)>6a3^A&+CgoOAPo@daJ*(*}OVpOm8C0&;UBr+BAHu&obZd#U8=E_5%38-82!t_4 za~grbW78aeoLAc35V-R+m1HqX8BZ};n{XUw0R9!O=$>?F_|L>qX?ji6@FULXKqyp< zjAtPI1$>Wn@pkX+H&W_)khYdKVGJx43-StvP;rn5ABB5I#4G#xp zb>wAetp=ZB9zk<60fJYbloClJ9s2MqfUuXx$smy=y@KvVLnw4-j1K!l5sY)sUX}KL z!S97y4v}iQ)};oKsB2Svldyr&ZICuVKwBmM0NOR^z98_Poqf9W+Sn(^%1J<2{d3>m zmGvB5&yjp3@e{<_edIbTMR^sHOa;W(V0??Sa4{9^at04hewFoCh5TD_s6!v0FICzY zxWkYzPT#~=&fYT7t?n))(?i`^K!v1th9EbPK2>0PkESb2;TU~8PWv3!IUnX%EB^ zEJTQ~tH~MpxhI~SV!nyiX1qElkdi+|BYr?Wr}@{%9x#hrv)8Vrwh(FuVzfj`SGe4n z{5sMUuWb*aeiGm7vRhuwc?*5IDS}BO90vdoojn09)6`e7%i>FWSp3~l-Aa;o5t2YX zb6-DvGraLOqo-+lrTID}CNK262&Y+gImXiOj<^S>2Q|Cn&0Q^Hgc#l7V8&bkcc-|| ze4g|e90$ZN+8*;ud$sVX-*X(;SlR&W-M0bw=Z-~u&u!pe7<@p~Ep;o1H7#=b?Sk)j zD;Ude`N2QK&#A7a4GnxzucBE9k_Wg&f;ku>LJ0$N9OJp~Uvl^t!&)bWw1tSzqTXDy z6=@@wKE}>Y2sjx$)3;%x;(7i9`18Y&hr5;=3uR;Wb+ln3?AkhmoM40aRxCGuE%5%Q zZ5_s|3_4*dOi{)a*|Ir3Mh_tI#zlURYB1@t+4*1@jOn;4f=aJ$M@;^8@{h%j3qj#; zuxfWvSzcR7If^2Z84mRsDnR+NGQ8s+^ox4xk7V#)jilD$wSqGP+%Z_1H75zr1L!eU z{vu!8SlH@p?GyQNvqliE7+?;dob#IS--Z{nT;6@VOS5McE(>~{{R$eIBMMZG0*qu}e}Vk#M%vfNC9r^; zf&ld&{c49{opWA^RTTzsF_X{f_*13JfWY8|!94m3!&wJ>;hUCqz{IVbb4&p#LVhs8SIh&)}STt2Y|k}e9` z%HkC(5mgyhQ@D)oI>kq6hhRQ=)+RP&J zRcf@ZFT*Q(?tN=qZ zIcE73b~!yWithdrYL?o(Z+U5Sv!YDs#1WR`jCzho4g9Qboy)8>}; z$?n=nytxKI^B13#5IC=k{wjD^!?D~A8%glFu(EiS6~ls6vH|4&eJk`j{!O}Kk{5*; zz`-11zCHMXE3U6Rk=sa7oE_V8PdGRS>zb$<^E0LRQ}DyWo+Wz))im2X$dx3KpI{{! zM;l1!c_TITR+Hg<14O-+=StHp?H%J-%Yl|)I}_f#*WnBbwpQ{*3!x~$1_Tygr*8Zn zYuqJP8<48`Kx2;M=~U7t_uQ=Pq%$mKRFW{O&*eq3H=7@sksne@fq;5d+ecRUvg?vY z))@N!6>4aN>hUuGN|hx?-597*?nBp9P)qKMkoCSuXKTrz=?$m>-o+fzfOwZdD##Y(9g@TaHYS=z?Qbo-c! z5YDAk10Vf*ZQ881_%cQmFlHr4&pGM%Rx|Sv@^_DZ3|#z3 zu{tI3vWHKSL}}gM1(*1M9e*6;SD<`5_(Ngf^0L@Jo2kJPM3RsO_|y@SKQGVPw|sZw z-50{p$umfk2tH|6H7&c@a60{K<)0RQ(cU4vp4~hbVH_5~;_fo#SVlu&oaZNS9V#QM zv71-i`xjbyXN10>&m@I*AqsFurF^mRL=86CtS_|diIQMvSa1}w^vKQ*4?kR2hF$zq z__?dgXtxJZ)2tc8N^X)uG8FvEF@ewnpIp}uFZ?XcUiWsVVXNBcYI6kG%FYQnW+(38 zlZDTE*2q!Z`hVeM7V>KX>gojrB-sMS_H6PKraLGq4ix7fHy)HUp5><2=f$Kp&@>8Y+QfHFHB;W7s+fKEpwl0ORd zPlFaQJdrt=PU{}mjAU$c(1G8eq@uPWO}DA^qsFag6qsP4*+^lJPw_vMWJ|U9j|u@C zDd=0Vv&R{7sdv!2-u7cxX1XxZ{2lRONML0*R*QbD|#V+01v9zBJ4C&wK|kfXpHzIyq-iUtc#=3uz%QbaqecfMRhTm$#~-DA^WnV~-r6Ka z@~$>Sp;(f*^#k!HzCiFjrM11ov^x@MpUi2QgRp#K036_8kIKH((rs0tKwZHK0d1si zU^yP0b4bxU>Q8s!+dIa7RYPT16Oh2;sPyYzYpwhu)AdA4IpdBkKYkR(yr)0HIt*8` z+n|K)^S(wqisbYDaaW|0-q|*ss3e1yJemZeuc6`go(s`DFr~D(r%72tnVqul^*yWS zKZQWy?|SHzzbH2Y7q%?vQC^D$uLChjr7$KzjR>i3bYmB;UVlgLoZ!*pq41vISY4ZsF(#5=u{=ls&eNQ8-=EUHkMSkcw|ZBV z_CX9yha-1V2Lz7Cn)$!r+r=iW4b*E5$c|Q5kIN-gf<}Ee40JX1M~R`4H21i)Fs$+g z+zXXbatGy#hOfDcdY=UN!q(#3ScHkAip}z@Sw3&Q*#0&3AHt6&*Gh?Cgv5aq1q-(y zLH%pwe;nQ3wzX?#d8z*ZWzP31%3*w#2fe-rB2)7D!SsQgz2UKG^NnpDGiT)~DRw z64C{>iKoqRFWQ-7>x_;t2R!;$aElmbc0kz~CnS?xmxN@5X)wcWA=m=0an(Q={zkfW zc2+`EbJr)WSD_~}!Dk3nAu_>$LD*8E6p^qq57(5>Qikj)*s z7Mz@XpFZFhsNg{o)&e;t-aexYLI0W<@^V6k#z43l6O6yR) zx_Dxi?ncWi1F?YUF`f^C0upEqF_w}nSOizMqeGR%>YZCcV#_SQI7*_?l1wAk^&pE|?m0=V{ zC3u+3jmF}*!1{hQ@Grw_txNk-J6o8%`__@tBuwS~0{&R9y|ft0Y1W=$JcSG#@}!Pb z{W?%+ThtN7ysNoUkIbcj$vCfxekREznx(_(e1T6p1xN0AUn z0c9kTLB~<~SLc_;9}&cw`#q#xE^33)@AM26)ki)+FTQ5Pf+y*hvMJkK$C0@(VcRfzZ4XHxiM9 zwDZ!wyYR<|w9Qh&*$vi}X)(!5c$f{H@C5;>@!$M1v>KP29QVfEB!oo3ugci&cYPuzRtV67Pk?|?+VAB3mjvPzs|T%6ntm!kAp6w zk5RdYQiMj*AG6AE4|U_I&!rn|OO4Je!G8d>ABX17+eH_G(jzQ}Fn(Dbm>tY|vFp~p zh|uOXEf`qiUzceFoGGst@VCT$PsJ0!ZeSLca>~hQB0}Ml0fQ6xk@#1%{f6e;TfB@z zkQg$7&*k2&Ntw9WT=Y9>)z>V=Ngx2E@mM;Az#+?(ZZpRR@~e7z!WL&KmBA%=Jv(N( z{aQu=j!P2RB#wtQt;swS;y;UTt>L_i$r1^pgvg9oVZ!wz^!KleZFCKP;vTjAn+3hC z_56~bF=bv3Ny{ku@GI(XjIdwLC4>-LTB-=-Z#0svwBsNT;^;j&uOj$mt2Uc|aBnSR z`&^Q%rQwXBg#kYm$s%cMp~%mt*QEtZW7KuvZjkw2S(s-ao`=%DB=Nb_^u12z=FZ9+nbpe%mOujm*m_sn zjIuPb%!pztcONkH=dT}yeA)4PM-xk^M_^%u30pD+7?=^By}q;rvn)HYQ(>Ilg0e=6g=Ij3CstHr|L$){)b78jALkEKp}lkHT9>#4+&3vOG>v3W>_#r0A@fK5Odq+?deEI)BYOJEp)vu z%HAuLz6iTSgdDi+PI2#EE%9$ln8x=JHi*T{A=wkF6DI_4LUjQt}mmB3PL0R`6|Q`6DN;a{Px#0y;s9tAyl`PcrPPBe74HR zA`|lr4yPUaX1yQ59~Z@_NG|6^wTO@u%bn+;1fH0{t1SDn9Y0UEV)pES<1Fd|fzNDL zGvW)47e|WX?(b8xf;Gu~&4StIC-Scwy8WR%8Kvn{Ts)We7hr9U2sX>+9?D1~9epwG zE9O5N_>)!mmE)T|20OdUEjoKsJX2ey!3As=^DBfv1FM7 zj66f-W7LmhjB#Ee@rDgTNT8bAPlcmtL?%~#rY*;fqnIdibZa;g+}qnA z4yA$4c*()8yTtZ3+P0ji=&q^@DIgsC{b&Q?F9AwCE2+tCJnwSO>|La8W8B>1w_MlV z{u#ZBdn;Jvx`tLNGRS^jod@Y(1^D+)pTifwYqqs`boC9EBerr$ALp8-r~G@g@SHZ^ zX>CR9!eylv@3fKFk> z6Y%r+$62zKBa-aS-fOWNJl8GBldvN^=97IGAEf>g@jk1q#blaSErFbo$4be+GVOh)H5?LiK`uQ{kp4JEW8BOZ z;1y#M{{VG|X7;Zo_%&r_^4#3ba=uArmCTKvNygvEewFUO87$>!65`U@TkDf2mSaLd zjWPbPFMe@eQSduP)Y-L5?Iy}e&8_Hy;7Yp}aO8zn>DR3VpH}L6b+zV>1XmEt6qd?B zB;}4e56kFtUj=+w@csRT=vZ#&vSxNM2+(De0i5U8HTpkkrjcs9qmOnog1H;9+P--B zui*Ig8QMu=nrqnZhv&ABqs{i{oi0Vjpd2GfEQ8DnNcmJ}>tCb4 z1^h9nE|zbvZKSr|`GN(`b^-U>-2VWcmGXDPKZ8<1;$24K;@0J^mm)j)m^z13k1Q!A zv(ubl`q$|vh3(|i?E+mmlJuw&;1E=SkII;g?-5H0(lsb#jpULz$q0&a=WjrIcKoaJ z%T&9LUlQ3#eQ9lKva4=MUmI5g<>NdPkEMQ&c%CMkPM#ZRi_XiByVE^!UnlCn3N@L$ zQ~jt?-gwMvp_pv}bCQI9T_`5q&vy8D?|Y)ze&JHyC{?8{{VDjpvPMHD_;Gbyk8aV#m<|pi+7biXqF<_&UjwH^IXk`?C0?Y>fl<(tKQ9O z>Yr$q>DwR!)mPV^l=)dLHM#5G8h$xx9wCM;H^S3jYBoi3$ObpQPa~&LMnBGee)xT8 z;`-uSguAr3l3eCuc-(kUIswy>Us`x`_G{2=)ZFSbU27MN6&5*Ed2s>9%1=J^*65!D zO|wlU#k#o?vm@i8XXPH`1NhZ)h1u%950=&~8hEXw4yY6bcI4o9$Kzg0@nY@ow27cb zNaBo^cM*)M5y#Kp9M{pF9@6c!Z7KAqB2|cz%vEq*x_sWX=H4&(YjxteqlIsvhf71| z7@jk^r00@HY<9(Ho|hHud}Z+It}itUs9JZJq?ku$9B?s=cdyXT3I&T#wLnjp5qB10 zkbTW~ri1V%-@GfE@Eta0c2p!M(9rDrtvG)~(eHT)B@)NXAww~TofK?Jg{8yt{6 zT=p3i^oNQ3J8gYwcWbgKB4d!l*FA84ze?=%?*wSt1+;eBdc1L{$jHGx4?mEr)7nKa z7-eh@qoJ(Hlk9$a`18V-S}R>@fkZZtsUejKEPX~fHOF{kp3WM_)v zXB%UXjIMAn00*ybmHH2-{>~o^tS$h5587T@Ml!KX#CfD}0V{+0^Insoct^wj7Kg~t zbZZ+(03tYolBf?*Gu!J;`I|#)oc{pB--nu4fqXHi>5)rks%l0xmgedx*#VS{vaUcl z&OgM}e;Qjo?S;-HL@_S##j$`7JpOg*(KtnP5s1`ajPxIcVCq_Y7war77-Vh;0AYu{ zB9F~IQ|+naJ3BoeN!2w8E+!%~6enbj)SdkYPWAVH!;J$_(JTUMD>G`dI?BMZ{{W*V z-}OKMGt^|Bb6d8a71OLIjN97VMylBWC*3}y(AQw8400i21Ggo(8UFw|pqVw)m=Bu- zzChYF&OGzJizFrR`_2;Ehy|lM^ z)r4?ha8-tJ^`RJ_75pRc_P^mi@m;QCkEc9RJ$U{%~3Zd^7# zQ|;|kTEfCI0$W6ka7jhM&(gGGgvQDgZU6!SJu7(GtpuIP2;Gp}5GY5%S)@ED-O-1qUiJ2$o5)-qdJ0KmR+ipPsvHbs9V%VZxEw!#JRfi2_+v}A z7xyU{0JZ=RkvxIHPZM8;BJTT>g<>`o6UOT zE0mdka-48LC$GJID}w6T3RvI(LFThABUo6StCD&J>ryhlo}dvH!5bc%TY>&~t{=yK z371}pQU^$`Byk%_fOe@k!TjsdH0aAn%t>7GNga3{Iju>VJl4n#RE7kMWbxXXdg?UV z*!l0lKLKZ;-oR&&J67Ih^RvmkVetCj#0E*Gc$adrxC8xWPB}m4t$e|M`z>1=-}sT*>G~q8 zGb7tZpyZxGUf}hwyV#8F$pfIs>sC@I3YG(K&Hw`${ArNed!H9*KeF()xm)d9TfVwv zPc5SnD2$%$6b$}3uKF*4{u5ZIcZGb?xMWa9{(kZ8n)-#|K0y%(_W|;cUuvOqVG<89 zyu$dw8@M$rM}&BH;kJXItS@M0j%eHkh@dJ)bDi1FYtv_g?Gc~~zyMd4I6V4(6>Y7f zORTDp0LdY`^V^!e6et&Klx!%$=hL-Bo%b_Pchupa@NSv?p(dm(V*5z|Z{XzTraddT zw1yjXRf;%~Sdv009YD#)rCfnXA%Iml>OCZ6(1a|t=w{uu6Y)UrC5|xZ5 zM+HtYKDCx?-r`nJ2vWHmbr`J!DHt)ZAY&jL=Z=&?C_6b&ae_(D6h_z7*?F9$vq` zI*&|N=2CZOj%mLOd?BSwqTfY}$U>z6INO8U{{XLElW(WlS%!w%-YZxbf)N*>`c3IHG!j=-AmC)67(07asGXU)%7QbJdYWdy#{{X*b?@Gk zB1b7ELc}Rh4?&LKtpv8##Vh?9#_>Z*Z4*ciL1CQxkzASZ7Lhp%HH0$2AAgp~oF+tA0+e))vw5vzHMj)|r2mp2i zw{Oa)nllImRXX5=0deh$wQNq}04zw!IUMoQrnpont&Odbf+#dOri@7K@|RJ=ZXBu4 z81=2&726nuw91M&R$>7CYJ)-q`F3DIA%=SWO>4jaU7#L%V054WM-)xwZuKDheLK{0 z1u>Q1z|kx@JCX#xAg*9RPWQ-qA?1cbogjNtoJx2=GqENdYVvIoXF>&K-qMHp

  • <&8vgh``5)c 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 qxGWKCr=%F)D)APa>=L&E2S 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

    n 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π1}Ehqz0O8D^yyld&vV>99DF>| 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Ξ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

    pE}E@-A~J?2Njn){ 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 Date: Fri, 7 Jun 2024 15:51:09 -0600 Subject: [PATCH 269/319] Adds test case around shipped product Removes test case around shipped product for legacy products page --- spec/system/admin/products_spec.rb | 29 ----------------- .../system/admin/products_v3/products_spec.rb | 32 +++++++++++++++++++ 2 files changed, 32 insertions(+), 29 deletions(-) diff --git a/spec/system/admin/products_spec.rb b/spec/system/admin/products_spec.rb index 50340bcea0..c9823e8f03 100644 --- a/spec/system/admin/products_spec.rb +++ b/spec/system/admin/products_spec.rb @@ -283,35 +283,6 @@ RSpec.describe ' expect(page).to have_selector "#p_#{product1.id}" end end - - context 'a shipped product' do - let!(:order) { create(:shipped_order, line_items_count: 1) } - let!(:line_item) { order.reload.line_items.first } - - context "a deleted line item from a shipped order" do - before do - login_as_admin - visit spree.admin_products_path - - within "#p_#{order.variants.first.product_id}" do - accept_alert { page.find("[data-powertip=Remove]").click } - end - end - - it 'removes it from the product list' do - visit spree.admin_products_path - - expect(page).to have_selector "#p_#{product1.id}" - expect(page).not_to have_selector "#p_#{order.variants.first.product_id}" - end - - it 'keeps the line item on the order (admin)' do - visit spree.edit_admin_order_path(order) - - expect(page).to have_content(line_item.product.name.to_s) - end - end - end end describe 'cloning' do diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 7cd4a9e8c5..c861dc933b 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -1336,6 +1336,38 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi end end end + + context 'a shipped product' do + let!(:order) { create(:shipped_order, line_items_count: 1) } + let!(:line_item) { order.reload.line_items.first } + + context "a deleted line item from a shipped order" do + before do + login_as_admin + visit admin_products_url + + # Delete Variant + within variant_selector do + page.find(".vertical-ellipsis-menu").click + page.find(delete_option_selector).click + end + + delete_button_selector = "input[type=button][value='Delete variant']" + within modal_selector do + page.find(delete_button_selector).click + end + + expect(page).not_to have_selector(modal_selector) + expect(page).not_to have_selector(variant_selector) + end + + it 'keeps the line item on the order (admin)' do + visit spree.edit_admin_order_path(order) + + expect(page).to have_content(line_item.product.name.to_s) + end + end + end end end end From ae600d4bd63c8b6e2ff9d3622355c2647f5e8058 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 10 Jun 2024 10:20:05 -0600 Subject: [PATCH 270/319] Removes test case on access rights to the products page Moves test on access rights to authentication_spec The test on accessing the products page as an anonymous does not seem specific to the products page (IMO); as we're testing access rights and the Devise gem (right?) we're probably better off having this test in a more suitable and general context, such as as a spec dealing with authentications and redirects --- spec/system/admin/authentication_spec.rb | 32 ++++++++++++++---------- spec/system/admin/products_spec.rb | 6 ----- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/spec/system/admin/authentication_spec.rb b/spec/system/admin/authentication_spec.rb index 74a7d71412..80bedbd3c9 100644 --- a/spec/system/admin/authentication_spec.rb +++ b/spec/system/admin/authentication_spec.rb @@ -10,21 +10,27 @@ RSpec.describe "Authentication" do let(:user) { create(:user, password: "password", password_confirmation: "password") } let!(:enterprise) { create(:enterprise, owner: user) } # Required for access to admin - it "logging into admin redirects home, then back to admin" do - visit spree.admin_dashboard_path + context "as anonymous user" do + it "logging into admin redirects home, then back to admin" do + visit spree.admin_dashboard_path - fill_in "Email", with: user.email - fill_in "Password", with: user.password - click_login_button - expect(page).to have_content "DASHBOARD" - expect(page).to have_current_path spree.admin_dashboard_path - expect(page).not_to have_content "CONFIGURATION" - end + fill_in "Email", with: user.email + fill_in "Password", with: user.password + click_login_button + expect(page).to have_content "DASHBOARD" + expect(page).to have_current_path spree.admin_dashboard_path + expect(page).not_to have_content "CONFIGURATION" + end - it "viewing my account" do - login_to_admin_section - click_link "Account" - expect(page).to have_current_path spree.account_path + it "viewing my account" do + login_to_admin_section + click_link "Account" + expect(page).to have_current_path spree.account_path + end + + it "is redirected to login page when attempting to access product listing" do + expect { visit spree.admin_products_path }.not_to raise_error + end end context "logged in" do diff --git a/spec/system/admin/products_spec.rb b/spec/system/admin/products_spec.rb index c9823e8f03..c979f34b49 100644 --- a/spec/system/admin/products_spec.rb +++ b/spec/system/admin/products_spec.rb @@ -20,12 +20,6 @@ RSpec.describe ' @enterprise_fees = (0..2).map { |i| create(:enterprise_fee, enterprise: @distributors[i]) } end - context "as anonymous user" do - it "is redirected to login page when attempting to access product listing" do - expect { visit spree.admin_products_path }.not_to raise_error - end - end - describe "creating a product" do let!(:tax_category) { create(:tax_category, name: 'Test Tax Category') } From a8ff6967926fb746828229b3c8d2d0b70b39ef37 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 10 Jun 2024 10:36:30 -0600 Subject: [PATCH 271/319] Removes deleting and cloning test from the legacy bulk product edit page These are covered in the new BUU products page --- spec/system/admin/products_spec.rb | 46 ------------------------------ 1 file changed, 46 deletions(-) diff --git a/spec/system/admin/products_spec.rb b/spec/system/admin/products_spec.rb index c979f34b49..987da7443e 100644 --- a/spec/system/admin/products_spec.rb +++ b/spec/system/admin/products_spec.rb @@ -256,52 +256,6 @@ RSpec.describe ' end end - describe "deleting" do - let!(:product1) { create(:simple_product, name: 'a product to keep', supplier: @supplier) } - - context 'a simple product' do - let!(:product2) { create(:simple_product, name: 'a product to delete', supplier: @supplier) } - - before do - login_as_admin - visit spree.admin_products_path - - within "#p_#{product2.id}" do - accept_alert { page.find("[data-powertip=Remove]").click } - end - visit current_path - end - - it 'removes it from the product list' do - expect(page).not_to have_selector "#p_#{product2.id}" - expect(page).to have_selector "#p_#{product1.id}" - end - end - end - - describe 'cloning' do - let!(:product1) { - create(:simple_product, name: 'a weight product', supplier: @supplier, variant_unit: "weight") - } - - context 'products' do - before do - login_as_admin - visit spree.admin_products_path - end - - it 'creates a copy of the product' do - within "#p_#{product1.id}" do - page.find("[data-powertip=Clone]").click - end - visit current_path - within "#p_#{product1.id + 1}" do - expect(page).to have_input "product_name", with: 'COPY OF a weight product' - end - end - end - end - context "as an enterprise user" do let!(:tax_category) { create(:tax_category) } let(:filter) { { producerFilter: 2 } } From 50359695b533f6f0fc5afa81a29e719e3ce1d4e3 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 10 Jun 2024 10:53:41 -0600 Subject: [PATCH 272/319] Removes comment on issue #7180, now closed --- spec/system/admin/products_spec.rb | 3 --- 1 file changed, 3 deletions(-) diff --git a/spec/system/admin/products_spec.rb b/spec/system/admin/products_spec.rb index 987da7443e..65faf9c4d9 100644 --- a/spec/system/admin/products_spec.rb +++ b/spec/system/admin/products_spec.rb @@ -662,9 +662,6 @@ RSpec.describe ' context "editing a product's variant unit scale" do let(:product) { create(:simple_product, name: 'a product', supplier: @supplier2) } - # TODO below -> assertions commented out refer to bug: - # https://github.com/openfoodfoundation/openfoodnetwork/issues/7180 - before do allow(Spree::Config).to receive(:available_units).and_return("g,lb,oz,kg,T,mL,L,kL") visit spree.edit_admin_product_path product From d5ae9b5bccc2ddb1dd8ad8a1afa8760d49e38124 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 10 Jun 2024 16:41:47 -0600 Subject: [PATCH 273/319] Adds a test to assure that the new product path works as expected The funcitonaliy itself should not be affected by BUU, so the tests remain at ./spec/system/admin/products_spec.rb --- spec/system/admin/products_v3/products_spec.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index c861dc933b..67a404abdb 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -623,6 +623,15 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi end end + describe "creating a new product" do + it "redirects to the New Product page" do + visit admin_products_url + expect { + click_link("New Product") + }.to change { current_path }.to(spree.new_admin_product_path) + end + end + describe "adding variants" do it "creates a new variant" do click_on "New variant" From 2725232902b19ac1184448d073ce4e57de67af09 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 10 Jun 2024 17:23:14 -0600 Subject: [PATCH 274/319] Adds tests around managing rights -> 'as an enterprise manager' --- .../system/admin/products_v3/products_spec.rb | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 67a404abdb..4a24515e1f 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -1381,6 +1381,46 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi end end + context "as an enterprise manager" do + let(:supplier_managed1) { create(:supplier_enterprise, name: 'Supplier Managed 1') } + let(:supplier_managed2) { create(:supplier_enterprise, name: 'Supplier Managed 2') } + let(:supplier_unmanaged) { create(:supplier_enterprise, name: 'Supplier Unmanaged') } + let(:supplier_permitted) { create(:supplier_enterprise, name: 'Supplier Permitted') } + let(:distributor_managed) { create(:distributor_enterprise, name: 'Distributor Managed') } + let(:distributor_unmanaged) { create(:distributor_enterprise, name: 'Distributor Unmanaged') } + let!(:product_supplied) { create(:product, supplier: supplier_managed1, price: 10.0) } + let!(:product_not_supplied) { create(:product, supplier: supplier_unmanaged) } + let!(:product_supplied_permitted) { + create(:product, name: 'Product Permitted', supplier: supplier_permitted, price: 10.0) + } + let(:product_supplied_inactive) { + create(:product, supplier: supplier_managed1, price: 10.0) + } + + let!(:supplier_permitted_relationship) do + create(:enterprise_relationship, parent: supplier_permitted, child: supplier_managed1, + permissions_list: [:manage_products]) + end + + before do + @enterprise_user = create(:user) + @enterprise_user.enterprise_roles.build(enterprise: supplier_managed1).save + @enterprise_user.enterprise_roles.build(enterprise: supplier_managed2).save + @enterprise_user.enterprise_roles.build(enterprise: distributor_managed).save + + login_as @enterprise_user + end + + it "shows only products that I supply" do + visit spree.admin_products_path + + # displays permitted product list only + expect(page).to have_selector row_containing_name(product_supplied.name) + expect(page).to have_selector row_containing_name(product_supplied_permitted.name) + expect(page).not_to have_selector row_containing_name(product_not_supplied.name) + end + end + def create_products(amount) amount.times do |i| create(:simple_product, name: "product #{i}", supplier: producer) From 3b0779d3a73a5a4d2417e9c8bbb6b1c3eee9bf09 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 10 Jun 2024 18:34:48 -0600 Subject: [PATCH 275/319] reverts changes on products_spec --- spec/system/admin/products_spec.rb | 75 ++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/spec/system/admin/products_spec.rb b/spec/system/admin/products_spec.rb index 65faf9c4d9..6749306522 100644 --- a/spec/system/admin/products_spec.rb +++ b/spec/system/admin/products_spec.rb @@ -256,6 +256,81 @@ RSpec.describe ' end end + describe "deleting" do + let!(:product1) { create(:simple_product, name: 'a product to keep', supplier: @supplier) } + + context 'a simple product' do + let!(:product2) { create(:simple_product, name: 'a product to delete', supplier: @supplier) } + + before do + login_as_admin + visit spree.admin_products_path + + within "#p_#{product2.id}" do + accept_alert { page.find("[data-powertip=Remove]").click } + end + visit current_path + end + + it 'removes it from the product list' do + expect(page).not_to have_selector "#p_#{product2.id}" + expect(page).to have_selector "#p_#{product1.id}" + end + end + + context 'a shipped product' do + let!(:order) { create(:shipped_order, line_items_count: 1) } + let!(:line_item) { order.reload.line_items.first } + + context "a deleted line item from a shipped order" do + before do + login_as_admin + visit spree.admin_products_path + + within "#p_#{order.variants.first.product_id}" do + accept_alert { page.find("[data-powertip=Remove]").click } + end + end + + it 'removes it from the product list' do + visit spree.admin_products_path + + expect(page).to have_selector "#p_#{product1.id}" + expect(page).not_to have_selector "#p_#{order.variants.first.product_id}" + end + + it 'keeps the line item on the order (admin)' do + visit spree.edit_admin_order_path(order) + + expect(page).to have_content(line_item.product.name.to_s) + end + end + end + end + + describe 'cloning' do + let!(:product1) { + create(:simple_product, name: 'a weight product', supplier: @supplier, variant_unit: "weight") + } + + context 'products' do + before do + login_as_admin + visit spree.admin_products_path + end + + it 'creates a copy of the product' do + within "#p_#{product1.id}" do + page.find("[data-powertip=Clone]").click + end + visit current_path + within "#p_#{product1.id + 1}" do + expect(page).to have_input "product_name", with: 'COPY OF a weight product' + end + end + end + end + context "as an enterprise user" do let!(:tax_category) { create(:tax_category) } let(:filter) { { producerFilter: 2 } } From c4c7f03b6bdd8132f606c56ceaff71eacfb8a610 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 11 Jun 2024 13:32:26 -0600 Subject: [PATCH 276/319] Addresses Gaetans review Removes assertions from before block, as Delete case is tested elsewhere Declares enterprise_user variable as a non-instance variable --- spec/system/admin/products_v3/products_spec.rb | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 4a24515e1f..9b4aa04b4d 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -1365,9 +1365,6 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi within modal_selector do page.find(delete_button_selector).click end - - expect(page).not_to have_selector(modal_selector) - expect(page).not_to have_selector(variant_selector) end it 'keeps the line item on the order (admin)' do @@ -1403,12 +1400,12 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi end before do - @enterprise_user = create(:user) - @enterprise_user.enterprise_roles.build(enterprise: supplier_managed1).save - @enterprise_user.enterprise_roles.build(enterprise: supplier_managed2).save - @enterprise_user.enterprise_roles.build(enterprise: distributor_managed).save + enterprise_user = create(:user) + enterprise_user.enterprise_roles.build(enterprise: supplier_managed1).save + enterprise_user.enterprise_roles.build(enterprise: supplier_managed2).save + enterprise_user.enterprise_roles.build(enterprise: distributor_managed).save - login_as @enterprise_user + login_as enterprise_user end it "shows only products that I supply" do From 039203485058d5292a14b21f5531ed289b5b8c48 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 11 Jun 2024 14:15:22 -0600 Subject: [PATCH 277/319] Adds test case on enterprise permissions --- .../system/admin/products_v3/products_spec.rb | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 9b4aa04b4d..18e30aa0bc 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -1416,6 +1416,28 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi expect(page).to have_selector row_containing_name(product_supplied_permitted.name) expect(page).not_to have_selector row_containing_name(product_not_supplied.name) end + + it "shows only suppliers that I manage or have permission to" do + visit spree.admin_products_path + + within row_containing_name(product_supplied.name) do + page.has_select?( + '_products_0_supplier_id', + options: [ + supplier_managed1.name, supplier_managed2.name, supplier_permitted.name + ], selected: supplier_managed1.name + ) + end + + within row_containing_name(product_supplied_permitted.name) do + page.has_select?( + '_products_0_supplier_id', + options: [ + supplier_managed1.name, supplier_managed2.name, supplier_permitted.name + ], selected: supplier_managed1.name + ) + end + end end def create_products(amount) From 8e2419040e9740678175ea69999924c504a456e0 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 11 Jun 2024 14:22:50 -0600 Subject: [PATCH 278/319] Adds test around inactive product --- spec/system/admin/products_v3/products_spec.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 18e30aa0bc..3f85a7e64f 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -1438,6 +1438,14 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi ) end end + + it "shows inactive products that I supply" do + product_supplied_inactive + + visit spree.admin_products_path + + expect(page).to have_selector row_containing_name(product_supplied_inactive.name) + end end def create_products(amount) From 417fd21470ec96df4e1025c815d52f037341e652 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 11 Jun 2024 14:28:14 -0600 Subject: [PATCH 279/319] Adds test to check permissions when creating a new product --- .../system/admin/products_v3/products_spec.rb | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 3f85a7e64f..1c08741ad0 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -1446,6 +1446,34 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi expect(page).to have_selector row_containing_name(product_supplied_inactive.name) end + + it "allows me to create a product" do + taxon = create(:taxon, name: 'Fruit') + shipping_category = create(:shipping_category) + + visit spree.admin_products_path + + click_link "New Product" + expect(page).to have_content "New Product" + expect(page).to have_select 'product_supplier_id', + with_options: [supplier_managed1.name, supplier_managed2.name, + supplier_permitted.name] + + within 'fieldset#new_product' do + fill_in 'product_name', with: 'Big Bag Of Apples' + select supplier_permitted.name, from: 'product_supplier_id' + select 'Weight (g)', from: 'product_variant_unit_with_scale' + fill_in 'product_unit_value', with: '100' + fill_in 'product_price', with: '10.00' + select taxon.name, from: 'product_primary_taxon_id' + select shipping_category.name, from: 'product_shipping_category_id' + end + click_button 'Create' + + expect(URI.parse(current_url).path).to eq spree.admin_products_path + expect(flash_message).to eq 'Product "Big Bag Of Apples" has been successfully created!' + expect(page).to have_selector row_containing_name('Big Bag Of Apples') + end end def create_products(amount) From 10dbe77f718b83215d97ae462707ce7c74b074e0 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 11 Jun 2024 14:37:40 -0600 Subject: [PATCH 280/319] Adds test to check permissions when updating a product --- spec/system/admin/products_v3/products_spec.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 1c08741ad0..f9606491e1 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -1474,6 +1474,18 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi expect(flash_message).to eq 'Product "Big Bag Of Apples" has been successfully created!' expect(page).to have_selector row_containing_name('Big Bag Of Apples') end + + it "allows me to update a product" do + visit spree.admin_products_path + + within row_containing_name(product_supplied.name) do + fill_in "Name", with: "Pommes" + end + click_button "Save changes" + + expect(page).to have_content "Changes saved" + expect(page).to have_selector row_containing_name("Pommes") + end end def create_products(amount) From c5decfc58b706ec096ddd871b070da5af0f4401b Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Wed, 12 Jun 2024 00:31:19 +0200 Subject: [PATCH 281/319] Bugfix introduced by last commit - fixed bug created by last commit - refactored to new method respond_with_error - need for 2 cases in request spec: html & turbo --- .../spree/admin/images_controller.rb | 18 ++++++++++-------- spec/requests/admin/images_spec.rb | 14 ++++++++++++++ 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/app/controllers/spree/admin/images_controller.rb b/app/controllers/spree/admin/images_controller.rb index ee11279af4..b58bcf39e5 100644 --- a/app/controllers/spree/admin/images_controller.rb +++ b/app/controllers/spree/admin/images_controller.rb @@ -40,10 +40,7 @@ module Spree redirect_to location_after_save rescue ActiveRecord::RecordInvalid => e - @errors = e.record.errors.map(&:full_message) - respond_to do |format| - format.turbo_stream { render :edit } - end + respond_with_error(e) end def update @@ -55,10 +52,7 @@ module Spree redirect_to location_after_save rescue ActiveRecord::RecordInvalid => e - @errors = e.record.errors.map(&:full_message) - respond_with do |format| - format.turbo_stream { render :edit } - end + respond_with_error(e) end def destroy @@ -108,6 +102,14 @@ module Spree :attachment, :viewable_id, :alt ) end + + def respond_with_error(error) + @errors = error.record.errors.map(&:full_message) + respond_to do |format| + format.html { respond_with(@object) } + format.turbo_stream { render :edit } + end + end end end end diff --git a/spec/requests/admin/images_spec.rb b/spec/requests/admin/images_spec.rb index 5193122060..0fa5a08c76 100644 --- a/spec/requests/admin/images_spec.rb +++ b/spec/requests/admin/images_spec.rb @@ -55,12 +55,26 @@ RSpec.describe "/admin/products/:product_id/images", type: :request do end describe "POST /admin/products/:product_id/images" do + subject { post(spree.admin_product_images_path(product), params:) } + + it_behaves_like "updating images" + end + describe "POST /admin/products/:product_id/images with turbo" do subject { post(spree.admin_product_images_path(product), params:, as: :turbo_stream) } it_behaves_like "updating images" end describe "PATCH /admin/products/:product_id/images/:id" do + let!(:product) { create(:product_with_image) } + subject { + patch(spree.admin_product_image_path(product, product.image), params:) + } + + it_behaves_like "updating images" + end + + describe "PATCH /admin/products/:product_id/images/:id with turbo" do let!(:product) { create(:product_with_image) } subject { patch(spree.admin_product_image_path(product, product.image), params:, as: :turbo_stream) From 68da9c9e04c9981e08229f4029b2379ee2f071ab Mon Sep 17 00:00:00 2001 From: David Cook Date: Mon, 3 Jun 2024 17:39:44 +1000 Subject: [PATCH 282/319] Add form to save column preferences --- .../admin/column_preferences_controller.rb | 35 ++++++++--- app/views/admin/products_v3/_sort.html.haml | 14 +++++ config/locales/en.yml | 3 +- .../column_preference_defaults.rb | 19 ++++++ .../column_preferences_controller_spec.rb | 58 ++++++++++++++----- .../system/admin/products_v3/products_spec.rb | 5 ++ 6 files changed, 112 insertions(+), 22 deletions(-) diff --git a/app/controllers/admin/column_preferences_controller.rb b/app/controllers/admin/column_preferences_controller.rb index 688dfdb750..3f405cfd90 100644 --- a/app/controllers/admin/column_preferences_controller.rb +++ b/app/controllers/admin/column_preferences_controller.rb @@ -4,17 +4,23 @@ module Admin class ColumnPreferencesController < Admin::ResourceController before_action :load_collection, only: [:bulk_update] - respond_to :json - def bulk_update @cp_set.collection.each { |cp| authorize! :bulk_update, cp } if @cp_set.save - render json: @cp_set.collection, each_serializer: Api::Admin::ColumnPreferenceSerializer + respond_to do |format| + format.json { render json: @cp_set.collection, each_serializer: Api::Admin::ColumnPreferenceSerializer } + format.html { render inline: "saved" } #todo + end elsif @cp_set.errors.present? - render json: { errors: @cp_set.errors }, status: :bad_request + respond_to do |format| + format.json { render json: { errors: @cp_set.errors }, status: :bad_request } + format.html { render inline: "errors" } #todo + end else - render body: nil, status: :internal_server_error + respond_to do |format| + format.all { render body: nil, status: :internal_server_error } + end end end @@ -28,9 +34,22 @@ module Admin end def load_collection - collection_attributes = Hash[permitted_params[:column_preferences]. - each_with_index.map { |cp, i| [i, cp] }] - collection_attributes.select!{ |_i, cp| cp[:action_name] == permitted_params[:action_name] } + collection_attributes = nil + + respond_to do |format| + format.json do + collection_attributes = Hash[permitted_params[:column_preferences]. + each_with_index.map { |cp, i| [i, cp] }] + collection_attributes.select!{ |_i, cp| cp[:action_name] == permitted_params[:action_name] } + end + format.html do + # Inject action name and user ID for each column_preference + collection_attributes = permitted_params[:column_preferences].to_h.each_value { |cp| + cp[:action_name] = permitted_params[:action_name] + cp[:user_id] = spree_current_user.id + } + end + end @cp_set = Sets::ColumnPreferenceSet.new(@column_preferences, collection_attributes:) end diff --git a/app/views/admin/products_v3/_sort.html.haml b/app/views/admin/products_v3/_sort.html.haml index f53eec4e76..a8a3f1b335 100644 --- a/app/views/admin/products_v3/_sort.html.haml +++ b/app/views/admin/products_v3/_sort.html.haml @@ -13,3 +13,17 @@ options_for_select([15, 25, 50, 100].collect{|i| [t('.pagination.per_page.per_page', num: i), i]}, pagy&.items), class: "no-input per-page", data: { controller: "tom-select search", action: "change->search#changePerPage", "tom-select-options-value": '{ "plugins": [] }'} + + / Columns dropdown + = form_with url: bulk_update_admin_column_preferences_path, method: :put do |f| + = hidden_field_tag :action_name, "#{controller_name}_#{action_name}" + + - ColumnPreference.for(spree_current_user, "#{controller_name}_#{action_name}").each do |column_preference| + = f.fields_for("column_preferences[]", column_preference) do |cp_form| + = cp_form.hidden_field :id + = cp_form.hidden_field :column_name + %label + = cp_form.check_box :visible + = t("admin.products_page.columns." + column_preference.column_name) + + = f.submit t('admin.column_save_as_default') diff --git a/config/locales/en.yml b/config/locales/en.yml index 47b4b07814..41c76b2cc8 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -571,6 +571,7 @@ en: per_page: "%{count} items per page" colums: Columns columns: + image: Image name: Name unit_scale: Unit scale unit: Unit @@ -661,7 +662,7 @@ en: choose: "Choose..." please_select: Please select... - column_save_as_default: Save As Default + column_save_as_default: Save as default columns: Columns actions: Actions viewing: "Viewing: %{current_view_name}" diff --git a/lib/open_food_network/column_preference_defaults.rb b/lib/open_food_network/column_preference_defaults.rb index 9bb09b2061..39fc0edf69 100644 --- a/lib/open_food_network/column_preference_defaults.rb +++ b/lib/open_food_network/column_preference_defaults.rb @@ -77,6 +77,25 @@ module OpenFoodNetwork } end + def products_v3_index_columns + # TODO: Use consistent translation keys + node = "admin.products_page.columns" + { + image: { name: I18n.t("admin.image"), visible: true }, + producer: { name: I18n.t("admin.producer"), visible: true }, + sku: { name: I18n.t("admin.sku"), visible: false }, + name: { name: I18n.t("admin.name"), visible: true }, + unit: { name: I18n.t("#{node}.unit"), visible: true }, + price: { name: I18n.t("admin.price"), visible: true }, + on_hand: { name: I18n.t("admin.on_hand"), visible: true }, + on_demand: { name: I18n.t("admin.on_demand"), visible: true }, + category: { name: I18n.t("#{node}.category"), visible: false }, + tax_category: { name: I18n.t("#{node}.tax_category"), visible: false }, + inherits_properties: { name: I18n.t("#{node}.inherits_properties"), visible: false }, + import_date: { name: I18n.t("#{node}.import_date"), visible: false } + } + end + def enterprises_index_columns node = "admin.enterprises.index" { diff --git a/spec/controllers/admin/column_preferences_controller_spec.rb b/spec/controllers/admin/column_preferences_controller_spec.rb index 41f34b163e..5cd8707bb0 100644 --- a/spec/controllers/admin/column_preferences_controller_spec.rb +++ b/spec/controllers/admin/column_preferences_controller_spec.rb @@ -9,13 +9,26 @@ RSpec.describe Admin::ColumnPreferencesController, type: :controller do let!(:user1) { create(:user) } let!(:user2) { create(:user) } let!(:enterprise) { create(:enterprise, owner: user1, users: [user1, user2]) } + let!(:column_preference) { + ColumnPreference.create(user_id: user1.id, action_name: 'enterprises_index', + column_name: "name", visible: true) + } + + shared_examples "where I own the preferences submitted" do + before do + allow(controller).to receive(:spree_current_user) { user1 } + end + + it "allows me to update the column preferences" do + spree_put :bulk_update, format: request_format, action_name: "enterprises_index", + column_preferences: column_preference_params + expect(ColumnPreference.where(user_id: user1.id, + action_name: 'enterprises_index').count).to be 3 + end + end context "json" do - let!(:column_preference) { - ColumnPreference.create(user_id: user1.id, action_name: 'enterprises_index', - column_name: "name", visible: true) - } - + let(:request_format) { :json } let(:column_preference_params) { [ { id: column_preference.id, user_id: user1.id, action_name: "enterprises_index", @@ -27,28 +40,47 @@ RSpec.describe Admin::ColumnPreferencesController, type: :controller do ] } + it_behaves_like "where I own the preferences submitted" + context "where I don't own the preferences submitted" do before do allow(controller).to receive(:spree_current_user) { user2 } end it "prevents me from updating the column preferences" do - spree_put :bulk_update, format: :json, action_name: "enterprises_index", + spree_put :bulk_update, format: request_format, action_name: "enterprises_index", column_preferences: column_preference_params expect(ColumnPreference.count).to be 1 end end + end - context "where I own the preferences submitted" do + context "html" do + let(:request_format) { :html } + let(:column_preference_params) { + { + '0': { id: column_preference.id, column_name: "name", visible: "0" }, + '1': { id: nil, column_name: "producer", visible: "1" }, + '2': { id: nil, column_name: "status", visible: "1" }, + } + } + + it_behaves_like "where I own the preferences submitted" + + context "where I don't own the preferences submitted" do before do - allow(controller).to receive(:spree_current_user) { user1 } + allow(controller).to receive(:spree_current_user) { user2 } end - it "allows me to update the column preferences" do - spree_put :bulk_update, format: :json, action_name: "enterprises_index", - column_preferences: column_preference_params - expect(ColumnPreference.where(user_id: user1.id, - action_name: 'enterprises_index').count).to be 3 + # This has the same effect as the JSON action, but due to differing implementation, + # it has different expections. + it "prevents me from updating the column preferences" do + expect { + spree_put :bulk_update, format: request_format, action_name: "enterprises_index", + column_preferences: column_preference_params + }.to raise_error(ActiveRecord::RecordNotUnique) + + expect(column_preference.reload.visible).to eq true end end end diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 9f9ee35ecd..73db0e4bca 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -43,6 +43,11 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi expect(page).to have_selector "th", text: "Price" expect(page).to have_selector "th", text: "On Hand" + uncheck "Name" + click_on "Save as default" + refresh + expect(page).to have_unchecked_field "Name" + pending "Pending implementation, issue #11055" toggle_columns /^.{0,1}Producer$/i From 50469fe53e990f8290d4c53132bce6e044848692 Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 5 Jun 2024 09:57:50 +1000 Subject: [PATCH 283/319] Use consistent translation keys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ensures that the column table names match the names in the selector. I thought 'there must be a way to set the translation scope once'. With Rails, there's usually a way. Thankfully this one was quite simple. Or is it too much magic.. 🧙 https://coderwall.com/p/dvme9q/set-scope-of-i18n-translations-in-rails-with-a-block --- .../column_preference_defaults.rb | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/lib/open_food_network/column_preference_defaults.rb b/lib/open_food_network/column_preference_defaults.rb index 39fc0edf69..f02d5c63d1 100644 --- a/lib/open_food_network/column_preference_defaults.rb +++ b/lib/open_food_network/column_preference_defaults.rb @@ -78,22 +78,20 @@ module OpenFoodNetwork end def products_v3_index_columns - # TODO: Use consistent translation keys - node = "admin.products_page.columns" - { - image: { name: I18n.t("admin.image"), visible: true }, - producer: { name: I18n.t("admin.producer"), visible: true }, - sku: { name: I18n.t("admin.sku"), visible: false }, - name: { name: I18n.t("admin.name"), visible: true }, - unit: { name: I18n.t("#{node}.unit"), visible: true }, - price: { name: I18n.t("admin.price"), visible: true }, - on_hand: { name: I18n.t("admin.on_hand"), visible: true }, - on_demand: { name: I18n.t("admin.on_demand"), visible: true }, - category: { name: I18n.t("#{node}.category"), visible: false }, - tax_category: { name: I18n.t("#{node}.tax_category"), visible: false }, - inherits_properties: { name: I18n.t("#{node}.inherits_properties"), visible: false }, - import_date: { name: I18n.t("#{node}.import_date"), visible: false } - } + I18n.with_options scope: 'admin.products_page.columns' do + { + image: { name: t(:image), visible: true }, + name: { name: t(:name), visible: true }, + sku: { name: t(:sku), visible: false }, + unit: { name: t(:unit), visible: true }, + price: { name: t(:price), visible: true }, + on_hand: { name: t(:on_hand), visible: true }, + producer: { name: t(:producer), visible: true }, + category: { name: t(:category), visible: false }, + tax_category: { name: t(:tax_category), visible: false }, + inherits_properties: { name: t(:inherits_properties), visible: false }, + } + end end def enterprises_index_columns From 89cedc42870566981bd8b34e90e11606b7c15406 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 4 Jun 2024 15:59:10 +1000 Subject: [PATCH 284/319] Submit and render with Turbo Stream --- .../admin/column_preferences_controller.rb | 11 ++++++++--- app/views/admin/column_preferences/_form.html.haml | 12 ++++++++++++ .../bulk_update.turbo_stream.haml | 3 +++ app/views/admin/products_v3/_sort.html.haml | 13 +------------ config/locales/en.yml | 4 ++++ .../admin/column_preferences_controller_spec.rb | 4 ++-- 6 files changed, 30 insertions(+), 17 deletions(-) create mode 100644 app/views/admin/column_preferences/_form.html.haml create mode 100644 app/views/admin/column_preferences/bulk_update.turbo_stream.haml diff --git a/app/controllers/admin/column_preferences_controller.rb b/app/controllers/admin/column_preferences_controller.rb index 3f405cfd90..9d39e050fb 100644 --- a/app/controllers/admin/column_preferences_controller.rb +++ b/app/controllers/admin/column_preferences_controller.rb @@ -10,12 +10,17 @@ module Admin if @cp_set.save respond_to do |format| format.json { render json: @cp_set.collection, each_serializer: Api::Admin::ColumnPreferenceSerializer } - format.html { render inline: "saved" } #todo + format.turbo_stream { + flash.now[:success] = t('.success') + render :bulk_update, locals: { action: permitted_params[:action_name] } } end elsif @cp_set.errors.present? respond_to do |format| format.json { render json: { errors: @cp_set.errors }, status: :bad_request } - format.html { render inline: "errors" } #todo + format.turbo_stream { + flash.now[:error] = t('.error') + render :bulk_update, locals: { action: permitted_params[:action_name] } + } end else respond_to do |format| @@ -42,7 +47,7 @@ module Admin each_with_index.map { |cp, i| [i, cp] }] collection_attributes.select!{ |_i, cp| cp[:action_name] == permitted_params[:action_name] } end - format.html do + format.all do # Inject action name and user ID for each column_preference collection_attributes = permitted_params[:column_preferences].to_h.each_value { |cp| cp[:action_name] = permitted_params[:action_name] diff --git a/app/views/admin/column_preferences/_form.html.haml b/app/views/admin/column_preferences/_form.html.haml new file mode 100644 index 0000000000..7e58ba68eb --- /dev/null +++ b/app/views/admin/column_preferences/_form.html.haml @@ -0,0 +1,12 @@ += form_with url: bulk_update_admin_column_preferences_path, method: :put, id: :bulk_admin_column_preferences_form do |f| + = hidden_field_tag :action_name, action + + - ColumnPreference.for(spree_current_user, action).each_with_index do |column_preference, index| + = f.fields_for("column_preferences", column_preference, index:) do |cp_form| + = cp_form.hidden_field :id + = cp_form.hidden_field :column_name + %label + = cp_form.check_box :visible + = t("admin.products_page.columns." + column_preference.column_name) + + = f.submit t('admin.column_save_as_default') diff --git a/app/views/admin/column_preferences/bulk_update.turbo_stream.haml b/app/views/admin/column_preferences/bulk_update.turbo_stream.haml new file mode 100644 index 0000000000..70836e4657 --- /dev/null +++ b/app/views/admin/column_preferences/bulk_update.turbo_stream.haml @@ -0,0 +1,3 @@ += turbo_stream.replace "bulk_admin_column_preferences_form" do + = render partial: "admin/shared/flashes", locals: { flashes: flash } if defined? flash + = render partial: 'form', locals: { action: } diff --git a/app/views/admin/products_v3/_sort.html.haml b/app/views/admin/products_v3/_sort.html.haml index a8a3f1b335..f5d3d6329d 100644 --- a/app/views/admin/products_v3/_sort.html.haml +++ b/app/views/admin/products_v3/_sort.html.haml @@ -15,15 +15,4 @@ data: { controller: "tom-select search", action: "change->search#changePerPage", "tom-select-options-value": '{ "plugins": [] }'} / Columns dropdown - = form_with url: bulk_update_admin_column_preferences_path, method: :put do |f| - = hidden_field_tag :action_name, "#{controller_name}_#{action_name}" - - - ColumnPreference.for(spree_current_user, "#{controller_name}_#{action_name}").each do |column_preference| - = f.fields_for("column_preferences[]", column_preference) do |cp_form| - = cp_form.hidden_field :id - = cp_form.hidden_field :column_name - %label - = cp_form.check_box :visible - = t("admin.products_page.columns." + column_preference.column_name) - - = f.submit t('admin.column_save_as_default') + = render partial: "admin/column_preferences/form", locals: { action: "products_v3_index" } diff --git a/config/locales/en.yml b/config/locales/en.yml index 41c76b2cc8..c3bdca88a8 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -761,6 +761,10 @@ en: balance_due: "Balance Due" destroy: has_associated_subscriptions: "Delete failed: This customer has active subscriptions. Cancel them first." + column_preferences: + bulk_update: + success: "Column preferences saved" + error: "Column preferences could not be saved" contents: edit: title: Content diff --git a/spec/controllers/admin/column_preferences_controller_spec.rb b/spec/controllers/admin/column_preferences_controller_spec.rb index 5cd8707bb0..c29153534d 100644 --- a/spec/controllers/admin/column_preferences_controller_spec.rb +++ b/spec/controllers/admin/column_preferences_controller_spec.rb @@ -55,8 +55,8 @@ RSpec.describe Admin::ColumnPreferencesController, type: :controller do end end - context "html" do - let(:request_format) { :html } + context "turbo_stream" do + let(:request_format) { :turbo_stream } let(:column_preference_params) { { '0': { id: column_preference.id, column_name: "name", visible: "0" }, From d81c3cb489d09222e3be6ccd0bc7711f2c2158e3 Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 5 Jun 2024 12:50:26 +1000 Subject: [PATCH 285/319] Show/hide columns based on checkboxes The cols could have been a lot cleaner with simple classnames, but I preferred to mark up in a way that reveals the purpose (otherwise they could be used for styling). It doesn't seem to be any faster comparing querySelector('[data]') vs class, or iterating through the dom nodes. --- .../admin/column_preferences/_form.html.haml | 6 ++-- app/views/admin/products_v3/_table.html.haml | 22 ++++++------- .../column_preferences_controller.js | 33 +++++++++++++++++++ .../column_preference_defaults.rb | 1 + .../system/admin/products_v3/products_spec.rb | 11 ++++--- 5 files changed, 56 insertions(+), 17 deletions(-) create mode 100644 app/webpacker/controllers/column_preferences_controller.js diff --git a/app/views/admin/column_preferences/_form.html.haml b/app/views/admin/column_preferences/_form.html.haml index 7e58ba68eb..969f4a3a9c 100644 --- a/app/views/admin/column_preferences/_form.html.haml +++ b/app/views/admin/column_preferences/_form.html.haml @@ -1,4 +1,6 @@ -= form_with url: bulk_update_admin_column_preferences_path, method: :put, id: :bulk_admin_column_preferences_form do |f| += form_with url: bulk_update_admin_column_preferences_path, method: :put, + id: :bulk_admin_column_preferences_form, + html: { 'data-controller': "column-preferences" } do |f| = hidden_field_tag :action_name, action - ColumnPreference.for(spree_current_user, action).each_with_index do |column_preference, index| @@ -6,7 +8,7 @@ = cp_form.hidden_field :id = cp_form.hidden_field :column_name %label - = cp_form.check_box :visible + = cp_form.check_box :visible, 'data-column-name': column_preference.column_name = t("admin.products_page.columns." + column_preference.column_name) = f.submit t('admin.column_save_as_default') diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 464130d181..eb917c0ad8 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -15,17 +15,17 @@ %table.products %colgroup - %col{ width:"56" }= # Img (size + padding) - %col= # (grow to fill) Name - %col{ width:"5%"} - %col{ width:"8%"} - %col{ width:"8%"} - %col{ width:"5%"} - %col{ width:"10%"} - %col{ width:"15%"}= # Producer - %col{ width:"8%"} - %col{ width:"8%"} - %col{ width:"8%"} + %col{ width:"56", 'data-column-preferences-name': :image }= # (size + padding) + %col{ 'data-column-preferences-name': :name }= # (grow to fill) + %col{ width:"5%", 'data-column-preferences-name': :sku } + %col{ width:"8%", 'data-column-preferences-name': :unit_scale } + %col{ width:"8%", 'data-column-preferences-name': :unit } + %col{ width:"5%", 'data-column-preferences-name': :price} + %col{ width:"10%", 'data-column-preferences-name': :on_hand} + %col{ width:"15%", 'data-column-preferences-name': :producer} + %col{ width:"8%", 'data-column-preferences-name': :category} + %col{ width:"8%", 'data-column-preferences-name': :tax_category} + %col{ width:"8%", 'data-column-preferences-name': :inherits_properties} %col{ width:"8%"}= # Actions %thead %tr diff --git a/app/webpacker/controllers/column_preferences_controller.js b/app/webpacker/controllers/column_preferences_controller.js new file mode 100644 index 0000000000..31ec0bb65c --- /dev/null +++ b/app/webpacker/controllers/column_preferences_controller.js @@ -0,0 +1,33 @@ +import { Controller } from "stimulus"; + + +// Manage column visibility according to checkbox selection +// +export default class ColumnPreferencesController extends Controller { + connect() { + this.checkboxes = this.element.querySelectorAll('input[type=checkbox]'); + + for (const element of this.checkboxes) { + // On initial load + this.#showHideColumn(element); + // On checkbox changed + element.addEventListener("change", this.#showHideColumn.bind(this)); + } + } + + // private + + #showHideColumn(e) { + const element = e.target || e; + const name = element.dataset.columnName; + const selector = `col[data-column-preferences-name="${name}"]`; + const column = document.querySelector(selector); + + if (column == null) { + console.error(`ColumnPreferencesController: could not find ${selector}`); + return; + } + + column.style.visibility = (element.checked ? '' : 'collapse'); + } +} diff --git a/lib/open_food_network/column_preference_defaults.rb b/lib/open_food_network/column_preference_defaults.rb index f02d5c63d1..7451145d10 100644 --- a/lib/open_food_network/column_preference_defaults.rb +++ b/lib/open_food_network/column_preference_defaults.rb @@ -84,6 +84,7 @@ module OpenFoodNetwork name: { name: t(:name), visible: true }, sku: { name: t(:sku), visible: false }, unit: { name: t(:unit), visible: true }, + unit_scale: { name: t(:unit_scale), visible: true }, price: { name: t(:price), visible: true }, on_hand: { name: t(:on_hand), visible: true }, producer: { name: t(:producer), visible: true }, diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 73db0e4bca..076393006b 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -37,20 +37,23 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi visit admin_products_url end - it "shows a column display dropdown, which shows a list of columns when clicked" do + it "hides column and remembers saved preference" do expect(page).to have_selector "th", text: "Name" expect(page).to have_selector "th", text: "Producer" expect(page).to have_selector "th", text: "Price" expect(page).to have_selector "th", text: "On Hand" uncheck "Name" + + expect(page).not_to have_selector "th", text: "Name" + expect(page).to have_selector "th", text: "Producer" + expect(page).to have_selector "th", text: "Price" + expect(page).to have_selector "th", text: "On Hand" + click_on "Save as default" refresh expect(page).to have_unchecked_field "Name" - pending "Pending implementation, issue #11055" - toggle_columns /^.{0,1}Producer$/i - expect(page).not_to have_selector "th", text: "Name" expect(page).to have_selector "th", text: "Producer" expect(page).to have_selector "th", text: "Price" From ae66a85cc57d56ac68b3d14a3557744c39f04b1e Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 5 Jun 2024 14:06:03 +1000 Subject: [PATCH 286/319] Show error messages There shouldn't normally be errors, but I got one due to bad data during development, and this helped sort it out. --- app/controllers/admin/column_preferences_controller.rb | 3 ++- config/locales/en.yml | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/admin/column_preferences_controller.rb b/app/controllers/admin/column_preferences_controller.rb index 9d39e050fb..abe14e4d22 100644 --- a/app/controllers/admin/column_preferences_controller.rb +++ b/app/controllers/admin/column_preferences_controller.rb @@ -18,7 +18,7 @@ module Admin respond_to do |format| format.json { render json: { errors: @cp_set.errors }, status: :bad_request } format.turbo_stream { - flash.now[:error] = t('.error') + flash.now[:error] = @cp_set.errors.full_messages.to_sentence render :bulk_update, locals: { action: permitted_params[:action_name] } } end @@ -55,6 +55,7 @@ module Admin } end end + @cp_set = Sets::ColumnPreferenceSet.new(@column_preferences, collection_attributes:) end diff --git a/config/locales/en.yml b/config/locales/en.yml index c3bdca88a8..a5881d9c68 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -764,7 +764,6 @@ en: column_preferences: bulk_update: success: "Column preferences saved" - error: "Column preferences could not be saved" contents: edit: title: Content From e516e7f33559a4b9bf7bd49f7156479d30d0b06b Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 5 Jun 2024 15:19:58 +1000 Subject: [PATCH 287/319] Tweak checkbox dropdown styles Use the new design for checkboxes and fix alignment. Removes redesigned-input, which is a small regression on the old design, but I think it's acceptable bcause we're going to shut it down soon. --- .../admin/columns_dropdown.html.haml | 5 ++-- ...ultiple_checked_select_component.html.haml | 4 +-- app/webpacker/css/admin/components/input.scss | 29 ------------------- .../css/admin_v3/components/dropdown.scss | 12 ++++---- 4 files changed, 12 insertions(+), 38 deletions(-) diff --git a/app/assets/javascripts/templates/admin/columns_dropdown.html.haml b/app/assets/javascripts/templates/admin/columns_dropdown.html.haml index 61f42974db..7895d7070e 100644 --- a/app/assets/javascripts/templates/admin/columns_dropdown.html.haml +++ b/app/assets/javascripts/templates/admin/columns_dropdown.html.haml @@ -5,8 +5,9 @@ %div.menu{ 'ng-show' => "expanded" } .menu_items .menu_item{ "ng-repeat": "column in columns", "ng-click": "toggle(column);" } - %input.redesigned-input{ type: "checkbox", "ng-checked": "column.visible" } - {{ column.name }} + %input{ type: "checkbox", "ng-checked": "column.visible" } + %span + {{ column.name }} %hr %div.menu_item.text-center %input.fullwidth.orange{ type: "button", "ng-value": "saved() ? 'Saved': 'Saving'", "ng-show": "saved() || saving", "ng-disabled": "saved()" } diff --git a/app/components/multiple_checked_select_component/multiple_checked_select_component.html.haml b/app/components/multiple_checked_select_component/multiple_checked_select_component.html.haml index 8dedce27ca..c9c0abebec 100644 --- a/app/components/multiple_checked_select_component/multiple_checked_select_component.html.haml +++ b/app/components/multiple_checked_select_component/multiple_checked_select_component.html.haml @@ -9,5 +9,5 @@ %div.menu_items - @options.each do |option| %label.menu_item{ "data-multiple-checked-select-target": "option", "data-value": option[1], "data-label": option[0] } - %input.redesigned-input{ type: "checkbox", checked: @selected.include?(option[1]), name: "#{@name}[]", value: option[1] } - = option[0] + %input{ type: "checkbox", checked: @selected.include?(option[1]), name: "#{@name}[]", value: option[1] } + %span= option[0] diff --git a/app/webpacker/css/admin/components/input.scss b/app/webpacker/css/admin/components/input.scss index 1c1a847e56..2b390bce6d 100644 --- a/app/webpacker/css/admin/components/input.scss +++ b/app/webpacker/css/admin/components/input.scss @@ -6,32 +6,3 @@ } } } - -input[type="checkbox"].redesigned-input { - position: relative; - top: 1px; - -moz-appearance: none; - -webkit-appearance: none; - -o-appearance: none; - appearance: none; - outline: none; - content: none; - cursor: pointer; - - &:before { - font-family: "FontAwesome"; - content: "\f00c"; - font-size: 15px; - color: transparent !important; - background: transparent !important; - display: block; - width: 15px; - height: 15px; - border: 1px solid #809cb1; - margin-right: 7px; - } - - &:checked:before { - color: $color-txt-text !important; - } -} diff --git a/app/webpacker/css/admin_v3/components/dropdown.scss b/app/webpacker/css/admin_v3/components/dropdown.scss index 8a101d1c8d..25531a1467 100644 --- a/app/webpacker/css/admin_v3/components/dropdown.scss +++ b/app/webpacker/css/admin_v3/components/dropdown.scss @@ -101,8 +101,6 @@ > span { width: auto; - text-transform: uppercase; - font-size: 85%; font-weight: 600; } @@ -190,7 +188,6 @@ display: inline-block; list-style: none; width: auto; - text-transform: uppercase; font-size: 85%; font-weight: 600; margin: -8px -15px; @@ -212,6 +209,7 @@ border: 1px solid $lighter-grey; background-color: $lighter-grey; padding: 0px; + line-height: normal; &:hover { border-color: $lighter-grey; @@ -263,8 +261,12 @@ cursor: pointer; padding-top: 4px; padding-bottom: 5px; - text-transform: uppercase; - font-size: 85%; + font-size: inherit; + + // Align checkbox and text + & > * { + vertical-align: middle; + } } } } From c6452efa92390f54d5aa00be80e3ebf83ec8951c Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 11 Jun 2024 13:52:05 +1000 Subject: [PATCH 288/319] Isolate styles for their intended use This also improves the styling of the orders action dropdowns (on index and edit pages). It adds the new chevron icon, but needed some fiddling to make it look right. --- .../css/admin_v3/components/dropdown.scss | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/app/webpacker/css/admin_v3/components/dropdown.scss b/app/webpacker/css/admin_v3/components/dropdown.scss index 25531a1467..a0b3d745a1 100644 --- a/app/webpacker/css/admin_v3/components/dropdown.scss +++ b/app/webpacker/css/admin_v3/components/dropdown.scss @@ -179,6 +179,23 @@ } } + summary:after { + content: "\f077"; + font-family: FontAwesome; + font-size: 13px; + } + + + &[open] >, + details[open] > { + summary:after { + content: "\f078"; + font-family: FontAwesome; + } + } +} + +.ofn-drop-down:not(.ofn-dropdown-v2) { > details { margin: -7px -15px; padding: 7px 15px; @@ -188,20 +205,14 @@ display: inline-block; list-style: none; width: auto; - font-size: 85%; - font-weight: 600; margin: -8px -15px; padding: 8px 15px; - } - > details > summary:after { - content: "\f0d7"; - font-family: FontAwesome; - } - - > details[open] > summary:after { - content: "\f0d8"; - font-family: FontAwesome; + &:after { + position: relative; + bottom: 1px; + font-size: 12px; + } } } From 9ba3b4f2d55209858ca9ed6f7f1a67aeaec2e1e8 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 11 Jun 2024 15:51:33 +1000 Subject: [PATCH 289/319] Fix up styles --- app/views/admin/column_preferences/_form.html.haml | 2 +- app/views/admin/products_v3/_sort.html.haml | 2 +- app/webpacker/css/admin/products_v3.scss | 10 +++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/views/admin/column_preferences/_form.html.haml b/app/views/admin/column_preferences/_form.html.haml index 969f4a3a9c..88ccd1a981 100644 --- a/app/views/admin/column_preferences/_form.html.haml +++ b/app/views/admin/column_preferences/_form.html.haml @@ -1,5 +1,5 @@ = form_with url: bulk_update_admin_column_preferences_path, method: :put, - id: :bulk_admin_column_preferences_form, + id: :bulk_admin_column_preferences_form, class: "column-preferences", html: { 'data-controller': "column-preferences" } do |f| = hidden_field_tag :action_name, action diff --git a/app/views/admin/products_v3/_sort.html.haml b/app/views/admin/products_v3/_sort.html.haml index f5d3d6329d..6749b3b07a 100644 --- a/app/views/admin/products_v3/_sort.html.haml +++ b/app/views/admin/products_v3/_sort.html.haml @@ -1,5 +1,5 @@ #sort - %div + %div.pagination-description - if pagy.present? = t(".pagination.total_html", total: pagy.count, from: pagy.from, to: pagy.to) diff --git a/app/webpacker/css/admin/products_v3.scss b/app/webpacker/css/admin/products_v3.scss index 2b277f0e33..646c2d074b 100644 --- a/app/webpacker/css/admin/products_v3.scss +++ b/app/webpacker/css/admin/products_v3.scss @@ -214,6 +214,10 @@ display: none; } + .pagination-description { + flex-grow: 1; // Grow to fill space + } + .with-dropdown { display: flex; justify-content: space-between; @@ -221,7 +225,11 @@ gap: 10px; } .per-page { - width: 10em; + width: 9em; + } + + .column-preferences .ofn-drop-down-label { + width: 13em; } } From 8c75e6baa8de6a69b0efafa6536aa8bf8b259348 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 11 Jun 2024 15:27:04 +1000 Subject: [PATCH 290/319] Make column selector a dropdown With some styling tweaks. --- .../admin/column_preferences/_form.html.haml | 25 +++++++---- .../controllers/dropdown_controller.js | 1 + .../css/admin_v3/components/dropdown.scss | 12 ++++- spec/support/request/admin_helper.rb | 12 +++-- .../system/admin/products_v3/products_spec.rb | 44 ++++++++++++------- 5 files changed, 65 insertions(+), 29 deletions(-) diff --git a/app/views/admin/column_preferences/_form.html.haml b/app/views/admin/column_preferences/_form.html.haml index 88ccd1a981..6296444b02 100644 --- a/app/views/admin/column_preferences/_form.html.haml +++ b/app/views/admin/column_preferences/_form.html.haml @@ -3,12 +3,21 @@ html: { 'data-controller': "column-preferences" } do |f| = hidden_field_tag :action_name, action - - ColumnPreference.for(spree_current_user, action).each_with_index do |column_preference, index| - = f.fields_for("column_preferences", column_preference, index:) do |cp_form| - = cp_form.hidden_field :id - = cp_form.hidden_field :column_name - %label - = cp_form.check_box :visible, 'data-column-name': column_preference.column_name - = t("admin.products_page.columns." + column_preference.column_name) + / DC: this makes my Chrome DevTools crash when inspecting the

    element. If problem continues, we need to use a different method. + %details.ofn-drop-down.ofn-drop-down-v2.right{ 'data-controller': "dropdown" } + %summary.ofn-drop-down-label + = t('admin.columns') + %span.icon-caret - = f.submit t('admin.column_save_as_default') + .menu + .menu_items + - ColumnPreference.for(spree_current_user, action).each_with_index do |column_preference, index| + = f.fields_for("column_preferences", column_preference, index:) do |cp_form| + = cp_form.hidden_field :id + = cp_form.hidden_field :column_name + %label.menu_item + = cp_form.check_box :visible, 'data-column-name': column_preference.column_name + %span= t("admin.products_page.columns." + column_preference.column_name) + + .actions + = f.submit t('admin.column_save_as_default'), class: "secondary fullwidth" diff --git a/app/webpacker/controllers/dropdown_controller.js b/app/webpacker/controllers/dropdown_controller.js index 844289e12c..701fdf27a7 100644 --- a/app/webpacker/controllers/dropdown_controller.js +++ b/app/webpacker/controllers/dropdown_controller.js @@ -1,5 +1,6 @@ import { Controller } from "stimulus"; +// Close a
    element when click outside export default class extends Controller { connect() { diff --git a/app/webpacker/css/admin_v3/components/dropdown.scss b/app/webpacker/css/admin_v3/components/dropdown.scss index a0b3d745a1..32ed4ec4f1 100644 --- a/app/webpacker/css/admin_v3/components/dropdown.scss +++ b/app/webpacker/css/admin_v3/components/dropdown.scss @@ -111,7 +111,7 @@ top: 100%; left: 0px; padding: 5px 0px; - border: 1px solid #adadad; + border-radius: $border-radius; background-color: #ffffff; box-shadow: 1px 3px 10px #888888; z-index: 100; @@ -280,6 +280,16 @@ } } } + + .actions { + margin-top: 5px; + margin-right: 15px; // Compensate for scrollbar on menu_items + padding: 2px 10px; + + &:hover { + background-color: inherit; + } + } } .ofn-drop-down.ofn-drop-down-v2 { diff --git a/spec/support/request/admin_helper.rb b/spec/support/request/admin_helper.rb index 60e0fcdbd4..eb06f34b12 100644 --- a/spec/support/request/admin_helper.rb +++ b/spec/support/request/admin_helper.rb @@ -3,10 +3,10 @@ module AdminHelper def toggle_columns(*labels) # open dropdown - # case insensitive search for "Columns" text - find("div#columns-dropdown", text: /columns/i).click + columns_dropdown = ofn_drop_down("Columns") + columns_dropdown.click - within "div#columns-dropdown" do + within columns_dropdown do labels.each do |label| # Convert label to case-insensitive regexp if not one already label = /#{label}/i unless label.is_a?(Regexp) @@ -16,6 +16,10 @@ module AdminHelper end # close dropdown - find("div#columns-dropdown", text: /columns/i).click + columns_dropdown.click + end + + def ofn_drop_down(label) + find(".ofn-drop-down", text: /#{label}/i) end end diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 076393006b..5d76e3e522 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -3,6 +3,7 @@ require "system_helper" RSpec.describe 'As an enterprise user, I can manage my products', feature: :admin_style_v3 do + include AdminHelper include WebHelper include AuthenticationHelper include FileHelper @@ -38,26 +39,37 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi end it "hides column and remembers saved preference" do + # Name shows by default + expect(page).to have_checked_field "Name" expect(page).to have_selector "th", text: "Name" + expect_other_columns_visible + + # Name is hidden + ofn_drop_down("Columns").click + within ofn_drop_down("Columns") do + uncheck "Name" + end + # expect(page).not_to have_selector "th", text: "Name" # column is not visible, but capybara doesn't understand yet. + expect_other_columns_visible + + # Preference saved + click_on "Save as default" + expect(page).to have_content "Column preferences saved" + refresh + + # Preference remembered + ofn_drop_down("Columns").click + within ofn_drop_down("Columns") do + expect(page).to have_unchecked_field "Name" + end + # expect(page).not_to have_selector "th", text: "Name" + expect_other_columns_visible + end + + def expect_other_columns_visible expect(page).to have_selector "th", text: "Producer" expect(page).to have_selector "th", text: "Price" expect(page).to have_selector "th", text: "On Hand" - - uncheck "Name" - - expect(page).not_to have_selector "th", text: "Name" - expect(page).to have_selector "th", text: "Producer" - expect(page).to have_selector "th", text: "Price" - expect(page).to have_selector "th", text: "On Hand" - - click_on "Save as default" - refresh - expect(page).to have_unchecked_field "Name" - - expect(page).not_to have_selector "th", text: "Name" - expect(page).to have_selector "th", text: "Producer" - expect(page).to have_selector "th", text: "Price" - expect(page).to have_selector "th", text: "On Hand" end end From 0190d6f31df62761c1d6ea5b0739c6bfe33b851a Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 11 Jun 2024 15:52:36 +1000 Subject: [PATCH 291/319] Update dropdown styles The v2 dropdown is used in various places, and now looks more in line with the new design. --- .../css/admin_v3/components/dropdown.scss | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/app/webpacker/css/admin_v3/components/dropdown.scss b/app/webpacker/css/admin_v3/components/dropdown.scss index 32ed4ec4f1..6f8bd99c8a 100644 --- a/app/webpacker/css/admin_v3/components/dropdown.scss +++ b/app/webpacker/css/admin_v3/components/dropdown.scss @@ -180,8 +180,10 @@ } summary:after { - content: "\f077"; + content: "\f078"; font-family: FontAwesome; + position: relative; + top: 3px; font-size: 13px; } @@ -189,7 +191,7 @@ &[open] >, details[open] > { summary:after { - content: "\f078"; + content: "\f077"; font-family: FontAwesome; } } @@ -210,7 +212,7 @@ &:after { position: relative; - bottom: 1px; + top: -1px; font-size: 12px; } } @@ -221,8 +223,10 @@ background-color: $lighter-grey; padding: 0px; line-height: normal; + @include border-radius($border-radius); - &:hover { + &:hover, + &.expanded { border-color: $lighter-grey; } @@ -291,12 +295,3 @@ } } } - -.ofn-drop-down.ofn-drop-down-v2 { - // Add very specific styling here for components that are in transition: - // ie. the ones using the two classes above - .ofn-drop-down-label { - padding-top: 7px; - padding-bottom: 7px; - } -} From 70fab2bcc133200817a9fccac41eaf3e836f9bf7 Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 12 Jun 2024 15:55:13 +1000 Subject: [PATCH 292/319] Show/hide columns using display instead of visibility Visibility was way simpler, but the table doesn't recalculate column widths until you use display:none; This is now using the same method as the old products screen. But we still need to update colspans.. --- .../column_preferences_controller.js | 25 ++++++++++++++++--- .../system/admin/products_v3/products_spec.rb | 4 +-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/app/webpacker/controllers/column_preferences_controller.js b/app/webpacker/controllers/column_preferences_controller.js index 31ec0bb65c..9a81faefb6 100644 --- a/app/webpacker/controllers/column_preferences_controller.js +++ b/app/webpacker/controllers/column_preferences_controller.js @@ -1,11 +1,10 @@ import { Controller } from "stimulus"; - // Manage column visibility according to checkbox selection // export default class ColumnPreferencesController extends Controller { connect() { - this.checkboxes = this.element.querySelectorAll('input[type=checkbox]'); + this.checkboxes = this.element.querySelectorAll("input[type=checkbox]"); for (const element of this.checkboxes) { // On initial load @@ -22,12 +21,32 @@ export default class ColumnPreferencesController extends Controller { const name = element.dataset.columnName; const selector = `col[data-column-preferences-name="${name}"]`; const column = document.querySelector(selector); + const index = this.#getIndex(column); if (column == null) { console.error(`ColumnPreferencesController: could not find ${selector}`); return; } - column.style.visibility = (element.checked ? '' : 'collapse'); + // Hide column definition + this.#showHideElement(column, element.checked); + + // Hide each cell in column (ignore rows with colspan) + const rows = column.closest("table").querySelectorAll("tr:not(:has(td[colspan]))"); + rows.forEach((row) => { + // Ignore cell if spanning multiple columns + const cell = row.children[index]; + if (cell == undefined) return; + + this.#showHideElement(cell, element.checked); + }); + } + + #getIndex(column) { + return Array.from(column.parentNode.children).indexOf(column); + } + + #showHideElement(element, show) { + element.style.display = show ? "" : "none"; } } diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 5d76e3e522..620e1901a2 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -49,7 +49,7 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi within ofn_drop_down("Columns") do uncheck "Name" end - # expect(page).not_to have_selector "th", text: "Name" # column is not visible, but capybara doesn't understand yet. + expect(page).not_to have_selector "th", text: "Name" expect_other_columns_visible # Preference saved @@ -62,7 +62,7 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi within ofn_drop_down("Columns") do expect(page).to have_unchecked_field "Name" end - # expect(page).not_to have_selector "th", text: "Name" + expect(page).not_to have_selector "th", text: "Name" expect_other_columns_visible end From d5456a85b76761506fb1ee466a5673a8539fc31c Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 12 Jun 2024 16:58:01 +1000 Subject: [PATCH 293/319] Reset cell colspans This might be a little simpler if we move the 'new variant' button to col 0, and assume colspan cells always span the whole table. --- app/views/admin/products_v3/_table.html.haml | 2 +- .../column_preferences_controller.js | 20 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index eb917c0ad8..726158bb2c 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -13,7 +13,7 @@ = hidden_field_tag :producer_id, @producer_id = hidden_field_tag :category_id, @category_id - %table.products + %table.products{ 'data-column-preferences-target': "table" } %colgroup %col{ width:"56", 'data-column-preferences-name': :image }= # (size + padding) %col{ 'data-column-preferences-name': :name }= # (grow to fill) diff --git a/app/webpacker/controllers/column_preferences_controller.js b/app/webpacker/controllers/column_preferences_controller.js index 9a81faefb6..dfbcee6f2b 100644 --- a/app/webpacker/controllers/column_preferences_controller.js +++ b/app/webpacker/controllers/column_preferences_controller.js @@ -4,8 +4,15 @@ import { Controller } from "stimulus"; // export default class ColumnPreferencesController extends Controller { connect() { - this.checkboxes = this.element.querySelectorAll("input[type=checkbox]"); + this.table = document.querySelector('table[data-column-preferences-target="table"]'); + this.cols = Array.from(this.table.querySelectorAll('col')); + this.colSpanCells = this.table.querySelectorAll('th[colspan],td[colspan]'); + // Initialise data-default-col-span + this.colSpanCells.forEach((cell)=> { + cell.dataset.defaultColSpan ||= cell.colSpan; + }); + this.checkboxes = this.element.querySelectorAll("input[type=checkbox]"); for (const element of this.checkboxes) { // On initial load this.#showHideColumn(element); @@ -20,7 +27,7 @@ export default class ColumnPreferencesController extends Controller { const element = e.target || e; const name = element.dataset.columnName; const selector = `col[data-column-preferences-name="${name}"]`; - const column = document.querySelector(selector); + const column = this.table.querySelector(selector); const index = this.#getIndex(column); if (column == null) { @@ -32,7 +39,7 @@ export default class ColumnPreferencesController extends Controller { this.#showHideElement(column, element.checked); // Hide each cell in column (ignore rows with colspan) - const rows = column.closest("table").querySelectorAll("tr:not(:has(td[colspan]))"); + const rows = this.table.querySelectorAll("tr:not(:has(td[colspan]))"); rows.forEach((row) => { // Ignore cell if spanning multiple columns const cell = row.children[index]; @@ -40,6 +47,13 @@ export default class ColumnPreferencesController extends Controller { this.#showHideElement(cell, element.checked); }); + + // Reset cell colspans + const hiddenColCount = this.cols.filter((col)=> col.style.display == 'none').length; + for(const cell of this.colSpanCells) { + const span = parseInt(cell.dataset.defaultColSpan, 10) - hiddenColCount; + cell.colSpan = span; + }; } #getIndex(column) { From 9ae4d347aa6983af2de964d44663afcd2d4a5fe0 Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 12 Jun 2024 17:04:37 +1000 Subject: [PATCH 294/319] Update widths For some reason, minimum widths work now (I swear they didn't before). Hmm i would really like to shorten that stimulus controller name. --- app/views/admin/products_v3/_table.html.haml | 24 ++++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 726158bb2c..12722e9d30 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -15,18 +15,18 @@ %table.products{ 'data-column-preferences-target': "table" } %colgroup - %col{ width:"56", 'data-column-preferences-name': :image }= # (size + padding) - %col{ 'data-column-preferences-name': :name }= # (grow to fill) - %col{ width:"5%", 'data-column-preferences-name': :sku } - %col{ width:"8%", 'data-column-preferences-name': :unit_scale } - %col{ width:"8%", 'data-column-preferences-name': :unit } - %col{ width:"5%", 'data-column-preferences-name': :price} - %col{ width:"10%", 'data-column-preferences-name': :on_hand} - %col{ width:"15%", 'data-column-preferences-name': :producer} - %col{ width:"8%", 'data-column-preferences-name': :category} - %col{ width:"8%", 'data-column-preferences-name': :tax_category} - %col{ width:"8%", 'data-column-preferences-name': :inherits_properties} - %col{ width:"8%"}= # Actions + %col{ 'data-column-preferences-name': :image, width:"1%", style:"min-width: 56px" }= # (size + padding) + %col{ 'data-column-preferences-name': :name, width:"15%", style:"min-width: 6em" }= # (grow to fill) + %col{ 'data-column-preferences-name': :sku, width:"10%", style:"min-width: 6em" } + %col{ 'data-column-preferences-name': :unit_scale, width:"8%" } + %col{ 'data-column-preferences-name': :unit, width:"8%" } + %col{ 'data-column-preferences-name': :price, width:"5%", style:"min-width: 5em" } + %col{ 'data-column-preferences-name': :on_hand, width:"10%"} + %col{ 'data-column-preferences-name': :producer, width:"15%"} + %col{ 'data-column-preferences-name': :category, width:"8%" } + %col{ 'data-column-preferences-name': :tax_category, width:"8%" } + %col{ 'data-column-preferences-name': :inherits_properties, width:"8%" } + %col{ width:"1%", style:"min-width: 5em"}= # Actions %thead %tr %td.form-actions-wrapper{ colspan: 12 } From e7774d7a247fea30e2257be7a2528b6dddf57c26 Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 13 Jun 2024 10:39:19 +1000 Subject: [PATCH 295/319] Lint fix Sorry didn't have time to go back and rebase --- .../admin/column_preferences_controller.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/controllers/admin/column_preferences_controller.rb b/app/controllers/admin/column_preferences_controller.rb index abe14e4d22..80dda11b3a 100644 --- a/app/controllers/admin/column_preferences_controller.rb +++ b/app/controllers/admin/column_preferences_controller.rb @@ -9,10 +9,13 @@ module Admin if @cp_set.save respond_to do |format| - format.json { render json: @cp_set.collection, each_serializer: Api::Admin::ColumnPreferenceSerializer } + format.json { + render json: @cp_set.collection, each_serializer: Api::Admin::ColumnPreferenceSerializer + } format.turbo_stream { flash.now[:success] = t('.success') - render :bulk_update, locals: { action: permitted_params[:action_name] } } + render :bulk_update, locals: { action: permitted_params[:action_name] } + } end elsif @cp_set.errors.present? respond_to do |format| @@ -45,7 +48,9 @@ module Admin format.json do collection_attributes = Hash[permitted_params[:column_preferences]. each_with_index.map { |cp, i| [i, cp] }] - collection_attributes.select!{ |_i, cp| cp[:action_name] == permitted_params[:action_name] } + collection_attributes.select!{ |_i, cp| + cp[:action_name] == permitted_params[:action_name] + } end format.all do # Inject action name and user ID for each column_preference From a7ef2432623e759dc6600a3b418fdf9b8dd58cbb Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 13 Jun 2024 10:43:33 +1000 Subject: [PATCH 296/319] Enable all columns by default --- lib/open_food_network/column_preference_defaults.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/open_food_network/column_preference_defaults.rb b/lib/open_food_network/column_preference_defaults.rb index 7451145d10..f851efc794 100644 --- a/lib/open_food_network/column_preference_defaults.rb +++ b/lib/open_food_network/column_preference_defaults.rb @@ -82,15 +82,15 @@ module OpenFoodNetwork { image: { name: t(:image), visible: true }, name: { name: t(:name), visible: true }, - sku: { name: t(:sku), visible: false }, + sku: { name: t(:sku), visible: true }, unit: { name: t(:unit), visible: true }, unit_scale: { name: t(:unit_scale), visible: true }, price: { name: t(:price), visible: true }, on_hand: { name: t(:on_hand), visible: true }, producer: { name: t(:producer), visible: true }, - category: { name: t(:category), visible: false }, - tax_category: { name: t(:tax_category), visible: false }, - inherits_properties: { name: t(:inherits_properties), visible: false }, + category: { name: t(:category), visible: true }, + tax_category: { name: t(:tax_category), visible: true }, + inherits_properties: { name: t(:inherits_properties), visible: true }, } end end From db27fc5a2bc2b0778b89159c2b29bd06b1ba4711 Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 13 Jun 2024 10:51:00 +1000 Subject: [PATCH 297/319] Remove dead code I'm pretty sure that case doesn't happen, and besides there's no spec for it. --- app/controllers/admin/column_preferences_controller.rb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/app/controllers/admin/column_preferences_controller.rb b/app/controllers/admin/column_preferences_controller.rb index 80dda11b3a..e6b0103f57 100644 --- a/app/controllers/admin/column_preferences_controller.rb +++ b/app/controllers/admin/column_preferences_controller.rb @@ -17,7 +17,7 @@ module Admin render :bulk_update, locals: { action: permitted_params[:action_name] } } end - elsif @cp_set.errors.present? + else respond_to do |format| format.json { render json: { errors: @cp_set.errors }, status: :bad_request } format.turbo_stream { @@ -25,10 +25,6 @@ module Admin render :bulk_update, locals: { action: permitted_params[:action_name] } } end - else - respond_to do |format| - format.all { render body: nil, status: :internal_server_error } - end end end From b25d2ed32aaf4ca742150de0e53b1f0f1b9c0dcc Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 13 Jun 2024 10:51:35 +1000 Subject: [PATCH 298/319] Refactor to fix Metrics/AbcSize linter --- app/controllers/admin/column_preferences_controller.rb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/app/controllers/admin/column_preferences_controller.rb b/app/controllers/admin/column_preferences_controller.rb index e6b0103f57..5403a9a5ee 100644 --- a/app/controllers/admin/column_preferences_controller.rb +++ b/app/controllers/admin/column_preferences_controller.rb @@ -7,8 +7,8 @@ module Admin def bulk_update @cp_set.collection.each { |cp| authorize! :bulk_update, cp } - if @cp_set.save - respond_to do |format| + respond_to do |format| + if @cp_set.save format.json { render json: @cp_set.collection, each_serializer: Api::Admin::ColumnPreferenceSerializer } @@ -16,9 +16,7 @@ module Admin flash.now[:success] = t('.success') render :bulk_update, locals: { action: permitted_params[:action_name] } } - end - else - respond_to do |format| + else format.json { render json: { errors: @cp_set.errors }, status: :bad_request } format.turbo_stream { flash.now[:error] = @cp_set.errors.full_messages.to_sentence From 5d0e241f8c0fef389ce34341412c3ea886d14de4 Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 13 Jun 2024 11:04:21 +1000 Subject: [PATCH 299/319] Pending spec Probably due to column tweaks, revealing different existing problems. --- spec/system/admin/products_v3/products_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 620e1901a2..511b7885e2 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -1038,6 +1038,7 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi tomselect_search_and_select(category_to_select, from: "Category") sleep(0.1) + pending "unable to select tax_category dropdown, possibly because category is still open and too big, covering the tax_cat." # rubocop:disable Layout/LineLength validate_tomselect_with_search!( page, "Tax Category", tax_categories_search_selector From 0470efa502f6b4ac1148862444814ee33b20d4f2 Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Thu, 13 Jun 2024 15:22:54 +0200 Subject: [PATCH 300/319] Requested changes: turbo_stream for success - must respond via turbo for create and update for success - changed the spec accordingly --- .../spree/admin/images_controller.rb | 10 ++++++++-- spec/requests/admin/images_spec.rb | 19 +++++++++++-------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/app/controllers/spree/admin/images_controller.rb b/app/controllers/spree/admin/images_controller.rb index b58bcf39e5..c176a84ef4 100644 --- a/app/controllers/spree/admin/images_controller.rb +++ b/app/controllers/spree/admin/images_controller.rb @@ -38,7 +38,10 @@ module Spree @object.save! flash[:success] = flash_message_for(@object, :successfully_created) - redirect_to location_after_save + respond_to do |format| + format.html { redirect_to location_after_save } + format.turbo_stream { render :update } + end rescue ActiveRecord::RecordInvalid => e respond_with_error(e) end @@ -50,7 +53,10 @@ module Spree @object.update!(permitted_resource_params) flash[:success] = flash_message_for(@object, :successfully_updated) - redirect_to location_after_save + respond_to do |format| + format.html { redirect_to location_after_save } + format.turbo_stream + end rescue ActiveRecord::RecordInvalid => e respond_with_error(e) end diff --git a/spec/requests/admin/images_spec.rb b/spec/requests/admin/images_spec.rb index 0fa5a08c76..a62f9bef81 100644 --- a/spec/requests/admin/images_spec.rb +++ b/spec/requests/admin/images_spec.rb @@ -11,7 +11,7 @@ RSpec.describe "/admin/products/:product_id/images", type: :request do login_as_admin end - shared_examples "updating images" do + shared_examples "updating images" do |expected_http_status_code| let(:params) do { image: { @@ -21,14 +21,16 @@ RSpec.describe "/admin/products/:product_id/images", type: :request do } end - it "creates a new image and redirects" do + it "creates a new image and redirects unless called by turbo" do expect { subject product.reload }.to change{ product.image&.attachment&.filename.to_s } - expect(response.status).to eq 302 - expect(response.location).to end_with spree.admin_product_images_path(product) + expect(response.status).to eq expected_http_status_code + if expected_http_status_code == 302 + expect(response.location).to end_with spree.admin_product_images_path(product) + end expect(product.image.url(:product)).to end_with "logo.png" end @@ -57,12 +59,13 @@ RSpec.describe "/admin/products/:product_id/images", type: :request do describe "POST /admin/products/:product_id/images" do subject { post(spree.admin_product_images_path(product), params:) } - it_behaves_like "updating images" + it_behaves_like "updating images", 302 end + describe "POST /admin/products/:product_id/images with turbo" do subject { post(spree.admin_product_images_path(product), params:, as: :turbo_stream) } - it_behaves_like "updating images" + it_behaves_like "updating images", 200 end describe "PATCH /admin/products/:product_id/images/:id" do @@ -71,7 +74,7 @@ RSpec.describe "/admin/products/:product_id/images", type: :request do patch(spree.admin_product_image_path(product, product.image), params:) } - it_behaves_like "updating images" + it_behaves_like "updating images", 302 end describe "PATCH /admin/products/:product_id/images/:id with turbo" do @@ -80,6 +83,6 @@ RSpec.describe "/admin/products/:product_id/images", type: :request do patch(spree.admin_product_image_path(product, product.image), params:, as: :turbo_stream) } - it_behaves_like "updating images" + it_behaves_like "updating images", 200 end end From df30c1af98d088b1d8eb7e04d9f9bbd9c63b2d50 Mon Sep 17 00:00:00 2001 From: Filipe <49817236+filipefurtad0@users.noreply.github.com> Date: Thu, 13 Jun 2024 08:47:05 -0600 Subject: [PATCH 301/319] Revert "[Invoices] Notify if any order cannot be invoiced on bulk invoice sending" --- app/reflexes/admin/orders_reflex.rb | 49 +++++++------------ spec/system/admin/orders/bulk_actions_spec.rb | 17 +------ 2 files changed, 19 insertions(+), 47 deletions(-) diff --git a/app/reflexes/admin/orders_reflex.rb b/app/reflexes/admin/orders_reflex.rb index 160877bb51..dedf46cdf2 100644 --- a/app/reflexes/admin/orders_reflex.rb +++ b/app/reflexes/admin/orders_reflex.rb @@ -33,9 +33,19 @@ module Admin end def bulk_invoice(params) - visible_orders = bulk_load_orders(params) + visible_orders = editable_orders.invoiceable.where(id: params[:bulk_ids]) - return if notify_if_abn_related_issue(visible_orders) + if Spree::Config.enterprise_number_required_on_invoices? + distributors_without_abn = Enterprise.where( + id: visible_orders.select(:distributor_id), + abn: nil, + ) + + if distributors_without_abn.exists? + render_business_number_required_error(distributors_without_abn) + return + end + end cable_ready.append( selector: "#orders-index", @@ -84,15 +94,15 @@ module Admin end def send_invoices(params) - orders = bulk_load_orders(params) + count = 0 + editable_orders.invoiceable.where(id: params[:bulk_ids]).find_each do |o| + next unless o.distributor.can_invoice? - return if notify_if_abn_related_issue(orders) - - orders.each do |o| Spree::OrderMailer.invoice_email(o.id, current_user_id: current_user.id).deliver_later + count += 1 end - success("admin.send_invoice_feedback", orders.size) + success("admin.send_invoice_feedback", count) end private @@ -124,30 +134,5 @@ module Admin enterprise_name: distributor_names.join(", ")) morph_admin_flashes end - - def bulk_load_orders(params) - editable_orders.invoiceable.where(id: params[:bulk_ids]) - end - - def notify_if_abn_related_issue(orders) - return false unless abn_required? - - distributors = distributors_without_abn(orders) - return false if distributors.empty? - - render_business_number_required_error(distributors) - true - end - - def abn_required? - Spree::Config.enterprise_number_required_on_invoices? - end - - def distributors_without_abn(orders) - Enterprise.where( - id: orders.select(:distributor_id), - abn: [nil, ""], - ) - end end end diff --git a/spec/system/admin/orders/bulk_actions_spec.rb b/spec/system/admin/orders/bulk_actions_spec.rb index 72ccc44d95..e93cfe4b5f 100644 --- a/spec/system/admin/orders/bulk_actions_spec.rb +++ b/spec/system/admin/orders/bulk_actions_spec.rb @@ -363,22 +363,9 @@ RSpec.describe ' } must have a valid ABN before invoices can be used." end end - context "ABN is null" do + it_behaves_like "should not print the invoice" + context "with legal invoices feature", feature: :invoices do it_behaves_like "should not print the invoice" - context "with legal invoices feature", feature: :invoices do - it_behaves_like "should not print the invoice" - end - end - context "ABN is empty string" do - before do - order4.distributor.update(abn: "123456789") - order5.distributor.update(abn: "") - end - - it_behaves_like "should not print the invoice" - context "with legal invoices feature", feature: :invoices do - it_behaves_like "should not print the invoice" - end end end end From 9e5c21f7cdae649c8284e1f6052d877f5bb1c9da Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Wed, 12 Jun 2024 18:53:29 -0600 Subject: [PATCH 302/319] Corrects test case by adding expect has_select? only returns true or false, it requires an assertion to assure the test is evaluated Improves syntax --- spec/system/admin/products_v3/products_spec.rb | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index f9606491e1..c60e11d698 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -1419,9 +1419,8 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi it "shows only suppliers that I manage or have permission to" do visit spree.admin_products_path - within row_containing_name(product_supplied.name) do - page.has_select?( + expect(page).to have_select( '_products_0_supplier_id', options: [ supplier_managed1.name, supplier_managed2.name, supplier_permitted.name @@ -1430,11 +1429,11 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi end within row_containing_name(product_supplied_permitted.name) do - page.has_select?( - '_products_0_supplier_id', + expect(page).to have_select( + '_products_1_supplier_id', options: [ supplier_managed1.name, supplier_managed2.name, supplier_permitted.name - ], selected: supplier_managed1.name + ], selected: supplier_permitted.name ) end end From 9cd1977cf8e8fd8c8d383337a65182f5f5109fe7 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Thu, 13 Jun 2024 12:15:24 -0600 Subject: [PATCH 303/319] Removes product creation test This is already covered some lines above and on https://github.com/openfoodfoundation/openfoodnetwork/blob/e22bec014bd0318131dba17461b18a46bde0ab0b/spec/system/admin/products_spec.rb#L29 --- .../system/admin/products_v3/products_spec.rb | 28 ------------------- 1 file changed, 28 deletions(-) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index c60e11d698..4221418a46 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -1446,34 +1446,6 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi expect(page).to have_selector row_containing_name(product_supplied_inactive.name) end - it "allows me to create a product" do - taxon = create(:taxon, name: 'Fruit') - shipping_category = create(:shipping_category) - - visit spree.admin_products_path - - click_link "New Product" - expect(page).to have_content "New Product" - expect(page).to have_select 'product_supplier_id', - with_options: [supplier_managed1.name, supplier_managed2.name, - supplier_permitted.name] - - within 'fieldset#new_product' do - fill_in 'product_name', with: 'Big Bag Of Apples' - select supplier_permitted.name, from: 'product_supplier_id' - select 'Weight (g)', from: 'product_variant_unit_with_scale' - fill_in 'product_unit_value', with: '100' - fill_in 'product_price', with: '10.00' - select taxon.name, from: 'product_primary_taxon_id' - select shipping_category.name, from: 'product_shipping_category_id' - end - click_button 'Create' - - expect(URI.parse(current_url).path).to eq spree.admin_products_path - expect(flash_message).to eq 'Product "Big Bag Of Apples" has been successfully created!' - expect(page).to have_selector row_containing_name('Big Bag Of Apples') - end - it "allows me to update a product" do visit spree.admin_products_path From 3c9f77dc2b5cc92f8daa895efa654b2f0c7b6fc7 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 14 Jun 2024 09:48:55 +1000 Subject: [PATCH 304/319] Restore image display with absolute width The `min-width` property is ignored by Firefox. And we don't need the column to grow any bigger than the picture size anyway. An absolute width is correct here. The specification says: > Applies to all elements but non-replaced inline elements, table rows, > and row groups. Firefox is totally right in ignoring it. --- app/views/admin/products_v3/_table.html.haml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 12722e9d30..0338784a74 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -15,7 +15,8 @@ %table.products{ 'data-column-preferences-target': "table" } %colgroup - %col{ 'data-column-preferences-name': :image, width:"1%", style:"min-width: 56px" }= # (size + padding) + -# The `min-width` property works in Chrome but not Firefox. + %col{ 'data-column-preferences-name': :image, width:"56px" }= # (image size + padding) %col{ 'data-column-preferences-name': :name, width:"15%", style:"min-width: 6em" }= # (grow to fill) %col{ 'data-column-preferences-name': :sku, width:"10%", style:"min-width: 6em" } %col{ 'data-column-preferences-name': :unit_scale, width:"8%" } From 6a4a2383784218b69f4b6a1671c087a5e3b8adaf Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 14 Jun 2024 10:47:35 +1000 Subject: [PATCH 305/319] Avoid flakiness with Capybara features Capybara should be clever enought to scroll to an element. The old method failed nine times in CI. I couldn't reproduce it locally but let's see if this is better. --- .../complex_editing_multiple_product_pages_spec.rb | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/spec/system/admin/order_cycles/complex_editing_multiple_product_pages_spec.rb b/spec/system/admin/order_cycles/complex_editing_multiple_product_pages_spec.rb index 23aa655a77..ddc888700e 100644 --- a/spec/system/admin/order_cycles/complex_editing_multiple_product_pages_spec.rb +++ b/spec/system/admin/order_cycles/complex_editing_multiple_product_pages_spec.rb @@ -36,10 +36,7 @@ RSpec.describe ' end it "select all products" do - checkbox_id = "order_cycle_incoming_exchange_0_select_all_variants" - elmnt = find_field(id: checkbox_id) - scroll_to(elmnt, align: :top) - check checkbox_id + check "Select All 2 Variants" expect_all_products_loaded From 885f679eb1e3afa508e2a6b2fa95e93335252f9f Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 14 Jun 2024 11:26:09 +1000 Subject: [PATCH 306/319] Update all locales with the latest Transifex translations --- config/locales/hu.yml | 138 ++++++++++++++++++++++-------------------- 1 file changed, 73 insertions(+), 65 deletions(-) diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 6a8b5014a2..33ebc4d329 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -2,7 +2,7 @@ hu: language_name: "Angol" time: formats: - long: "%B %d, %Y %-l:%M %p\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n " + long: "%B %d, %Y %-l:%M %p" activerecord: models: spree/product: Termék @@ -161,7 +161,7 @@ hu: invalid_account: "A kártya vagy fiók, amelyhez a kártya kapcsolódik, érvénytelen." invalid_amount: "A befizetés összege érvénytelen, vagy meghaladja a megengedett összeget." invalid_pin: "A megadott PIN-kód helytelen. Ez az elutasító kód csak a kártyaolvasóval történő fizetésekre vonatkozik." - issuer_not_available: "kártyakibocsátót nem sikerült elérni, így a fizetést nem sikerült engedélyezni." + issuer_not_available: "A kártyakibocsátót nem sikerült elérni, így a fizetést nem sikerült engedélyezni." lost_card: "A fizetést elutasították, mert a kártya elveszett." merchant_blacklist: "A fizetést elutasították, mert megegyezik a Stripe felhasználó tiltólistáján szereplő értékkel." new_account_information_available: "A kártya vagy fiók, amelyhez a kártya kapcsolódik, érvénytelen." @@ -183,6 +183,9 @@ hu: transaction_not_allowed: "A kártyát ismeretlen okból elutasították." try_again_later: "A kártyát ismeretlen okból elutasították." withdrawal_count_limit_exceeded: "Az ügyfél túllépte a kártyáján rendelkezésre álló egyenleget vagy hitelkeretet." + disconnect_failure: "Sikertelen a Stripe kapcsolat megszakítása." + success_code: + disconnected: "A Stripe fiók kapcsolat megszakadt." activemodel: errors: messages: @@ -201,7 +204,7 @@ hu: not_coordinated_by_shop: "nem a %{shop} koordinálja" payment_method: not_available_to_shop: "nem érhető el a %{shop} számára" - invalid_type: "Cash vagy Stripe módszernek kell lennie" + invalid_type: "Készpénz vagy Stripe fizetési módnak kell lennie" charges_not_allowed: "^Ez az ügyfél nem engedélyezi a hitelkártya-terhelést" no_default_card: "^Ennél az ügyfélnél nem áll rendelkezésre alapértelmezett kártya" shipping_method: @@ -210,6 +213,7 @@ hu: card_type: "Kártyatípus" card_type_is: "A kártya típusa: " unrecognized_card_type: "Nem azonosítható kártyatípus" + use_new_cc: "Használj egy másik bankkártyát" what_is_this: "Mi ez?" cardholder_name: "Kártyatulajdonos neve" community_forum_url: "A közösségi fórum URL-je" @@ -273,11 +277,11 @@ hu: cloned_order_cycle_name: "%{order_cycle} MÁSOLATA" tax_rate: included_in_price: "Az ár tartalmazza" - open_street_map_enabled: "Az Utcatérkép megnyitása engedélyezve" - open_street_map_default_latitude: "Nyissa meg az Utcatérkép alapértelmezett szélességi fokát" - open_street_map_default_longitude: "Nyissa meg az Utcatérkép alapértelmezett hosszúságát" - open_street_map_provider_name: "Nyissa meg az Utcatérkép-szolgáltató nevét" - open_street_map_provider_options: "Nyissa meg az Utcatérkép-szolgáltató beállításait" + open_street_map_enabled: "Az Open Street Map megnyitása engedélyezve" + open_street_map_default_latitude: "Open Street Map alapértelmezett szélességi fok" + open_street_map_default_longitude: "Open Street Map alapértelmezett hosszúsági fok" + open_street_map_provider_name: " Open Street Map szolgáltató neve" + open_street_map_provider_options: "Open Street Map szolgáltató beállításai" producer_signup_case_studies_html: "Termelői regisztrációs esettanulmányok HTML" producer_signup_detail_html: "Termelői regisztráció részletek HTML" producer_signup_pricing_table_html: "Termelői regisztrációs ártáblázat HTML" @@ -302,13 +306,13 @@ hu: subject: "Kérjük, erősítsd meg %{enterprise} e-mail címét" welcome: subject: "%{enterprise} most itt van: %{sitename}" - email_welcome: "Üdvözöljük" + email_welcome: "Üdvözlünk" email_registered: "most része" email_userguide_html: "A Termelő vagy Átvételi pont beállításához szükséges részletes támogatást tartalmazó felhasználói útmutató itt található: %{link}" userguide: "Nyissa meg az Open Food Network felhasználói kézikönyvét" email_admin_html: "Fiókod úgy kezelheted, hogy bejelentkezel a %{link} oldalra, vagy kattints a kezdőlap jobb felső sarkában lévő fogaskerékre, és válaszd az Adminisztráció lehetőséget." admin_panel: "Adminisztrációs Panel" - email_community_html: "Van egy online fórumunk is az OFN szoftverrel és az élelmiszeripari vállalkozás vezetésének egyedi kihívásaival kapcsolatos közösségi vitákhoz. Arra biztatjuk, hogy csatlakozzon. Folyamatosan fejlődünk, és az Ön hozzájárulása ehhez a fórumhoz meghatározza, hogy mi történik ezután. %{link}" + email_community_html: "Van egy online fórumunk is az OFN szoftverrel és az élelmiszeripari vállalkozás vezetésének egyedi kihívásaival kapcsolatos közösségi vitákhoz. Arra bíztatunk, hogy csatlakozz. Folyamatosan fejlődünk, és a Te hozzájárulásod ehhez a fórumhoz meghatározza, hogy mi történik ezután. %{link}" join_community: "Csatlakozz a közösséghez" invite_manager: subject: "%{enterprise} meghívott téged menedzsernek" @@ -354,7 +358,7 @@ hu: explainer: Ezeket a rendeléseket feldolgoztuk, de néhány kért cikkhez nem állt rendelkezésre elegendő készlet empty: title: Nincs raktáron (%{count} rendelés) - explainer: Ezeket a rendeléseket nem tudtuk feldolgozni, mert nem volt készlet a kért cikkekhez + explainer: Ezeket a rendeléseket nem tudtuk feldolgozni, mert nem volt készlet a kért termékekből complete: title: Már feldolgozva (%{count} rendelés) explainer: Ezeket a rendeléseket már késznek jelölték, és ezért érintetlenül maradtak @@ -363,14 +367,14 @@ hu: explainer: Ezen rendelések automatikus feldolgozása hiba miatt meghiúsult. A hiba lehetőség szerint fel lett sorolva. failed_payment: title: Sikertelen fizetés (%{count} megrendelés) - explainer: Ezen rendelések fizetésének automatikus feldolgozása hiba miatt meghiúsult. A hiba lehetőség szerint fel lett sorolva. + explainer: Ezen rendelések fizetésének automatikus feldolgozása hiba miatt meghiúsult. A hiba feltüntetésre került, ahol lehetséges. other: title: Egyéb hiba (%{count} rendelés) - explainer: megrendelések automatikus feldolgozása ismeretlen okból meghiúsult. Ennek nem szabadna előfordulnia," kérjük lépjen kapcsolatba velünk, ha ezt látja. + explainer: A megrendelések automatikus feldolgozása ismeretlen okból meghiúsult. Ennek nem szabadna előfordulnia, kérjük lépj kapcsolatba velünk, ha ezt látod. home: "OFN" title: "Open Food Network" welcome_to: "Üdvözli az" - site_meta_description: "Az alapoktól kezdjük. A gazdálkodókkal és termelőkkel, akik készen állnak arra, hogy őszintén elmondják történeteiket. A forgalmazókkal, akik készen állnak arra, hogy tisztességesen és becsületesen összekapcsolják az embereket a termékekkel. Azokkal a vásárlókkal, akik hisznek abban, hogy jobb heti vásárlási döntések…" + site_meta_description: "Az alapoktól kezdjük. A gazdálkodókkal, akiknek fontos, hogy közösen, egy fenntartható és mindenki számára átlátható, hazai élelemrendszert hozzunk létre. A bevásárlóközösségekkel, fogyasztói csoportokkal, forgalmazókkal, akik összekapcsolják az embereket a termelőkkel és a termékekkel, és biztosítani szeretnék, hogy a termelők tisztességes díjazásban részesüljenek. Azokkal a fogyasztókkal, akik hisznek abban, hogy döntéseiknek hatása van." search_by_name: Keresés név vagy település szerint... producers_join: Az magyar termelők most már csatlakozhatnak az Open Food hálózatához. charges_sales_tax: Áfaköteles? @@ -386,6 +390,7 @@ hu: cancel_order: "Megrendelés visszavonása" confirm_send_invoice: "Erről a megrendelésről számlát küldünk a vásárlónak. Biztos, hogy akarod folytatni?" confirm_resend_order_confirmation: "Biztos, hogy újra el akarod küldeni a rendelést visszaigazoló e-mailt?" + must_have_valid_business_number: "%{enterprise_name}a számlázás igénybevételéhez érvényes ABN-nel kell rendelkeznie." invoice: "Számla" invoices: "Számlák" file: "File" @@ -396,12 +401,12 @@ hu: say_no: "Nem" say_yes: "Igen" ongoing: Folyamatban lévő - bill_address: számlázási cím - ship_address: szállítási cím - sort_order_cycles_on_shopfront_by: "Rendelési ciklusok rendezése a átvételi pontban:" + bill_address: Számlázási cím + ship_address: Szállítási cím + sort_order_cycles_on_shopfront_by: "Rendelési ciklusok rendezése a átvételi pontban az alábbi szerint:" required_fields: A kötelező mezőket csillag jelöli select_continue: Válassz és Folytasd - remove: Távolítsa el + remove: Eltávolítás collapse_all: Mindet összecsuk expand_all: Az összes kibontása loading: Betöltés... @@ -442,7 +447,7 @@ hu: 'no': "Nem" y: 'Y''' n: 'N''' - powered_by: Powered by + powered_by: 'Készült a ' blocked_cookies_alert: "Előfordulhat, hogy a böngésződ blokkolja az oldal használatához szükséges cookie-kat. Kattints az alábbi gombra a cookie-k engedélyezéséhez és az oldal újratöltéséhez." allow_cookies: "Cookie-k engedélyezése" none: Egyik sem @@ -456,7 +461,7 @@ hu: clear_filters: Szűrők törlése quantity: Mennyiség pick_up: Átvétel - ok: rendben + ok: OK copy: Másolat change_my_password: "Jelszó megváltoztatása" update_password: "Frissítsd a jelszót" @@ -479,7 +484,7 @@ hu: create_and_add_another: "Hozz létre és adj hozzá egy másikat" create: "Létrehozás" cancel: "Törlés" - resume: "Folytatás" + resume: "Összefoglaló" save: "Mentés" edit: "Szerkesztés" update: "Frissítés" @@ -499,6 +504,7 @@ hu: producers: title: Termelők selected_producers: "%{count}termelő kiválasztva" + per_page: "%{count}item/oldal" colums: Oszlopok columns: name: Név @@ -584,8 +590,8 @@ hu: back: Vissza show_more: Mutass többet show_n_more: 'További %{num} ' - choose: "Választ..." - please_select: Kérlek, válassz... + choose: "Választás..." + please_select: Kérjük, válassz... column_save_as_default: Mentés alapértelmezettként columns: Oszlopok actions: Akciók @@ -635,7 +641,7 @@ hu: status: Státusz ok: Rendben instance_secret_key: Példány titkos kulcsa - account_id: felhasználónév + account_id: Felhasználónév business_name: Vállalkozás neve charges_enabled: Díjak engedélyezve charges_enabled_warning: "Figyelmeztetés: A terhelések nem engedélyezettek az Ön fiókjában" @@ -655,8 +661,8 @@ hu: new_customer: "Új vevő" code: Kód duplicate_code: "Ez a kód már használatban van." - bill_address: "számlázási cím" - ship_address: "szállítási cím" + bill_address: "Számlázási cím" + ship_address: "Szállítási cím" balance: "Mérleg" update_address_success: "A cím sikeresen frissítve." update_address_error: "Sajnáljuk! Kérjük, töltsd ki az összes kötelező mezőt!" @@ -742,8 +748,8 @@ hu: property_name: "Tulajdonság neve" inherited_property: "Öröklött tulajdonság" variants: - infinity: "végtelenség" - to_order_tip: "rendelésre készült termékeknek nincs meghatározott készletszintjük, például a rendelésre frissen készült kenyérnek." + infinity: "Végtelen" + to_order_tip: "A megrendelésre készült termékeknek nincs meghatározott készletszintjük, például a rendelésre frissen készült kenyérnek." back_to_products_list: "Vissza a termékek listájához" editing_product: "Termék szerkesztése" tabs: @@ -773,6 +779,7 @@ hu: search_products: Keresés a termékek között search_for_producers: Keresés termelőre all_producers: Minden termelő + search_for_categories: Keresés termékkategóriára all_categories: Minden kategória producers: label: Termelők @@ -811,6 +818,7 @@ hu: error: A változatot nem lehet törölni variant_row: none_tax_category: Egyik sem + search_for_tax_categories: "Keresés adókategóriára." category_field_name: "Kategória" tax_category_field_name: "Adókategória" product_row: @@ -939,49 +947,49 @@ hu: title: Leltár description: Ezen az oldalon kezelheted vállalkozásod készleteit. Az itt beállított termékadatok felülírják a „Termékek” oldalon megadottakat enable_reset?: Engedélyezi a készlet visszaállítását? - default_stock: "Alapértelmezett részvény" + default_stock: "Alapértelmezett készlet" inherit?: Örököl? add: Hozzáadás hide: Elrejt import_date: Importált select_a_shop: Válaszd az A árusítóhely lehetőséget - review_now: Tekintse át most + review_now: Tekintsd át most new_products_alert_message: '%{new_product_count} új termék áll rendelkezésre, amelyet hozzáadhat készletéhez.' - currently_empty: A készlet jelenleg üres - no_matching_products: Nem található megfelelő termék a készletében - no_hidden_products: Egyetlen termék sincs elrejtve ebből a készletből + currently_empty: A leltár jelenleg üres + no_matching_products: Nem található megfelelő termék a leltárban + no_hidden_products: Egyetlen termék sincs elrejtve ebből a leltárból no_matching_hidden_products: Egyetlen rejtett termék sem felel meg a keresési feltételeknek no_new_products: Nincsenek új termékek, amelyeket hozzáadhatnának ehhez a készlethez no_matching_new_products: Egyetlen új termék sem felel meg a keresési feltételeknek - inventory_powertip: Ez az Ön termékkészlete. Termékek hozzáadásához a készlethez, a Megtekintés legördülő menüből válaszd az „Új termékek” lehetőséget. + inventory_powertip: Ez az Ön termékkészlete. Termékek hozzáadásához a készlethez, a Megtekintés legördülő menüből válaszd az „Új termék” lehetőséget. hidden_powertip: Ezeket a termékeket elrejtette a készletéből, és nem lesz elérhető az oldalon. A "Hozzáadás" gombra kattintva hozzáadhat egy terméket a készletéhez. - new_powertip: Ezeket a termékeket felveheti a készletébe. Kattintson a "Hozzáadás" gombra egy termék hozzáadásához a készlethez", vagy az „Elrejtés” lehetőséget választva elrejtheti a látás elől. Később bármikor meggondolhatod magad! + new_powertip: Ezeket a termékeket hozzáadhatja a készletéhez. Kattintson a 'Hozzáadás' gombra, ha hozzá szeretne adni egy terméket a készletéhez, vagy a 'Elrejtés' gombra, ha el szeretné rejteni a terméket. Később bármikor meggondolhatja magát! controls: back_to_my_inventory: Vissza a leltárhoz orders: edit: order_sure_want_to: Biztosan %{event} akarja ezt a megrendelést? invoice_email_sent: 'Számla e-mail elküldve' - order_email_resent: 'megrendelés e-mailje újra el lett küldve' + order_email_resent: 'A megrendelési e-mail újra el lett küldve' bulk_management: tip: "Ezen az oldalon módosíthatod a termékek mennyiségét több rendelés esetén. Szükség esetén a termékek teljes egészében eltávolíthatók a megrendelésekből." shared: "Megosztott erőforrás?" - order_no: "Rendelési szám." + order_no: "Rendelési szám" order_date: "Elkészült:" max: "Max" product_unit: "Termék: Egység" weight_volume: "Súly/térfogat (kg)" - ask: "Kérdez?" + ask: "Kérdés?" page_title: "Tömeges megrendelés kezelése" actions_delete: "Kiválasztottak törlése" loading: "Megrendelések betöltése" no_results: "Nem található megrendelés." - group_buy_unit_size: "Csoportos vásárlási mértékegység" + group_buy_unit_size: "Csoportos vásárlási egység mérete" total_qtt_ordered: "Teljes rendelt mennyiség" max_qtt_ordered: "Maximális rendelt mennyiség" current_fulfilled_units: "Jelenleg teljesített egységek" max_fulfilled_units: "Maximális teljesített egységek" - order_error: "A rendelések frissítése előtt bizonyos hibákat meg kell oldani.nMinden piros szegélyű mező hibát tartalmaz." + order_error: "A rendelések frissítése előtt bizonyos hibákat meg kell oldani.\nMinden piros szegélyű mező hibát tartalmaz." variants_without_unit_value: "FIGYELMEZTETÉS: Egyes változatok nem rendelkeznek egységértékkel" all: "Minden" select_variant: "Válasszon egy változatot" @@ -997,14 +1005,14 @@ hu: producer?: "Termelő?" package: Csomag status: Státusz - manage: 'Beállítások:' + manage: Beállítások form: about_us: legend: "Rólunk" desc_short: Rövid leírás desc_short_placeholder: Meséljen egy-két mondatban vállalkozásáról desc_long: Rólunk - desc_long_placeholder: Mesélj magadról az ügyfeleknek. Ez az információ az Ön nyilvános profilodban jelenik meg. + desc_long_placeholder: Mesélj magadról az ügyfeleknek. Ez az információ a nyilvános profilodon jelenik meg. address: legend: "Cím" business_details: @@ -1081,7 +1089,7 @@ hu: preferred_product_selection_from_inventory_only_yes: Új termékek kerülhetnek a kirakatomba (ajánlott) preferred_product_selection_from_inventory_only_no: Új termékeket kell hozzáadnom a készletemhez, mielőtt a átvételi pontomba kerülhetnék payment_methods: - legend: "fizetési módok" + legend: "Fizetési módok" name: Név applies: Érvényes? manage: Fizetési módok kezelése @@ -1093,10 +1101,10 @@ hu: name: Név name_placeholder: például. Plum professzor biodinamikus szarvasgombája groups: Csoportok - groups_tip: Válaszd ki azokat a csoportokat vagy régiókat, amelyeknek tagja. Ez segít az ügyfeleknek megtalálni az Ön vállalkozását. - groups_placeholder: Kezdjen el gépelni az elérhető csoportok kereséséhez... + groups_tip: Válaszd ki azokat a csoportokat vagy régiókat, amelyeknek tagja vagy. Ez segít az ügyfeleknek megtalálni a vállalkozásod + groups_placeholder: Kezdj el gépelni az elérhető csoportok kereséséhez... primary_producer: Termelő? - primary_producer_tip: Termelő vagy, ha termeszted, tenyészted, főzöd, sütöd, erjeszted, stb. a termékeidet. + primary_producer_tip: Válaszd a 'Termelő'-t, ha termeszted, tenyészted, főzöd, sütöd, erjeszted, stb. a termékeidet. producer: Termelő any: Bármi none: Egyik sem @@ -1128,12 +1136,12 @@ hu: shop_preferences: legend: "Átvételi ponti beállítások" shopfront_requires_login: "Nyilvánosan látható kirakat?" - shopfront_requires_login_tip: "Válaszd ki, hogy az ügyfeleknek be kell-e jelentkezniük a kirakat megtekintéséhez, vagy azt mindenki láthatja." + shopfront_requires_login_tip: "Válaszd ki, hogy az ügyfeleknek be kell-e jelentkezniük a profilod megtekintéséhez, vagy azt mindenki láthatja." shopfront_requires_login_false: "Nyilvános" shopfront_requires_login_true: "Csak regisztrált vásárlók számára látható" recommend_require_login: "Javasoljuk, hogy a felhasználók bejelentkezést kérjenek, amikor a rendelés módosítható." allow_guest_orders: "Vendégrendelések" - allow_guest_orders_tip: "Engedélyezze a vendégként való fizetést, vagy kérjen regisztrált felhasználót." + allow_guest_orders_tip: "Engedélyezd a vendégként való fizetést, vagy kérj felhasználói regisztrációt." allow_guest_orders_false: "A megrendeléshez bejelentkezés szükséges" allow_guest_orders_true: "Vendég fizetés engedélyezése" allow_order_changes: "Megrendelések módosítása" @@ -1151,26 +1159,26 @@ hu: shopfront_message: "Kirakatüzenet" shopfront_message_placeholder: > Opcionális üzenet, amely üdvözli az ügyfeleket, és elmagyarázza, hogyan - vásárolhatnak Önnél. Ha itt szöveget ír be, az megjelenik a kezdőlapon, - amikor az ügyfelek először érkeznek az áruító oldalára. - shopfront_message_link_tooltip: "Hivatkozás beszúrása/szerkesztése" + vásárolhatnak Nálad. Ha itt szöveget írsz be, az megjelenik a kezdőlapon, + amikor az ügyfelek először érkeznek az oldaladra. + shopfront_message_link_tooltip: "Hivatkozás beszúrása / szerkesztése" shopfront_message_link_prompt: "Kérjük, adjon meg egy URL-t a beszúráshoz" shopfront_closed_message: "Kirakat zárt üzenet" shopfront_closed_message_placeholder: > - Üzenet a vásárlóknak az árusító oldalán, ha nincs aktív rendelési ciklusa - (azaz az üzlet zárva van). Írja le mikor várható a következő rendelési + Üzenet a vásárlóknak az oldaladon, ha épp nincs aktív rendelési ciklus + (azaz az üzlet zárva van). Írd le mikor várható a következő rendelési ciklus. shopfront_category_ordering: "Kirakati kategória rendelése" shopfront_category_ordering_note: "(fentről lefelé)" - open_date: "Megnyitás dátuma" - close_date: "Bezárás dátuma" + open_date: "Nyitás dátuma" + close_date: "Zárás dátuma" display_ordering_in_shopfront: "Rendelés megjelenítése a kirakatban:" shopfront_sort_by_category: "Kategória szerint" shopfront_sort_by_producer: "A termelő által" shopfront_sort_by_category_placeholder: "Kategória" shopfront_sort_by_producer_placeholder: "Termelő" display_remaining_stock: "Mutassa az elérhető készletet az oldalon, ha már kifogyóban van" - display_remaining_stock_tip: "Mutassa, amikor már háromnál kevesebb maradt belőle." + display_remaining_stock_tip: "Tudassa a vásárlókkal, amikor háromnál kevesebb darab van már csak." enabled: "Engedélyezve" disabled: "Tiltva" social: @@ -1180,15 +1188,15 @@ hu: facebook_placeholder: "például. www.facebook.com/PageNameItt" linkedin_placeholder: "például. www.linkedin.com/in/YourNameItt" stripe_connect: - connect_with_stripe: "Csatlakozzon a Stripe-hoz" + connect_with_stripe: "Csatlakozz a Stripe-al" stripe_connect_intro: "Ha hitelkártyás fizetést szeretnél elfogadni, össze kell kapcsolnod Stripe fiókodat az Open Food Network hálózattal. A kezdéshez használd a jobb oldali gombot." stripe_account_connected: "Stripe fiók csatlakoztatva." disconnect: "Fiók leválasztása" confirm_modal: - title: Csatlakozzon a Stripe-hoz + title: Csatlakozz a Stripe-al part1: A Stripe egy fizetésfeldolgozó szolgáltatás, amely lehetővé teszi az OFN oldalai számára, hogy elfogadják az ügyfelek hitelkártyás fizetését. - part2: Ennek a funkciónak a használatához," csatlakoztatnod kell a Stripe-fiókját az OFN-hez. Az alábbi „Elfogadom” gombra kattintva átirányítod Önt a Stripe webhelyére, ahol meglévő Stripe fiókot csatlakoztathatsz, vagy hozz létre egy újat, ha még nem rendelkezel ilyennel. - part3: Ez lehetővé teszi, hogy az Open Food Network elfogadja az ügyfelek hitelkártyás fizetését az Ön nevében. Felhívjuk figyelmét, hogy saját Stripe-fiókot kell fenntartania"," fizesse ki a Stripe által felszámított díjakat, és maga kezelje a visszaterheléseket és az ügyfélszolgálatot. + part2: Ennek a funkciónak a használatához, csatlakoztatnod kell a Stripe-fiókod az OFN-hez. Az alábbi „Elfogadom” gombra kattintva átirányítunk téged a Stripe webhelyére, ahol meglévő Stripe fiókot csatlakoztathatsz, vagy hozz létre egy újat, ha még nem rendelkezel ilyennel. + part3: Ez lehetővé teszi, hogy az Open Food Network elfogadja az ügyfelek hitelkártyás fizetését a nevedben. Felhívjuk figyelmed, hogy ehhez a funkcióhoz saját Stripe-fiókot kell fenntartanod, a Stripe által felszámított díjakat magadnak kell fizetned, és te kezeled a visszatérítéseket és az ügyfelek kéréseit is. i_agree: Egyetértek cancel: Törlés tag_rules: @@ -1893,7 +1901,7 @@ hu: menu_2_title: "Térkép" menu_2_url: "/map" menu_3_title: "Termelők" - menu_3_url: "/termelők" + menu_3_url: "/producers" menu_4_title: "Csoportok" menu_4_url: "/groups" menu_5_title: "Rólunk" @@ -2032,12 +2040,12 @@ hu: home_shop: Tovább a termelőkhöz, átvételi pontokhoz. brandstory_headline: "Együtt, az élelem önrendelkezésért!" brandstory_intro: "Közösség által irányított élelmiszerrendszert építünk." - brandstory_part1: "Az alapoktól kezdjük. A gazdálkodókkal, akik készen állnak arra, hogy elmondják történeteiket, és akiknek fontos, hogy közösen, egy fenntartható és mindenki számára átlátható, hazai élelemrendszert hozzunk létre.\nA forgalmazókkal, bevásárlóközösségekkel, fogyasztói csoportokkal, akik készen állnak arra, hogy összekapcsolják az embereket a termelőkkel és a termékekkel, és biztosítani szeretnék, hogy a termelők tisztességes díjazásban részesüljenek.\nAzokkal a fogyasztókkal, akik hisznek abban, hogy döntéseik befolyásolják jelenünket és jövőnket." - brandstory_part2: "Ahhoz, hogy ezt valósággá tegyük, szükségünk van egy módszerre, ami minden résztvevőt megerősít, aki élelmiszert termeszt, ad el, szervez, tervez, fogyaszt. \nEgy eszközre, amely láthatóvá teszi a gazdákat, a közösségeket, a termesztési módszereket, és képes kezelni a logisztikát. \nEz az Open Food Network platformja, amely országonként saját közösségi irányítás alatt áll, ugyanakkor globális erőforrásainkat összeadva fejlesztjük." - brandstory_part3: "Egy olyan piacteret hozunk így létre, amely átlátható, közvetlen kapcsolatokon alapul, láthatóvá teszi a rövid ellátási lánc szemeit.\nKifejezetten az élelmiszerek értékesítésére készült, így képes kezelni a trükkös méréseket vagy készletszinteket, amelyek csak az élelmiszerek esetében fordulnak elő - egy tucat tojás, egy csokor petrezselyem, egy egész csirke, amelynek súlya változó lehet...\nA termelők létrehozhatnak saját profilt, beszedhetik a fizetéseket, a platformon lévő más átadópontokon keresztül is értékesíthetnek, kiszállíthatnak, vagy akár futárszolgálattal is dolgozhatnak.\nA közösségek összefoghatják a helyi termelőket, hogy virtuális termelői piacokat vagy bevásárlóközösségeket hozzanak létre, és ezáltal rugalmas helyi élelmiszer-gazdaságot építsenek" + brandstory_part1: "Az alapoktól kezdjük. A gazdálkodókkal, akiknek fontos, hogy közösen, egy fenntartható és mindenki számára átlátható, hazai élelemrendszert hozzunk létre. \nA bevásárlóközösségekkel, fogyasztói csoportokkal, forgalmazókkal, akik összekapcsolják az embereket a termelőkkel és a termékekkel, és biztosítani szeretnék, hogy a termelők tisztességes díjazásban részesüljenek. \nAzokkal a fogyasztókkal, akik hisznek abban, hogy döntéseiknek hatása van." + brandstory_part2: "Ahhoz, hogy ezt valósággá tegyük, szükségünk van egy eszközre, ami minden résztvevőt megerősít, aki élelmiszert termeszt, ad el, szervez, tervez, fogyaszt. \nEgy eszközre, amely láthatóvá teszi a gazdákat, a közösségeket, a termesztési módszereket, és képes kezelni a logisztikát. \nEz az Open Food Network platformja, amely országonként saját közösségi irányítás alatt áll, ugyanakkor globális erőforrásainkat összeadva fejlesztjük." + brandstory_part3: "Egy olyan piacteret hozunk így létre, amely átlátható, közvetlen kapcsolatokon alapul, láthatóvá teszi a rövid ellátási lánc szemeit.\nKifejezetten az élelmiszerek értékesítésére készült, így képes kezelni a trükkös méréseket vagy készletszinteket, amelyek csak az élelmiszerek esetében fordulnak elő.\nA termelők létrehozhatnak saját profilt, beszedhetik a fizetéseket, a platformon lévő más átadópontokon keresztül is értékesíthetnek, kiszállíthatnak, vagy akár futárszolgálattal is dolgozhatnak.\nA közösségek összefoghatják a helyi termelőket, hogy virtuális termelői piacokat vagy bevásárlóközösségeket hozzanak létre, és ezáltal rugalmas helyi élelmiszer-gazdaságot építsenek" brandstory_part4: "És ami legalább olyan fontos, mint maga a szoftver, azok az értékek, amelyek a szoftver alapját képezik.\nHa élelmiszert értékesítesz – akár mint gazdálkodó, akár mint termelői piac, vagy termelői szövetkezet vagy élelmiszer-központ -, akkor olyan szoftvert válassz, amely összhangban van az értékeiddel, az emberek és a bolygó érdekével, nem pedig a profit érdekében tevékenykedik. " brandstory_part5_strong: "Open Food Network – a Szabad Élelmiszerhálózat" - brandstory_part6: "Mindannyian szeretjük az ételt. Most már az élelmezési rendszerünket is szerethetjük." + brandstory_part6: "Csatlakozz te is!" system_headline: "A vásárlás lépései" system_step1: "1. Keresés" system_step1_text: "Böngészhetsz közvetlenül a gazdák, vagy a bevásárlóközösségek kínálatában. Kereshetsz a lakhelyed, a termelő, élelmiszertípus, és termesztési mód szerint." From e07cf6c628c9e50b0f3f902807caec2cf68df620 Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Sun, 16 Jun 2024 23:38:38 +0200 Subject: [PATCH 307/319] Do not use rescue as control flow --- .../spree/admin/images_controller.rb | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/app/controllers/spree/admin/images_controller.rb b/app/controllers/spree/admin/images_controller.rb index c176a84ef4..cb1ebe40ac 100644 --- a/app/controllers/spree/admin/images_controller.rb +++ b/app/controllers/spree/admin/images_controller.rb @@ -35,30 +35,32 @@ module Spree @object.attributes = permitted_resource_params - @object.save! - flash[:success] = flash_message_for(@object, :successfully_created) + if @object.save + flash[:success] = flash_message_for(@object, :successfully_created) - respond_to do |format| - format.html { redirect_to location_after_save } - format.turbo_stream { render :update } + respond_to do |format| + format.html { redirect_to location_after_save } + format.turbo_stream { render :update } + end + else + respond_with_error(@object.errors) end - rescue ActiveRecord::RecordInvalid => e - respond_with_error(e) end def update @url_filters = ::ProductFilters.new.extract(request.query_parameters) set_viewable - @object.update!(permitted_resource_params) - flash[:success] = flash_message_for(@object, :successfully_updated) + if @object.update(permitted_resource_params) + flash[:success] = flash_message_for(@object, :successfully_updated) - respond_to do |format| - format.html { redirect_to location_after_save } - format.turbo_stream + respond_to do |format| + format.html { redirect_to location_after_save } + format.turbo_stream + end + else + respond_with_error(@object.errors) end - rescue ActiveRecord::RecordInvalid => e - respond_with_error(e) end def destroy @@ -109,8 +111,8 @@ module Spree ) end - def respond_with_error(error) - @errors = error.record.errors.map(&:full_message) + def respond_with_error(errors) + @errors = errors.map(&:full_message) respond_to do |format| format.html { respond_with(@object) } format.turbo_stream { render :edit } From aff50f66c401ecdf238ec590d960cf0a14d66a8a Mon Sep 17 00:00:00 2001 From: David Cook Date: Mon, 17 Jun 2024 12:14:36 +1000 Subject: [PATCH 308/319] Name and Producer columns grow to fill and other tweaks If neither are visible, the first column on the left (eg image) will grow. But that's not a likely scenario. Min-widths help manage sizes on smaller screens in Chrome. The title for Inherits Properties gets cut off, but I think it's better than cutting off content. Oh look, it fixed a spec too! --- app/views/admin/products_v3/_table.html.haml | 12 ++++++------ spec/system/admin/products_v3/products_spec.rb | 1 - 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 0338784a74..d15e471012 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -15,19 +15,19 @@ %table.products{ 'data-column-preferences-target': "table" } %colgroup - -# The `min-width` property works in Chrome but not Firefox. + -# The `min-width` property works in Chrome but not Firefox so is considered progressive enhancement. %col{ 'data-column-preferences-name': :image, width:"56px" }= # (image size + padding) - %col{ 'data-column-preferences-name': :name, width:"15%", style:"min-width: 6em" }= # (grow to fill) - %col{ 'data-column-preferences-name': :sku, width:"10%", style:"min-width: 6em" } + %col{ 'data-column-preferences-name': :name, style:"min-width: 6em" }= # (grow to fill) + %col{ 'data-column-preferences-name': :sku, width:"8%", style:"min-width: 6em" } %col{ 'data-column-preferences-name': :unit_scale, width:"8%" } %col{ 'data-column-preferences-name': :unit, width:"8%" } %col{ 'data-column-preferences-name': :price, width:"5%", style:"min-width: 5em" } %col{ 'data-column-preferences-name': :on_hand, width:"10%"} - %col{ 'data-column-preferences-name': :producer, width:"15%"} + %col{ 'data-column-preferences-name': :producer, style:"min-width: 6em" }= # (grow to fill) %col{ 'data-column-preferences-name': :category, width:"8%" } %col{ 'data-column-preferences-name': :tax_category, width:"8%" } - %col{ 'data-column-preferences-name': :inherits_properties, width:"8%" } - %col{ width:"1%", style:"min-width: 5em"}= # Actions + %col{ 'data-column-preferences-name': :inherits_properties, width:"5%" } + %col{ width:"5%", style:"min-width: 3em"}= # Actions %thead %tr %td.form-actions-wrapper{ colspan: 12 } diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 511b7885e2..620e1901a2 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -1038,7 +1038,6 @@ RSpec.describe 'As an enterprise user, I can manage my products', feature: :admi tomselect_search_and_select(category_to_select, from: "Category") sleep(0.1) - pending "unable to select tax_category dropdown, possibly because category is still open and too big, covering the tax_cat." # rubocop:disable Layout/LineLength validate_tomselect_with_search!( page, "Tax Category", tax_categories_search_selector From 422965748f841f312c7fce412d0c76c9e163017b Mon Sep 17 00:00:00 2001 From: zanetagebka Date: Mon, 17 Jun 2024 15:32:25 +0200 Subject: [PATCH 309/319] Solve Rubocop RedundantInterpolation cops --- .rubocop_todo.yml | 60 +++++++++++++++------------------------- lib/tasks/karma.rake | 2 +- spec/base_spec_helper.rb | 2 +- 3 files changed, 24 insertions(+), 40 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 8a6981e6b8..8fce4f930f 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,11 +1,20 @@ # This configuration was generated by # `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 1400 --no-auto-gen-timestamp` -# using RuboCop version 1.62.1. +# using RuboCop version 1.63.5. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. +# Offense count: 4 +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces. +# SupportedStyles: space, no_space, compact +# SupportedStylesForEmptyBraces: space, no_space +Layout/SpaceInsideHashLiteralBraces: + Exclude: + - 'tmp/stimulus_reflex_installer/working/development.rb' + # Offense count: 16 # Configuration parameters: AllowComments, AllowEmptyLambdas. Lint/EmptyBlock: @@ -22,11 +31,10 @@ Lint/EmptyBlock: - 'spec/jobs/subscription_placement_job_spec.rb' - 'spec/models/product_import/entry_validator_spec.rb' -# Offense count: 6 +# Offense count: 4 # Configuration parameters: AllowComments. Lint/EmptyClass: Exclude: - - 'spec/controllers/spree/admin/base_controller_spec.rb' - 'spec/lib/reports/report_loader_spec.rb' # Offense count: 1 @@ -80,7 +88,7 @@ Lint/UselessMethodDefinition: Exclude: - 'app/models/spree/gateway.rb' -# Offense count: 26 +# Offense count: 24 # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max. Metrics/AbcSize: Exclude: @@ -102,7 +110,6 @@ Metrics/AbcSize: - 'lib/open_food_network/order_cycle_form_applicator.rb' - 'lib/open_food_network/order_cycle_permissions.rb' - 'lib/spree/core/controller_helpers/order.rb' - - 'lib/tasks/enterprises.rake' - 'spec/services/orders/checkout_restart_service_spec.rb' # Offense count: 9 @@ -123,7 +130,7 @@ Metrics/BlockNesting: Exclude: - 'app/models/spree/payment/processing.rb' -# Offense count: 46 +# Offense count: 47 # Configuration parameters: CountComments, Max, CountAsOne. Metrics/ClassLength: Exclude: @@ -175,7 +182,7 @@ Metrics/ClassLength: - 'lib/reporting/reports/enterprise_fee_summary/scope.rb' - 'lib/reporting/reports/xero_invoices/base.rb' -# Offense count: 34 +# Offense count: 32 # Configuration parameters: AllowedMethods, AllowedPatterns, Max. Metrics/CyclomaticComplexity: Exclude: @@ -185,7 +192,6 @@ Metrics/CyclomaticComplexity: - 'app/helpers/checkout_helper.rb' - 'app/helpers/order_cycles_helper.rb' - 'app/helpers/spree/admin/navigation_helper.rb' - - 'app/models/enterprise.rb' - 'app/models/enterprise_relationship.rb' - 'app/models/product_import/entry_validator.rb' - 'app/models/spree/ability.rb' @@ -206,7 +212,7 @@ Metrics/CyclomaticComplexity: - 'lib/spree/localized_number.rb' - 'spec/models/product_importer_spec.rb' -# Offense count: 25 +# Offense count: 24 # Configuration parameters: CountComments, Max, CountAsOne, AllowedMethods, AllowedPatterns. Metrics/MethodLength: Exclude: @@ -391,7 +397,6 @@ RSpecRails/HaveHttpStatus: - 'spec/controllers/user_registrations_controller_spec.rb' - 'spec/requests/admin/images_spec.rb' - 'spec/requests/api/routes_spec.rb' - - 'spec/requests/checkout/failed_checkout_spec.rb' - 'spec/requests/checkout/stripe_sca_spec.rb' - 'spec/requests/home_controller_spec.rb' - 'spec/requests/omniauth_callbacks_controller_spec.rb' @@ -407,7 +412,7 @@ RSpecRails/HttpStatus: - 'spec/controllers/spree/admin/products_controller_spec.rb' - 'spec/requests/api/orders_spec.rb' -# Offense count: 146 +# Offense count: 144 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: Inferences. RSpecRails/InferredSpecType: @@ -511,7 +516,6 @@ RSpecRails/InferredSpecType: - 'spec/helpers/navigation_helper_spec.rb' - 'spec/helpers/order_cycles_helper_spec.rb' - 'spec/helpers/serializer_helper_spec.rb' - - 'spec/helpers/shared_helper_spec.rb' - 'spec/helpers/shop_helper_spec.rb' - 'spec/helpers/spree/admin/base_helper_spec.rb' - 'spec/helpers/spree/admin/general_settings_helper_spec.rb' @@ -545,7 +549,6 @@ RSpecRails/InferredSpecType: - 'spec/requests/api/routes_spec.rb' - 'spec/requests/api/v1/customers_spec.rb' - 'spec/requests/api_docs_spec.rb' - - 'spec/requests/checkout/failed_checkout_spec.rb' - 'spec/requests/checkout/paypal_spec.rb' - 'spec/requests/checkout/routes_spec.rb' - 'spec/requests/checkout/stripe_sca_spec.rb' @@ -642,7 +645,7 @@ Rails/RedundantActiveRecordAllMethod: - 'app/models/spree/variant.rb' - 'spec/system/admin/product_import_spec.rb' -# Offense count: 4 +# Offense count: 3 # This cop supports unsafe autocorrection (--autocorrect-all). Rails/RedundantPresenceValidationOnBelongsTo: Exclude: @@ -765,7 +768,7 @@ Style/CaseEquality: Exclude: - 'spec/models/spree/payment_spec.rb' -# Offense count: 25 +# Offense count: 23 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: EnforcedStyle. # SupportedStyles: nested, compact @@ -792,16 +795,16 @@ Style/ClassAndModuleChildren: - 'app/serializers/api/taxon_serializer.rb' - 'app/serializers/api/variant_serializer.rb' - 'lib/open_food_network/locking.rb' - - 'spec/controllers/spree/admin/base_controller_spec.rb' - 'spec/models/spree/payment_method_spec.rb' -# Offense count: 1 +# Offense count: 2 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: EnforcedStyle. # SupportedStyles: always, always_true, never Style/FrozenStringLiteralComment: Exclude: - '.simplecov' + - 'tmp/stimulus_reflex_installer/working/development.rb' # Offense count: 6 # This cop supports unsafe autocorrection (--autocorrect-all). @@ -845,12 +848,6 @@ Style/HashEachMethods: - 'spec/models/product_importer_spec.rb' - 'spec/support/cancan_helper.rb' -# Offense count: 1 -# Configuration parameters: MinBranchesCount. -Style/HashLikeCase: - Exclude: - - 'app/models/enterprise.rb' - # Offense count: 4 # This cop supports unsafe autocorrection (--autocorrect-all). Style/MapToHash: @@ -939,19 +936,6 @@ Style/RedundantInitialize: Exclude: - 'spec/models/spree/gateway_spec.rb' -# Offense count: 2 -# This cop supports unsafe autocorrection (--autocorrect-all). -Style/RedundantInterpolation: - Exclude: - - 'lib/tasks/karma.rake' - - 'spec/base_spec_helper.rb' - -# Offense count: 8 -# This cop supports safe autocorrection (--autocorrect). -Style/RedundantLineContinuation: - Exclude: - - 'lib/reporting/reports/enterprise_fee_summary/scope.rb' - # Offense count: 19 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: AllowedMethods, AllowedPatterns. @@ -994,7 +978,7 @@ Style/Send: - 'spec/services/variant_units/option_value_namer_spec.rb' - 'spec/support/localized_number_helper.rb' -# Offense count: 4 +# Offense count: 3 # This cop supports unsafe autocorrection (--autocorrect-all). Style/SlicingWithRange: Exclude: @@ -1002,7 +986,7 @@ Style/SlicingWithRange: - 'app/services/embedded_page_service.rb' - 'engines/order_management/app/services/order_management/subscriptions/validator.rb' -# Offense count: 25 +# Offense count: 23 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: Mode. Style/StringConcatenation: diff --git a/lib/tasks/karma.rake b/lib/tasks/karma.rake index 3ee505f731..0c2183c6e9 100644 --- a/lib/tasks/karma.rake +++ b/lib/tasks/karma.rake @@ -39,6 +39,6 @@ namespace :karma do I18n::JS::DEFAULT_EXPORT_DIR_PATH.replace('tmp/javascripts') I18n::JS.export - "#{Rails.root.join(I18n::JS::DEFAULT_EXPORT_DIR_PATH, 'translations.js')}" + Rails.root.join(I18n::JS::DEFAULT_EXPORT_DIR_PATH, 'translations.js').to_s end end diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb index fcb68b76d6..8a6e29a22e 100644 --- a/spec/base_spec_helper.rb +++ b/spec/base_spec_helper.rb @@ -60,7 +60,7 @@ InvisibleCaptcha.timestamp_enabled = false RSpec.configure do |config| # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures - config.fixture_path = "#{Rails.root.join('spec/fixtures')}" + config.fixture_path = Rails.root.join('spec/fixtures').to_s # If you're not using ActiveRecord, or you'd prefer not to run each of your # examples within a transaction, remove the following line or assign false From ad92d4b129b53e5361f7324844220fb2ac592c8a Mon Sep 17 00:00:00 2001 From: zanetagebka Date: Mon, 17 Jun 2024 15:32:25 +0200 Subject: [PATCH 310/319] Solve Rubocop RedundantInterpolation cops --- .rubocop_todo.yml | 3 ++- lib/tasks/karma.rake | 2 +- spec/base_spec_helper.rb | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 0ec878e146..2220a0bf60 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -810,13 +810,14 @@ Style/ClassAndModuleChildren: - 'lib/open_food_network/locking.rb' - 'spec/models/spree/payment_method_spec.rb' -# Offense count: 1 +# Offense count: 2 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: EnforcedStyle. # SupportedStyles: always, always_true, never Style/FrozenStringLiteralComment: Exclude: - '.simplecov' + - 'tmp/stimulus_reflex_installer/working/development.rb' # Offense count: 6 # This cop supports unsafe autocorrection (--autocorrect-all). diff --git a/lib/tasks/karma.rake b/lib/tasks/karma.rake index 3ee505f731..0c2183c6e9 100644 --- a/lib/tasks/karma.rake +++ b/lib/tasks/karma.rake @@ -39,6 +39,6 @@ namespace :karma do I18n::JS::DEFAULT_EXPORT_DIR_PATH.replace('tmp/javascripts') I18n::JS.export - "#{Rails.root.join(I18n::JS::DEFAULT_EXPORT_DIR_PATH, 'translations.js')}" + Rails.root.join(I18n::JS::DEFAULT_EXPORT_DIR_PATH, 'translations.js').to_s end end diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb index fcb68b76d6..8a6e29a22e 100644 --- a/spec/base_spec_helper.rb +++ b/spec/base_spec_helper.rb @@ -60,7 +60,7 @@ InvisibleCaptcha.timestamp_enabled = false RSpec.configure do |config| # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures - config.fixture_path = "#{Rails.root.join('spec/fixtures')}" + config.fixture_path = Rails.root.join('spec/fixtures').to_s # If you're not using ActiveRecord, or you'd prefer not to run each of your # examples within a transaction, remove the following line or assign false From 93eda481381dc3da7d2aac16b13b4891ec6c330c Mon Sep 17 00:00:00 2001 From: zanetagebka Date: Mon, 17 Jun 2024 15:39:29 +0200 Subject: [PATCH 311/319] recreate rubocop_todo --- .rubocop_todo.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 2220a0bf60..6ca8b45813 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -35,6 +35,15 @@ Layout/MultilineOperationIndentation: Exclude: - 'app/services/products_renderer.rb' +# Offense count: 4 +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces. +# SupportedStyles: space, no_space, compact +# SupportedStylesForEmptyBraces: space, no_space +Layout/SpaceInsideHashLiteralBraces: + Exclude: + - 'tmp/stimulus_reflex_installer/working/development.rb' + # Offense count: 16 # Configuration parameters: AllowComments, AllowEmptyLambdas. Lint/EmptyBlock: @@ -949,13 +958,6 @@ Style/RedundantInitialize: Exclude: - 'spec/models/spree/gateway_spec.rb' -# Offense count: 2 -# This cop supports unsafe autocorrection (--autocorrect-all). -Style/RedundantInterpolation: - Exclude: - - 'lib/tasks/karma.rake' - - 'spec/base_spec_helper.rb' - # Offense count: 19 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: AllowedMethods, AllowedPatterns. From 9543b597d0bfcf403f82f8b15ed2ae38a34ebc64 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Jun 2024 02:16:27 +0000 Subject: [PATCH 312/319] chore(deps): bump ws from 6.2.2 to 6.2.3 Bumps [ws](https://github.com/websockets/ws) from 6.2.2 to 6.2.3. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/6.2.2...6.2.3) --- updated-dependencies: - dependency-name: ws dependency-type: indirect ... Signed-off-by: dependabot[bot] --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 83fff344f0..d76813d5eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9406,16 +9406,16 @@ write-file-atomic@^3.0.0: typedarray-to-buffer "^3.1.5" ws@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== + version "6.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.3.tgz#ccc96e4add5fd6fedbc491903075c85c5a11d9ee" + integrity sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA== dependencies: async-limiter "~1.0.0" ws@^7.4.6: - version "7.5.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" - integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@~8.11.0: version "8.11.0" From b8f8d6d042148a38b10d9be1a035889e034c4ac4 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 18 Jun 2024 15:28:49 +1000 Subject: [PATCH 313/319] Show/hide columns with CSS selectors instead Well, that made the JS way simpler. Adds a lot of classes though. Maybe we could do it based on column index instead, but this will do for now. table.hide-col0 { td:nth-child(0) { display: none; } } --- .../admin/products_v3/_product_row.html.haml | 22 +++++----- app/views/admin/products_v3/_table.html.haml | 42 +++++++++---------- .../admin/products_v3/_variant_row.html.haml | 22 +++++----- .../_stimulus_sortable_header.html.haml | 2 +- .../column_preferences_controller.js | 29 ++----------- app/webpacker/css/admin/products_v3.scss | 19 +++++++-- 6 files changed, 63 insertions(+), 73 deletions(-) diff --git a/app/views/admin/products_v3/_product_row.html.haml b/app/views/admin/products_v3/_product_row.html.haml index d009b544ed..c918937570 100644 --- a/app/views/admin/products_v3/_product_row.html.haml +++ b/app/views/admin/products_v3/_product_row.html.haml @@ -1,13 +1,13 @@ -%td.with-image{ id: "image-#{product.id}" } +%td.col-image.with-image{ id: "image-#{product.id}" } = render partial: "product_image", locals: { product: } -%td.field.align-left.header.naked_inputs +%td.col-name.field.align-left.header.naked_inputs = f.hidden_field :id = f.text_field :name, 'aria-label': t('admin.products_page.columns.name') = error_message_on product, :name -%td.field.naked_inputs +%td.col-sku.field.naked_inputs = f.text_field :sku, 'aria-label': t('admin.products_page.columns.sku') = error_message_on product, :sku -%td.field.naked_inputs{ 'data-controller': 'toggle-control', 'data-toggle-control-match-value': 'items' } +%td.col-unit_scale.field.naked_inputs{ 'data-controller': 'toggle-control', 'data-toggle-control-match-value': 'items' } = f.hidden_field :variant_unit = f.hidden_field :variant_unit_scale = f.select :variant_unit_with_scale, @@ -19,23 +19,23 @@ .field = f.text_field :variant_unit_name, 'aria-label': t('items'), 'data-toggle-control-target': 'control', style: (product.variant_unit == "items" ? "" : "display: none") = error_message_on product, :variant_unit_name, 'data-toggle-control-target': 'control' -%td.align-right +%td.col-unit.align-right -# empty -%td.align-right +%td.col-price.align-right -# empty -%td.align-right +%td.col-on_demand.align-right -# empty -%td.naked_inputs +%td.col-producer.naked_inputs = render(SearchableDropdownComponent.new(form: f, name: :supplier_id, aria_label: t('.producer_field_name'), options: producer_options, selected_option: product.supplier_id, placeholder_value: t('admin.products_v3.filters.search_for_producers'))) -%td.align-left +%td.col-category.align-left -# empty -%td.align-left -%td.align-left +%td.col-tax_category.align-left +%td.col-inherits_properties.align-left .content= product.inherits_properties ? 'YES' : 'NO' #TODO: consider using https://github.com/RST-J/human_attribute_values, else use I18n.t (also below) %td.align-right = render(VerticalEllipsisMenu::Component.new) do diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index d15e471012..0b8cc98b79 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -16,17 +16,17 @@ %table.products{ 'data-column-preferences-target': "table" } %colgroup -# The `min-width` property works in Chrome but not Firefox so is considered progressive enhancement. - %col{ 'data-column-preferences-name': :image, width:"56px" }= # (image size + padding) - %col{ 'data-column-preferences-name': :name, style:"min-width: 6em" }= # (grow to fill) - %col{ 'data-column-preferences-name': :sku, width:"8%", style:"min-width: 6em" } - %col{ 'data-column-preferences-name': :unit_scale, width:"8%" } - %col{ 'data-column-preferences-name': :unit, width:"8%" } - %col{ 'data-column-preferences-name': :price, width:"5%", style:"min-width: 5em" } - %col{ 'data-column-preferences-name': :on_hand, width:"10%"} - %col{ 'data-column-preferences-name': :producer, style:"min-width: 6em" }= # (grow to fill) - %col{ 'data-column-preferences-name': :category, width:"8%" } - %col{ 'data-column-preferences-name': :tax_category, width:"8%" } - %col{ 'data-column-preferences-name': :inherits_properties, width:"5%" } + %col.col-image{ width:"56px" }= # (image size + padding) + %col.col-name{ style:"min-width: 6em" }= # (grow to fill) + %col.col-sku{ width:"8%", style:"min-width: 6em" } + %col.col-unit_scale{ width:"8%" } + %col.col-unit{ width:"8%" } + %col.col-price{ width:"5%", style:"min-width: 5em" } + %col.col-on_hand{ width:"10%"} + %col.col-producer{ style:"min-width: 6em" }= # (grow to fill) + %col.col-category{ width:"8%" } + %col.col-tax_category{ width:"8%" } + %col.col-inherits_properties{ width:"5%" } %col{ width:"5%", style:"min-width: 3em"}= # Actions %thead %tr @@ -49,18 +49,18 @@ = t('.reset') = form.submit t('.save'), class: "medium" %tr - %th.align-left= # image + %th.col-image.align-left= # image = render partial: 'spree/admin/shared/stimulus_sortable_header', locals: { column: :name, sorted: params.dig(:q, :s), default: 'name asc' } - %th.align-left.with-input= t('admin.products_page.columns.sku') - %th.align-left.with-input= t('admin.products_page.columns.unit_scale') - %th.align-left.with-input= t('admin.products_page.columns.unit') - %th.align-left.with-input= t('admin.products_page.columns.price') - %th.align-left.with-input= t('admin.products_page.columns.on_hand') - %th.align-left= t('admin.products_page.columns.producer') - %th.align-left= t('admin.products_page.columns.category') - %th.align-left= t('admin.products_page.columns.tax_category') - %th.align-left= t('admin.products_page.columns.inherits_properties') + %th.align-left.col-sku.with-input= t('admin.products_page.columns.sku') + %th.align-left.col-unit_scale.with-input= t('admin.products_page.columns.unit_scale') + %th.align-left.col-unit.with-input= t('admin.products_page.columns.unit') + %th.align-left.col-price.with-input= t('admin.products_page.columns.price') + %th.align-left.col-on_hand.with-input= t('admin.products_page.columns.on_hand') + %th.align-left.col-producer= t('admin.products_page.columns.producer') + %th.align-left.col-category= t('admin.products_page.columns.category') + %th.align-left.col-tax_category= t('admin.products_page.columns.tax_category') + %th.align-left.col-inherits_properties= t('admin.products_page.columns.inherits_properties') %th.align-right= t('admin.products_page.columns.actions') - products.each_with_index do |product, product_index| = form.fields_for("products", product, index: product_index) do |product_form| diff --git a/app/views/admin/products_v3/_variant_row.html.haml b/app/views/admin/products_v3/_variant_row.html.haml index 3b3b38ac54..311b833e04 100644 --- a/app/views/admin/products_v3/_variant_row.html.haml +++ b/app/views/admin/products_v3/_variant_row.html.haml @@ -1,15 +1,15 @@ -%td +%td.col-image -# empty -%td.field.naked_inputs +%td.col-name.field.naked_inputs = f.hidden_field :id = f.text_field :display_name, 'aria-label': t('admin.products_page.columns.name'), placeholder: variant.product.name = error_message_on variant, :display_name -%td.field.naked_inputs +%td.col-sku.field.naked_inputs = f.text_field :sku, 'aria-label': t('admin.products_page.columns.sku') = error_message_on variant, :sku -%td +%td.col-unit_scale -# empty -%td.field.popout{'data-controller': "popout", 'data-popout-update-display-value': "false"} +%td.col-unit.field.popout{'data-controller': "popout", 'data-popout-update-display-value': "false"} = f.button :unit_to_display, class: "popout__button", 'aria-label': t('admin.products_page.columns.unit'), 'data-popout-target': "button" do = variant.unit_to_display # Show the generated summary of unit values %div.popout__container{ style: 'display: none;', 'data-controller': 'toggle-control', 'data-popout-target': "dialog" } @@ -25,10 +25,10 @@ = f.label :display_as, t('admin.products_page.columns.display_as') = f.text_field :display_as, placeholder: VariantUnits::OptionValueNamer.new(variant).name = error_message_on variant, :unit_value -%td.field.naked_inputs +%td.col-price.field.naked_inputs = f.text_field :price, 'aria-label': t('admin.products_page.columns.price'), value: number_to_currency(variant.price, unit: '')&.strip # TODO: add a spec to prove that this formatting is necessary. If so, it should be in a shared form helper for currency inputs = error_message_on variant, :price -%td.field.popout{'data-controller': "popout"} +%td.col-on_hand.field.popout{'data-controller': "popout"} %button.popout__button{'data-popout-target': "button", 'aria-label': t('admin.products_page.columns.on_hand')} = variant.on_demand ? t(:on_demand) : variant.on_hand %div.popout__container{ style: 'display: none;', 'data-controller': 'toggle-control', 'data-popout-target': "dialog" } @@ -39,16 +39,16 @@ = f.label :on_demand do = f.check_box :on_demand, 'data-action': 'change->toggle-control#disableIfPresent change->popout#closeIfChecked' = t(:on_demand) -%td.align-left +%td.col-producer.align-left -# empty producer name -%td.field.naked_inputs +%td.col-category.field.naked_inputs = render(SearchableDropdownComponent.new(form: f, name: :primary_taxon_id, options: category_options, selected_option: variant.primary_taxon_id, aria_label: t('.category_field_name'), placeholder_value: t('admin.products_v3.filters.search_for_categories'))) -%td.field.naked_inputs +%td.col-tax_category.field.naked_inputs = render(SearchableDropdownComponent.new(form: f, name: :tax_category_id, options: tax_category_options, @@ -57,7 +57,7 @@ aria_label: t('.tax_category_field_name'), placeholder_value: t('.search_for_tax_categories'))) = error_message_on variant, :tax_category -%td.align-left +%td.col-inherits_properties.align-left -# empty %td.align-right = render(VerticalEllipsisMenu::Component.new) do diff --git a/app/views/spree/admin/shared/_stimulus_sortable_header.html.haml b/app/views/spree/admin/shared/_stimulus_sortable_header.html.haml index 08db1b6ce9..051ffa1f4f 100644 --- a/app/views/spree/admin/shared/_stimulus_sortable_header.html.haml +++ b/app/views/spree/admin/shared/_stimulus_sortable_header.html.haml @@ -1,4 +1,4 @@ -%th +%th{ class: "col-#{column}" } %a{ "data-controller": "search", "data-action": "click->search#changeSorting", "data-column": "#{column}", "data-current": (sorted || default).to_s } = t("spree.admin.shared.sortable_header.#{column.to_s}") diff --git a/app/webpacker/controllers/column_preferences_controller.js b/app/webpacker/controllers/column_preferences_controller.js index dfbcee6f2b..9b55a961dc 100644 --- a/app/webpacker/controllers/column_preferences_controller.js +++ b/app/webpacker/controllers/column_preferences_controller.js @@ -12,7 +12,7 @@ export default class ColumnPreferencesController extends Controller { cell.dataset.defaultColSpan ||= cell.colSpan; }); - this.checkboxes = this.element.querySelectorAll("input[type=checkbox]"); + this.checkboxes = Array.from(this.element.querySelectorAll("input[type=checkbox]")); for (const element of this.checkboxes) { // On initial load this.#showHideColumn(element); @@ -26,40 +26,17 @@ export default class ColumnPreferencesController extends Controller { #showHideColumn(e) { const element = e.target || e; const name = element.dataset.columnName; - const selector = `col[data-column-preferences-name="${name}"]`; - const column = this.table.querySelector(selector); - const index = this.#getIndex(column); - if (column == null) { - console.error(`ColumnPreferencesController: could not find ${selector}`); - return; - } - - // Hide column definition - this.#showHideElement(column, element.checked); - - // Hide each cell in column (ignore rows with colspan) - const rows = this.table.querySelectorAll("tr:not(:has(td[colspan]))"); - rows.forEach((row) => { - // Ignore cell if spanning multiple columns - const cell = row.children[index]; - if (cell == undefined) return; - - this.#showHideElement(cell, element.checked); - }); + this.table.classList.toggle(`hide-${name}`, !element.checked); // Reset cell colspans - const hiddenColCount = this.cols.filter((col)=> col.style.display == 'none').length; + const hiddenColCount = this.checkboxes.filter((checkbox)=> !checkbox.checked).length; for(const cell of this.colSpanCells) { const span = parseInt(cell.dataset.defaultColSpan, 10) - hiddenColCount; cell.colSpan = span; }; } - #getIndex(column) { - return Array.from(column.parentNode.children).indexOf(column); - } - #showHideElement(element, show) { element.style.display = show ? "" : "none"; } diff --git a/app/webpacker/css/admin/products_v3.scss b/app/webpacker/css/admin/products_v3.scss index 646c2d074b..576e6d8af1 100644 --- a/app/webpacker/css/admin/products_v3.scss +++ b/app/webpacker/css/admin/products_v3.scss @@ -96,7 +96,8 @@ // "Naked" inputs. Row hover helps reveal them. .naked_inputs { - input:not([type="checkbox"]), .ts-control { + input:not([type="checkbox"]), + .ts-control { background-color: $color-tbl-cell-bg; } } @@ -179,6 +180,18 @@ .ts-control { z-index: 0; // Avoid hovering over thead } + + // Hide columns + $columns: + "image", "name", "sku", "unit_scale", "unit", "price", "on_hand", "producer", "category", + "tax_category", "inherits_properties"; + @each $col in $columns { + &.hide-#{$col} { + .col-#{$col} { + display: none; + } + } + } } #no-products { @@ -378,7 +391,7 @@ border-radius: $border-radius; box-shadow: 0px 0px 8px 0px rgba($near-black, 0.25); - .field{ + .field { margin-bottom: 0.75em; &:last-child { @@ -432,7 +445,7 @@ opacity: 0; } } - + .slide-out { animation: slideOutLeft 0.5s forwards; } From a155630b1c48d51cd244cb05d2e6b06f61c96beb Mon Sep 17 00:00:00 2001 From: cyrillefr Date: Wed, 5 Jun 2024 13:44:46 +0200 Subject: [PATCH 314/319] Fixes offenses raised by Rails/UnusedRenderContent - in any cases, adding status: :no_content dropes content from response - replaced by head :no_content (HTTP 204) --- .rubocop_todo.yml | 11 ----------- app/controllers/admin/bulk_line_items_controller.rb | 4 ++-- app/controllers/admin/tag_rules_controller.rb | 2 +- app/controllers/api/v0/enterprise_fees_controller.rb | 2 +- app/controllers/api/v0/products_controller.rb | 2 +- app/controllers/api/v0/taxons_controller.rb | 2 +- app/controllers/api/v0/variants_controller.rb | 2 +- 7 files changed, 7 insertions(+), 18 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 0ec878e146..910f36f85b 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -746,17 +746,6 @@ Rails/UnknownEnv: Exclude: - 'app/models/spree/app_configuration.rb' -# Offense count: 7 -# Configuration parameters: Severity. -Rails/UnusedRenderContent: - Exclude: - - 'app/controllers/admin/bulk_line_items_controller.rb' - - 'app/controllers/admin/tag_rules_controller.rb' - - 'app/controllers/api/v0/enterprise_fees_controller.rb' - - 'app/controllers/api/v0/products_controller.rb' - - 'app/controllers/api/v0/taxons_controller.rb' - - 'app/controllers/api/v0/variants_controller.rb' - # Offense count: 1 Security/Open: Exclude: diff --git a/app/controllers/admin/bulk_line_items_controller.rb b/app/controllers/admin/bulk_line_items_controller.rb index 9537756a6c..c1d966e545 100644 --- a/app/controllers/admin/bulk_line_items_controller.rb +++ b/app/controllers/admin/bulk_line_items_controller.rb @@ -35,7 +35,7 @@ module Admin order.with_lock do if order.contents.update_item(@line_item, line_item_params) # No Content, does not trigger ng resource auto-update - render body: nil, status: :no_content + head :no_content else render json: { errors: @line_item.errors }, status: :precondition_failed end @@ -49,7 +49,7 @@ module Admin authorize! :update, order order.contents.remove(@line_item.variant) - render body: nil, status: :no_content # No Content, does not trigger ng resource auto-update + head :no_content # No Content, does not trigger ng resource auto-update end private diff --git a/app/controllers/admin/tag_rules_controller.rb b/app/controllers/admin/tag_rules_controller.rb index fd00ea66be..d7a749a3a7 100644 --- a/app/controllers/admin/tag_rules_controller.rb +++ b/app/controllers/admin/tag_rules_controller.rb @@ -5,7 +5,7 @@ module Admin respond_to :json respond_override destroy: { json: { - success: lambda { render body: nil, status: :no_content } + success: lambda { head :no_content } } } def map_by_tag diff --git a/app/controllers/api/v0/enterprise_fees_controller.rb b/app/controllers/api/v0/enterprise_fees_controller.rb index 45957672a7..25b696349d 100644 --- a/app/controllers/api/v0/enterprise_fees_controller.rb +++ b/app/controllers/api/v0/enterprise_fees_controller.rb @@ -9,7 +9,7 @@ module Api authorize! :destroy, enterprise_fee if enterprise_fee.destroy - render plain: I18n.t(:successfully_removed), status: :no_content + head :no_content else render plain: enterprise_fee.errors.full_messages.first, status: :forbidden end diff --git a/app/controllers/api/v0/products_controller.rb b/app/controllers/api/v0/products_controller.rb index 1a72047d73..a85b1986d9 100644 --- a/app/controllers/api/v0/products_controller.rb +++ b/app/controllers/api/v0/products_controller.rb @@ -44,7 +44,7 @@ module Api authorize! :delete, @product @product.destroyed_by = current_api_user @product.destroy - render json: @product, serializer: Api::Admin::ProductSerializer, status: :no_content + head :no_content end def bulk_products diff --git a/app/controllers/api/v0/taxons_controller.rb b/app/controllers/api/v0/taxons_controller.rb index c6b889af43..75e85f5435 100644 --- a/app/controllers/api/v0/taxons_controller.rb +++ b/app/controllers/api/v0/taxons_controller.rb @@ -55,7 +55,7 @@ module Api def destroy authorize! :delete, Spree::Taxon taxon.destroy - render json: taxon, serializer: Api::TaxonSerializer, status: :no_content + head :no_content end private diff --git a/app/controllers/api/v0/variants_controller.rb b/app/controllers/api/v0/variants_controller.rb index bac0579710..33131f6737 100644 --- a/app/controllers/api/v0/variants_controller.rb +++ b/app/controllers/api/v0/variants_controller.rb @@ -44,7 +44,7 @@ module Api authorize! :delete, @variant VariantDeleter.new.delete(@variant) - render json: @variant, serializer: Api::VariantSerializer, status: :no_content + head :no_content end private From c6254a5b7e2b5044350bc1a78087269a82fefd85 Mon Sep 17 00:00:00 2001 From: zanetagebka Date: Tue, 18 Jun 2024 14:32:41 +0200 Subject: [PATCH 315/319] rubocop_todo recreate --- .rubocop_todo.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 6ca8b45813..a32f09b5b2 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -35,15 +35,6 @@ Layout/MultilineOperationIndentation: Exclude: - 'app/services/products_renderer.rb' -# Offense count: 4 -# This cop supports safe autocorrection (--autocorrect). -# Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces. -# SupportedStyles: space, no_space, compact -# SupportedStylesForEmptyBraces: space, no_space -Layout/SpaceInsideHashLiteralBraces: - Exclude: - - 'tmp/stimulus_reflex_installer/working/development.rb' - # Offense count: 16 # Configuration parameters: AllowComments, AllowEmptyLambdas. Lint/EmptyBlock: From b4bfcb7cc82f0ed74914e3f5cc8b27d74038ac87 Mon Sep 17 00:00:00 2001 From: zanetagebka Date: Tue, 18 Jun 2024 14:34:03 +0200 Subject: [PATCH 316/319] rubocop_todo recreate --- .rubocop_todo.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index a32f09b5b2..ff59f620e9 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -817,7 +817,6 @@ Style/ClassAndModuleChildren: Style/FrozenStringLiteralComment: Exclude: - '.simplecov' - - 'tmp/stimulus_reflex_installer/working/development.rb' # Offense count: 6 # This cop supports unsafe autocorrection (--autocorrect-all). From 6fd3cada8cb563d1c83d874e92394d018ca4261a Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 19 Jun 2024 09:13:53 +1000 Subject: [PATCH 317/319] Fix classname --- app/views/admin/products_v3/_product_row.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/products_v3/_product_row.html.haml b/app/views/admin/products_v3/_product_row.html.haml index c918937570..48636dc92e 100644 --- a/app/views/admin/products_v3/_product_row.html.haml +++ b/app/views/admin/products_v3/_product_row.html.haml @@ -23,7 +23,7 @@ -# empty %td.col-price.align-right -# empty -%td.col-on_demand.align-right +%td.col-on_hand.align-right -# empty %td.col-producer.naked_inputs = render(SearchableDropdownComponent.new(form: f, From 6ce442a42e69fee94a1b149f350617d7ee519461 Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 19 Jun 2024 09:49:15 +1000 Subject: [PATCH 318/319] Add translation key for Spree::Image#attachment --- config/locales/en.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/locales/en.yml b/config/locales/en.yml index 13b2cd44fa..e4be4f6843 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -29,6 +29,8 @@ en: spree/product: Product spree/shipping_method: Shipping Method attributes: + spree/image: + attachment: Attachment spree/order/ship_address: address1: "Shipping address (Street + House number)" address2: "Shipping address line 2" From 8837f1caa25439f4304d72ccea78574c13536a35 Mon Sep 17 00:00:00 2001 From: Maikel Date: Wed, 19 Jun 2024 15:18:57 +1000 Subject: [PATCH 319/319] Revert "Allow negative stock levels for on-demand products" --- app/models/concerns/variant_stock.rb | 3 ++- app/models/variant_override.rb | 4 +--- lib/open_food_network/scope_variant_to_hub.rb | 4 ++++ spec/lib/open_food_network/scope_variant_to_hub_spec.rb | 4 ++-- spec/models/spree/line_item_spec.rb | 4 ++-- spec/system/consumer/shopping/variant_overrides_spec.rb | 4 ++-- 6 files changed, 13 insertions(+), 10 deletions(-) diff --git a/app/models/concerns/variant_stock.rb b/app/models/concerns/variant_stock.rb index 10ea8f136e..f39ab38dc9 100644 --- a/app/models/concerns/variant_stock.rb +++ b/app/models/concerns/variant_stock.rb @@ -112,7 +112,8 @@ module VariantStock # # This enables us to override this behaviour for variant overrides def move(quantity, originator = nil) - return if deleted_at + # Don't change variant stock if variant is on_demand or has been deleted + return if on_demand || deleted_at raise_error_if_no_stock_item_available diff --git a/app/models/variant_override.rb b/app/models/variant_override.rb index 447ea53b6f..ea5dca61b2 100644 --- a/app/models/variant_override.rb +++ b/app/models/variant_override.rb @@ -15,9 +15,7 @@ class VariantOverride < ApplicationRecord # Need to ensure this can be set by the user. validates :default_stock, numericality: { greater_than_or_equal_to: 0 }, allow_nil: true validates :price, numericality: { greater_than_or_equal_to: 0 }, allow_nil: true - validates :count_on_hand, numericality: { - greater_than_or_equal_to: 0, unless: :on_demand? - }, allow_nil: true + validates :count_on_hand, numericality: { greater_than_or_equal_to: 0 }, allow_nil: true default_scope { where(permission_revoked_at: nil) } diff --git a/lib/open_food_network/scope_variant_to_hub.rb b/lib/open_food_network/scope_variant_to_hub.rb index 90bfef39d4..d7a29cbb9c 100644 --- a/lib/open_food_network/scope_variant_to_hub.rb +++ b/lib/open_food_network/scope_variant_to_hub.rb @@ -43,7 +43,11 @@ module OpenFoodNetwork # - updates variant_override.count_on_hand # - does not create stock_movement # - does not update stock_item.count_on_hand + # If it is a variant override with on_demand: + # - don't change stock or call super (super would change the variant's stock) def move(quantity, originator = nil) + return if @variant_override&.on_demand + if @variant_override&.stock_overridden? @variant_override.move_stock! quantity else diff --git a/spec/lib/open_food_network/scope_variant_to_hub_spec.rb b/spec/lib/open_food_network/scope_variant_to_hub_spec.rb index 16dd0e6d5d..cbff22dc35 100644 --- a/spec/lib/open_food_network/scope_variant_to_hub_spec.rb +++ b/spec/lib/open_food_network/scope_variant_to_hub_spec.rb @@ -181,9 +181,9 @@ module OpenFoodNetwork scoper.scope v2 end - it "does reduce variant's stock" do + it "doesn't reduce variant's stock" do v2.move(-2) - expect(Spree::Variant.find(v2.id).on_hand).to eq 3 + expect(Spree::Variant.find(v2.id).on_hand).to eq 5 end end diff --git a/spec/models/spree/line_item_spec.rb b/spec/models/spree/line_item_spec.rb index c5e3d5413a..f68e2555d1 100644 --- a/spec/models/spree/line_item_spec.rb +++ b/spec/models/spree/line_item_spec.rb @@ -303,8 +303,8 @@ module Spree expect(order.shipment.manifest.first.variant).to eq line_item.variant end - it "reduces the variant's stock level" do - expect(variant_on_demand.reload.on_hand).to eq(-9) + it "does not reduce the variant's stock level" do + expect(variant_on_demand.reload.on_hand).to eq 1 end it "does not mark inventory units as backorderd" do diff --git a/spec/system/consumer/shopping/variant_overrides_spec.rb b/spec/system/consumer/shopping/variant_overrides_spec.rb index 04252d594a..cda13c4459 100644 --- a/spec/system/consumer/shopping/variant_overrides_spec.rb +++ b/spec/system/consumer/shopping/variant_overrides_spec.rb @@ -210,12 +210,12 @@ RSpec.describe "shopping with variant overrides defined" do expect(product1_variant1_override.reload.count_on_hand).to be_nil end - it "does subtract stock from variants where the override has on_demand: true" do + it "does not subtract stock from variants where the override has on_demand: true" do click_add_to_cart product4_variant1, 2 click_checkout expect do complete_checkout - end.to change { product4_variant1.reload.on_hand }.by(-2) + end.to change { product4_variant1.reload.on_hand }.by(0) expect(product4_variant1_override.reload.count_on_hand).to be_nil end

    0deV)I(4h2(L$--gOWhULyq5GYALPM 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

  • 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

    dbcdQZ3>l7C3fX~qfBR#`G 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 z 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%0AP^WIOm^a{2a@8`$-Ii<;w-BYz+jQk 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