From d1082aff1b98d7aff4825f8a55cb4f4b567b45c0 Mon Sep 17 00:00:00 2001 From: Thomas von Deyen Date: Mon, 29 May 2017 11:12:38 +0200 Subject: [PATCH 1/3] Rename bogus gateways into payment methods To remove confusion around payment methods, gateways and providers we rename the `Spree::Gateway::Bogus` and `Spree::Gateway::BogusSimple` payment methods into `Spree::PaymentMethod::BogusCreditCard` and `Spree::PaymentMethod::SimpleBogusCreditCard`. --- CHANGELOG.md | 4 ++++ .../spree/api/checkouts_controller_spec.rb | 2 +- .../spree/api/payments_controller_spec.rb | 10 +++++----- .../spree/admin/payment_methods_controller_spec.rb | 4 ++-- .../admin/configuration/payment_methods_spec.rb | 8 ++++---- .../bogus_credit_card.rb} | 2 +- .../simple_bogus_credit_card.rb} | 2 +- core/lib/spree/core/engine.rb | 4 ++-- .../factories/payment_method_factory.rb | 4 ++-- core/spec/models/spree/gateway_spec.rb | 2 +- core/spec/models/spree/order_capturing_spec.rb | 14 +++++++------- .../bogus_credit_card_spec.rb} | 2 +- .../simple_bogus_credit_card_spec.rb} | 4 ++-- core/spec/models/spree/payment_spec.rb | 2 +- .../reimbursement_type/original_payment_spec.rb | 2 +- sample/db/samples/payment_methods.rb | 2 +- 16 files changed, 36 insertions(+), 32 deletions(-) rename core/app/models/spree/{gateway/bogus.rb => payment_method/bogus_credit_card.rb} (98%) rename core/app/models/spree/{gateway/bogus_simple.rb => payment_method/simple_bogus_credit_card.rb} (92%) rename core/spec/models/spree/{gateway/bogus_spec.rb => payment_method/bogus_credit_card_spec.rb} (77%) rename core/spec/models/spree/{gateway/bogus_simple.rb => payment_method/simple_bogus_credit_card_spec.rb} (77%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e131df3475..5f0a8e9053b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## Solidus 2.3.0 (master, unreleased) +- Renamed bogus payment methods [\#2000](https://github.com/solidusio/solidus/pull/2000) ([tvdeyen](https://github.com/tvdeyen)) + `Spree::Gateway::BogusSimple` and `Spree::Gateway::Bogus` were renamed into `Spree::PaymentMethod::SimpleBogusCreditCard` and `Spree::PaymentMethod::BogusCreditCard` + Run `rake solidus:migrations:rename_gateways:up` to migrate your data. + - Deprecate `Spree::Core::CurrentStore` in favor of `Spree::CurrentStoreSelector`. [\#1993](https://github.com/solidusio/solidus/pull/1993) - Deprecate `Spree::Order#assign_default_addresses!` in favor of `Order.new.assign_default_user_addresses`. [\#1954](https://github.com/solidusio/solidus/pull/1954) ([kennyadsl](https://github.com/kennyadsl)) - Change how line item options are allowed in line items controller. [\#1943](https://github.com/solidusio/solidus/pull/1943) diff --git a/api/spec/controllers/spree/api/checkouts_controller_spec.rb b/api/spec/controllers/spree/api/checkouts_controller_spec.rb index 0755fc809bd..764bd68dc8f 100644 --- a/api/spec/controllers/spree/api/checkouts_controller_spec.rb +++ b/api/spec/controllers/spree/api/checkouts_controller_spec.rb @@ -154,7 +154,7 @@ module Spree it "can update payment method and transition from payment to confirm" do order.update_column(:state, "payment") - allow_any_instance_of(Spree::Gateway::Bogus).to receive(:source_required?).and_return(false) + allow_any_instance_of(Spree::PaymentMethod::BogusCreditCard).to receive(:source_required?).and_return(false) api_put :update, id: order.to_param, order_token: order.guest_token, order: { payments_attributes: [{ payment_method_id: @payment_method.id }] } expect(json_response['state']).to eq('confirm') diff --git a/api/spec/controllers/spree/api/payments_controller_spec.rb b/api/spec/controllers/spree/api/payments_controller_spec.rb index 372af60cf47..6b63e5bf2f4 100644 --- a/api/spec/controllers/spree/api/payments_controller_spec.rb +++ b/api/spec/controllers/spree/api/payments_controller_spec.rb @@ -37,7 +37,7 @@ module Spree context "payment source is not required" do before do - allow_any_instance_of(Spree::Gateway::Bogus).to receive(:source_required?).and_return(false) + allow_any_instance_of(Spree::PaymentMethod::BogusCreditCard).to receive(:source_required?).and_return(false) end it "can create a new payment" do @@ -160,7 +160,7 @@ module Spree context "authorization fails" do before do fake_response = double(success?: false, to_s: "Could not authorize card") - expect_any_instance_of(Spree::Gateway::Bogus).to receive(:authorize).and_return(fake_response) + expect_any_instance_of(Spree::PaymentMethod::BogusCreditCard).to receive(:authorize).and_return(fake_response) api_put :authorize, id: payment.to_param end @@ -187,7 +187,7 @@ module Spree context "capturing fails" do before do fake_response = double(success?: false, to_s: "Insufficient funds") - expect_any_instance_of(Spree::Gateway::Bogus).to receive(:capture).and_return(fake_response) + expect_any_instance_of(Spree::PaymentMethod::BogusCreditCard).to receive(:capture).and_return(fake_response) end it "returns a 422 status" do @@ -209,7 +209,7 @@ module Spree context "purchasing fails" do before do fake_response = double(success?: false, to_s: "Insufficient funds") - expect_any_instance_of(Spree::Gateway::Bogus).to receive(:purchase).and_return(fake_response) + expect_any_instance_of(Spree::PaymentMethod::BogusCreditCard).to receive(:purchase).and_return(fake_response) end it "returns a 422 status" do @@ -231,7 +231,7 @@ module Spree context "voiding fails" do before do fake_response = double(success?: false, to_s: "NO REFUNDS") - expect_any_instance_of(Spree::Gateway::Bogus).to receive(:void).and_return(fake_response) + expect_any_instance_of(Spree::PaymentMethod::BogusCreditCard).to receive(:void).and_return(fake_response) end it "returns a 422 status" do diff --git a/backend/spec/controllers/spree/admin/payment_methods_controller_spec.rb b/backend/spec/controllers/spree/admin/payment_methods_controller_spec.rb index 0bbe044bb97..d09d931bad9 100644 --- a/backend/spec/controllers/spree/admin/payment_methods_controller_spec.rb +++ b/backend/spec/controllers/spree/admin/payment_methods_controller_spec.rb @@ -28,13 +28,13 @@ class GatewayWithPassword < PaymentMethod context "tries to save invalid payment" do it "doesn't break, responds nicely" do - post :create, params: { payment_method: { name: "", type: "Spree::Gateway::Bogus" } } + post :create, params: { payment_method: { name: "", type: "Spree::PaymentMethod::BogusCreditCard" } } end end it "can create a payment method of a valid type" do expect { - post :create, params: { payment_method: { name: "Test Method", type: "Spree::Gateway::Bogus" } } + post :create, params: { payment_method: { name: "Test Method", type: "Spree::PaymentMethod::BogusCreditCard" } } }.to change(Spree::PaymentMethod, :count).by(1) expect(response).to be_redirect diff --git a/backend/spec/features/admin/configuration/payment_methods_spec.rb b/backend/spec/features/admin/configuration/payment_methods_spec.rb index b4fbce13544..a9d2c3179a5 100644 --- a/backend/spec/features/admin/configuration/payment_methods_spec.rb +++ b/backend/spec/features/admin/configuration/payment_methods_spec.rb @@ -67,7 +67,7 @@ context "changing type and payment_source", js: true do after do # cleanup - Spree::Config.static_model_preferences.for_class(Spree::Gateway::Bogus).clear + Spree::Config.static_model_preferences.for_class(Spree::PaymentMethod::BogusCreditCard).clear end it "displays message when changing type" do @@ -81,13 +81,13 @@ expect(page).to have_no_content('Test Mode') # change back - select2_search 'Spree::Gateway::Bogus', from: 'Provider' + select2_search 'Spree::PaymentMethod::BogusCreditCard', from: 'Provider' expect(page).to have_no_content('you must save first') expect(page).to have_content('Test Mode') end it "displays message when changing preference source" do - Spree::Config.static_model_preferences.add(Spree::Gateway::Bogus, 'my_prefs', {}) + Spree::Config.static_model_preferences.add(Spree::PaymentMethod::BogusCreditCard, 'my_prefs', {}) create(:credit_card_payment_method) click_link "Payment Methods" @@ -105,7 +105,7 @@ end it "updates successfully and keeps secrets" do - Spree::Config.static_model_preferences.add(Spree::Gateway::Bogus, 'my_prefs', { server: 'secret' }) + Spree::Config.static_model_preferences.add(Spree::PaymentMethod::BogusCreditCard, 'my_prefs', { server: 'secret' }) create(:credit_card_payment_method) click_link "Payment Methods" diff --git a/core/app/models/spree/gateway/bogus.rb b/core/app/models/spree/payment_method/bogus_credit_card.rb similarity index 98% rename from core/app/models/spree/gateway/bogus.rb rename to core/app/models/spree/payment_method/bogus_credit_card.rb index 7d1946801a8..127b7e61a0c 100644 --- a/core/app/models/spree/gateway/bogus.rb +++ b/core/app/models/spree/payment_method/bogus_credit_card.rb @@ -1,5 +1,5 @@ module Spree - class Gateway::Bogus < Gateway + class PaymentMethod::BogusCreditCard < Gateway TEST_VISA = ['4111111111111111', '4012888888881881', '4222222222222'] TEST_MC = ['5500000000000004', '5555555555554444', '5105105105105100'] TEST_AMEX = ['378282246310005', '371449635398431', '378734493671000', '340000000000009'] diff --git a/core/app/models/spree/gateway/bogus_simple.rb b/core/app/models/spree/payment_method/simple_bogus_credit_card.rb similarity index 92% rename from core/app/models/spree/gateway/bogus_simple.rb rename to core/app/models/spree/payment_method/simple_bogus_credit_card.rb index 568353967ae..10e3803f892 100644 --- a/core/app/models/spree/gateway/bogus_simple.rb +++ b/core/app/models/spree/payment_method/simple_bogus_credit_card.rb @@ -1,6 +1,6 @@ module Spree # Bogus Gateway that doesn't support payment profiles. - class Gateway::BogusSimple < Gateway::Bogus + class PaymentMethod::SimpleBogusCreditCard < PaymentMethod::BogusCreditCard def payment_profiles_supported? false end diff --git a/core/lib/spree/core/engine.rb b/core/lib/spree/core/engine.rb index f098b013fc7..d7e4bd81fd0 100644 --- a/core/lib/spree/core/engine.rb +++ b/core/lib/spree/core/engine.rb @@ -43,8 +43,8 @@ class Engine < ::Rails::Engine initializer "spree.register.payment_methods", before: :load_config_initializers do |app| app.config.spree.payment_methods = %w[ - Spree::Gateway::Bogus - Spree::Gateway::BogusSimple + Spree::PaymentMethod::BogusCreditCard + Spree::PaymentMethod::SimpleBogusCreditCard Spree::PaymentMethod::StoreCredit Spree::PaymentMethod::Check ] diff --git a/core/lib/spree/testing_support/factories/payment_method_factory.rb b/core/lib/spree/testing_support/factories/payment_method_factory.rb index ff84ef4a061..5f4ccd85d97 100644 --- a/core/lib/spree/testing_support/factories/payment_method_factory.rb +++ b/core/lib/spree/testing_support/factories/payment_method_factory.rb @@ -1,5 +1,5 @@ FactoryGirl.define do - factory :payment_method, aliases: [:credit_card_payment_method], class: Spree::Gateway::Bogus do + factory :payment_method, aliases: [:credit_card_payment_method], class: Spree::PaymentMethod::BogusCreditCard do name 'Credit Card' available_to_admin true available_to_users true @@ -13,7 +13,7 @@ # authorize.net was moved to spree_gateway. # Leaving this factory in place with bogus in case anyone is using it. - factory :simple_credit_card_payment_method, class: Spree::Gateway::BogusSimple do + factory :simple_credit_card_payment_method, class: Spree::PaymentMethod::SimpleBogusCreditCard do name 'Credit Card' available_to_admin true available_to_users true diff --git a/core/spec/models/spree/gateway_spec.rb b/core/spec/models/spree/gateway_spec.rb index 814aba26ca9..8b008a1e343 100644 --- a/core/spec/models/spree/gateway_spec.rb +++ b/core/spec/models/spree/gateway_spec.rb @@ -95,7 +95,7 @@ def provider_class end context 'using preference_source' do - let(:klass){ Spree::Gateway::Bogus } + let(:klass){ Spree::PaymentMethod::BogusCreditCard } before do Spree::Config.static_model_preferences.add(klass, 'test_preference_source', server: 'bar') end diff --git a/core/spec/models/spree/order_capturing_spec.rb b/core/spec/models/spree/order_capturing_spec.rb index efae69eda34..9d358bde196 100644 --- a/core/spec/models/spree/order_capturing_spec.rb +++ b/core/spec/models/spree/order_capturing_spec.rb @@ -58,10 +58,10 @@ context "payment method ordering" do let(:secondary_payment_method) { SecondaryBogusPaymentMethod } - class SecondaryBogusPaymentMethod < Spree::Gateway::Bogus; end + class SecondaryBogusPaymentMethod < Spree::PaymentMethod::BogusCreditCard; end context "SecondaryBogusPaymentMethod payments are prioritized" do - let(:payment_methods) { [SecondaryBogusPaymentMethod, Spree::Gateway::Bogus] } + let(:payment_methods) { [SecondaryBogusPaymentMethod, Spree::PaymentMethod::BogusCreditCard] } it "captures SecondaryBogusPaymentMethod payments first" do @bogus_payment.update!(amount: bogus_total + 100) @@ -72,7 +72,7 @@ class SecondaryBogusPaymentMethod < Spree::Gateway::Bogus; end end context "Bogus payments are prioritized" do - let(:payment_methods) { [Spree::Gateway::Bogus, SecondaryBogusPaymentMethod] } + let(:payment_methods) { [Spree::PaymentMethod::BogusCreditCard, SecondaryBogusPaymentMethod] } it "captures Bogus payments first" do @secondary_bogus_payment.update!(amount: secondary_total + 100) @@ -89,7 +89,7 @@ class SecondaryBogusPaymentMethod < Spree::Gateway::Bogus; end before do allow(Spree::OrderCapturing).to receive(:sorted_payment_method_classes).and_return( - [SecondaryBogusPaymentMethod, Spree::Gateway::Bogus] + [SecondaryBogusPaymentMethod, Spree::PaymentMethod::BogusCreditCard] ) end @@ -103,7 +103,7 @@ class SecondaryBogusPaymentMethod < Spree::Gateway::Bogus; end context "when a payment is not needed to capture the entire order" do let(:secondary_payment_method) { SecondaryBogusPaymentMethod } - let(:payment_methods) { [Spree::Gateway::Bogus, SecondaryBogusPaymentMethod] } + let(:payment_methods) { [Spree::PaymentMethod::BogusCreditCard, SecondaryBogusPaymentMethod] } before do @bogus_payment.update!(amount: order.total) @@ -132,9 +132,9 @@ class SecondaryBogusPaymentMethod < Spree::Gateway::Bogus; end let(:secondary_payment_method) { ExceptionallyBogusPaymentMethod } let(:bogus_total) { order.total - 1 } let(:secondary_total) { 1 } - let(:payment_methods) { [Spree::Gateway::Bogus, ExceptionallyBogusPaymentMethod] } + let(:payment_methods) { [Spree::PaymentMethod::BogusCreditCard, ExceptionallyBogusPaymentMethod] } - class ExceptionallyBogusPaymentMethod < Spree::Gateway::Bogus + class ExceptionallyBogusPaymentMethod < Spree::PaymentMethod::BogusCreditCard def capture(*_args) raise ActiveMerchant::ConnectionError.new("foo", nil) end diff --git a/core/spec/models/spree/gateway/bogus_spec.rb b/core/spec/models/spree/payment_method/bogus_credit_card_spec.rb similarity index 77% rename from core/spec/models/spree/gateway/bogus_spec.rb rename to core/spec/models/spree/payment_method/bogus_credit_card_spec.rb index e56887435c3..700c357e685 100644 --- a/core/spec/models/spree/gateway/bogus_spec.rb +++ b/core/spec/models/spree/payment_method/bogus_credit_card_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' module Spree - describe Gateway::Bogus, type: :model do + describe PaymentMethod::BogusCreditCard, type: :model do let(:bogus) { create(:credit_card_payment_method) } let!(:cc) { create(:credit_card, payment_method: bogus, gateway_customer_profile_id: "BGS-RERTERT") } end diff --git a/core/spec/models/spree/gateway/bogus_simple.rb b/core/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb similarity index 77% rename from core/spec/models/spree/gateway/bogus_simple.rb rename to core/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb index fb1423d9e9d..39bfab5d7ef 100644 --- a/core/spec/models/spree/gateway/bogus_simple.rb +++ b/core/spec/models/spree/payment_method/simple_bogus_credit_card_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' -describe Spree::Gateway::BogusSimple, type: :model do - subject { Spree::Gateway::BogusSimple.new } +describe Spree::PaymentMethod::SimpleBogusCreditCard, type: :model do + subject { Spree::PaymentMethod::SimpleBogusCreditCard.new } # regression test for https://github.com/spree/spree/issues/3824 describe "#capture" do diff --git a/core/spec/models/spree/payment_spec.rb b/core/spec/models/spree/payment_spec.rb index 8d1bdbb3492..2f530c3fe39 100644 --- a/core/spec/models/spree/payment_spec.rb +++ b/core/spec/models/spree/payment_spec.rb @@ -6,7 +6,7 @@ let(:refund_reason) { create(:refund_reason) } let(:gateway) do - gateway = Spree::Gateway::Bogus.new(active: true, name: 'Bogus gateway') + gateway = Spree::PaymentMethod::BogusCreditCard.new(active: true, name: 'Bogus gateway') allow(gateway).to receive_messages source_required: true gateway end diff --git a/core/spec/models/spree/reimbursement_type/original_payment_spec.rb b/core/spec/models/spree/reimbursement_type/original_payment_spec.rb index e0a3d901667..f644363b4a7 100644 --- a/core/spec/models/spree/reimbursement_type/original_payment_spec.rb +++ b/core/spec/models/spree/reimbursement_type/original_payment_spec.rb @@ -54,7 +54,7 @@ module Spree context "multiple payment methods" do let(:simulate) { true } let!(:check_payment) { create(:check_payment, order: reimbursement.order, amount: 5.0, state: "completed") } - let(:payment) { reimbursement.order.payments.detect { |p| p.payment_method.is_a? Spree::Gateway::Bogus } } + let(:payment) { reimbursement.order.payments.detect { |p| p.payment_method.is_a? Spree::PaymentMethod::BogusCreditCard } } let(:refund_amount) { 10.0 } let(:refund_payment_methods) { subject.map { |refund| refund.payment.payment_method } } diff --git a/sample/db/samples/payment_methods.rb b/sample/db/samples/payment_methods.rb index 41434aedbeb..8c5ba88cd69 100644 --- a/sample/db/samples/payment_methods.rb +++ b/sample/db/samples/payment_methods.rb @@ -1,4 +1,4 @@ -Spree::Gateway::Bogus.create!( +Spree::PaymentMethod::BogusCreditCard.create!( { name: "Credit Card", description: "Bogus payment gateway", From 24521c40330a0d296ab594ab8d347033cd711af0 Mon Sep 17 00:00:00 2001 From: Thomas von Deyen Date: Tue, 6 Jun 2017 09:57:12 +0200 Subject: [PATCH 2/3] Deprecate Gateway::Bogus classes Use `Spree:: PaymentMethod::BogusCreditCard` and `Spree::PaymentMethod::SimpleBogusCreditCard ` instead. --- core/app/models/spree/gateway/bogus.rb | 11 +++++++++++ core/app/models/spree/gateway/bogus_simple.rb | 11 +++++++++++ core/spec/models/spree/gateway/bogus_simple.rb | 12 ++++++++++++ core/spec/models/spree/gateway/bogus_spec.rb | 12 ++++++++++++ 4 files changed, 46 insertions(+) create mode 100644 core/app/models/spree/gateway/bogus.rb create mode 100644 core/app/models/spree/gateway/bogus_simple.rb create mode 100644 core/spec/models/spree/gateway/bogus_simple.rb create mode 100644 core/spec/models/spree/gateway/bogus_spec.rb diff --git a/core/app/models/spree/gateway/bogus.rb b/core/app/models/spree/gateway/bogus.rb new file mode 100644 index 00000000000..269704565e7 --- /dev/null +++ b/core/app/models/spree/gateway/bogus.rb @@ -0,0 +1,11 @@ +module Spree + # @deprecated Use Spree::PaymentMethod::BogusCreditCard instead + class Gateway::Bogus < PaymentMethod::BogusCreditCard + def initialize(*args) + Spree::Deprecation.warn \ + 'Spree::Gateway::Bogus is deprecated. ' \ + 'Please use Spree::PaymentMethod::BogusCreditCard instead' + super + end + end +end diff --git a/core/app/models/spree/gateway/bogus_simple.rb b/core/app/models/spree/gateway/bogus_simple.rb new file mode 100644 index 00000000000..3328cf0e7e4 --- /dev/null +++ b/core/app/models/spree/gateway/bogus_simple.rb @@ -0,0 +1,11 @@ +module Spree + # @deprecated Use Spree::PaymentMethod::SimpleBogusCreditCard instead + class Gateway::BogusSimple < Spree::PaymentMethod::SimpleBogusCreditCard + def initialize(*args) + Spree::Deprecation.warn \ + 'Spree::Gateway::BogusSimple is deprecated. ' \ + 'Please use Spree::PaymentMethod::SimpleBogusCreditCard instead' + super + end + end +end diff --git a/core/spec/models/spree/gateway/bogus_simple.rb b/core/spec/models/spree/gateway/bogus_simple.rb new file mode 100644 index 00000000000..d6105b15431 --- /dev/null +++ b/core/spec/models/spree/gateway/bogus_simple.rb @@ -0,0 +1,12 @@ +require 'spec_helper' + +describe Spree::Gateway::BogusSimple do + it 'is deprecated' do + expect(Spree::Deprecation).to receive(:warn) + described_class.new + end + + it 'has Spree::PaymentMethod::SimpleBogusCreditCard as superclass' do + expect(described_class.ancestors).to include(Spree::PaymentMethod::SimpleBogusCreditCard) + end +end diff --git a/core/spec/models/spree/gateway/bogus_spec.rb b/core/spec/models/spree/gateway/bogus_spec.rb new file mode 100644 index 00000000000..82cca16eba1 --- /dev/null +++ b/core/spec/models/spree/gateway/bogus_spec.rb @@ -0,0 +1,12 @@ +require 'spec_helper' + +describe Spree::Gateway::Bogus do + it 'is deprecated' do + expect(Spree::Deprecation).to receive(:warn) + described_class.new + end + + it 'has Spree::PaymentMethod::BogusCreditCard as superclass' do + expect(described_class.ancestors).to include(Spree::PaymentMethod::BogusCreditCard) + end +end From 04dffbf0468e9f998f74c8a0fe7c7a190f764dbf Mon Sep 17 00:00:00 2001 From: Thomas von Deyen Date: Wed, 7 Jun 2017 09:48:29 +0200 Subject: [PATCH 3/3] Add Rake task to rename Bogus gateways Running rake solidus:migrations:rename_gateways:up helps migrating your data to new bogus payment method class names. rake solidus:migrations:rename_gateways:down reverts this. Also includes a migration that invokes that task, so you don't need to care when deploying this change. --- .../20170608074534_rename_bogus_gateways.rb | 13 +++++++ .../lib/solidus/migrations/rename_gateways.rb | 38 +++++++++++++++++++ .../lib/tasks/migrations/rename_gateways.rake | 19 ++++++++++ 3 files changed, 70 insertions(+) create mode 100644 core/db/migrate/20170608074534_rename_bogus_gateways.rb create mode 100644 core/lib/solidus/migrations/rename_gateways.rb create mode 100644 core/lib/tasks/migrations/rename_gateways.rake diff --git a/core/db/migrate/20170608074534_rename_bogus_gateways.rb b/core/db/migrate/20170608074534_rename_bogus_gateways.rb new file mode 100644 index 00000000000..7a3da21eb61 --- /dev/null +++ b/core/db/migrate/20170608074534_rename_bogus_gateways.rb @@ -0,0 +1,13 @@ +class RenameBogusGateways < ActiveRecord::Migration[5.0] + def up + say_with_time 'Renaming bogus gateways into payment methods' do + Rake::Task['solidus:migrations:rename_gateways:up'].invoke + end + end + + def down + say_with_time 'Renaming bogus payment methods into gateways' do + Rake::Task['solidus:migrations:rename_gateways:down'].invoke + end + end +end diff --git a/core/lib/solidus/migrations/rename_gateways.rb b/core/lib/solidus/migrations/rename_gateways.rb new file mode 100644 index 00000000000..fef103cb9e9 --- /dev/null +++ b/core/lib/solidus/migrations/rename_gateways.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +module Solidus + module Migrations + class RenameGateways + DEFAULT_MAPPING = { + 'Spree::Gateway::Bogus' => 'Spree::PaymentMethod::BogusCreditCard', + 'Spree::Gateway::BogusSimple' => 'Spree::PaymentMethod::SimpleBogusCreditCard' + } + + attr_reader :gateway_mapping + + def initialize(gateway_mapping = DEFAULT_MAPPING) + @gateway_mapping = gateway_mapping + end + + def up + gateway_mapping.inject(0) do |count, mapping| + count + update(from: mapping[0], to: mapping[1]) + end + end + + def down + gateway_mapping.inject(0) do |count, mapping| + count + update(from: mapping[1], to: mapping[0]) + end + end + + private + + def update(from:, to:) + ActiveRecord::Base.connection.update <<-SQL.strip_heredoc + UPDATE spree_payment_methods SET type = '#{to}' WHERE type = '#{from}'; + SQL + end + end + end +end diff --git a/core/lib/tasks/migrations/rename_gateways.rake b/core/lib/tasks/migrations/rename_gateways.rake new file mode 100644 index 00000000000..a62bed55a5e --- /dev/null +++ b/core/lib/tasks/migrations/rename_gateways.rake @@ -0,0 +1,19 @@ +require 'solidus/migrations/rename_gateways' + +namespace 'solidus:migrations:rename_gateways' do + task up: :environment do + count = Solidus::Migrations::RenameGateways.new.up + + unless ENV['VERBOSE'] == 'false' || !verbose + puts "Renamed #{count} gateways into payment methods." + end + end + + task down: :environment do + count = Solidus::Migrations::RenameGateways.new.down + + unless ENV['VERBOSE'] == 'false' || !verbose + puts "Renamed #{count} payment methods into gateways." + end + end +end