spree_repeat_order 2.1.3 → 2.1.4
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 +4 -4
- data/Gemfile +2 -0
- data/app/controllers/spree/admin/repeated_orders_controller.rb +39 -0
- data/app/overrides/repeat_order_button.rb +5 -0
- data/app/views/spree/admin/orders/_repeat_button.haml +2 -0
- data/config/routes.rb +1 -0
- data/spec/controllers/admin/repeated_orders_controller_spec.rb +96 -0
- data/spec/controllers/repeated_orders_controller_spec.rb +10 -1
- data/spec/spec_helper.rb +0 -3
- data/spree_repeat_order.gemspec +1 -1
- metadata +7 -3
- data/lib/spree_repeat_order/factories.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1815b7096b2cd1a23e03de1c5303c3cb60e9bfa3
|
4
|
+
data.tar.gz: 1e349b1cbbc4309cb1325bacf54f3bb13cbcf299
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f2e01ca1f2f9109e5b1f41feb5c111198a1bdc58c9dc478afd8c3a61428c672e396420eacad092dc048c66efa83b07b69388e989e5bfbcfca9d5dead55d6af3
|
7
|
+
data.tar.gz: 6622583e85f00b6de6d61db5924633ceafcbc34e1856ccd53d93ed331d840effb15bda9698fa1ddc13fef69e9412a83caaa2f904d7e94217547f9c0098e4c04a
|
data/Gemfile
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
module Spree
|
2
|
+
module Admin
|
3
|
+
class RepeatedOrdersController < Spree::Admin::BaseController
|
4
|
+
|
5
|
+
def create
|
6
|
+
past_order = Spree::Order.find_by(number: params[:number])
|
7
|
+
new_order = Spree::Order.new
|
8
|
+
|
9
|
+
duplicate_order(past_order, new_order)
|
10
|
+
|
11
|
+
if past_order.completed_at && new_order.save
|
12
|
+
flash[:success] = "The order has been duplicated. The new order id is #{new_order.number}"
|
13
|
+
redirect_to(admin_orders_path)
|
14
|
+
else
|
15
|
+
flash[:error] = 'Oops.. something went wrong and the order could not be duplicated'
|
16
|
+
redirect_to(admin_order_path(past_order.number))
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def duplicate_order(past_order, new_order)
|
24
|
+
new_line_items = []
|
25
|
+
past_order.line_items.each do |line_item|
|
26
|
+
new_line_items << line_item.dup
|
27
|
+
end
|
28
|
+
|
29
|
+
new_order.line_items = new_line_items
|
30
|
+
|
31
|
+
new_ship_address = past_order.ship_address.dup
|
32
|
+
new_order.ship_address = new_ship_address
|
33
|
+
new_bill_address = past_order.bill_address.dup
|
34
|
+
new_order.bill_address = new_bill_address
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/config/routes.rb
CHANGED
@@ -0,0 +1,96 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Spree::Admin::RepeatedOrdersController do
|
4
|
+
|
5
|
+
let(:user) { mock_model Spree::User, :last_incomplete_spree_order => nil, :has_spree_role? => true, :spree_api_key => 'fake' }
|
6
|
+
|
7
|
+
let(:ship_address){ FactoryGirl.build(:address) }
|
8
|
+
let(:bill_address){ FactoryGirl.build(:address) }
|
9
|
+
let(:line_item_1){ FactoryGirl.build(:line_item) }
|
10
|
+
let(:line_item_2){ FactoryGirl.build(:line_item) }
|
11
|
+
let(:past_order){ FactoryGirl.build(:order, {
|
12
|
+
line_items: [line_item_1, line_item_2],
|
13
|
+
ship_address: ship_address,
|
14
|
+
bill_address: bill_address,
|
15
|
+
completed_at: Date.yesterday,
|
16
|
+
number: 'ABC1'
|
17
|
+
}) }
|
18
|
+
|
19
|
+
let(:new_order){ double(Spree::Order).as_null_object }
|
20
|
+
let(:new_bill_address){ Spree::Address.new }
|
21
|
+
let(:new_ship_address){ Spree::Address.new }
|
22
|
+
let(:line_item_clone_1){ Spree::LineItem.new }
|
23
|
+
let(:line_item_clone_2){ Spree::LineItem.new }
|
24
|
+
|
25
|
+
before :each do
|
26
|
+
controller.stub :spree_current_user => user
|
27
|
+
controller.stub :check_authorization
|
28
|
+
end
|
29
|
+
|
30
|
+
describe 'create' do
|
31
|
+
|
32
|
+
before :each do
|
33
|
+
Spree::Order.stub(:find_by).and_return(past_order)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should create new order with old order items' do
|
37
|
+
Spree::Order.should_receive(:find_by).with(number: 'ABC1').and_return(past_order)
|
38
|
+
Spree::Order.stub(:new).and_return(new_order)
|
39
|
+
|
40
|
+
line_item_1.should_receive(:dup).and_return(line_item_clone_1)
|
41
|
+
line_item_2.should_receive(:dup).and_return(line_item_clone_2)
|
42
|
+
|
43
|
+
new_order.should_receive(:line_items=).with([line_item_clone_1, line_item_clone_2])
|
44
|
+
new_order.should_receive(:save).and_return(true)
|
45
|
+
|
46
|
+
spree_post :create, number: "ABC1"
|
47
|
+
response.should be_redirect
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'should create order with old customer details' do
|
51
|
+
Spree::Order.stub(:new).and_return(new_order)
|
52
|
+
|
53
|
+
ship_address.should_receive(:dup).and_return(new_ship_address)
|
54
|
+
bill_address.should_receive(:dup).and_return(new_bill_address)
|
55
|
+
|
56
|
+
new_order.should_receive(:ship_address=).with(new_ship_address)
|
57
|
+
new_order.should_receive(:bill_address=).with(new_bill_address)
|
58
|
+
|
59
|
+
spree_post :create, number: "ABC1"
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'should fail if original order is not complete' do
|
63
|
+
past_order.stub(:completed_at).and_return nil
|
64
|
+
|
65
|
+
spree_post :create, number: "ABC1"
|
66
|
+
response.should redirect_to('/admin/orders/ABC1')
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
describe 'integration' do
|
72
|
+
|
73
|
+
before :each do
|
74
|
+
controller.stub :spree_current_user => user
|
75
|
+
controller.stub :check_authorization
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'should create new order with same line items' do
|
79
|
+
ship_address = FactoryGirl.create(:address)
|
80
|
+
bill_address = FactoryGirl.create(:address)
|
81
|
+
past_order = FactoryGirl.create(:order, ship_address: ship_address, bill_address: bill_address)
|
82
|
+
line_item = FactoryGirl.create(:line_item, order: past_order)
|
83
|
+
|
84
|
+
spree_post :create, number: past_order.number
|
85
|
+
|
86
|
+
last_order = Spree::Order.last
|
87
|
+
last_order.line_items.count.should == 1
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'should save order in delivery state'
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
end
|
@@ -2,6 +2,8 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Spree::RepeatedOrdersController do
|
4
4
|
|
5
|
+
let(:user) { mock_model Spree::User, :last_incomplete_spree_order => nil, :has_spree_role? => true, :spree_api_key => 'fake' }
|
6
|
+
|
5
7
|
describe "create" do
|
6
8
|
|
7
9
|
let(:line_item_1){ FactoryGirl.build(:line_item) }
|
@@ -15,10 +17,12 @@ describe Spree::RepeatedOrdersController do
|
|
15
17
|
before :each do
|
16
18
|
Spree::Order.stub(:find_by).and_return(past_order)
|
17
19
|
controller.stub(:current_order).and_return(new_order)
|
20
|
+
controller.stub :spree_current_user => user
|
21
|
+
controller.stub :check_authorization
|
18
22
|
end
|
19
23
|
|
20
24
|
it 'should create new order with same line items' do
|
21
|
-
controller.should_receive(:current_order).and_return(new_order)
|
25
|
+
controller.should_receive(:current_order).at_least(:once).and_return(new_order)
|
22
26
|
line_item_1.should_receive(:dup).and_return(line_item_clone_1)
|
23
27
|
line_item_2.should_receive(:dup).and_return(line_item_clone_2)
|
24
28
|
|
@@ -44,6 +48,11 @@ describe Spree::RepeatedOrdersController do
|
|
44
48
|
|
45
49
|
describe "integration" do
|
46
50
|
|
51
|
+
before :each do
|
52
|
+
controller.stub :spree_current_user => user
|
53
|
+
controller.stub :check_authorization
|
54
|
+
end
|
55
|
+
|
47
56
|
it 'should create new order with same line items' do
|
48
57
|
past_order = FactoryGirl.create(:order)
|
49
58
|
line_item = FactoryGirl.create(:line_item, order: past_order)
|
data/spec/spec_helper.rb
CHANGED
@@ -29,9 +29,6 @@ require 'spree/testing_support/controller_requests'
|
|
29
29
|
require 'spree/testing_support/authorization_helpers'
|
30
30
|
require 'spree/testing_support/url_helpers'
|
31
31
|
|
32
|
-
# Requires factories defined in lib/spree_repeat_order/factories.rb
|
33
|
-
require 'spree_repeat_order/factories'
|
34
|
-
|
35
32
|
RSpec.configure do |config|
|
36
33
|
config.include FactoryGirl::Syntax::Methods
|
37
34
|
|
data/spree_repeat_order.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
Gem::Specification.new do |s|
|
3
3
|
s.platform = Gem::Platform::RUBY
|
4
4
|
s.name = 'spree_repeat_order'
|
5
|
-
s.version = '2.1.
|
5
|
+
s.version = '2.1.4'
|
6
6
|
s.summary = 'Makes it possible to repeat an existing order with one click'
|
7
7
|
s.description = ''
|
8
8
|
s.required_ruby_version = '>= 2.0.0'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_repeat_order
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Francisco Trindade
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: spree_core
|
@@ -208,8 +208,11 @@ files:
|
|
208
208
|
- app/assets/javascripts/store/spree_repeat_order.js
|
209
209
|
- app/assets/stylesheets/admin/spree_repeat_order.css
|
210
210
|
- app/assets/stylesheets/store/spree_repeat_order.css
|
211
|
+
- app/controllers/spree/admin/repeated_orders_controller.rb
|
211
212
|
- app/controllers/spree/repeated_orders_controller.rb
|
212
213
|
- app/overrides/my_account_table.rb
|
214
|
+
- app/overrides/repeat_order_button.rb
|
215
|
+
- app/views/spree/admin/orders/_repeat_button.haml
|
213
216
|
- app/views/spree/users/_my_account_table.haml
|
214
217
|
- bin/rails
|
215
218
|
- config/locales/en.yml
|
@@ -217,7 +220,7 @@ files:
|
|
217
220
|
- lib/generators/spree_repeat_order/install/install_generator.rb
|
218
221
|
- lib/spree_repeat_order.rb
|
219
222
|
- lib/spree_repeat_order/engine.rb
|
220
|
-
-
|
223
|
+
- spec/controllers/admin/repeated_orders_controller_spec.rb
|
221
224
|
- spec/controllers/repeated_orders_controller_spec.rb
|
222
225
|
- spec/spec_helper.rb
|
223
226
|
- spree_repeat_order.gemspec
|
@@ -246,5 +249,6 @@ signing_key:
|
|
246
249
|
specification_version: 4
|
247
250
|
summary: Makes it possible to repeat an existing order with one click
|
248
251
|
test_files:
|
252
|
+
- spec/controllers/admin/repeated_orders_controller_spec.rb
|
249
253
|
- spec/controllers/repeated_orders_controller_spec.rb
|
250
254
|
- spec/spec_helper.rb
|
@@ -1,6 +0,0 @@
|
|
1
|
-
FactoryGirl.define do
|
2
|
-
# Define your Spree extensions Factories within this file to enable applications, and other extensions to use and override them.
|
3
|
-
#
|
4
|
-
# Example adding this to your spec_helper will load these Factories for use:
|
5
|
-
# require 'spree_repeat_order/factories'
|
6
|
-
end
|