solidus_volume_pricing 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cc2065e7c371b9b0fdb810869dfe6110453d71cc
4
- data.tar.gz: d04e9190e63cafe768e97125211af4feaed38c82
3
+ metadata.gz: 1ab65d3e0219f88f5090273cae51341342455fbd
4
+ data.tar.gz: b410f7e09e809081651efa63c0815c0a386c3da9
5
5
  SHA512:
6
- metadata.gz: bf2f072e4dcd0b14bdb04534d4008466a43fd53d0371653dfe2e23230a2d5a1117e797d4af456ffc78f0243f9f99be934cf7c8355d2b09563fcbe9f0b45ba824
7
- data.tar.gz: 929c3db05f9bde8f69bd1f1c106d068656d3900461a253b692cb045d990d302b072c3c7b93573fc9498fc4f82d64e8c97a5595c881a9f526e89467306c2f8fe6
6
+ metadata.gz: eda5105921410138eb449b40605487fef91711b773b1b208349a7598bf48a662477c6ccb83baba53cd3d6853c580f5dec6204e113a0582ca2905c155f9fc0f47
7
+ data.tar.gz: 0dfdc9b4cbc45a51791ef82a09453b1acfc4a9ead09d0d16e91f2033315cd97d930fdeb320e3823f6eae6e55eca60d902d1ac19a74d309f0791477a185bad3f2
data/.travis.yml CHANGED
@@ -6,9 +6,7 @@ cache: bundler
6
6
  only: master
7
7
  env:
8
8
  matrix:
9
- - SOLIDUS_BRANCH=v1.0 DB=mysql
10
- - SOLIDUS_BRANCH=v1.0 DB=postgresql
11
- - SOLIDUS_BRANCH=v1.1 DB=mysql
12
- - SOLIDUS_BRANCH=v1.1 DB=postgresql
13
- - SOLIDUS_BRANCH=v1.2 DB=mysql
14
- - SOLIDUS_BRANCH=v1.2 DB=postgresql
9
+ - SOLIDUS_BRANCH=v1.3 DB=mysql
10
+ - SOLIDUS_BRANCH=v1.3 DB=postgresql
11
+ - SOLIDUS_BRANCH=v1.4 DB=mysql
12
+ - SOLIDUS_BRANCH=v1.4 DB=postgresql
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- branch = ENV.fetch('SOLIDUS_BRANCH', 'v1.2')
3
+ branch = ENV.fetch('SOLIDUS_BRANCH', 'v1.3')
4
4
  gem "solidus", github: "solidusio/solidus", branch: branch
5
5
 
6
6
  case ENV['DB']
@@ -3,6 +3,11 @@ module Spree
3
3
  class VolumePriceModelsController < ResourceController
4
4
 
5
5
  before_action :load_volume_prices, only: [:new, :edit]
6
+ respond_to :json, only: [:get_children]
7
+
8
+ def get_children
9
+ @volume_prices = VolumePrice.find(params[:parent_id]).children
10
+ end
6
11
 
7
12
  private
8
13
 
@@ -1,27 +1,13 @@
1
- Spree::LineItem.class_eval do
2
- # pattern grabbed from: http://stackoverflow.com/questions/4470108/
1
+ module Spree
2
+ module LineItemPriceUpdater
3
+ def set_pricing_attributes
4
+ super
3
5
 
4
- # the idea here is compatibility with spree_sale_products
5
- # trying to create a 'calculation stack' wherein the best valid price is
6
- # chosen for the product. This is mainly for compatibility with spree_sale_products
7
- #
8
- # Assumption here is that the volume price currency is the same as the product currency
9
- old_copy_price = instance_method(:copy_price)
10
- define_method(:copy_price) do
11
- old_copy_price.bind(self).call
12
- return unless variant
13
-
14
- if variant
15
- if changed? && changes.keys.include?('quantity')
16
- vprice = variant.volume_price(quantity, order.user)
17
- if price.present? && vprice <= variant.price
18
- self.price = vprice and return
19
- end
6
+ if quantity_changed?
7
+ self.price = variant.volume_price(quantity, order.user)
20
8
  end
21
-
22
- self.price = variant.price if price.nil?
23
9
  end
24
-
25
- self.price = variant.price if price.nil?
26
10
  end
27
11
  end
12
+
13
+ Spree::LineItem.prepend(Spree::LineItemPriceUpdater)
@@ -24,7 +24,7 @@
24
24
  </thead>
25
25
  <tbody id="volume_prices">
26
26
  <%= f.fields_for :volume_prices do |vp_form| %>
27
- <%= render partial: 'spree/admin/volume_prices/volume_price_fields', locals: { f: vp_form } %>
27
+ <%= render partial: 'spree/admin/volume_prices/volume_price_fields', locals: { f: vp_form } %>
28
28
  <% end %>
29
29
  </tbody>
30
30
  <tbody id="volume_price_models">
@@ -19,7 +19,7 @@
19
19
  <th><%= Spree.t(:amount) %></th>
20
20
  <th><%= Spree.t(:position) %></th>
21
21
  <th><%= Spree.t(:role) %></th>
22
- <th class="actions"></th>
22
+ <th><%= Spree.t(:action) %></th>
23
23
  </tr>
24
24
  </thead>
25
25
  <tbody id="volume_prices">
@@ -9,7 +9,7 @@
9
9
  ["#{Spree.t(:total_price)}", 'price'],
10
10
  ["#{Spree.t(:percent_discount)}", 'percent'],
11
11
  ["#{Spree.t(:price_discount)}", 'dollar']
12
- ], { include_blank: true }, class: 'select2' %>
12
+ ], { inlcude_blank: true }, class: 'select2' %>
13
13
  </td>
14
14
  <td>
15
15
  <%= error_message_on(f.object, :range) %>
@@ -28,6 +28,6 @@
28
28
  <%= f.collection_select(:role_id, Spree::Role.all, :id, :name, { include_blank: Spree.t('match_choices.none') }, { class: 'select2' }) %>
29
29
  </td>
30
30
  <td class="actions">
31
- <%= link_to_remove_fields Spree.t(:remove), f, no_text: true %>
31
+ <%= link_to_icon_remove_fields f %>
32
32
  </td>
33
33
  </tr>
@@ -9,8 +9,8 @@ module SolidusVolumePricing
9
9
 
10
10
  module VERSION
11
11
  MAJOR = 0
12
- MINOR = 1
13
- TINY = 1
12
+ MINOR = 2
13
+ TINY = 0
14
14
  PRE = nil
15
15
 
16
16
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.require_path = 'lib'
22
22
  s.requirements << 'none'
23
23
 
24
- s.add_runtime_dependency 'solidus_core', '~> 1.0', '< 1.3'
24
+ s.add_runtime_dependency 'solidus_core', '~> 1.3'
25
25
  s.add_runtime_dependency 'deface', '~> 1.0'
26
26
 
27
27
  s.add_development_dependency 'sqlite3', '>= 1.3.10'
@@ -2,20 +2,23 @@ require 'database_cleaner'
2
2
 
3
3
  RSpec.configure do |config|
4
4
 
5
- config.before :suite do
5
+ config.before(:suite) do
6
6
  DatabaseCleaner.clean_with :truncation
7
7
  end
8
8
 
9
- config.prepend_before(:each) do
10
- if RSpec.current_example.metadata[:js]
11
- DatabaseCleaner.strategy = :truncation
12
- else
13
- DatabaseCleaner.strategy = :transaction
14
- end
9
+ config.before do
10
+ DatabaseCleaner.strategy = :transaction
11
+ end
12
+
13
+ config.before(:each, :js) do
14
+ DatabaseCleaner.strategy = :truncation
15
+ end
16
+
17
+ config.before do
15
18
  DatabaseCleaner.start
16
19
  end
17
20
 
18
- config.append_after(:each) do
21
+ config.after do
19
22
  DatabaseCleaner.clean
20
23
  end
21
24
  end
metadata CHANGED
@@ -1,23 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_volume_pricing
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-20 00:00:00.000000000 Z
11
+ date: 2017-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: solidus_core
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.0'
20
- - - "<"
21
18
  - !ruby/object:Gem::Version
22
19
  version: '1.3'
23
20
  type: :runtime
@@ -25,9 +22,6 @@ dependencies:
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '1.0'
30
- - - "<"
31
25
  - !ruby/object:Gem::Version
32
26
  version: '1.3'
33
27
  - !ruby/object:Gem::Dependency
@@ -244,7 +238,6 @@ files:
244
238
  - README.md
245
239
  - Rakefile
246
240
  - app/assets/javascripts/spree/backend/solidus_volume_pricing.js
247
- - app/assets/stylesheets/spree/backend/solidus_volume_pricing.css
248
241
  - app/controllers/spree/admin/variants_controller_decorator.rb
249
242
  - app/controllers/spree/admin/volume_price_models_controller.rb
250
243
  - app/controllers/spree/admin/volume_prices_controller.rb
@@ -288,8 +281,6 @@ files:
288
281
  - solidus_volume_pricing.gemspec
289
282
  - spec/controllers/spree/admin/variants_controller_spec.rb
290
283
  - spec/factories/volume_price_factory.rb
291
- - spec/features/manage_volume_price_models_feature_spec.rb
292
- - spec/features/manage_volume_prices_feature_spec.rb
293
284
  - spec/helpers/base_helper_spec.rb
294
285
  - spec/models/spree/line_item_spec.rb
295
286
  - spec/models/spree/order_spec.rb
@@ -328,8 +319,6 @@ summary: Allow prices to be configured in quantity ranges for each variant
328
319
  test_files:
329
320
  - spec/controllers/spree/admin/variants_controller_spec.rb
330
321
  - spec/factories/volume_price_factory.rb
331
- - spec/features/manage_volume_price_models_feature_spec.rb
332
- - spec/features/manage_volume_prices_feature_spec.rb
333
322
  - spec/helpers/base_helper_spec.rb
334
323
  - spec/models/spree/line_item_spec.rb
335
324
  - spec/models/spree/order_spec.rb
@@ -1,3 +0,0 @@
1
- /*
2
- *= require spree/backend
3
- */
@@ -1,26 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.feature 'Managing volume price models' do
4
- stub_authorization!
5
-
6
- scenario 'a admin can create and remove volume price models', :js do
7
- visit spree.admin_volume_price_models_path
8
- expect(page).to have_content('Volume Price Models')
9
-
10
- click_on 'New Volume Price Model'
11
- fill_in 'Name', with: 'Discount'
12
- within '#volume_prices' do
13
- fill_in 'volume_price_model_volume_prices_attributes_0_name', with: '5 pieces discount'
14
- select 'Total price', from: 'volume_price_model_volume_prices_attributes_0_discount_type'
15
- fill_in 'volume_price_model_volume_prices_attributes_0_range', with: '1..5'
16
- fill_in 'volume_price_model_volume_prices_attributes_0_amount', with: '1'
17
- end
18
- click_on 'Create'
19
-
20
- within 'tr.volume_price.fields' do
21
- expect(page).to have_field('volume_price_model_volume_prices_attributes_0_name', with: '5 pieces discount')
22
- page.find('a[data-action="remove"]').click
23
- expect(page).to_not have_field('volume_price_model_volume_prices_attributes_0_name', with: '5 pieces discount')
24
- end
25
- end
26
- end
@@ -1,32 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.feature 'Managing volume prices' do
4
- stub_authorization!
5
-
6
- let(:variant) { create(:variant) }
7
-
8
- scenario 'a admin can create and remove volume prices', :js do
9
- visit spree.edit_admin_product_path(variant.product)
10
- click_on 'Volume Pricing'
11
- expect(page).to have_content('Volume Prices')
12
-
13
- fill_in 'variant_volume_prices_attributes_0_name', with: '5 pieces discount'
14
- select 'Total price', from: 'variant_volume_prices_attributes_0_discount_type'
15
- fill_in 'variant_volume_prices_attributes_0_range', with: '1..5'
16
- fill_in 'variant_volume_prices_attributes_0_amount', with: '1'
17
- click_on 'Update'
18
-
19
- within 'tr.volume_price.fields' do
20
- expect(page).to have_field('variant_volume_prices_attributes_0_name', with: '5 pieces discount')
21
- page.find('a[data-action="remove"]').click
22
- expect(page).to_not have_field('variant_volume_prices_attributes_0_name', with: '5 pieces discount')
23
- end
24
- end
25
-
26
- scenario 'a admin editing a variant has a new volume price already built for her' do
27
- visit spree.edit_admin_product_variant_path(product_id: variant.product, id: variant)
28
- within '#volume_prices' do
29
- expect(page).to have_field('variant_volume_prices_attributes_0_name')
30
- end
31
- end
32
- end