ba_spree_bank_transfer 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.rspec +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +6 -0
- data/Gemfile +19 -0
- data/LICENSE +26 -0
- data/README.md +110 -0
- data/Rakefile +15 -0
- data/Versionfile +7 -0
- data/app/assets/images/payment_details.png +0 -0
- data/app/assets/javascripts/spree/backend/spree_bank_transfer.js +0 -0
- data/app/assets/javascripts/spree/frontend/spree_bank_transfer.js.erb +37 -0
- data/app/assets/stylesheets/spree/backend/spree_bank_transfer.css +0 -0
- data/app/assets/stylesheets/spree/frontend/spree_bank_transfer.css +9 -0
- data/app/controllers/spree/admin/banks_controller.rb +13 -0
- data/app/controllers/spree/content_controller_decorator.rb +8 -0
- data/app/controllers/spree/payments_controller.rb +35 -0
- data/app/helpers/.DS_Store +0 -0
- data/app/helpers/spree/.DS_Store +0 -0
- data/app/helpers/spree/admin/banks_helper.rb +19 -0
- data/app/models/.DS_Store +0 -0
- data/app/models/spree/.DS_Store +0 -0
- data/app/models/spree/bank.rb +8 -0
- data/app/models/spree/order_decorator.rb +3 -0
- data/app/models/spree/payment_decorator.rb +40 -0
- data/app/models/spree/payment_method/bank_transfer.rb +48 -0
- data/app/overrides/add_bank_details_form_to_order_show.rb +6 -0
- data/app/overrides/add_bank_transfer_instructions_link_to_payment.rb +10 -0
- data/app/overrides/add_payment_reference_details.rb +32 -0
- data/app/overrides/filter_results_by_transaction_reference_no.rb +17 -0
- data/app/views/.DS_Store +0 -0
- data/app/views/spree/admin/banks/_form.html.erb +26 -0
- data/app/views/spree/admin/banks/edit.html.erb +14 -0
- data/app/views/spree/admin/banks/index.html.erb +48 -0
- data/app/views/spree/admin/banks/new.html.erb +17 -0
- data/app/views/spree/admin/banks/toggle_activation.js.erb +10 -0
- data/app/views/spree/admin/payments/source_forms/_banktransfer.html.erb +0 -0
- data/app/views/spree/admin/payments/source_views/_banktransfer.html.erb +0 -0
- data/app/views/spree/checkout/.DS_Store +0 -0
- data/app/views/spree/checkout/payment/_banktransfer.html.erb +16 -0
- data/app/views/spree/content/bank_transfer.html.erb +38 -0
- data/app/views/spree/orders/_bank_transfer_form.html.erb +40 -0
- data/ba_spree_bank_transfer.gemspec +39 -0
- data/bin/rails +6 -0
- data/config/locales/en.yml +25 -0
- data/config/locales/it.yml +24 -0
- data/config/locales/ja.yml +25 -0
- data/config/locales/pl.yml +24 -0
- data/config/locales/pt.yml +24 -0
- data/config/locales/th.yml +27 -0
- data/config/routes.rb +10 -0
- data/db/migrate/20130717071443_create_table_bank.rb +11 -0
- data/db/migrate/20130717125312_add_index_on_active_on_spree_bank.rb +5 -0
- data/db/migrate/20140519125402_add_bank_name_account_number_and_transaction_reference_number_to_payments.rb +7 -0
- data/db/migrate/20140530055151_add_column_deposited_on_to_spree_payments.rb +5 -0
- data/db/migrate/20140612131656_add_col_additional_details_to_banks.rb +5 -0
- data/lib/ba_spree_bank_transfer.rb +6 -0
- data/lib/generators/spree_bank_transfer/.DS_Store +0 -0
- data/lib/generators/spree_bank_transfer/install/install_generator.rb +30 -0
- data/lib/payment_details.rb +21 -0
- data/lib/spree_bank_transfer/engine.rb +40 -0
- data/lib/spree_bank_transfer/version.rb +3 -0
- data/spec/controllers/spree/admin/banks_controller_spec.rb +82 -0
- data/spec/controllers/spree/content_controller_spec.rb +16 -0
- data/spec/controllers/spree/payments_controller_spec.rb +98 -0
- data/spec/lib/payment_details_spec.rb +84 -0
- data/spec/models/spree/bank_spec.rb +19 -0
- data/spec/models/spree/payment_method/bank_transfer_spec.rb +114 -0
- data/spec/models/spree/payment_spec.rb +81 -0
- data/spec/models/spree/user_spec.rb +5 -0
- data/spec/spec_helper.rb +98 -0
- metadata +321 -0
@@ -0,0 +1,98 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Spree::PaymentsController, type: :controller do
|
4
|
+
before do
|
5
|
+
allow(controller).to receive(:authenticate_spree_user!).and_return(true)
|
6
|
+
@user = mock_model(Spree::User, :generate_spree_api_key! => false, last_incomplete_spree_order: nil)
|
7
|
+
allow(controller).to receive(:spree_current_user).and_return(@user)
|
8
|
+
|
9
|
+
@payment = mock_model(Spree::Payment)
|
10
|
+
@current_user_payments = double("current_user_payments", find_by: @payment)
|
11
|
+
allow(@user).to receive(:payments).and_return(@current_user_payments)
|
12
|
+
request.env["HTTP_REFERER"] = "http://localhost"
|
13
|
+
end
|
14
|
+
|
15
|
+
shared_examples_for "request which finds payment" do
|
16
|
+
|
17
|
+
it "finds payment" do
|
18
|
+
expect(@current_user_payments).to receive(:find_by).with(number: 'payment_id')
|
19
|
+
send_request
|
20
|
+
end
|
21
|
+
|
22
|
+
it "assigns @payment" do
|
23
|
+
send_request
|
24
|
+
expect(assigns(:payment)).to eq(@payment)
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'when payment not found' do
|
28
|
+
before do
|
29
|
+
allow(@current_user_payments).to receive(:find_by).and_return(nil)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "sets flash message" do
|
33
|
+
send_request
|
34
|
+
expect(flash[:error]).to eq("Payment not found")
|
35
|
+
end
|
36
|
+
|
37
|
+
it "redirects to back" do
|
38
|
+
send_request
|
39
|
+
expect(response).to redirect_to(:back)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "PATCH update" do
|
45
|
+
before do
|
46
|
+
@payment_details = double('payment_details', save: true)
|
47
|
+
allow(PaymentDetails).to receive(:new).and_return(@payment_details)
|
48
|
+
end
|
49
|
+
|
50
|
+
def send_request
|
51
|
+
patch :update, id: 'payment_id', payment: { bank_name: 'bank_name', account_no: "account_no", transaction_reference_no: "transaction_reference_no" }
|
52
|
+
end
|
53
|
+
|
54
|
+
it_behaves_like "request which finds payment"
|
55
|
+
|
56
|
+
|
57
|
+
it "creates new payment details" do
|
58
|
+
expect(PaymentDetails).to receive(:new).with(@payment, { 'bank_name' => 'bank_name', 'account_no' => "account_no", 'transaction_reference_no' => "transaction_reference_no" })
|
59
|
+
send_request
|
60
|
+
end
|
61
|
+
|
62
|
+
it "saves payment_details" do
|
63
|
+
expect(@payment_details).to receive(:save)
|
64
|
+
send_request
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'when payment details saved successfully' do
|
68
|
+
it 'sets flash message' do
|
69
|
+
send_request
|
70
|
+
expect(flash[:notice]).to eq("Payment successfully updated")
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'when payment details not saved' do
|
75
|
+
before do
|
76
|
+
allow(@payment_details).to receive(:save).and_return(false)
|
77
|
+
allow(@payment_details).to receive(:errors).and_return(["some error occurred"])
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'sets flash error' do
|
81
|
+
send_request
|
82
|
+
expect(flash[:error]).to eq("some error occurred")
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
it "redirects to back" do
|
87
|
+
send_request
|
88
|
+
expect(response).to redirect_to(:back)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "#payment_params" do
|
93
|
+
it "permits only bank_name, account_no, transaction_reference_no, deposited_on" do
|
94
|
+
controller.params = { payment: { bank_name: 'Bank Name', account_no: 'Account number', transaction_reference_no: "transaction reference number", order_id: 'order_id', deposited_on: 'deposited_on' } }
|
95
|
+
expect(controller.send(:payment_params)).to eq({ "bank_name" => "Bank Name", "account_no" => "Account number", "transaction_reference_no" => "transaction reference number", 'deposited_on' => 'deposited_on' })
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PaymentDetails do
|
4
|
+
before do
|
5
|
+
@payment = mock_model(Spree::Payment, update_attributes: true, :validate_bank_details= => nil)
|
6
|
+
@params = { 'bank_name' => 'bank_name', 'account_no' => "account_no", 'transaction_reference_no' => "transaction_reference_no" }
|
7
|
+
@payment_details = PaymentDetails.new(@payment, @params)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "#initialize" do
|
11
|
+
it "sets payment" do
|
12
|
+
expect(@payment_details.payment).to eq(@payment)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "sets params" do
|
16
|
+
expect(@payment_details.params).to eq(@params)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "initializes errors" do
|
20
|
+
expect(@payment_details.errors).to eq([])
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "#save" do
|
25
|
+
context 'when payment details submitted' do
|
26
|
+
before do
|
27
|
+
allow(@payment).to receive(:details_submitted?).and_return(true)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "sets errors" do
|
31
|
+
@payment_details.save
|
32
|
+
expect(@payment_details.errors).to eq(["Payment Details can be submitted only once."])
|
33
|
+
end
|
34
|
+
|
35
|
+
it "does not update payment" do
|
36
|
+
expect(@payment).not_to receive(:update_attributes)
|
37
|
+
@payment_details.save
|
38
|
+
end
|
39
|
+
|
40
|
+
it "returns false" do
|
41
|
+
expect(@payment_details.save).to be false
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'when payment details not submitted' do
|
47
|
+
before do
|
48
|
+
allow(@payment).to receive(:details_submitted?).and_return(false)
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'sets validates_bank_details to true' do
|
52
|
+
expect(@payment).to receive(:validate_bank_details=).with(true)
|
53
|
+
@payment_details.save
|
54
|
+
end
|
55
|
+
|
56
|
+
it "updates payment attributes" do
|
57
|
+
expect(@payment).to receive(:update_attributes)
|
58
|
+
@payment_details.save
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'when payment attributes not updated successfully' do
|
62
|
+
before do
|
63
|
+
allow(@payment).to receive(:update_attributes).and_return(false)
|
64
|
+
allow(@payment).to receive_message_chain(:errors, :full_messages).and_return(["some error occurred"])
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'sets errors' do
|
68
|
+
@payment_details.save
|
69
|
+
expect(@payment_details.errors).to eq(["some error occurred"])
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'returns false' do
|
73
|
+
expect(@payment_details.save).to be false
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context 'when payment attributes updated successfully' do
|
78
|
+
it 'returns true' do
|
79
|
+
expect(@payment_details.save).to be true
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Spree::Bank, type: :model do
|
4
|
+
it { is_expected.to validate_presence_of :name }
|
5
|
+
it { is_expected.to validate_presence_of :account_no }
|
6
|
+
it { is_expected.to validate_uniqueness_of(:account_no).scoped_to(:name) }
|
7
|
+
|
8
|
+
describe ".active" do
|
9
|
+
before(:each) do
|
10
|
+
@active_bank1 = Spree::Bank.create! name: 'bank1', :account_no => '98765'
|
11
|
+
@active_bank2 = Spree::Bank.create! name: 'bank2', :account_no => '98765'
|
12
|
+
@bank3 = Spree::Bank.create! name: 'bank3', :account_no => '98765', active: false
|
13
|
+
end
|
14
|
+
|
15
|
+
it "returns active banks" do
|
16
|
+
expect(Spree::Bank.active).to match([@active_bank1, @active_bank2])
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Spree::PaymentMethod::BankTransfer do
|
4
|
+
before(:each) do
|
5
|
+
@order = Spree::Order.new
|
6
|
+
@payment_method = Spree::PaymentMethod::BankTransfer.create! name: "Bank Transfer", active: true
|
7
|
+
@payment = Spree::Payment.new amount: 0.0
|
8
|
+
@payment.order = @order
|
9
|
+
@payment.payment_method = @payment_method
|
10
|
+
@payment.save!
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#actions" do
|
14
|
+
it "returns actions" do
|
15
|
+
expect(@payment_method.actions).to eq(["capture", "void"])
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#can_capture?" do
|
20
|
+
context "when payment state is pending or checkout" do
|
21
|
+
before(:each) do
|
22
|
+
@payment.state = 'checkout'
|
23
|
+
@payment.save!
|
24
|
+
end
|
25
|
+
|
26
|
+
it "returns true" do
|
27
|
+
expect(@payment_method.can_capture?(@payment)).to be true
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context "when payment state is pending" do
|
32
|
+
before(:each) do
|
33
|
+
@payment.state = 'pending'
|
34
|
+
@payment.save!
|
35
|
+
end
|
36
|
+
|
37
|
+
it "returns true" do
|
38
|
+
expect(@payment_method.can_capture?(@payment)).to be true
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
context "when payment state is not pending or checkout" do
|
44
|
+
before(:each) do
|
45
|
+
@payment.state = 'void'
|
46
|
+
@payment.save!
|
47
|
+
end
|
48
|
+
|
49
|
+
it "returns false" do
|
50
|
+
expect(@payment_method.can_capture?(@payment)).to be false
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "#can_void?" do
|
56
|
+
context "when payment state is not void" do
|
57
|
+
before(:each) do
|
58
|
+
@payment.state = 'pending'
|
59
|
+
@payment.save!
|
60
|
+
end
|
61
|
+
|
62
|
+
it "returns true" do
|
63
|
+
expect(@payment_method.can_void?(@payment)).to be true
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context "when payment state is void" do
|
68
|
+
before(:each) do
|
69
|
+
@payment.update_column(:state, 'void')
|
70
|
+
end
|
71
|
+
|
72
|
+
it "returns false" do
|
73
|
+
expect(@payment_method.can_void?(@payment)).to be false
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe "#capture" do
|
79
|
+
it "creates a new active merchant billing response" do
|
80
|
+
expect(ActiveMerchant::Billing::Response).to receive(:new).with(true, "", {}, {})
|
81
|
+
@payment_method.capture
|
82
|
+
end
|
83
|
+
it "returns active merchant billing response" do
|
84
|
+
expect(@payment_method.capture).to be_a(ActiveMerchant::Billing::Response)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe "#void" do
|
89
|
+
it "creates a new active merchant billing response" do
|
90
|
+
expect(ActiveMerchant::Billing::Response).to receive(:new).with(true, "", {}, {})
|
91
|
+
@payment_method.void
|
92
|
+
end
|
93
|
+
it "returns active merchant billing response" do
|
94
|
+
expect(@payment_method.void).to be_a(ActiveMerchant::Billing::Response)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe "#source_required?" do
|
99
|
+
it "returns false" do
|
100
|
+
expect(@payment_method.source_required?).to be false
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
describe "#credit" do
|
105
|
+
it "creates a new active merchant billing response" do
|
106
|
+
expect(ActiveMerchant::Billing::Response).to receive(:new).with(true, "", {}, {})
|
107
|
+
@payment_method.credit
|
108
|
+
end
|
109
|
+
it "returns active merchant billing response" do
|
110
|
+
expect(@payment_method.credit).to be_a(ActiveMerchant::Billing::Response)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Spree::Payment, type: :model do
|
4
|
+
context 'when validate_bank_details' do
|
5
|
+
before do
|
6
|
+
subject.validate_bank_details = true
|
7
|
+
end
|
8
|
+
|
9
|
+
it { is_expected.to validate_presence_of(:bank_name) }
|
10
|
+
it { is_expected.to validate_presence_of(:account_no) }
|
11
|
+
it { is_expected.to validate_presence_of(:transaction_reference_no) }
|
12
|
+
it { is_expected.to validate_presence_of(:deposited_on) }
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'when validate_bank_details not true' do
|
16
|
+
it { is_expected.not_to validate_presence_of(:bank_name) }
|
17
|
+
it { is_expected.not_to validate_presence_of(:account_no) }
|
18
|
+
it { is_expected.not_to validate_presence_of(:transaction_reference_no) }
|
19
|
+
end
|
20
|
+
|
21
|
+
describe ".from_bank_transfer" do
|
22
|
+
before do
|
23
|
+
check_payment_method = Spree::PaymentMethod::Check.new
|
24
|
+
check_payment_method.name = "Check Payment Method"
|
25
|
+
check_payment_method.save!
|
26
|
+
|
27
|
+
bank_transfer_payment_method = Spree::PaymentMethod::BankTransfer.new
|
28
|
+
bank_transfer_payment_method.name = "Bank Transfer"
|
29
|
+
bank_transfer_payment_method.save!
|
30
|
+
|
31
|
+
@order = Spree::Order.new
|
32
|
+
@order.save!
|
33
|
+
|
34
|
+
@payment1 = Spree::Payment.new
|
35
|
+
@payment1.order_id = @order.id
|
36
|
+
@payment1.payment_method_id = check_payment_method.id
|
37
|
+
@payment1.save!
|
38
|
+
|
39
|
+
@payment2 = Spree::Payment.new
|
40
|
+
@payment2.order_id = @order.id
|
41
|
+
@payment2.payment_method_id = check_payment_method.id
|
42
|
+
@payment2.save!
|
43
|
+
|
44
|
+
@bank_transfer_payment1 = Spree::Payment.new
|
45
|
+
@bank_transfer_payment1.order_id = @order.id
|
46
|
+
@bank_transfer_payment1.payment_method_id = bank_transfer_payment_method.id
|
47
|
+
@bank_transfer_payment1.save!
|
48
|
+
|
49
|
+
@bank_transfer_payment2 = Spree::Payment.new
|
50
|
+
@bank_transfer_payment2.order_id = @order.id
|
51
|
+
@bank_transfer_payment2.payment_method_id = bank_transfer_payment_method.id
|
52
|
+
@bank_transfer_payment2.save!
|
53
|
+
end
|
54
|
+
|
55
|
+
it "returns payments with payment method as bank_transfer" do
|
56
|
+
expect(Spree::Payment.from_bank_transfer).to match_array([@bank_transfer_payment1, @bank_transfer_payment2])
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "#details_submitted?" do
|
61
|
+
before do
|
62
|
+
@payment = Spree::Payment.new
|
63
|
+
end
|
64
|
+
|
65
|
+
context 'when transaction_reference_no present' do
|
66
|
+
before do
|
67
|
+
@payment.transaction_reference_no = 'transaction_reference_no'
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'is true' do
|
71
|
+
expect(@payment.details_submitted?).to be true
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'when transaction_reference_no not present' do
|
76
|
+
it 'is false' do
|
77
|
+
expect(@payment.details_submitted?).to be false
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
# Run Coverage report
|
2
|
+
require 'simplecov'
|
3
|
+
SimpleCov.start do
|
4
|
+
add_group 'Controllers', 'app/controllers'
|
5
|
+
add_group 'Helpers', 'app/helpers'
|
6
|
+
add_group 'Mailers', 'app/mailers'
|
7
|
+
add_group 'Models', 'app/models'
|
8
|
+
add_group 'Views', 'app/views'
|
9
|
+
add_group 'Libraries', 'lib'
|
10
|
+
end
|
11
|
+
|
12
|
+
# Configure Rails Environment
|
13
|
+
ENV['RAILS_ENV'] = 'test'
|
14
|
+
|
15
|
+
begin
|
16
|
+
require File.expand_path('../dummy/config/environment', __FILE__)
|
17
|
+
rescue LoadError
|
18
|
+
puts 'Could not load dummy application. Please ensure you have run `bundle exec rake test_app`'
|
19
|
+
exit
|
20
|
+
end
|
21
|
+
|
22
|
+
require 'rspec/rails'
|
23
|
+
require 'shoulda/matchers'
|
24
|
+
require 'database_cleaner'
|
25
|
+
require 'ffaker'
|
26
|
+
|
27
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
28
|
+
# in spec/support/ and its subdirectories.
|
29
|
+
Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f }
|
30
|
+
|
31
|
+
# Requires factories defined in spree_core
|
32
|
+
# require 'spree/testing_support/factories'
|
33
|
+
require 'spree/testing_support/controller_requests'
|
34
|
+
require 'spree/testing_support/authorization_helpers'
|
35
|
+
require 'spree/testing_support/url_helpers'
|
36
|
+
|
37
|
+
# Requires factories defined in lib/spree_favorite_products/factories.rb
|
38
|
+
# require 'spree_favorite_products/factories'
|
39
|
+
|
40
|
+
Shoulda::Matchers.configure do |config|
|
41
|
+
config.integrate do |with|
|
42
|
+
with.test_framework :rspec
|
43
|
+
with.library :rails
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
RSpec.configure do |config|
|
48
|
+
# config.include FactoryGirl::Syntax::Methods
|
49
|
+
|
50
|
+
# == URL Helpers
|
51
|
+
#
|
52
|
+
# Allows access to Spree's routes in specs:
|
53
|
+
#
|
54
|
+
# visit spree.admin_path
|
55
|
+
# current_path.should eql(spree.products_path)
|
56
|
+
config.include Spree::TestingSupport::UrlHelpers
|
57
|
+
|
58
|
+
# == Mock Framework
|
59
|
+
#
|
60
|
+
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
61
|
+
#
|
62
|
+
# config.mock_with :mocha
|
63
|
+
# config.mock_with :flexmock
|
64
|
+
# config.mock_with :rr
|
65
|
+
config.mock_with :rspec
|
66
|
+
config.color = true
|
67
|
+
|
68
|
+
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
69
|
+
config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
70
|
+
|
71
|
+
# Capybara javascript drivers require transactional fixtures set to false, and we use DatabaseCleaner
|
72
|
+
# to cleanup after each test instead. Without transactional fixtures set to false the records created
|
73
|
+
# to setup a test will be unavailable to the browser, which runs under a seperate server instance.
|
74
|
+
config.use_transactional_fixtures = false
|
75
|
+
|
76
|
+
# Ensure Suite is set to use transactions for speed.
|
77
|
+
config.before :suite do
|
78
|
+
DatabaseCleaner.strategy = :transaction
|
79
|
+
DatabaseCleaner.clean_with :truncation
|
80
|
+
end
|
81
|
+
|
82
|
+
# Before each spec check if it is a Javascript test and switch between using database transactions or not where necessary.
|
83
|
+
config.before :each do |example|
|
84
|
+
DatabaseCleaner.strategy = example.metadata[:js] ? :truncation : :transaction
|
85
|
+
DatabaseCleaner.start
|
86
|
+
end
|
87
|
+
|
88
|
+
# After each spec clean the database.
|
89
|
+
config.after :each do
|
90
|
+
DatabaseCleaner.clean
|
91
|
+
end
|
92
|
+
|
93
|
+
config.fail_fast = ENV['FAIL_FAST'] || false
|
94
|
+
|
95
|
+
config.include Spree::TestingSupport::ControllerRequests, type: :controller
|
96
|
+
|
97
|
+
config.infer_spec_type_from_file_location!
|
98
|
+
end
|