solidus_backend 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of solidus_backend might be problematic. Click here for more details.

Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1 -0
  3. data/Gemfile +6 -0
  4. data/Rakefile +15 -0
  5. data/script/rails +9 -0
  6. data/solidus_backend.gemspec +28 -0
  7. data/spec/controllers/spree/admin/base_controller_spec.rb +24 -0
  8. data/spec/controllers/spree/admin/cancellations_controller_spec.rb +77 -0
  9. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +234 -0
  10. data/spec/controllers/spree/admin/general_settings_controller_spec.rb +41 -0
  11. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +18 -0
  12. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +80 -0
  13. data/spec/controllers/spree/admin/orders_controller_spec.rb +472 -0
  14. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +49 -0
  15. data/spec/controllers/spree/admin/payments_controller_spec.rb +175 -0
  16. data/spec/controllers/spree/admin/products_controller_spec.rb +45 -0
  17. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +21 -0
  18. data/spec/controllers/spree/admin/promotion_codes_controller_spec.rb +18 -0
  19. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +21 -0
  20. data/spec/controllers/spree/admin/promotions_controller_spec.rb +122 -0
  21. data/spec/controllers/spree/admin/refunds_controller_spec.rb +32 -0
  22. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +75 -0
  23. data/spec/controllers/spree/admin/reports_controller_spec.rb +134 -0
  24. data/spec/controllers/spree/admin/resource_controller_spec.rb +166 -0
  25. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +226 -0
  26. data/spec/controllers/spree/admin/return_items_controller_spec.rb +27 -0
  27. data/spec/controllers/spree/admin/root_controller_spec.rb +41 -0
  28. data/spec/controllers/spree/admin/search_controller_spec.rb +104 -0
  29. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +14 -0
  30. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +50 -0
  31. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +41 -0
  32. data/spec/controllers/spree/admin/stock_transfers_controller_spec.rb +331 -0
  33. data/spec/controllers/spree/admin/store_credits_controller_spec.rb +309 -0
  34. data/spec/controllers/spree/admin/users_controller_spec.rb +236 -0
  35. data/spec/controllers/spree/admin/variants_controller_spec.rb +32 -0
  36. data/spec/features/admin/configuration/analytics_tracker_spec.rb +54 -0
  37. data/spec/features/admin/configuration/countries_spec.rb +22 -0
  38. data/spec/features/admin/configuration/general_settings_spec.rb +45 -0
  39. data/spec/features/admin/configuration/payment_methods_spec.rb +125 -0
  40. data/spec/features/admin/configuration/shipping_methods_spec.rb +64 -0
  41. data/spec/features/admin/configuration/states_spec.rb +64 -0
  42. data/spec/features/admin/configuration/stock_locations_spec.rb +50 -0
  43. data/spec/features/admin/configuration/tax_categories_spec.rb +56 -0
  44. data/spec/features/admin/configuration/tax_rates_spec.rb +30 -0
  45. data/spec/features/admin/configuration/taxonomies_spec.rb +52 -0
  46. data/spec/features/admin/configuration/zones_spec.rb +39 -0
  47. data/spec/features/admin/homepage_spec.rb +78 -0
  48. data/spec/features/admin/locale_spec.rb +30 -0
  49. data/spec/features/admin/orders/adjustments_promotions_spec.rb +53 -0
  50. data/spec/features/admin/orders/adjustments_spec.rb +126 -0
  51. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +48 -0
  52. data/spec/features/admin/orders/cancelling_inventory_spec.rb +48 -0
  53. data/spec/features/admin/orders/customer_details_spec.rb +163 -0
  54. data/spec/features/admin/orders/line_items_spec.rb +50 -0
  55. data/spec/features/admin/orders/listing_spec.rb +130 -0
  56. data/spec/features/admin/orders/log_entries_spec.rb +55 -0
  57. data/spec/features/admin/orders/new_order_spec.rb +185 -0
  58. data/spec/features/admin/orders/order_details_spec.rb +533 -0
  59. data/spec/features/admin/orders/payments_spec.rb +228 -0
  60. data/spec/features/admin/orders/risk_analysis_spec.rb +47 -0
  61. data/spec/features/admin/orders/shipments_spec.rb +65 -0
  62. data/spec/features/admin/payments/store_credits_spec.rb +21 -0
  63. data/spec/features/admin/products/edit/images_spec.rb +87 -0
  64. data/spec/features/admin/products/edit/products_spec.rb +66 -0
  65. data/spec/features/admin/products/edit/taxons_spec.rb +43 -0
  66. data/spec/features/admin/products/edit/variants_spec.rb +61 -0
  67. data/spec/features/admin/products/option_types_spec.rb +114 -0
  68. data/spec/features/admin/products/products_spec.rb +392 -0
  69. data/spec/features/admin/products/properties_spec.rb +139 -0
  70. data/spec/features/admin/products/prototypes_spec.rb +110 -0
  71. data/spec/features/admin/products/stock_management_spec.rb +82 -0
  72. data/spec/features/admin/products/variant_spec.rb +51 -0
  73. data/spec/features/admin/promotion_adjustments_spec.rb +220 -0
  74. data/spec/features/admin/promotions/tiered_calculator_spec.rb +69 -0
  75. data/spec/features/admin/reports_spec.rb +61 -0
  76. data/spec/features/admin/stock_transfer_spec.rb +86 -0
  77. data/spec/features/admin/store_credits_spec.rb +82 -0
  78. data/spec/features/admin/taxons_spec.rb +31 -0
  79. data/spec/features/admin/users_spec.rb +270 -0
  80. data/spec/helpers/admin/base_helper_spec.rb +24 -0
  81. data/spec/helpers/admin/navigation_helper_spec.rb +73 -0
  82. data/spec/helpers/admin/reimbursements_helper_spec.rb +34 -0
  83. data/spec/helpers/admin/stock_movements_helper_spec.rb +29 -0
  84. data/spec/helpers/admin/store_credit_events_helper_spec.rb +95 -0
  85. data/spec/helpers/promotion_rules_helper_spec.rb +12 -0
  86. data/spec/spec_helper.rb +108 -0
  87. data/spec/support/appear_before_matcher.rb +8 -0
  88. data/spec/support/ror_ringer.jpeg +0 -0
  89. data/spec/test_views/spree/admin/widgets/edit.html.erb +1 -0
  90. data/spec/test_views/spree/admin/widgets/new.html.erb +1 -0
  91. metadata +95 -6
@@ -0,0 +1,228 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Payments', :type => :feature do
4
+ stub_authorization!
5
+
6
+ context "with a pre-existing payment" do
7
+
8
+ let!(:payment) do
9
+ create(:payment,
10
+ order: order,
11
+ amount: order.outstanding_balance,
12
+ payment_method: create(:credit_card_payment_method),
13
+ state: state
14
+ )
15
+ end
16
+
17
+ let(:order) { create(:completed_order_with_totals, number: 'R100', line_items_count: 5) }
18
+ let(:state) { 'checkout' }
19
+
20
+ before do
21
+ visit spree.admin_path
22
+ click_link 'Orders'
23
+ within_row(1) do
24
+ click_link order.number
25
+ end
26
+ click_link 'Payments'
27
+ end
28
+
29
+ def refresh_page
30
+ visit current_path
31
+ end
32
+
33
+ # Regression tests for #1453
34
+ context 'with a check payment' do
35
+ let(:order) { create(:completed_order_with_totals, number: 'R100') }
36
+ let!(:payment) do
37
+ create(:payment,
38
+ order: order,
39
+ amount: order.outstanding_balance,
40
+ payment_method: create(:check_payment_method) # Check
41
+ )
42
+ end
43
+
44
+ it 'capturing a check payment from a new order' do
45
+ click_icon(:capture)
46
+ expect(page).not_to have_content('Cannot perform requested operation')
47
+ expect(page).to have_content('Payment Updated')
48
+ end
49
+
50
+ it 'voids a check payment from a new order' do
51
+ click_icon(:void)
52
+ expect(page).to have_content('Payment Updated')
53
+ end
54
+ end
55
+
56
+ it 'should list all captures for a payment' do
57
+ capture_amount = order.outstanding_balance/2 * 100
58
+ payment.capture!(capture_amount)
59
+
60
+ visit spree.admin_order_payment_path(order, payment)
61
+ expect(page).to have_content 'Capture events'
62
+ # within '#capture_events' do
63
+ within_row(1) do
64
+ expect(page).to have_content(capture_amount / 100)
65
+ end
66
+ # end
67
+ end
68
+
69
+ it 'lists and create payments for an order', js: true do
70
+ within_row(1) do
71
+ expect(column_text(3)).to eq('$150.00')
72
+ expect(column_text(4)).to eq('Credit Card')
73
+ expect(column_text(6)).to eq('CHECKOUT')
74
+ end
75
+
76
+ click_icon :void
77
+ expect(find('#payment_status').text).to eq('BALANCE DUE')
78
+ expect(page).to have_content('Payment Updated')
79
+
80
+ within_row(1) do
81
+ expect(column_text(3)).to eq('$150.00')
82
+ expect(column_text(4)).to eq('Credit Card')
83
+ expect(column_text(6)).to eq('VOID')
84
+ end
85
+
86
+ click_on 'New Payment'
87
+ expect(page).to have_content('New Payment')
88
+ click_button 'Update'
89
+ expect(page).to have_content('successfully created!')
90
+
91
+ click_icon(:capture)
92
+ expect(find('#payment_status').text).to eq('PAID')
93
+
94
+ expect(page).not_to have_selector('#new_payment_section')
95
+ end
96
+
97
+ # Regression test for #1269
98
+ it 'cannot create a payment for an order with no payment methods' do
99
+ Spree::PaymentMethod.delete_all
100
+ order.payments.delete_all
101
+
102
+ click_on 'New Payment'
103
+ expect(page).to have_content('You cannot create a payment for an order without any payment methods defined.')
104
+ expect(page).to have_content('Please define some payment methods first.')
105
+ end
106
+
107
+ context 'payment is pending', js: true do
108
+ let(:state) { 'pending' }
109
+
110
+ it 'allows the amount to be edited by clicking on the edit button then saving' do
111
+ within_row(1) do
112
+ click_icon(:edit)
113
+ fill_in('amount', with: '$1')
114
+ expect(page).to have_selector('td.amount span', text: '$1.00')
115
+ expect(payment.reload.amount).to eq(1.00)
116
+ end
117
+ end
118
+
119
+ it 'allows the amount to be edited by clicking on the amount then saving' do
120
+ within_row(1) do
121
+ find('td.amount span').click
122
+ fill_in('amount', with: '$1.01')
123
+ expect(page).to have_selector('td.amount span', text: '$1.01')
124
+ expect(payment.reload.amount).to eq(1.01)
125
+ end
126
+ end
127
+
128
+ it 'allows the amount change to be cancelled by clicking on the cancel button' do
129
+ within_row(1) do
130
+ click_icon(:edit)
131
+
132
+ # Can't use fill_in here, as under poltergeist that will unfocus (and
133
+ # thus submit) the field under poltergeist
134
+ find('td.amount input').click
135
+ page.execute_script("$('td.amount input').val('$1')")
136
+
137
+ click_icon(:cancel)
138
+ expect(page).to have_selector('td.amount span', text: '$150.00')
139
+ expect(payment.reload.amount).to eq(150.00)
140
+ end
141
+ end
142
+
143
+ it 'displays an error when the amount is invalid' do
144
+ within_row(1) do
145
+ click_icon(:edit)
146
+ fill_in('amount', with: 'invalid')
147
+ expect(find('td.amount input').value).to eq('invalid')
148
+ expect(payment.reload.amount).to eq(150.00)
149
+ end
150
+ expect(page).to have_selector('.flash.error', text: 'Invalid resource. Please fix errors and try again.')
151
+ end
152
+ end
153
+
154
+ context 'payment is completed', js: true do
155
+ let(:state) { 'completed' }
156
+
157
+ it 'does not allow the amount to be edited' do
158
+ within_row(1) do
159
+ expect(page).not_to have_selector('.fa-edit')
160
+ expect(page).not_to have_selector('td.amount span')
161
+ end
162
+ end
163
+ end
164
+ end
165
+
166
+ context "with no prior payments" do
167
+ let(:order) { create(:order_with_line_items, :line_items_count => 1) }
168
+ let!(:payment_method) { create(:credit_card_payment_method)}
169
+
170
+ # Regression tests for #4129
171
+ context "with a credit card payment method" do
172
+ before do
173
+ visit spree.admin_order_payments_path(order)
174
+ end
175
+
176
+ it "is able to create a new credit card payment with valid information", :js => true do
177
+ fill_in "Card Number", :with => "4111 1111 1111 1111"
178
+ fill_in "Name", :with => "Test User"
179
+ fill_in "Expiration", :with => "09 / #{Time.now.year + 1}"
180
+ fill_in "Card Code", :with => "007"
181
+ # Regression test for #4277
182
+ expect(page).to have_css('.ccType[value="visa"]', visible: false)
183
+ click_button "Continue"
184
+ expect(page).to have_content("Payment has been successfully created!")
185
+ end
186
+
187
+ it "is unable to create a new payment with invalid information" do
188
+ click_button "Continue"
189
+ expect(page).to have_content("Payment could not be created.")
190
+ expect(page).to have_content("Number can't be blank")
191
+ expect(page).to have_content("Name can't be blank")
192
+ expect(page).to have_content("Verification Value can't be blank")
193
+ expect(page).to have_content("Month is not a number")
194
+ expect(page).to have_content("Year is not a number")
195
+ end
196
+ end
197
+
198
+ context "user existing card" do
199
+ let!(:cc) do
200
+ create(:credit_card, user_id: order.user_id, payment_method: payment_method, gateway_customer_profile_id: "BGS-RFRE")
201
+ end
202
+
203
+ before { visit spree.admin_order_payments_path(order) }
204
+
205
+ it "is able to reuse customer payment source" do
206
+ expect(find("#card_#{cc.id}")).to be_checked
207
+ click_button "Continue"
208
+ expect(page).to have_content("Payment has been successfully created!")
209
+ end
210
+ end
211
+
212
+ context "with a check" do
213
+ let(:order) { create(:completed_order_with_totals, :line_items_count => 1) }
214
+ let!(:payment_method) { create(:check_payment_method) }
215
+
216
+ before do
217
+ visit spree.admin_order_payments_path(order.reload)
218
+ end
219
+
220
+ it "can successfully be created and captured" do
221
+ click_on 'Update'
222
+ expect(page).to have_content("Payment has been successfully created!")
223
+ click_icon(:capture)
224
+ expect(page).to have_content("Payment Updated")
225
+ end
226
+ end
227
+ end
228
+ end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Order Risk Analysis', :type => :feature do
4
+ stub_authorization!
5
+
6
+ let!(:order) do
7
+ create(:completed_order_with_pending_payment)
8
+ end
9
+
10
+ def visit_order
11
+ visit spree.admin_path
12
+ click_link 'Orders'
13
+ within_row(1) do
14
+ click_link order.number
15
+ end
16
+ end
17
+
18
+ context "the order is considered risky" do
19
+ before do
20
+ allow_any_instance_of(Spree::Admin::BaseController).to receive_messages :try_spree_current_user => create(:user)
21
+
22
+ order.payments.first.update_column(:avs_response, 'N')
23
+ visit_order
24
+ end
25
+
26
+ it "displays 'Risk Analysis' box" do
27
+ expect(page).to have_content 'Risk Analysis'
28
+ end
29
+
30
+ it "can be approved" do
31
+ click_button('approve')
32
+ expect(page).to have_content 'Approver'
33
+ expect(page).to have_content 'Approved at'
34
+ expect(page).to have_content 'Status: complete'
35
+ end
36
+ end
37
+
38
+ context "the order is not considered risky" do
39
+ before do
40
+ visit_order
41
+ end
42
+
43
+ it "does not display 'Risk Analysis' box" do
44
+ expect(page).to_not have_content 'Risk Analysis'
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Shipments", :type => :feature do
4
+ stub_authorization!
5
+
6
+ let!(:order) { create(:order_ready_to_ship, :number => "R100", :state => "complete", :line_items_count => 5) }
7
+
8
+ # Regression test for #4025
9
+ context "a shipment without a shipping method" do
10
+ before do
11
+ order.shipments.each do |s|
12
+ # Deleting the shipping rates causes there to be no shipping methods
13
+ s.shipping_rates.delete_all
14
+ end
15
+ end
16
+
17
+ it "can still be displayed" do
18
+ expect { visit spree.edit_admin_order_path(order) }.not_to raise_error
19
+ end
20
+ end
21
+
22
+ context "shipping an order", js: true do
23
+ before(:each) do
24
+ visit spree.admin_path
25
+ click_link "Orders"
26
+ within_row(1) do
27
+ click_link "R100"
28
+ end
29
+ end
30
+
31
+ it "can ship a completed order" do
32
+ find(".ship-shipment-button").click
33
+ wait_for_ajax
34
+
35
+ expect(page).to have_content("SHIPPED PACKAGE")
36
+ expect(order.reload.shipment_state).to eq("shipped")
37
+ end
38
+ end
39
+
40
+ context "moving variants between shipments", js: true do
41
+ let!(:order) { create(:completed_order_with_pending_payment, :number => "R100", :state => "complete", :line_items_count => 5) }
42
+ let!(:la) { create(:stock_location, name: "LA") }
43
+ before(:each) do
44
+ visit spree.admin_path
45
+ click_link "Orders"
46
+ within_row(1) do
47
+ click_link "R100"
48
+ end
49
+ end
50
+
51
+ it "can move a variant to a new and to an existing shipment" do
52
+ expect(order.shipments.count).to eq(1)
53
+
54
+ within_row(1) { click_icon 'arrows-h' }
55
+ targetted_select2 'LA', from: '#s2id_item_stock_location'
56
+ click_icon :ok
57
+ expect(page).to have_css("#shipment_#{order.shipments.first.id}")
58
+
59
+ within_row(2) { click_icon 'arrows-h' }
60
+ targetted_select2 "LA(#{order.reload.shipments.last.number})", from: '#s2id_item_stock_location'
61
+ click_icon :ok
62
+ expect(page).to have_css("#shipment_#{order.reload.shipments.last.id}")
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Store credits', type: :feature do
4
+ stub_authorization!
5
+
6
+ let(:order) { FactoryGirl.create(:completed_order_with_totals) }
7
+ let(:payment) do
8
+ FactoryGirl.create(
9
+ :store_credit_payment,
10
+ order: order,
11
+ amount: 20
12
+ )
13
+ end
14
+
15
+ it "viewing a store credit payment" do
16
+ visit spree.admin_order_payment_path(order, payment)
17
+
18
+ expect(page).to have_content "Store Credit"
19
+ expect(page).to have_content "Amount: $20.00"
20
+ end
21
+ end
@@ -0,0 +1,87 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Product Images", :type => :feature do
4
+ stub_authorization!
5
+
6
+ let(:file_path) { Rails.root + "../../spec/support/ror_ringer.jpeg" }
7
+
8
+ before do
9
+ # Ensure attachment style keys are symbolized before running all tests
10
+ # Otherwise this would result in this error:
11
+ # undefined method `processors' for \"48x48>\
12
+ Spree::Image.attachment_definitions[:attachment][:styles].symbolize_keys!
13
+ end
14
+
15
+ context "uploading, editing, and deleting an image", :js => true do
16
+ it "should allow an admin to upload and edit an image for a product" do
17
+ Spree::Image.attachment_definitions[:attachment].delete :storage
18
+
19
+ create(:product)
20
+
21
+ visit spree.admin_path
22
+ click_link "Products"
23
+ click_icon(:edit)
24
+ click_link "Images"
25
+ click_link "new_image_link"
26
+ attach_file('image_attachment', file_path)
27
+ click_button "Update"
28
+ expect(page).to have_content("successfully created!")
29
+
30
+ click_icon(:edit)
31
+ fill_in "image_alt", :with => "ruby on rails t-shirt"
32
+ click_button "Update"
33
+ expect(page).to have_content("successfully updated!")
34
+ expect(page).to have_content("ruby on rails t-shirt")
35
+
36
+ accept_alert do
37
+ click_icon :trash
38
+ end
39
+ expect(page).not_to have_content("ruby on rails t-shirt")
40
+ end
41
+ end
42
+
43
+ # Regression test for #2228
44
+ it "should see variant images" do
45
+ variant = create(:variant)
46
+ variant.images.create!(:attachment => File.open(file_path))
47
+ visit spree.admin_product_images_path(variant.product)
48
+
49
+ expect(page).not_to have_content("No Images Found.")
50
+ within("table.index") do
51
+ expect(page).to have_content(variant.options_text)
52
+
53
+ #ensure no duplicate images are displayed
54
+ expect(page).to have_css("tbody tr", :count => 1)
55
+
56
+ #ensure variant header is displayed
57
+ within("thead") do
58
+ expect(page).to have_content("Variant")
59
+ end
60
+
61
+ #ensure variant header is displayed
62
+ within("tbody") do
63
+ expect(page).to have_content("Size: S")
64
+ end
65
+ end
66
+ end
67
+
68
+ it "should not see variant column when product has no variants" do
69
+ product = create(:product)
70
+ product.images.create!(:attachment => File.open(file_path))
71
+ visit spree.admin_product_images_path(product)
72
+
73
+ expect(page).not_to have_content("No Images Found.")
74
+ within("table.index") do
75
+ #ensure no duplicate images are displayed
76
+ expect(page).to have_css("tbody tr", :count => 1)
77
+
78
+ #ensure variant header is not displayed
79
+ within("thead") do
80
+ expect(page).not_to have_content("Variant")
81
+ end
82
+
83
+ #ensure correct cell count
84
+ expect(page).to have_css("thead th", :count => 3)
85
+ end
86
+ end
87
+ end