Merge remote-tracking branch 'origin/master' into i18n-replace-strings-in-views

Conflicts:
	app/views/shared/menu/_cart.html.haml
	app/views/spree/order_mailer/confirm_email_for_shop.html.haml
This commit is contained in:
Maikel Linke
2015-09-16 16:32:16 +10:00
31 changed files with 177 additions and 93 deletions

View File

@@ -30,7 +30,7 @@ angular.module("ofn.admin").controller "AdminOrderMgmtCtrl", [
variant: { name: "Variant", visible: true }
quantity: { name: "Quantity", visible: true }
max: { name: "Max", visible: true }
unit_value: { name: "Weight/Volume", visible: false }
final_weight_volume: { name: "Weight/Volume", visible: false }
price: { name: "Price", visible: false }
$scope.initialise = ->
$scope.initialiseVariables()
@@ -166,10 +166,10 @@ angular.module("ofn.admin").controller "AdminOrderMgmtCtrl", [
$scope.weightAdjustedPrice = (lineItem, oldValue) ->
if oldValue <= 0
oldValue = lineItem.units_variant.unit_value
if lineItem.unit_value <= 0
lineItem.unit_value = lineItem.units_variant.unit_value
lineItem.price = lineItem.price * lineItem.unit_value / oldValue
oldValue = lineItem.units_variant.unit_value * line_item.quantity
if lineItem.final_weight_volume <= 0
lineItem.final_weight_volume = lineItem.units_variant.unit_value * lineItem.quantity
lineItem.price = lineItem.price * lineItem.final_weight_volume / oldValue
#$scope.bulk_order_form.line_item.price.$setViewValue($scope.bulk_order_form.line_item.price.$viewValue)
$scope.unitValueLessThanZero = (lineItem) ->
@@ -178,6 +178,13 @@ angular.module("ofn.admin").controller "AdminOrderMgmtCtrl", [
else
false
$scope.updateOnQuantity = (lineItem, oldQuantity) ->
if lineItem.quantity <= 0
lineItem.quantity = 1
# reset price to original unit value
lineItem.price = lineItem.price * (oldQuantity * lineItem.units_variant.unit_value) / lineItem.final_weight_volume
lineItem.final_weight_volume = lineItem.units_variant.unit_value * lineItem.quantity
$scope.$watch "orderCycleFilter", (newVal, oldVal) ->
unless $scope.orderCycleFilter == "0" || angular.equals(newVal, oldVal)
$scope.startDate = $scope.orderCyclesByID[$scope.orderCycleFilter].first_order

View File

@@ -0,0 +1,5 @@
Darkswarm.directive "integer", ->
restrict: 'A'
link: (scope, elem, attr) ->
elem.bind 'input', ->
elem.val Math.round(elem.val())

View File

@@ -11,6 +11,7 @@
.small-5.medium-3.large-3.columns.text-right{"bo-if" => "!variant.product.group_buy"}
%input{type: :number,
integer: true,
value: nil,
min: 0,
placeholder: "0",
@@ -26,14 +27,17 @@
%span.bulk-input
%input.bulk.first{type: :number,
value: nil,
integer: true,
min: 0,
"ng-model" => "variant.line_item.quantity",
placeholder: "min",
"ofn-disable-scroll" => true,
max: "{{variant.on_demand && 9999 || variant.count_on_hand }}",
name: "variants[{{variant.id}}]", id: "variants_{{variant.id}}"}
%span.bulk-input{"bo-if" => "variant.product.group_buy"}
%span.bulk-input
%input.bulk.second{type: :number,
"ng-disabled" => "!variant.line_item.quantity",
integer: true,
min: 0,
"ng-model" => "variant.line_item.max_quantity",
placeholder: "max",

View File

@@ -38,6 +38,7 @@
padding: 4px 12px
color: #fff
.buttons
margin-bottom: 0.1em
.button
height: auto
top: 0px

View File

@@ -1,6 +1,6 @@
Spree::LineItem.class_eval do
attr_accessible :max_quantity, :unit_value
attr_accessible :unit_value, :price, :as => :api
attr_accessible :max_quantity, :final_weight_volume
attr_accessible :final_weight_volume, :price, :as => :api
# -- Scopes
scope :managed_by, lambda { |user|

View File

@@ -130,7 +130,11 @@ Spree::Order.class_eval do
else
current_item = Spree::LineItem.new(:quantity => quantity, max_quantity: max_quantity)
current_item.variant = variant
current_item.unit_value = variant.unit_value
if variant.unit_value
current_item.final_weight_volume = variant.unit_value * quantity
else
current_item.final_weight_volume = 0
end
if currency
current_item.currency = currency unless currency.nil?
current_item.price = variant.price_in(currency).amount

View File

@@ -0,0 +1,2 @@
/ insert_bottom "[data-hook='admin_tabs'], #admin_tabs[data-hook]"
= tab :customers, :url => main_app.admin_customers_path

View File

@@ -1,5 +1,5 @@
class Api::Admin::LineItemSerializer < ActiveModel::Serializer
attributes :id, :quantity, :max_quantity, :supplier, :price, :unit_value, :units_product, :units_variant
attributes :id, :quantity, :max_quantity, :supplier, :price, :final_weight_volume, :units_product, :units_variant
def supplier
Api::Admin::IdNameSerializer.new(object.product.supplier).serializable_hash
@@ -13,7 +13,7 @@ class Api::Admin::LineItemSerializer < ActiveModel::Serializer
Api::Admin::UnitsVariantSerializer.new(object.variant).serializable_hash
end
def unit_value
object.unit_value.to_f
def final_weight_volume
object.final_weight_volume.to_f
end
end

View File

@@ -72,7 +72,7 @@
&nbsp;
.row.cta-container
.columns.small-12
%a.cta-hub{"ng-repeat" => "hub in producer.hubs | orderBy:'-active'",
%a.cta-hub{"ng-repeat" => "hub in producer.hubs | visible | orderBy:'-active'",
"bo-href" => "hub.path", "ofn-change-hub" => "hub",
"bo-class" => "{primary: hub.active, secondary: !hub.active}"}
%i.ofn-i_033-open-sign{"bo-if" => "hub.active"}

View File

@@ -11,6 +11,11 @@
.joyride-content-wrapper
%h5
= t 'cart_headline'
.buttons.text-right
%a.button.secondary.tiny.add_to_cart{ href: cart_path, type: :submit, "ng-disabled" => "Cart.dirty || Cart.empty()", "ng-class" => "{ dirty: Cart.dirty }" }
= "{{ Cart.dirty ? '#{t(:cart_updating)}' : (Cart.empty() ? '#{t(:cart_empty)}' : '#{t(:cart_edit)}' ) }}"
%a.button.primary.tiny{href: checkout_path, "ng-disabled" => "Cart.dirty || Cart.empty()"}
= t 'checkout'
%table
%tr.product-cart{"ng-repeat" => "line_item in Cart.line_items_present()",
"ng-controller" => "LineItemCtrl", "id" => "cart-variant-{{ line_item.variant.id }}"}

View File

@@ -126,7 +126,7 @@
%a{ :href => '', 'ng-click' => "predicate = 'units_variant.full_name'; reverse = !reverse" } Product: Unit
%th.quantity{ 'ng-show' => 'columns.quantity.visible' } Quantity
%th.max{ 'ng-show' => 'columns.max.visible' } Max
%th.unit_value{ 'ng-show' => 'columns.unit_value.visible' } Weight/Volume
%th.final_weight_volume{ 'ng-show' => 'columns.final_weight_volume.visible' } Weight/Volume
%th.price{ 'ng-show' => 'columns.price.visible' } Price
%th.actions
%th.actions
@@ -146,12 +146,12 @@
%td.variant{ 'ng-show' => 'columns.variant.visible' }
%a{ :href => '#', 'ng-click' => "setSelectedUnitsVariant(line_item.units_product,line_item.units_variant)" } {{ line_item.units_variant.full_name }}
%td.quantity{ 'ng-show' => 'columns.quantity.visible' }
%input{ :type => 'number', :name => 'quantity', 'ng-model' => "line_item.quantity", 'obj-for-update' => "line_item", "attr-for-update" => "quantity" }
%input{ :type => 'number', :name => 'quantity', :id => 'quantity', :value => 'line_item.quantity', 'ng-model' => "line_item.quantity", 'ng-change' => "updateOnQuantity(line_item, {{ line_item.quantity }})", 'obj-for-update' => "line_item", "attr-for-update" => "quantity" }
%td.max{ 'ng-show' => 'columns.max.visible' } {{ line_item.max_quantity }}
%td.unit_value{ 'ng-show' => 'columns.unit_value.visible' }
%input{ :type => 'number', :name => 'unit_value', :id => 'unit_value', 'ng-model' => "line_item.unit_value", 'ng-readonly' => "unitValueLessThanZero(line_item)", 'ng-change' => "weightAdjustedPrice(line_item, {{ line_item.unit_value }})", 'obj-for-update' => "line_item", "attr-for-update" => "unit_value" }
%td.final_weight_volume{ 'ng-show' => 'columns.final_weight_volume.visible' }
%input{ :type => 'text', :name => 'final_weight_volume', :id => 'final_weight_volume', :value => 'line_item.final_weight_volume', 'ng-model' => "line_item.final_weight_volume", 'ng-readonly' => "unitValueLessThanZero(line_item)", 'ng-change' => "weightAdjustedPrice(line_item, {{ line_item.final_weight_volume }})", 'obj-for-update' => "line_item", "attr-for-update" => "final_weight_volume" }
%td.price{ 'ng-show' => 'columns.price.visible' }
%input{ :type => 'text', :name => 'price', :id => 'price', :value => '{{ line_item.price | currency }}', 'ng-readonly' => "true", 'obj-for-update' => "line_item", "attr-for-update" => "price" }
%input{ :type => 'text', :name => 'price', :id => 'price', :value => '{{ line_item.price * line_item.quantity | currency }}', 'ng-readonly' => "true", 'obj-for-update' => "line_item", "attr-for-update" => "price" }
%td.actions
%a{ :class => "edit-order icon-edit no-text", 'ofn-confirm-link-path' => "/admin/orders/{{line_item.order.number}}/edit" }
%td.actions

View File

@@ -9,6 +9,6 @@
= f.label :group_buy_0, 'No'
%br.clear
= f.field_container :group_buy_unit_size do
= f.label :group_buy_unit_size
= f.label :group_buy_unit_size, "Bulk unit size"
%br
= f.text_field :group_buy_unit_size

View File

@@ -1,20 +0,0 @@
.row
.alpha.six.columns
= f.field_container :supplier do
= f.label :supplier
= f.collection_select(:supplier_id, Enterprise.is_primary_producer.managed_by(spree_current_user).by_name, :id, :name, {:include_blank => true}, {:class => "select2 fullwidth"})
= f.error_message_on :supplier
.four.columns
= f.field_container :group_buy do
= f.label :group_buy, 'Group buy?'
%br
.alpha.two.columns
= f.radio_button :group_buy, '1', :checked => f.object.group_buy
= f.label :group_buy_1, 'Yes'
.omega.two.columns
= f.radio_button :group_buy, '0', :checked => !f.object.group_buy
= f.label :group_buy_0, 'No'
.omega.six.columns
= f.field_container :group_buy_unit_size do
= f.label :group_buy_unit_size
= f.text_field :group_buy_unit_size, :class => "fullwidth"

View File

@@ -17,8 +17,10 @@
%p &nbsp;
%h4
= t :email_confirm_shop_number_html, number: @order.number
%p
= t :email_confirm_shop_order_detail_html, firstname: @order.bill_address.firstname, lastname: @order.bill_address.lastname
%h5
%strong= "#{@order.bill_address.firstname} #{@order.bill_address.lastname}"
= " <#{@order.email}>" if @order.email
= @order.bill_address.phone if @order.bill_address.phone
= render 'order_summary'
= render 'payment'

View File

@@ -232,7 +232,6 @@ See the %{link} to find out more about %{sitename}'s features and to start using
email_confirm_shop_greeting: "Hi %{name},"
email_confirm_shop_order_html: "Well done! You have a new order for <strong>%{distributor}</strong>!"
email_confirm_shop_number_html: "Order confirmation <strong>#%{number}</strong>"
email_confirm_shop_order_detail_html: "<strong>%{firstname} %{lastname}</strong> completed the following order at your shopfront:"
email_order_summary_item: "Item"
email_order_summary_quantity: "Qty"
email_order_summary_price: "Price"

View File

@@ -232,7 +232,6 @@ Voir le %{link} pour en savoir plus sur les fonctionnalités de %{sitename} et c
email_confirm_shop_greeting: "Bonjour %{name},"
email_confirm_shop_order_html: "Bravo! Vous avez reçu une nouvelle commande pour <strong>%{distributor}</strong>!"
email_confirm_shop_number_html: "Confirmation de commande <strong>#%{number}</strong>"
email_confirm_shop_order_detail_html: "<strong>%{firstname} %{lastname}</strong> a passé la commande suivante sur votre boutique en ligne:"
email_order_summary_item: "Produit"
email_order_summary_quantity: "Qté"
email_order_summary_price: "Prix"

View File

@@ -232,7 +232,6 @@ See the %{link} to find out more about %{sitename}'s features and to start using
email_confirm_shop_greeting: "Hi %{name},"
email_confirm_shop_order_html: "Well done! You have a new order for <strong>%{distributor}</strong>!"
email_confirm_shop_number_html: "Order confirmation <strong>#%{number}</strong>"
email_confirm_shop_order_detail_html: "<strong>%{firstname} %{lastname}</strong> completed the following order at your shopfront:"
email_order_summary_item: "Item"
email_order_summary_quantity: "Qty"
email_order_summary_price: "Price"

View File

@@ -0,0 +1,5 @@
class RenameLineItemUnitValue < ActiveRecord::Migration
def change
rename_column :spree_line_items, :unit_value, :final_weight_volume
end
end

View File

@@ -0,0 +1,11 @@
class UpdatePrecisionOnLineItemFinalWeightVolume < ActiveRecord::Migration
def up
change_column :spree_line_items, :final_weight_volume, :decimal, :precision => 10, :scale => 2
end
def down
raise ActiveRecord::IrreversibleMigration
end
end

View File

@@ -0,0 +1,9 @@
class UpdateSpreeLineItemFinalWeightVolume < ActiveRecord::Migration
def up
execute "UPDATE spree_line_items SET final_weight_volume = final_weight_volume * quantity"
end
def down
raise ActiveRecord::IrreversibleMigration
end
end

View File

@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20150612045544) do
ActiveRecord::Schema.define(:version => 20150730160010) do
create_table "adjustment_metadata", :force => true do |t|
t.integer "adjustment_id"
@@ -563,7 +563,7 @@ ActiveRecord::Schema.define(:version => 20150612045544) do
t.string "currency"
t.decimal "distribution_fee", :precision => 10, :scale => 2
t.string "shipping_method_name"
t.decimal "unit_value", :precision => 8, :scale => 2
t.decimal "final_weight_volume", :precision => 10, :scale => 2
end
add_index "spree_line_items", ["order_id"], :name => "index_line_items_on_order_id"

View File

@@ -23,7 +23,7 @@ module OpenFoodNetwork
when "bulk_coop_customer_payments"
["Customer", "Date of Order", "Total Cost", "Amount Owing", "Amount Paid"]
else
["Supplier", "Product", "Unit Size", "Variant", "Weight", "Sum Total", "Sum Max Total", "Units Required", "Remainder"]
["Supplier", "Product", "Bulk Unit Size", "Variant", "Weight", "Sum Total", "Sum Max Total", "Units Required", "Remainder"]
end
end
@@ -59,7 +59,7 @@ module OpenFoodNetwork
sort_by: proc { |product| product.name },
summary_columns: [ proc { |lis| lis.first.variant.product.supplier.name },
proc { |lis| lis.first.variant.product.name },
proc { |lis| lis.first.variant.product.group_buy ? (lis.first.variant.product.group_buy_unit_size || 0.0) : "" },
proc { |lis| lis.first.variant.product.group_buy_unit_size || 0.0 },
proc { |lis| "" },
proc { |lis| "" },
proc { |lis| lis.sum { |li| li.quantity * (li.variant.weight || 0) } },
@@ -91,7 +91,7 @@ module OpenFoodNetwork
else
[ proc { |lis| lis.first.variant.product.supplier.name },
proc { |lis| lis.first.variant.product.name },
proc { |lis| lis.first.variant.product.group_buy ? (lis.first.variant.product.group_buy_unit_size || 0.0) : "" },
proc { |lis| lis.first.variant.product.group_buy_unit_size || 0.0 },
proc { |lis| lis.first.variant.full_name },
proc { |lis| lis.first.variant.weight || 0 },
proc { |lis| lis.sum { |li| li.quantity } },

View File

@@ -2,7 +2,7 @@ require 'open_food_network/reports/bulk_coop_report'
module OpenFoodNetwork::Reports
class BulkCoopAllocationReport < BulkCoopReport
header "Customer", "Product", "Unit Size", "Variant", "Variant value", "Variant unit", "Weight", "Sum Total", "Total Available", "Unallocated", "Max quantity excess"
header "Customer", "Product", "Bulk Unit Size", "Variant", "Variant value", "Variant unit", "Weight", "Sum Total", "Total Available", "Unallocated", "Max quantity excess"
organise do
group { |li| li.variant.product }
@@ -36,7 +36,7 @@ module OpenFoodNetwork::Reports
columns do
column { |lis| lis.first.order.bill_address.firstname + " " + lis.first.order.bill_address.lastname }
column { |lis| lis.first.variant.product.name }
column { |lis| lis.first.variant.product.group_buy ? (lis.first.variant.product.group_buy_unit_size || 0.0) : "" }
column { |lis| lis.first.variant.product.group_buy_unit_size || 0.0 }
column { |lis| lis.first.variant.full_name }
column { |lis| OpenFoodNetwork::OptionValueNamer.new(lis.first.variant).value }
column { |lis| OpenFoodNetwork::OptionValueNamer.new(lis.first.variant).unit }

View File

@@ -22,11 +22,7 @@ module OpenFoodNetwork::Reports
end
def group_buy_unit_size_f(lis)
if lis.first.variant.product.group_buy
group_buy_unit_size(lis)
else
""
end
group_buy_unit_size(lis)
end
def total_amount(lis)

View File

@@ -2,7 +2,7 @@ require 'open_food_network/reports/bulk_coop_report'
module OpenFoodNetwork::Reports
class BulkCoopSupplierReport < BulkCoopReport
header "Supplier", "Product", "Unit Size", "Variant", "Variant value", "Variant unit", "Weight", "Sum Total", "Units Required", "Unallocated", "Max quantity excess"
header "Supplier", "Product", "Bulk Unit Size", "Variant", "Variant value", "Variant unit", "Weight", "Sum Total", "Units Required", "Unallocated", "Max quantity excess"
organise do
group { |li| li.variant.product.supplier }

View File

@@ -11,7 +11,7 @@ module Spree
def self.make_simple_data!
let!(:order) { FactoryGirl.create(:order, state: 'complete', completed_at: Time.now) }
let!(:line_item) { FactoryGirl.create(:line_item, order: order, unit_value: 500) }
let!(:line_item) { FactoryGirl.create(:line_item, order: order, final_weight_volume: 500) }
end
#test that when a line item is updated, an order's fees are updated too
@@ -21,7 +21,7 @@ module Spree
context "as a line item is updated" do
it "update distribution charge on the order" do
line_item_params = { order_id: order.number, id: line_item.id, line_item: { id: line_item.id, unit_value: 520 }, format: :json}
line_item_params = { order_id: order.number, id: line_item.id, line_item: { id: line_item.id, final_weight_volume: 520 }, format: :json}
allow(controller).to receive(:order) { order }
expect(order).to receive(:update_distribution_charge!)
spree_post :update, line_item_params

View File

@@ -124,7 +124,7 @@ feature %q{
visit '/admin/orders/bulk_management'
end
it "displays an update button which submits pending changes" do
pending "displays an update button which submits pending changes" do
fill_in "quantity", :with => 2
page.should have_selector "input[name='quantity'].update-pending"
page.should_not have_selector "input[name='quantity'].update-success"
@@ -144,7 +144,7 @@ feature %q{
let!(:p1) { FactoryGirl.create(:product_with_option_types, group_buy: true, group_buy_unit_size: 5000, variant_unit: "weight", variants: [FactoryGirl.create(:variant, unit_value: 1000)] ) }
let!(:v1) { p1.variants.first }
let!(:o1) { FactoryGirl.create(:order_with_distributor, state: 'complete', completed_at: Time.now ) }
let!(:li1) { FactoryGirl.create(:line_item, order: o1, variant: v1, :quantity => 5, :unit_value => 1000 ) }
let!(:li1) { FactoryGirl.create(:line_item, order: o1, variant: v1, :quantity => 5, :final_weight_volume => 1000 ) }
context "modifying the weight/volume of a line item" do
it "update-pending is added to variable 'price'" do
@@ -152,12 +152,36 @@ feature %q{
first("div#columns_dropdown", :text => "COLUMNS").click
first("div#columns_dropdown div.menu div.menu_item", text: "Weight/Volume").click
page.should_not have_css "input[name='price'].update-pending"
li1_unit_value_column = find("tr#li_#{li1.id} td.unit_value")
li1_unit_value_column.fill_in "unit_value", :with => 1200
li1_final_weight_volume_column = find("tr#li_#{li1.id} td.final_weight_volume")
li1_final_weight_volume_column.fill_in "final_weight_volume", :with => 1200
page.should have_css "input[name='price'].update-pending", :visible => false
end
end
context "modifying the quantity of a line item" do
it "update-pending is added to variable 'price'" do
visit '/admin/orders/bulk_management'
#first("div#columns_dropdown", :text => "COLUMNS").click
#first("div#columns_dropdown div.menu div.menu_item", text: "Quantity").click
page.should_not have_css "input[name='price'].update-pending"
li1_quantity_column = find("tr#li_#{li1.id} td.quantity")
li1_quantity_column.fill_in "quantity", :with => 6
page.should have_css "input[name='price'].update-pending", :visible => false
end
end
context "modifying the quantity of a line item" do
it "update-pending is added to variable 'weight/volume'" do
visit '/admin/orders/bulk_management'
first("div#columns_dropdown", :text => "COLUMNS").click
first("div#columns_dropdown div.menu div.menu_item", text: "Weight/Volume").click
page.should_not have_css "input[name='price'].update-pending"
li1_quantity_column = find("tr#li_#{li1.id} td.quantity")
li1_quantity_column.fill_in "quantity", :with => 6
page.should have_css "input[name='final_weight_volume'].update-pending", :visible => false
end
end
context "using column display toggle" do
it "shows a column display toggle button, which shows a list of columns when clicked" do
visit '/admin/orders/bulk_management'
@@ -264,7 +288,7 @@ feature %q{
visit '/admin/orders/bulk_management'
end
it "displays a select box for order cycles, which filters line items by the selected order cycle" do
pending "displays a select box for order cycles, which filters line items by the selected order cycle" do
order_cycle_names = ["All"]
OrderCycle.all.each{ |oc| order_cycle_names << oc.name }
find("div.select2-container#s2id_order_cycle_filter").click
@@ -416,7 +440,7 @@ feature %q{
page.should have_button "SAVE"
end
it "saves pendings changes when 'SAVE' button is clicked" do
pending "saves pendings changes when 'SAVE' button is clicked" do
within("tr#li_#{li2.id} td.quantity") do
page.fill_in "quantity", :with => (li2.quantity + 1).to_s
end

View File

@@ -50,11 +50,12 @@ feature %q{
scenario "can add a product to an existing order", js: true do
login_to_admin_section
visit '/admin/orders'
page.find('td.actions a.icon-edit').click
targetted_select2_search @product.name, from: ".variant_autocomplete", dropdown_css: ".select2-search"
click_edit
click_icon :plus
targetted_select2_search @product.name, from: '#add_variant_id', dropdown_css: '.select2-drop'
click_link 'Add'
page.should have_selector 'td', text: @product.name
@order.line_items(true).map(&:product).should include @product
@@ -153,4 +154,21 @@ feature %q{
end
end
# Working around intermittent click failing
# Possible causes of failure:
# - the link moves
# - the missing content (font icon only)
# - the screen is not big enough
# However, some operations before the click or a second click on failure work.
#
# A lot of people had similar problems:
# https://github.com/teampoltergeist/poltergeist/issues/520
# https://github.com/thoughtbot/capybara-webkit/issues/494
def click_edit
click_result = click_icon :edit
unless click_result['status'] == 'success'
click_icon :edit
end
end
end

View File

@@ -82,7 +82,7 @@ feature %q{
visit spree.edit_admin_product_path(product)
choose 'product_group_buy_1'
fill_in 'Group buy unit size', :with => '10'
fill_in 'Bulk unit size', :with => '10'
click_button 'Update'

View File

@@ -97,9 +97,7 @@ feature "shopping with variant overrides defined", js: true do
it "shows the correct prices in the checkout" do
fill_in "variants[#{v1.id}]", with: "2"
show_cart
wait_until_enabled 'li.cart a.button'
click_link 'Checkout now'
click_checkout
page.should have_selector 'form.edit_order .cart-total', text: '$122.21'
page.should have_selector 'form.edit_order .shipping', text: '$0.00'
@@ -111,9 +109,7 @@ feature "shopping with variant overrides defined", js: true do
describe "creating orders" do
it "creates the order with the correct prices" do
fill_in "variants[#{v1.id}]", with: "2"
show_cart
wait_until_enabled 'li.cart a.button'
click_link 'Checkout now'
click_checkout
complete_checkout
@@ -124,9 +120,7 @@ feature "shopping with variant overrides defined", js: true do
it "subtracts stock from the override" do
fill_in "variants[#{v4.id}]", with: "2"
show_cart
wait_until_enabled 'li.cart a.button'
click_link 'Checkout now'
click_checkout
expect do
expect do
@@ -137,9 +131,7 @@ feature "shopping with variant overrides defined", js: true do
it "subtracts stock from stock-overridden on_demand variants" do
fill_in "variants[#{v6.id}]", with: "2"
show_cart
wait_until_enabled 'li.cart a.button'
click_link 'Checkout now'
click_checkout
expect do
expect do
@@ -150,9 +142,7 @@ feature "shopping with variant overrides defined", js: true do
it "does not subtract stock from overrides that do not override count_on_hand" do
fill_in "variants[#{v1.id}]", with: "2"
show_cart
wait_until_enabled 'li.cart a.button'
click_link 'Checkout now'
click_checkout
expect do
complete_checkout
@@ -163,9 +153,7 @@ feature "shopping with variant overrides defined", js: true do
it "does not show out of stock flags on order confirmation page" do
v4.update_attribute :count_on_hand, 0
fill_in "variants[#{v4.id}]", with: "2"
show_cart
wait_until_enabled 'li.cart a.button'
click_link 'Checkout now'
click_checkout
complete_checkout
@@ -208,4 +196,11 @@ feature "shopping with variant overrides defined", js: true do
place_order
page.should have_content "Your order has been processed successfully"
end
def click_checkout
show_cart
wait_until_enabled 'li.cart a.button'
click_link 'Checkout now', match: :first
end
end

View File

@@ -354,25 +354,44 @@ describe "AdminOrderMgmtCtrl", ->
it "resets the weight if the weight is set to zero", ->
scope.filteredLineItems = [
{ units_variant: { unit_value: 100 }, price: 2, unit_value: 0 }
{ units_variant: { unit_value: 100 }, price: 2, quantity: 1, final_weight_volume: 0 }
]
expect(scope.weightAdjustedPrice(scope.filteredLineItems[0], 100)).toEqual scope.filteredLineItems[0].price
it "updates the price if the weight is changed", ->
scope.filteredLineItems = [
{ units_variant: { unit_value: 100 }, price: 2, unit_value: 200 }
{ units_variant: { unit_value: 100 }, price: 2, final_weight_volume: 200 }
]
old_value = scope.filteredLineItems[0].units_variant.unit_value
new_value = scope.filteredLineItems[0].unit_value
new_value = scope.filteredLineItems[0].final_weight_volume
sp = scope.filteredLineItems[0].price * new_value / old_value
expect(scope.weightAdjustedPrice(scope.filteredLineItems[0], old_value)).toEqual sp
it "updates the weight if the quantity is changed", ->
scope.filteredLineItems = [
{ units_variant: { unit_value: 150 }, price: 1, final_weight_volume: 100, quantity: 2 }
]
old_value = 1
nw = scope.filteredLineItems[0].units_variant.unit_value * scope.filteredLineItems[0].quantity
scope.updateOnQuantity(scope.filteredLineItems[0], old_value)
expect(scope.filteredLineItems[0].final_weight_volume).toEqual nw
it "updates the price if the quantity is changed", ->
scope.filteredLineItems = [
{ units_variant: { unit_value: 150 }, price: 21, final_weight_volume: 100, quantity: 2 }
]
old_value = 1
np = scope.filteredLineItems[0].price * (old_value * scope.filteredLineItems[0].units_variant.unit_value) / scope.filteredLineItems[0].final_weight_volume
scope.updateOnQuantity(scope.filteredLineItems[0], old_value)
expect(scope.filteredLineItems[0].price).toEqual np
it "doesn't update the price if the weight is not changed", ->
scope.filteredLineItems = [
{ units_variant: { unit_value: 100 }, price: 2, unit_value: 100 }
{ units_variant: { unit_value: 100 }, price: 2, final_weight_volume: 100 }
]
old_value = scope.filteredLineItems[0].unit_value
new_value = scope.filteredLineItems[0].unit_value
old_value = scope.filteredLineItems[0].final_weight_volume
new_value = scope.filteredLineItems[0].final_weight_volume
sp = scope.filteredLineItems[0].price
expect(scope.weightAdjustedPrice(scope.filteredLineItems[0], old_value)).toEqual sp