spree_backend 3.3.0.rc1 → 3.3.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/backend/general_settings.js.coffee +12 -10
  3. data/app/controllers/spree/admin/orders_controller.rb +3 -4
  4. data/app/controllers/spree/admin/payments_controller.rb +2 -2
  5. data/app/controllers/spree/admin/products_controller.rb +3 -3
  6. data/app/controllers/spree/admin/return_authorizations_controller.rb +1 -1
  7. data/app/helpers/spree/admin/base_helper.rb +4 -1
  8. data/app/helpers/spree/admin/navigation_helper.rb +1 -1
  9. data/app/views/spree/admin/products/_form.html.erb +8 -8
  10. data/app/views/spree/admin/promotions/actions/_create_line_items.html.erb +4 -2
  11. data/app/views/spree/admin/shared/_translations.html.erb +1 -0
  12. data/spree_backend.gemspec +1 -1
  13. metadata +7 -98
  14. data/spec/controllers/spree/admin/base_controller_spec.rb +0 -46
  15. data/spec/controllers/spree/admin/customer_returns_controller_spec.rb +0 -185
  16. data/spec/controllers/spree/admin/general_settings_controller_spec.rb +0 -41
  17. data/spec/controllers/spree/admin/missing_products_controller_spec.rb +0 -18
  18. data/spec/controllers/spree/admin/orders/customer_details_controller_spec.rb +0 -199
  19. data/spec/controllers/spree/admin/orders_controller_spec.rb +0 -296
  20. data/spec/controllers/spree/admin/payment_methods_controller_spec.rb +0 -64
  21. data/spec/controllers/spree/admin/payments_controller_spec.rb +0 -97
  22. data/spec/controllers/spree/admin/products_controller_spec.rb +0 -137
  23. data/spec/controllers/spree/admin/promotion_actions_controller_spec.rb +0 -21
  24. data/spec/controllers/spree/admin/promotion_rules_controller_spec.rb +0 -21
  25. data/spec/controllers/spree/admin/promotions_controller_spec.rb +0 -44
  26. data/spec/controllers/spree/admin/refunds_controller_spec.rb +0 -32
  27. data/spec/controllers/spree/admin/reimbursements_controller_spec.rb +0 -74
  28. data/spec/controllers/spree/admin/reports_controller_spec.rb +0 -42
  29. data/spec/controllers/spree/admin/resource_controller_spec.rb +0 -252
  30. data/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +0 -225
  31. data/spec/controllers/spree/admin/return_index_controller_spec.rb +0 -37
  32. data/spec/controllers/spree/admin/return_items_controller_spec.rb +0 -27
  33. data/spec/controllers/spree/admin/shipping_methods_controller_spec.rb +0 -14
  34. data/spec/controllers/spree/admin/stock_items_controller_spec.rb +0 -19
  35. data/spec/controllers/spree/admin/stock_locations_controller_spec.rb +0 -41
  36. data/spec/controllers/spree/admin/stock_transfers_controller_spec.rb +0 -41
  37. data/spec/controllers/spree/admin/tax_categories_controller_spec.rb +0 -34
  38. data/spec/controllers/spree/admin/users_controller_spec.rb +0 -161
  39. data/spec/controllers/spree/admin/variants_controller_spec.rb +0 -32
  40. data/spec/features/admin/configuration/analytics_tracker_spec.rb +0 -47
  41. data/spec/features/admin/configuration/countries_spec.rb +0 -24
  42. data/spec/features/admin/configuration/general_settings_spec.rb +0 -44
  43. data/spec/features/admin/configuration/payment_methods_spec.rb +0 -63
  44. data/spec/features/admin/configuration/roles_spec.rb +0 -47
  45. data/spec/features/admin/configuration/shipping_methods_spec.rb +0 -62
  46. data/spec/features/admin/configuration/states_spec.rb +0 -68
  47. data/spec/features/admin/configuration/stock_locations_spec.rb +0 -48
  48. data/spec/features/admin/configuration/store_credit_categories_spec.rb +0 -50
  49. data/spec/features/admin/configuration/tax_categories_spec.rb +0 -56
  50. data/spec/features/admin/configuration/tax_rates_spec.rb +0 -18
  51. data/spec/features/admin/configuration/zones_spec.rb +0 -39
  52. data/spec/features/admin/homepage_spec.rb +0 -89
  53. data/spec/features/admin/locale_spec.rb +0 -31
  54. data/spec/features/admin/orders/adjustments_promotions_spec.rb +0 -53
  55. data/spec/features/admin/orders/adjustments_spec.rb +0 -124
  56. data/spec/features/admin/orders/cancelling_and_resuming_spec.rb +0 -47
  57. data/spec/features/admin/orders/customer_details_spec.rb +0 -154
  58. data/spec/features/admin/orders/line_items_spec.rb +0 -51
  59. data/spec/features/admin/orders/listing_spec.rb +0 -224
  60. data/spec/features/admin/orders/log_entries_spec.rb +0 -55
  61. data/spec/features/admin/orders/new_order_spec.rb +0 -186
  62. data/spec/features/admin/orders/order_details_spec.rb +0 -660
  63. data/spec/features/admin/orders/payments_spec.rb +0 -244
  64. data/spec/features/admin/orders/risk_analysis_spec.rb +0 -48
  65. data/spec/features/admin/orders/shipments_spec.rb +0 -64
  66. data/spec/features/admin/orders/state_changes_spec.rb +0 -21
  67. data/spec/features/admin/products/edit/images_spec.rb +0 -86
  68. data/spec/features/admin/products/edit/products_spec.rb +0 -56
  69. data/spec/features/admin/products/edit/taxons_spec.rb +0 -41
  70. data/spec/features/admin/products/edit/variants_spec.rb +0 -56
  71. data/spec/features/admin/products/option_types_spec.rb +0 -114
  72. data/spec/features/admin/products/products_spec.rb +0 -445
  73. data/spec/features/admin/products/properties_spec.rb +0 -147
  74. data/spec/features/admin/products/prototypes_spec.rb +0 -112
  75. data/spec/features/admin/products/stock_management_spec.rb +0 -124
  76. data/spec/features/admin/products/taxonomies_spec.rb +0 -52
  77. data/spec/features/admin/products/variant_spec.rb +0 -50
  78. data/spec/features/admin/promotions/adjustments_spec.rb +0 -258
  79. data/spec/features/admin/promotions/option_value_rule_spec.rb +0 -70
  80. data/spec/features/admin/promotions/tiered_calculator_spec.rb +0 -70
  81. data/spec/features/admin/refund_reasons/refund_reasons_spec.rb +0 -57
  82. data/spec/features/admin/reimbursement_type/edit_reimbursement_type_spec.rb +0 -36
  83. data/spec/features/admin/reimbursement_type/new_reimbursement_type_spec.rb +0 -62
  84. data/spec/features/admin/reports_spec.rb +0 -61
  85. data/spec/features/admin/return_authorization_reasons/return_authorization_reasons_spec.rb +0 -63
  86. data/spec/features/admin/returns/customer_returns_spec.rb +0 -80
  87. data/spec/features/admin/returns/return_authorizations_spec.rb +0 -152
  88. data/spec/features/admin/stock_transfer_spec.rb +0 -91
  89. data/spec/features/admin/store_credits_spec.rb +0 -93
  90. data/spec/features/admin/taxons_spec.rb +0 -53
  91. data/spec/features/admin/users_spec.rb +0 -286
  92. data/spec/helpers/admin/base_helper_spec.rb +0 -30
  93. data/spec/helpers/admin/navigation_helper_spec.rb +0 -111
  94. data/spec/helpers/admin/promotion_rules_helper_spec.rb +0 -12
  95. data/spec/helpers/admin/stock_movements_helper_spec.rb +0 -30
  96. data/spec/models/spree/resource_spec.rb +0 -48
  97. data/spec/routing/admin_path_spec.rb +0 -22
  98. data/spec/spec_helper.rb +0 -144
  99. data/spec/support/appear_before_matcher.rb +0 -8
  100. data/spec/support/ror_ringer.jpeg +0 -0
  101. data/spec/test_views/spree/admin/submodule/posts/edit.html.erb +0 -1
  102. data/spec/test_views/spree/admin/submodule/posts/new.html.erb +0 -1
  103. data/spec/test_views/spree/admin/widgets/edit.html.erb +0 -1
  104. data/spec/test_views/spree/admin/widgets/new.html.erb +0 -1
@@ -1,137 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Admin::ProductsController, type: :controller do
4
- stub_authorization!
5
-
6
- context "#index" do
7
- let(:ability_user) { stub_model(Spree::LegacyUser, has_spree_role?: true) }
8
-
9
- # Regression test for #1259
10
- it "can find a product by SKU" do
11
- product = create(:product, sku: "ABC123")
12
- spree_get :index, q: { sku_start: "ABC123" }
13
- expect(assigns[:collection]).not_to be_empty
14
- expect(assigns[:collection]).to include(product)
15
- end
16
- end
17
-
18
- # regression test for #1370
19
- context "adding properties to a product" do
20
- let!(:product) { create(:product) }
21
- specify do
22
- spree_put :update, id: product.to_param, product: { product_properties_attributes: { "1" => { property_name: "Foo", value: "bar" } } }
23
- expect(flash[:success]).to eq("Product #{product.name.inspect} has been successfully updated!")
24
- end
25
-
26
- end
27
-
28
- # regression test for #801
29
- describe '#destroy' do
30
- let(:product) { mock_model(Spree::Product) }
31
- let(:products) { double(ActiveRecord::Relation) }
32
-
33
- def send_request
34
- spree_delete :destroy, id: product, format: :js
35
- end
36
-
37
- context 'will successfully destroy product' do
38
- before do
39
- allow(Spree::Product).to receive(:friendly).and_return(products)
40
- allow(products).to receive(:find).with(product.id.to_s).and_return(product)
41
- allow(product).to receive(:destroy).and_return(true)
42
- end
43
-
44
- describe 'expects to receive' do
45
- it { expect(Spree::Product).to receive(:friendly).and_return(products) }
46
- it { expect(products).to receive(:find).with(product.id.to_s).and_return(product) }
47
- it { expect(product).to receive(:destroy).and_return(true) }
48
-
49
- after { send_request }
50
- end
51
-
52
- describe 'assigns' do
53
- before { send_request }
54
- it { expect(assigns(:product)).to eq(product) }
55
- end
56
-
57
- describe 'response' do
58
- before { send_request }
59
- it { expect(response).to have_http_status(:ok) }
60
- it { expect(flash[:success]).to eq(Spree.t('notice_messages.product_deleted')) }
61
- end
62
- end
63
-
64
- context 'will not successfully destroy product' do
65
- before do
66
- allow(Spree::Product).to receive(:friendly).and_return(products)
67
- allow(products).to receive(:find).with(product.id.to_s).and_return(product)
68
- allow(product).to receive(:destroy).and_return(false)
69
- end
70
-
71
- describe 'expects to receive' do
72
- it { expect(Spree::Product).to receive(:friendly).and_return(products) }
73
- it { expect(products).to receive(:find).with(product.id.to_s).and_return(product) }
74
- it { expect(product).to receive(:destroy).and_return(false) }
75
-
76
- after { send_request }
77
- end
78
-
79
- describe 'assigns' do
80
- before { send_request }
81
- it { expect(assigns(:product)).to eq(product) }
82
- end
83
-
84
- describe 'response' do
85
- before { send_request }
86
- it { expect(response).to have_http_status(:ok) }
87
- it { expect(flash[:error]).to eq(Spree.t('notice_messages.product_not_deleted')) }
88
- end
89
- end
90
- end
91
-
92
- describe '#clone' do
93
- let(:product) { create(:custom_product, name: 'MyProduct', sku: 'MySku') }
94
- let(:product2) { create(:custom_product, name: 'COPY OF MyProduct', sku: 'COPY OF MySku') }
95
- let(:variant) do
96
- create(:master_variant, name: 'COPY OF MyProduct', sku: 'COPY OF MySku', created_at: product.created_at - 1.day)
97
- end
98
-
99
- def send_request
100
- spree_post :clone, id: product, format: :js
101
- end
102
-
103
- context 'will successfully clone product' do
104
- before do
105
- allow(product).to receive(:duplicate).and_return(product2)
106
- end
107
-
108
- describe 'response' do
109
- before { send_request }
110
- it { expect(response).to have_http_status(:found) }
111
- it { expect(response).to be_redirect }
112
- it { expect(flash[:success]).to eq(Spree.t('notice_messages.product_cloned')) }
113
- end
114
- end
115
-
116
- context 'will not successfully clone product' do
117
- before do
118
- variant
119
- end
120
-
121
- describe 'response' do
122
- before { send_request }
123
- it { expect(response).to have_http_status(:found) }
124
- it { expect(response).to be_redirect }
125
- it { expect(flash[:error]).to eq(Spree.t('notice_messages.product_not_cloned')) }
126
- end
127
- end
128
- end
129
-
130
- context "stock" do
131
- let(:product) { create(:product) }
132
- it "restricts stock location based on accessible attributes" do
133
- expect(Spree::StockLocation).to receive(:accessible_by).and_return([])
134
- spree_get :stock, id: product
135
- end
136
- end
137
- end
@@ -1,21 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Admin::PromotionActionsController, type: :controller do
4
- stub_authorization!
5
-
6
- let!(:promotion) { create(:promotion) }
7
-
8
- it "can create a promotion action of a valid type" do
9
- spree_post :create, promotion_id: promotion.id, action_type: "Spree::Promotion::Actions::CreateAdjustment"
10
- expect(response).to be_redirect
11
- expect(response).to redirect_to spree.edit_admin_promotion_path(promotion)
12
- expect(promotion.actions.count).to eq(1)
13
- end
14
-
15
- it "can not create a promotion action of an invalid type" do
16
- spree_post :create, promotion_id: promotion.id, action_type: "Spree::InvalidType"
17
- expect(response).to be_redirect
18
- expect(response).to redirect_to spree.edit_admin_promotion_path(promotion)
19
- expect(promotion.rules.count).to eq(0)
20
- end
21
- end
@@ -1,21 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Admin::PromotionRulesController, type: :controller do
4
- stub_authorization!
5
-
6
- let!(:promotion) { create(:promotion) }
7
-
8
- it "can create a promotion rule of a valid type" do
9
- spree_post :create, promotion_id: promotion.id, promotion_rule: { type: "Spree::Promotion::Rules::Product" }
10
- expect(response).to be_redirect
11
- expect(response).to redirect_to spree.edit_admin_promotion_path(promotion)
12
- expect(promotion.rules.count).to eq(1)
13
- end
14
-
15
- it "can not create a promotion rule of an invalid type" do
16
- spree_post :create, promotion_id: promotion.id, promotion_rule: { type: "Spree::InvalidType" }
17
- expect(response).to be_redirect
18
- expect(response).to redirect_to spree.edit_admin_promotion_path(promotion)
19
- expect(promotion.rules.count).to eq(0)
20
- end
21
- end
@@ -1,44 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Admin::PromotionsController, type: :controller do
4
- stub_authorization!
5
-
6
- let!(:promotion1) { create(:promotion, name: "name1", code: "code1", path: "path1") }
7
- let!(:promotion2) { create(:promotion, name: "name2", code: "code2", path: "path2") }
8
- let!(:category) { create :promotion_category }
9
-
10
- context "#index" do
11
- it "succeeds" do
12
- spree_get :index
13
- expect(assigns[:promotions]).to match_array [promotion2, promotion1]
14
- end
15
-
16
- it "assigns promotion categories" do
17
- spree_get :index
18
- expect(assigns[:promotion_categories]).to match_array [category]
19
- end
20
-
21
- context "search" do
22
- it "pages results" do
23
- spree_get :index, per_page: '1'
24
- expect(assigns[:promotions]).to eq [promotion2]
25
- end
26
-
27
- it "filters by name" do
28
- spree_get :index, q: {name_cont: promotion1.name}
29
- expect(assigns[:promotions]).to eq [promotion1]
30
- end
31
-
32
- it "filters by code" do
33
- spree_get :index, q: {code_cont: promotion1.code}
34
- expect(assigns[:promotions]).to eq [promotion1]
35
- end
36
-
37
- it "filters by path" do
38
- spree_get :index, q: {path_cont: promotion1.path}
39
- expect(assigns[:promotions]).to eq [promotion1]
40
- end
41
- end
42
- end
43
-
44
- end
@@ -1,32 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Admin::RefundsController do
4
- stub_authorization!
5
-
6
- describe "POST create" do
7
- context "a Spree::Core::GatewayError is raised" do
8
-
9
- let(:payment) { create(:payment) }
10
-
11
- subject do
12
- spree_post :create,
13
- refund: { amount: "50.0", refund_reason_id: "1" },
14
- order_id: payment.order.to_param,
15
- payment_id: payment.to_param
16
- end
17
-
18
- before(:each) do
19
- def controller.create
20
- raise Spree::Core::GatewayError.new('An error has occurred')
21
- end
22
- end
23
-
24
- it "sets an error message with the correct text" do
25
- subject
26
- expect(flash[:error]).to eq 'An error has occurred'
27
- end
28
-
29
- it { should render_template(:new) }
30
- end
31
- end
32
- end
@@ -1,74 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Admin::ReimbursementsController, type: :controller do
4
- stub_authorization!
5
-
6
- let!(:default_refund_reason) do
7
- Spree::RefundReason.find_or_create_by!(name: Spree::RefundReason::RETURN_PROCESSING_REASON, mutable: false)
8
- end
9
-
10
- describe '#create' do
11
- let(:customer_return) { create(:customer_return, line_items_count: 1) }
12
- let(:order) { customer_return.order }
13
- let(:return_item) { customer_return.return_items.first }
14
- let(:payment) { order.payments.first }
15
-
16
- subject do
17
- spree_post :create, order_id: order.to_param, build_from_customer_return_id: customer_return.id
18
- end
19
-
20
- it 'creates the reimbursement' do
21
- expect { subject }.to change { order.reimbursements.count }.by(1)
22
- expect(assigns(:reimbursement).return_items.to_a).to eq customer_return.return_items.to_a
23
- end
24
-
25
- it 'redirects to the edit page' do
26
- subject
27
- expect(response).to redirect_to(spree.edit_admin_order_reimbursement_path(order, assigns(:reimbursement)))
28
- end
29
- end
30
-
31
- describe "#perform" do
32
- let(:reimbursement) { create(:reimbursement) }
33
- let(:customer_return) { reimbursement.customer_return }
34
- let(:order) { reimbursement.order }
35
- let(:return_items) { reimbursement.return_items }
36
- let(:payment) { order.payments.first }
37
-
38
- subject do
39
- spree_post :perform, order_id: order.to_param, id: reimbursement.to_param
40
- end
41
-
42
- it 'redirects to customer return page' do
43
- subject
44
- expect(response).to redirect_to spree.admin_order_reimbursement_path(order, reimbursement)
45
- end
46
-
47
- it 'performs the reimbursement' do
48
- expect {
49
- subject
50
- }.to change { payment.refunds.count }.by(1)
51
- expect(payment.refunds.last.amount).to be > 0
52
- expect(payment.refunds.last.amount).to eq return_items.to_a.sum(&:total)
53
- end
54
-
55
- context "a Spree::Core::GatewayError is raised" do
56
- before(:each) do
57
- def controller.perform
58
- raise Spree::Core::GatewayError.new('An error has occurred')
59
- end
60
- end
61
-
62
- it "sets an error message with the correct text" do
63
- subject
64
- expect(flash[:error]).to eq 'An error has occurred'
65
- end
66
-
67
- it 'redirects to the edit page' do
68
- subject
69
- redirect_path = spree.edit_admin_order_reimbursement_path(order, assigns(:reimbursement))
70
- expect(response).to redirect_to(redirect_path)
71
- end
72
- end
73
- end
74
- end
@@ -1,42 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Spree::Admin::ReportsController, type: :controller do
4
- stub_authorization!
5
-
6
- describe 'ReportsController.available_reports' do
7
- it 'should contain sales_total' do
8
- expect(Spree::Admin::ReportsController.available_reports.keys.include?(:sales_total)).to be true
9
- end
10
-
11
- it 'should have the proper sales total report description' do
12
- expect(Spree::Admin::ReportsController.available_reports[:sales_total][:description]).to eql('Sales Total For All Orders')
13
- end
14
-
15
- end
16
-
17
- describe 'ReportsController.add_available_report!' do
18
- context 'when adding the report name' do
19
- it 'should contain the report' do
20
- Spree::Admin::ReportsController.add_available_report!(:some_report)
21
- expect(Spree::Admin::ReportsController.available_reports.keys.include?(:some_report)).to be true
22
- end
23
- end
24
- end
25
-
26
- describe 'GET index' do
27
- it 'should be ok' do
28
- spree_get :index
29
- expect(response).to be_ok
30
- end
31
- end
32
-
33
- it 'should respond to model_class as Spree::AdminReportsController' do
34
- expect(controller.send(:model_class)).to eql(Spree::Admin::ReportsController)
35
- end
36
-
37
- after(:each) do
38
- Spree::Admin::ReportsController.available_reports.delete_if do |key, value|
39
- key != :sales_total
40
- end
41
- end
42
- end
@@ -1,252 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spree
4
- module Admin
5
- class WidgetsController < Spree::Admin::ResourceController
6
- prepend_view_path('spec/test_views')
7
-
8
- def model_class
9
- Widget
10
- end
11
- end
12
- end
13
- end
14
-
15
- describe Spree::Admin::WidgetsController, type: :controller do
16
- stub_authorization!
17
-
18
- after(:all) do
19
- # Spree::Core::Engine.routes.reload_routes!
20
- Rails.application.reload_routes!
21
- end
22
-
23
- with_model 'Widget', scope: :all do
24
- table do |t|
25
- t.string :name
26
- t.integer :position
27
- t.timestamps null: false
28
- end
29
-
30
- model do
31
- acts_as_list
32
- validates :name, presence: true
33
- end
34
- end
35
-
36
- before do
37
- Spree::Core::Engine.routes.draw do
38
- namespace :admin do
39
- resources :widgets do
40
- post :update_positions, on: :member
41
- end
42
- end
43
- end
44
- stub_const('Spree::Widget', Widget)
45
- end
46
-
47
- describe '#new' do
48
- subject do
49
- spree_get :new
50
- end
51
-
52
- it 'succeeds' do
53
- subject
54
- expect(response).to be_success
55
- end
56
- end
57
-
58
- describe '#edit' do
59
- let(:widget) { Widget.create!(name: 'a widget') }
60
-
61
- subject do
62
- spree_get :edit, id: widget.to_param
63
- end
64
-
65
- it 'succeeds' do
66
- subject
67
- expect(response).to be_success
68
- end
69
- end
70
-
71
- describe '#create' do
72
- let(:params) do
73
- {widget: {name: 'a widget'}}
74
- end
75
-
76
- subject { spree_post :create, params }
77
-
78
- it 'creates the resource' do
79
- expect { subject }.to change { Widget.count }.by(1)
80
- end
81
-
82
- context 'without any parameters' do
83
- let(:params) { {} }
84
-
85
- before do
86
- allow_any_instance_of(Widget).to receive(:name).and_return('some name')
87
- end
88
-
89
- it 'creates the resource' do
90
- expect { subject }.to change { Widget.count }.by(1)
91
- end
92
- end
93
- end
94
-
95
- describe '#update' do
96
- let(:widget) { Widget.create!(name: 'a widget') }
97
-
98
- let(:params) do
99
- {
100
- id: widget.to_param,
101
- widget: {name: 'widget renamed'},
102
- }
103
- end
104
-
105
- subject { spree_put :update, params }
106
-
107
- it 'updates the resource' do
108
- expect { subject }.to change { widget.reload.name }.from('a widget').to('widget renamed')
109
- end
110
- end
111
-
112
- describe '#destroy' do
113
- let!(:widget) { Widget.create!(name: 'a widget') }
114
- let(:params) { {id: widget.id} }
115
-
116
- subject {
117
- spree_delete :destroy, params
118
- }
119
-
120
- it 'destroys the resource' do
121
- expect { subject }.to change { Widget.count }.from(1).to(0)
122
- end
123
- end
124
-
125
- describe '#update_positions' do
126
- let(:widget_1) { Widget.create!(name: 'widget 1', position: 1) }
127
- let(:widget_2) { Widget.create!(name: 'widget 2', position: 2) }
128
-
129
- subject do
130
- spree_post :update_positions, id: widget_1.to_param,
131
- positions: { widget_1.id => '2', widget_2.id => '1' }, format: 'js'
132
- end
133
-
134
- it 'updates the position of widget 1' do
135
- expect { subject }.to change { widget_1.reload.position }.from(1).to(2)
136
- end
137
-
138
- it 'updates the position of widget 2' do
139
- expect { subject }.to change { widget_2.reload.position }.from(2).to(1)
140
- end
141
-
142
- it 'touches updated_at' do
143
- Timecop.scale(3600) do
144
- expect { subject }.to change { widget_1.reload.updated_at }
145
- end
146
- end
147
- end
148
- end
149
-
150
- module Spree
151
- module Submodule
152
- class Post < Spree::Base
153
- end
154
- end
155
- module Admin
156
- module Submodule
157
- class PostsController < Spree::Admin::ResourceController
158
- prepend_view_path('spec/test_views')
159
-
160
- def model_class
161
- Spree::Submodule::Post
162
- end
163
- end
164
- end
165
- end
166
- end
167
-
168
- describe Spree::Admin::Submodule::PostsController, type: :controller do
169
- stub_authorization!
170
-
171
- after(:all) do
172
- # Spree::Core::Engine.routes.reload_routes!
173
- Rails.application.reload_routes!
174
- end
175
-
176
- with_table 'spree_posts', scope: :all do |t|
177
- t.string :name
178
- t.integer :position
179
- t.timestamps null: false
180
- end
181
-
182
- before do
183
- Spree::Core::Engine.routes.draw do
184
- namespace :admin do
185
- namespace :submodule do
186
- resources :posts
187
- end
188
- end
189
- end
190
- end
191
-
192
- describe '#new' do
193
- subject do
194
- spree_get :new
195
- end
196
-
197
- it 'succeeds' do
198
- subject
199
- expect(response).to be_success
200
- end
201
- end
202
-
203
- describe '#edit' do
204
- let(:submodule_post) { Spree::Submodule::Post.create!(name: 'a post') }
205
-
206
- subject do
207
- spree_get :edit, id: submodule_post.to_param
208
- end
209
-
210
- it 'succeeds' do
211
- subject
212
- expect(response).to be_success
213
- end
214
- end
215
-
216
- describe '#create' do
217
- let(:params) do
218
- { submodule_post: { name: 'a post' } }
219
- end
220
-
221
- subject { spree_post :create, params }
222
-
223
- it 'creates the resource' do
224
- expect { subject }.to change { Spree::Submodule::Post.count }.by(1)
225
- end
226
- end
227
-
228
- describe '#update' do
229
- let(:post) { Spree::Submodule::Post.create!(name: 'a post') }
230
-
231
- let(:params) do
232
- { id: post.to_param, submodule_post: { name: 'post renamed' } }
233
- end
234
-
235
- subject { spree_put :update, params }
236
-
237
- it 'updates the resource' do
238
- expect { subject }.to change { post.reload.name }.from('a post').to('post renamed')
239
- end
240
- end
241
-
242
- describe '#destroy' do
243
- let!(:post) { Spree::Submodule::Post.create!(name: 'a post') }
244
- let(:params) { { id: post.id } }
245
-
246
- subject { spree_delete :destroy, params }
247
-
248
- it 'destroys the resource' do
249
- expect { subject }.to change { Spree::Submodule::Post.count }.from(1).to(0)
250
- end
251
- end
252
- end