solidus_multi_domain 1.0.0 → 1.0.1
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 +1 -1
- data/README.md +1 -1
- data/app/controllers/concerns/spree_multi_domain/create_line_item_support.rb +1 -1
- data/app/models/spree/line_item_decorator.rb +1 -0
- data/app/models/spree/order_decorator.rb +0 -3
- data/app/models/spree_multi_domain/{line_item_decorator.rb → line_item_concerns.rb} +2 -4
- data/db/migrate/20100227180338_create_products_stores.rb +2 -2
- data/db/migrate/20121210224018_add_store_payment_methods.rb +1 -1
- data/db/migrate/20130325231147_add_store_shipping_methods.rb +1 -1
- data/lib/generators/{spree_multi_domain → solidus_multi_domain}/install/install_generator.rb +1 -1
- data/solidus_multi_domain.gemspec +1 -1
- data/spec/controllers/spree/api/line_items_controller_spec.rb +1 -1
- data/spec/controllers/spree/api/products_controller_spec.rb +2 -2
- data/spec/controllers/spree/api/shipments_controller_spec.rb +4 -4
- data/spec/models/spree/line_item_spec.rb +1 -1
- data/spec/models/spree/order_spec.rb +0 -14
- data/spec/models/spree/tracker_spec.rb +5 -5
- data/spec/requests/global_controller_helpers_spec.rb +1 -1
- data/spec/requests/template_renderer_spec.rb +2 -2
- metadata +6 -7
- data/app/controllers/spree/api/orders_controller_decorator.rb +0 -21
- data/spec/controllers/spree/api/orders_controller_spec.rb +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 191f8cf6df04e131b0007d89065a3a690f5d4f41
|
4
|
+
data.tar.gz: a9de546369e8aa0d751eba3be96ad2f2077fcc41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6867d1c89bc564d8a435258b541bc60e60347406cf4c088e85149d7a99e412da058d02e73f7458b3a4126e9a95fcef9733d2725fc18c60b968817ab62181b959
|
7
|
+
data.tar.gz: 2879bc42a0beef6997ca48528887b2c6d8517f26335312b566d46ee32d66f0926e41fb273a4eb5a2136685b4ffbafe6239c55de18df734c31d5f7d43d796cee5
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -3,7 +3,7 @@ module SpreeMultiDomain::CreateLineItemSupport
|
|
3
3
|
|
4
4
|
included do
|
5
5
|
prepend(InstanceMethods)
|
6
|
-
rescue_from SpreeMultiDomain::
|
6
|
+
rescue_from SpreeMultiDomain::LineItemConcerns::ProductDoesNotBelongToStoreError, with: :product_does_not_belong_to_store
|
7
7
|
end
|
8
8
|
|
9
9
|
module InstanceMethods
|
@@ -0,0 +1 @@
|
|
1
|
+
Spree::LineItem.include(SpreeMultiDomain::LineItemConcerns)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module SpreeMultiDomain::
|
1
|
+
module SpreeMultiDomain::LineItemConcerns
|
2
2
|
extend ActiveSupport::Concern
|
3
3
|
|
4
4
|
class ProductDoesNotBelongToStoreError < StandardError; end
|
@@ -12,9 +12,7 @@ module SpreeMultiDomain::LineItemDecorator
|
|
12
12
|
private
|
13
13
|
|
14
14
|
def ensure_product_belongs_to_store
|
15
|
-
raise
|
15
|
+
raise ProductDoesNotBelongToStoreError if order.store.present? && !product.stores.include?(order.store)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
19
|
-
|
20
|
-
Spree::LineItem.include(SpreeMultiDomain::LineItemDecorator)
|
@@ -3,11 +3,11 @@ class CreateProductsStores < ActiveRecord::Migration
|
|
3
3
|
create_table :products_stores, :id => false do |t|
|
4
4
|
t.references :product
|
5
5
|
t.references :store
|
6
|
-
t.timestamps
|
6
|
+
t.timestamps null: true
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
10
|
def self.down
|
11
11
|
drop_table :products_stores
|
12
12
|
end
|
13
|
-
end
|
13
|
+
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.platform = Gem::Platform::RUBY
|
5
5
|
s.name = "solidus_multi_domain"
|
6
|
-
s.version = "1.0.
|
6
|
+
s.version = "1.0.1"
|
7
7
|
s.summary = "Adds multiple site support to Solidus"
|
8
8
|
s.description = "Multiple Solidus stores on different domains - single unified backed for processing orders."
|
9
9
|
s.required_ruby_version = ">= 2.1"
|
@@ -17,7 +17,7 @@ describe Spree::Api::LineItemsController do
|
|
17
17
|
context "A SpreeMultiDomain::LineItemDecorator::ProductDoesNotBelongToStoreError is raised" do
|
18
18
|
before(:each) do
|
19
19
|
def controller.create
|
20
|
-
raise SpreeMultiDomain::
|
20
|
+
raise SpreeMultiDomain::LineItemConcerns::ProductDoesNotBelongToStoreError
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
@@ -27,7 +27,7 @@ describe Spree::Api::ProductsController do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'should return 404' do
|
30
|
-
controller.
|
30
|
+
allow(controller).to receive_messages(:current_store => store_2)
|
31
31
|
spree_get :show, :id => product.to_param, format: :json
|
32
32
|
|
33
33
|
expect(response.response_code) == 404
|
@@ -42,7 +42,7 @@ describe Spree::Api::ProductsController do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'should return 200' do
|
45
|
-
controller.
|
45
|
+
allow(controller).to receive_messages(:current_store => store)
|
46
46
|
spree_get :show, :id => product.to_param, format: :json
|
47
47
|
|
48
48
|
expect(response.response_code) == 200
|
@@ -9,20 +9,20 @@ describe Spree::Api::ShipmentsController do
|
|
9
9
|
let!(:order_from_store2) { FactoryGirl.create(:order, store: store2, user: user) }
|
10
10
|
|
11
11
|
before(:each) do
|
12
|
-
controller.
|
12
|
+
allow(controller).to receive_messages(current_api_user: user)
|
13
13
|
end
|
14
14
|
|
15
15
|
it 'should return only shipments from the correct store' do
|
16
16
|
FactoryGirl.create(:shipment, order: order_from_store1)
|
17
17
|
FactoryGirl.create(:shipment, order: order_from_store2)
|
18
18
|
|
19
|
-
controller.
|
19
|
+
allow(controller).to receive_messages(current_store: store1)
|
20
20
|
controller.mine
|
21
21
|
|
22
22
|
expect(assigns(:shipments).length).to eq(1)
|
23
23
|
expect(assigns(:shipments).first.order.store_id).to eq(store1.id)
|
24
24
|
|
25
|
-
controller.
|
25
|
+
allow(controller).to receive_messages(current_store: store2)
|
26
26
|
controller.mine
|
27
27
|
|
28
28
|
expect(assigns(:shipments).length).to eq(1)
|
@@ -45,7 +45,7 @@ describe Spree::Api::ShipmentsController do
|
|
45
45
|
context "A SpreeMultiDomain::LineItemDecorator::ProductDoesNotBelongToStoreError is raised" do
|
46
46
|
before(:each) do
|
47
47
|
def controller.add
|
48
|
-
raise SpreeMultiDomain::
|
48
|
+
raise SpreeMultiDomain::LineItemConcerns::ProductDoesNotBelongToStoreError
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
@@ -24,7 +24,7 @@ describe Spree::LineItem do
|
|
24
24
|
let(:product) { create(:product, stores: [other_store]) }
|
25
25
|
|
26
26
|
it 'raises the correct error' do
|
27
|
-
expect{ subject }.to raise_error(SpreeMultiDomain::
|
27
|
+
expect{ subject }.to raise_error(SpreeMultiDomain::LineItemConcerns::ProductDoesNotBelongToStoreError)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -1,18 +1,4 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Spree::Order do
|
4
|
-
|
5
|
-
before(:each) do
|
6
|
-
@store = FactoryGirl.create(:store)
|
7
|
-
@order = FactoryGirl.create(:order, :store => @store)
|
8
|
-
|
9
|
-
@order2 = FactoryGirl.create(:order)
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'should correctly find products by store' do
|
13
|
-
by_store = Spree::Order.by_store(@store)
|
14
|
-
|
15
|
-
expect(by_store).to include(@order)
|
16
|
-
expect(by_store).to_not include(@order2)
|
17
|
-
end
|
18
4
|
end
|
@@ -2,11 +2,11 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Spree::Tracker do
|
4
4
|
before(:each) do
|
5
|
-
store = FactoryGirl.create(:store, default: true)
|
6
|
-
@tracker = FactoryGirl.create(:tracker, store: store)
|
5
|
+
@store = FactoryGirl.create(:store, default: true)
|
6
|
+
@tracker = FactoryGirl.create(:tracker, store: @store)
|
7
7
|
|
8
|
-
another_store = FactoryGirl.create(:store, code: 'STORE2', url: 'completely-different-store.com')
|
9
|
-
@tracker2 = FactoryGirl.create(:tracker, store: another_store)
|
8
|
+
@another_store = FactoryGirl.create(:store, code: 'STORE2', url: 'completely-different-store.com')
|
9
|
+
@tracker2 = FactoryGirl.create(:tracker, store: @another_store)
|
10
10
|
end
|
11
11
|
|
12
12
|
it "pulls out the current tracker based on store code" do
|
@@ -14,6 +14,6 @@ describe Spree::Tracker do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
it "pulls out the current tracker" do
|
17
|
-
expect(Spree::Tracker.current(
|
17
|
+
expect(Spree::Tracker.current(@store.url)).to eq @tracker
|
18
18
|
end
|
19
19
|
end
|
@@ -10,9 +10,9 @@ describe "Template renderer with dynamic layouts" do
|
|
10
10
|
end
|
11
11
|
|
12
12
|
it "should render the layout corresponding to the current store" do
|
13
|
-
FactoryGirl.create :store, code: "my_store"
|
13
|
+
store = FactoryGirl.create :store, code: "my_store"
|
14
14
|
|
15
|
-
get "http
|
15
|
+
get "http://#{store.url}"
|
16
16
|
expect(response.body).to eql("Store layout hello")
|
17
17
|
end
|
18
18
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solidus_multi_domain
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Solidus Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: solidus
|
@@ -160,7 +160,6 @@ files:
|
|
160
160
|
- app/controllers/spree/admin/products_controller_decorator.rb
|
161
161
|
- app/controllers/spree/admin/stores_controller.rb
|
162
162
|
- app/controllers/spree/api/line_items_controller_decorator.rb
|
163
|
-
- app/controllers/spree/api/orders_controller_decorator.rb
|
164
163
|
- app/controllers/spree/api/products_controller_decorator.rb
|
165
164
|
- app/controllers/spree/api/shipments_controller_decorator.rb
|
166
165
|
- app/controllers/spree/home_controller_decorator.rb
|
@@ -169,6 +168,7 @@ files:
|
|
169
168
|
- app/helpers/spree/products_helper_decorator.rb
|
170
169
|
- app/mailers/spree/carton_mailer_decorator.rb
|
171
170
|
- app/mailers/spree/order_mailer.rb
|
171
|
+
- app/models/spree/line_item_decorator.rb
|
172
172
|
- app/models/spree/order_decorator.rb
|
173
173
|
- app/models/spree/payment_method_decorator.rb
|
174
174
|
- app/models/spree/product_decorator.rb
|
@@ -180,7 +180,7 @@ files:
|
|
180
180
|
- app/models/spree/taxon_decorator.rb
|
181
181
|
- app/models/spree/taxonomy_decorator.rb
|
182
182
|
- app/models/spree/tracker_decorator.rb
|
183
|
-
- app/models/spree_multi_domain/
|
183
|
+
- app/models/spree_multi_domain/line_item_concerns.rb
|
184
184
|
- app/overrides/decorate_admin_configurations_index.rb
|
185
185
|
- app/overrides/decorate_admin_products_form.rb
|
186
186
|
- app/overrides/decorate_admin_products_index.rb
|
@@ -222,7 +222,7 @@ files:
|
|
222
222
|
- lib/assets/javascripts/spree/backend/store_picker.js
|
223
223
|
- lib/assets/javascripts/spree/frontend/solidus_multi_domain.js
|
224
224
|
- lib/assets/stylesheets/spree/frontend/solidus_multi_domain.css
|
225
|
-
- lib/generators/
|
225
|
+
- lib/generators/solidus_multi_domain/install/install_generator.rb
|
226
226
|
- lib/solidus_multi_domain.rb
|
227
227
|
- lib/spree/controller_helpers/order_decorator.rb
|
228
228
|
- lib/spree/search/multi_domain.rb
|
@@ -232,7 +232,6 @@ files:
|
|
232
232
|
- spec/controllers/spree/admin/products_controller_spec.rb
|
233
233
|
- spec/controllers/spree/admin/stores_controller_spec.rb
|
234
234
|
- spec/controllers/spree/api/line_items_controller_spec.rb
|
235
|
-
- spec/controllers/spree/api/orders_controller_spec.rb
|
236
235
|
- spec/controllers/spree/api/products_controller_spec.rb
|
237
236
|
- spec/controllers/spree/api/shipments_controller_spec.rb
|
238
237
|
- spec/controllers/spree/products_controller_spec.rb
|
@@ -271,7 +270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
271
270
|
requirements:
|
272
271
|
- none
|
273
272
|
rubyforge_project:
|
274
|
-
rubygems_version: 2.2.
|
273
|
+
rubygems_version: 2.2.2
|
275
274
|
signing_key:
|
276
275
|
specification_version: 4
|
277
276
|
summary: Adds multiple site support to Solidus
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module SpreeMultiStore
|
2
|
-
module Api
|
3
|
-
module OrdersControllerDecorator
|
4
|
-
def self.included(base)
|
5
|
-
base.alias_method_chain :mine, :store_scope
|
6
|
-
base.alias_method_chain :find_current_api_user_orders, :store_scope
|
7
|
-
end
|
8
|
-
|
9
|
-
def mine_with_store_scope
|
10
|
-
mine_without_store_scope
|
11
|
-
@orders = @orders.where(store: current_store) if @orders
|
12
|
-
end
|
13
|
-
|
14
|
-
def find_current_api_user_orders_with_store_scope
|
15
|
-
find_current_api_user_orders_without_store_scope.where(store: current_store)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
Spree::Api::OrdersController.include SpreeMultiStore::Api::OrdersControllerDecorator
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Spree::Api::OrdersController do
|
4
|
-
let!(:user) { FactoryGirl.create(:user) }
|
5
|
-
let!(:store1) { FactoryGirl.create(:store) }
|
6
|
-
let!(:store2) { FactoryGirl.create(:store) }
|
7
|
-
|
8
|
-
before(:each) do
|
9
|
-
controller.stub(current_api_user: user)
|
10
|
-
end
|
11
|
-
|
12
|
-
describe '#mine' do
|
13
|
-
it 'should return only orders from the correct store' do
|
14
|
-
FactoryGirl.create(:order, store: store1, user: user)
|
15
|
-
FactoryGirl.create(:order, store: store2, user: user)
|
16
|
-
|
17
|
-
controller.stub(current_store: store1)
|
18
|
-
controller.mine
|
19
|
-
|
20
|
-
expect(assigns(:orders).length).to eq(1)
|
21
|
-
expect(assigns(:orders).first.store_id).to eq(store1.id)
|
22
|
-
|
23
|
-
controller.stub(current_store: store2)
|
24
|
-
controller.mine
|
25
|
-
|
26
|
-
expect(assigns(:orders).length).to eq(1)
|
27
|
-
expect(assigns(:orders).first.store_id).to eq(store2.id)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
describe '#find_current_order' do
|
32
|
-
|
33
|
-
it 'should return the latest incomplete order from the correct store' do
|
34
|
-
order1 = FactoryGirl.create(:order, store: store1, state: :cart, user: user)
|
35
|
-
order2 = FactoryGirl.create(:order, store: store2, state: :cart, user: user)
|
36
|
-
|
37
|
-
controller.stub(current_store: store1)
|
38
|
-
expect(controller.send(:find_current_order)).to eql(order1)
|
39
|
-
|
40
|
-
controller.stub(current_store: store2)
|
41
|
-
expect(controller.send(:find_current_order)).to eql(order2)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|