mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Merge branch 'master' into payment_description
Conflicts: app/views/spree/order_mailer/confirm_email.text.erb
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -36,3 +36,5 @@ config/initializers/feature_toggle.rb
|
||||
NERD_tree*
|
||||
coverage
|
||||
libpeerconnection.log
|
||||
tags
|
||||
app/assets/javascripts/tags
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
# Convert number to string currency using injected currency configuration.
|
||||
#
|
||||
# @requires currencyConfig json - /app/serializers/api/currency_config_serializer.rb
|
||||
# @return: string
|
||||
Darkswarm.filter "localizeCurrency", (currencyConfig)->
|
||||
(amount) ->
|
||||
currency_code = if currencyConfig.display_currency then " " + currencyConfig.currency else ""
|
||||
decimals = if currencyConfig.hide_cents == "true" then 0 else 2
|
||||
# We need to use parseFloat before toFixed as the amount should be a passed in as a string.
|
||||
amount_fixed = parseFloat(amount).toFixed(decimals)
|
||||
|
||||
# Build the final price string.
|
||||
if currencyConfig.symbol_position == 'before'
|
||||
currencyConfig.symbol + amount_fixed + currency_code
|
||||
else
|
||||
amount_fixed + " " + currencyConfig.symbol + currency_code
|
||||
@@ -3,7 +3,7 @@ Darkswarm.factory 'Cart', (CurrentOrder, Variants, $timeout, $http)->
|
||||
new class Cart
|
||||
dirty: false
|
||||
order: CurrentOrder.order
|
||||
line_items: CurrentOrder.order?.line_items || []
|
||||
line_items: CurrentOrder.order?.line_items || []
|
||||
constructor: ->
|
||||
for line_item in @line_items
|
||||
line_item.variant.line_item = line_item
|
||||
@@ -22,13 +22,13 @@ Darkswarm.factory 'Cart', (CurrentOrder, Variants, $timeout, $http)->
|
||||
# TODO what shall we do here?
|
||||
|
||||
data: =>
|
||||
variants = {}
|
||||
variants = {}
|
||||
for li in @line_items_present()
|
||||
variants[li.variant.id] =
|
||||
variants[li.variant.id] =
|
||||
quantity: li.quantity
|
||||
max_quantity: li.max_quantity
|
||||
{variants: variants}
|
||||
|
||||
|
||||
|
||||
saved: =>
|
||||
@dirty = false
|
||||
@@ -48,15 +48,15 @@ Darkswarm.factory 'Cart', (CurrentOrder, Variants, $timeout, $http)->
|
||||
|
||||
total: =>
|
||||
@line_items_present().map (li)->
|
||||
li.variant.getPrice()
|
||||
li.variant.totalPrice()
|
||||
.reduce (t, price)->
|
||||
t + price
|
||||
, 0
|
||||
|
||||
register_variant: (variant)=>
|
||||
exists = @line_items.some (li)-> li.variant == variant
|
||||
@create_line_item(variant) unless exists
|
||||
|
||||
@create_line_item(variant) unless exists
|
||||
|
||||
create_line_item: (variant)->
|
||||
variant.line_item =
|
||||
variant: variant
|
||||
|
||||
@@ -5,7 +5,7 @@ Darkswarm.factory 'Variants', ->
|
||||
@variants[variant.id] ||= @extend variant
|
||||
|
||||
extend: (variant)->
|
||||
variant.getPrice = ->
|
||||
variant.price * variant.line_item.quantity
|
||||
variant.basePricePercentage = Math.round(variant.base_price / variant.price * 100)
|
||||
variant.totalPrice = ->
|
||||
variant.price_with_fees * variant.line_item.quantity
|
||||
variant.basePricePercentage = Math.round(variant.price / variant.price_with_fees * 100)
|
||||
variant
|
||||
|
||||
@@ -10,26 +10,26 @@
|
||||
.expanded{"ng-show" => "expanded"}
|
||||
%ul
|
||||
%li.cost
|
||||
.right {{ variant.base_price | currency }}
|
||||
.right {{ variant.price | localizeCurrency }}
|
||||
Item cost
|
||||
%li{"bo-if" => "variant.fees.admin"}
|
||||
.right {{ variant.fees.admin | currency }}
|
||||
.right {{ variant.fees.admin | localizeCurrency }}
|
||||
Admin fee
|
||||
%li{"bo-if" => "variant.fees.sales"}
|
||||
.right {{ variant.fees.sales | currency }}
|
||||
.right {{ variant.fees.sales | localizeCurrency }}
|
||||
Sales fee
|
||||
%li{"bo-if" => "variant.fees.packing"}
|
||||
.right {{ variant.fees.packing | currency }}
|
||||
.right {{ variant.fees.packing | localizeCurrency }}
|
||||
Packing fee
|
||||
%li{"bo-if" => "variant.fees.transport"}
|
||||
.right {{ variant.fees.transport | currency }}
|
||||
.right {{ variant.fees.transport | localizeCurrency }}
|
||||
Transport fee
|
||||
%li{"bo-if" => "variant.fees.fundraising"}
|
||||
.right {{ variant.fees.fundraising | currency }}
|
||||
.right {{ variant.fees.fundraising | localizeCurrency }}
|
||||
Fundraising fee
|
||||
%li
|
||||
%strong
|
||||
.right = {{ variant.price | currency }}
|
||||
.right = {{ variant.price_with_fees | localizeCurrency }}
|
||||
|
||||
|
||||
%a{"ng-click" => "expanded = !expanded"}
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
.small-4.medium-2.large-2.columns.variant-price
|
||||
.table-cell.price
|
||||
%i.ofn-i_009-close
|
||||
{{ variant.price | currency }}
|
||||
{{ variant.price_with_fees | localizeCurrency }}
|
||||
|
||||
-# Now in a template in app/assets/javascripts/templates !
|
||||
%price-breakdown{"price-breakdown" => "_", variant: "variant",
|
||||
@@ -59,4 +59,4 @@
|
||||
.small-12.medium-2.large-2.columns.total-price.text-right
|
||||
.table-cell
|
||||
%strong
|
||||
{{ variant.getPrice() | currency }}
|
||||
{{ variant.totalPrice() | localizeCurrency }}
|
||||
|
||||
@@ -21,10 +21,14 @@ module InjectionHelper
|
||||
inject_json_ams "taxons", Spree::Taxon.all, Api::TaxonSerializer
|
||||
end
|
||||
|
||||
def inject_currency_config
|
||||
inject_json_ams "currencyConfig", {}, Api::CurrencyConfigSerializer
|
||||
end
|
||||
|
||||
def inject_spree_api_key
|
||||
render partial: "json/injection_ams", locals: {name: 'spreeApiKey', json: "'#{@spree_api_key.to_s}'"}
|
||||
end
|
||||
|
||||
|
||||
def inject_available_countries
|
||||
inject_json_ams "availableCountries", available_countries, Api::CountrySerializer
|
||||
end
|
||||
|
||||
@@ -8,7 +8,7 @@ module Spree
|
||||
def order_distribution_subtotal(order, options={})
|
||||
options.reverse_merge! :format_as_currency => true
|
||||
amount = order.adjustments.enterprise_fee.sum &:amount
|
||||
options.delete(:format_as_currency) ? number_to_currency(amount) : amount
|
||||
options.delete(:format_as_currency) ? spree_number_to_currency(amount) : amount
|
||||
end
|
||||
|
||||
def alternative_available_distributors(order)
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
module Spree
|
||||
ProductsHelper.class_eval do
|
||||
# Return the price of the variant
|
||||
# Return the price of the variant, overriding sprees price diff capability.
|
||||
# This will allways return the variant price as if the show_variant_full_price is set.
|
||||
def variant_price_diff(variant)
|
||||
"(#{number_to_currency variant.price})"
|
||||
"(#{Spree::Money.new(variant.price).to_s})"
|
||||
end
|
||||
|
||||
|
||||
|
||||
5
app/helpers/spree_currency_helper.rb
Normal file
5
app/helpers/spree_currency_helper.rb
Normal file
@@ -0,0 +1,5 @@
|
||||
module SpreeCurrencyHelper
|
||||
def spree_number_to_currency(amount)
|
||||
Spree::Money.new(amount).to_s
|
||||
end
|
||||
end
|
||||
@@ -1,6 +1,7 @@
|
||||
Spree::OrderMailer.class_eval do
|
||||
helper HtmlHelper
|
||||
helper CheckoutHelper
|
||||
helper SpreeCurrencyHelper
|
||||
def confirm_email(order, resend = false)
|
||||
find_order(order)
|
||||
subject = (resend ? "[#{t(:resend).upcase}] " : '')
|
||||
|
||||
32
app/serializers/api/currency_config_serializer.rb
Normal file
32
app/serializers/api/currency_config_serializer.rb
Normal file
@@ -0,0 +1,32 @@
|
||||
class Api::CurrencyConfigSerializer < ActiveModel::Serializer
|
||||
attributes :currency, :display_currency, :symbol, :symbol_position, :hide_cents, :decimal_mark, :thousands_separator
|
||||
|
||||
def currency
|
||||
Spree::Config[:currency]
|
||||
end
|
||||
|
||||
def display_currency
|
||||
Spree::Config[:display_currency]
|
||||
end
|
||||
|
||||
def symbol
|
||||
::Money.new(1, Spree::Config[:currency]).symbol
|
||||
end
|
||||
|
||||
def symbol_position
|
||||
Spree::Config[:currency_symbol_position]
|
||||
end
|
||||
|
||||
def hide_cents
|
||||
Spree::Config[:hide_cents]
|
||||
end
|
||||
|
||||
def decimal_mark
|
||||
Spree::Config[:currency_decimal_mark]
|
||||
end
|
||||
|
||||
def thousands_separator
|
||||
Spree::Config[:currency_thousands_separator]
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,12 +1,12 @@
|
||||
class Api::VariantSerializer < ActiveModel::Serializer
|
||||
attributes :id, :is_master, :count_on_hand, :name_to_display, :unit_to_display,
|
||||
:on_demand, :price, :fees, :base_price
|
||||
:on_demand, :price, :fees, :price_with_fees
|
||||
|
||||
def price
|
||||
def price_with_fees
|
||||
object.price_with_fees(options[:current_distributor], options[:current_order_cycle])
|
||||
end
|
||||
|
||||
def base_price
|
||||
def price
|
||||
object.price
|
||||
end
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ class Spree::Api::VariantSerializer < ActiveModel::Serializer
|
||||
end
|
||||
|
||||
def price
|
||||
# Decimals are passed to json as strings, we need to run parseFloat.toFixed(2) on the client side.
|
||||
object.price.nil? ? 0.to_f : object.price
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
%table
|
||||
%tr
|
||||
%th Cart total
|
||||
%td.cart-total.text-right= number_to_currency checkout_cart_total_with_adjustments(current_order)
|
||||
%td.cart-total.text-right= spree_number_to_currency(checkout_cart_total_with_adjustments(current_order))
|
||||
|
||||
- checkout_adjustments_for_summary(current_order, exclude: [:shipping, :distribution]).each do |adjustment|
|
||||
%tr
|
||||
@@ -14,11 +14,11 @@
|
||||
|
||||
%tr
|
||||
%th Shipping
|
||||
%td.shipping.text-right {{ Checkout.shippingPrice() | currency }}
|
||||
%td.shipping.text-right {{ Checkout.shippingPrice() | localizeCurrency }}
|
||||
|
||||
%tr
|
||||
%th Total
|
||||
%td.total.text-right {{ Checkout.cartTotal() | currency }}
|
||||
%td.total.text-right {{ Checkout.cartTotal() | localizeCurrency }}
|
||||
- if current_order.price_adjustment_totals.present?
|
||||
- current_order.price_adjustment_totals.each do |label, total|
|
||||
%tr
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
= inject_json "railsFlash", "flash"
|
||||
= inject_taxons
|
||||
= inject_current_order
|
||||
= inject_currency_config
|
||||
|
||||
.off-canvas-wrap{offcanvas: true}
|
||||
.inner-wrap
|
||||
|
||||
@@ -22,20 +22,20 @@
|
||||
%small
|
||||
{{line_item.quantity}}
|
||||
%i.ofn-i_009-close
|
||||
{{ line_item.variant.price | currency }}
|
||||
{{ line_item.variant.price_with_fees | localizeCurrency }}
|
||||
|
||||
.columns.small-2
|
||||
%small
|
||||
\=
|
||||
%strong
|
||||
.right {{ line_item.variant.getPrice() | currency }}
|
||||
.right {{ line_item.variant.totalPrice() | localizeCurrency }}
|
||||
|
||||
%li.total-cart{"ng-show" => "Cart.line_items_present().length > 0"}
|
||||
.row
|
||||
.columns.small-6
|
||||
%em Total:
|
||||
.columns.small-6.text-right
|
||||
%strong {{ Cart.total() | currency }}
|
||||
%strong {{ Cart.total() | localizeCurrency }}
|
||||
|
||||
.text-right
|
||||
%a.button.primary.small{href: checkout_path, "ng-disabled" => "Cart.dirty"} Quick checkout
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
%td
|
||||
Product
|
||||
\:
|
||||
%span.order-total.item-total= number_to_currency @order.item_total
|
||||
%span.order-total.item-total= spree_number_to_currency(@order.item_total)
|
||||
%td
|
||||
Distribution
|
||||
\:
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
.product-image
|
||||
= link_to small_image(product, :itemprop => "image"), product, :itemprop => 'url'
|
||||
= link_to truncate(product.name, :length => 50), product, :class => 'info', :itemprop => "name", :title => product.name
|
||||
%span.price.selling{:itemprop => "price"}= number_to_currency product.price
|
||||
%span.price.selling{:itemprop => "price"}= spree_number_to_currency(product.price)
|
||||
|
||||
- if paginated_products.respond_to?(:num_pages)
|
||||
- params.delete(:search)
|
||||
|
||||
@@ -565,9 +565,9 @@ ActiveRecord::Schema.define(:version => 20140904003026) do
|
||||
t.string "email"
|
||||
t.text "special_instructions"
|
||||
t.integer "distributor_id"
|
||||
t.integer "order_cycle_id"
|
||||
t.string "currency"
|
||||
t.string "last_ip_address"
|
||||
t.integer "order_cycle_id"
|
||||
t.integer "cart_id"
|
||||
end
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ feature %q{
|
||||
after { Warden.test_reset! }
|
||||
stub_authorization!
|
||||
|
||||
context "listing orders" do
|
||||
pending "listing orders" do
|
||||
before :each do
|
||||
admin_user = quick_login_as_admin
|
||||
end
|
||||
@@ -92,7 +92,7 @@ feature %q{
|
||||
end
|
||||
end
|
||||
|
||||
context "altering line item properties" do
|
||||
pending "altering line item properties" do
|
||||
before :each do
|
||||
admin_user = quick_login_as_admin
|
||||
end
|
||||
@@ -140,7 +140,7 @@ feature %q{
|
||||
end
|
||||
end
|
||||
|
||||
context "using page controls" do
|
||||
pending "using page controls" do
|
||||
before :each do
|
||||
admin_user = quick_login_as_admin
|
||||
end
|
||||
@@ -562,7 +562,7 @@ feature %q{
|
||||
end
|
||||
end
|
||||
|
||||
context "as an enterprise manager" do
|
||||
pending "as an enterprise manager" do
|
||||
let(:s1) { create(:supplier_enterprise, name: 'First Supplier') }
|
||||
let(:d1) { create(:distributor_enterprise, name: 'First Distributor') }
|
||||
let(:d2) { create(:distributor_enterprise, name: 'Another Distributor') }
|
||||
|
||||
@@ -6,7 +6,7 @@ feature %q{
|
||||
} , js: true do
|
||||
include AuthenticationWorkflow
|
||||
include WebHelper
|
||||
|
||||
|
||||
describe "listing products" do
|
||||
before :each do
|
||||
login_to_admin_section
|
||||
@@ -69,7 +69,7 @@ feature %q{
|
||||
expect(page).to have_field "price", with: "44.0"
|
||||
expect(page).to have_no_field "price", with: "66.0", visible: true
|
||||
end
|
||||
|
||||
|
||||
it "displays an on hand count input for each product (ie. for master variant) if no regular variants exist" do
|
||||
p1 = FactoryGirl.create(:product)
|
||||
p2 = FactoryGirl.create(:product)
|
||||
@@ -84,7 +84,7 @@ feature %q{
|
||||
expect(page).to have_field "on_hand", with: "15"
|
||||
expect(page).to have_field "on_hand", with: "12"
|
||||
end
|
||||
|
||||
|
||||
it "displays an on hand count in a span for each product (ie. for master variant) if other variants exist" do
|
||||
p1 = FactoryGirl.create(:product)
|
||||
p2 = FactoryGirl.create(:product)
|
||||
@@ -142,7 +142,7 @@ feature %q{
|
||||
expect(page).to have_field "variant_unit_name", with: "packet"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
describe "listing variants" do
|
||||
before :each do
|
||||
login_to_admin_section
|
||||
@@ -174,8 +174,8 @@ feature %q{
|
||||
expect(page).to have_field "variant_on_hand", with: "15"
|
||||
expect(page).to have_field "variant_on_hand", with: "6"
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
it "displays a price input (for each variant) for each product" do
|
||||
p1 = FactoryGirl.create(:product, price: 2.0)
|
||||
v1 = FactoryGirl.create(:variant, product: p1, is_master: false, price: 12.75)
|
||||
@@ -295,7 +295,7 @@ feature %q{
|
||||
login_to_admin_section
|
||||
|
||||
visit '/admin/products/bulk_edit'
|
||||
|
||||
|
||||
first("div#columns_dropdown", :text => "COLUMNS").click
|
||||
first("div#columns_dropdown div.menu div.menu_item", text: "Available On").click
|
||||
first("div#columns_dropdown div.menu div.menu_item", text: "Category").click
|
||||
@@ -311,7 +311,7 @@ feature %q{
|
||||
|
||||
fill_in "product_name", with: "Big Bag Of Potatoes"
|
||||
select s2.name, :from => 'producer'
|
||||
fill_in "available_on", with: (Date.today-3).strftime("%F %T")
|
||||
fill_in "available_on", with: (3.days.ago.beginning_of_day).strftime("%F %T")
|
||||
fill_in "price", with: "20"
|
||||
select "Weight (kg)", from: "variant_unit_with_scale"
|
||||
select2_select t1.name, from: "p#{p.id}_category"
|
||||
@@ -333,7 +333,7 @@ feature %q{
|
||||
expect(p.on_hand).to eq 18
|
||||
expect(p.primary_taxon).to eq t1
|
||||
end
|
||||
|
||||
|
||||
scenario "updating a product with a variant unit of 'items'" do
|
||||
p = FactoryGirl.create(:product, variant_unit: 'weight', variant_unit_scale: 1000)
|
||||
|
||||
@@ -589,7 +589,7 @@ feature %q{
|
||||
within "tr#v_#{v1.id}" do
|
||||
first("a.delete-variant").click
|
||||
end
|
||||
|
||||
|
||||
expect(page).to have_selector "a.delete-variant", :count => 2
|
||||
|
||||
visit '/admin/products/bulk_edit'
|
||||
@@ -672,7 +672,7 @@ feature %q{
|
||||
login_to_admin_section
|
||||
|
||||
visit '/admin/products/bulk_edit'
|
||||
|
||||
|
||||
first("div#columns_dropdown", :text => "COLUMNS").click
|
||||
first("div#columns_dropdown div.menu div.menu_item", text: "Available On").click
|
||||
|
||||
@@ -814,7 +814,7 @@ feature %q{
|
||||
|
||||
fill_in "product_name", with: "Big Bag Of Potatoes"
|
||||
select(supplier_managed2.name, :from => 'producer')
|
||||
fill_in "available_on", with: (Date.today-3).strftime("%F %T")
|
||||
fill_in "available_on", with: (3.days.ago.beginning_of_day).strftime("%F %T")
|
||||
fill_in "price", with: "20"
|
||||
select "Weight (kg)", from: "variant_unit_with_scale"
|
||||
fill_in "on_hand", with: "18"
|
||||
|
||||
@@ -131,6 +131,20 @@ feature %q{
|
||||
|
||||
expect(page).to have_content 'ADD PRODUCT'
|
||||
targetted_select2_search product.name, from: '#add_variant_id', dropdown_css: '.select2-drop'
|
||||
|
||||
puts "c1: " + coordinator1.id.to_s + " "+ coordinator1.name
|
||||
puts "c2: " + coordinator2.id.to_s + " "+ coordinator2.name
|
||||
puts "s1: " + supplier1.id.to_s + " "+ supplier1.name
|
||||
puts "s2: " + supplier2.id.to_s + " "+ supplier2.name
|
||||
puts "d1: " + distributor1.id.to_s + " "+ distributor1.name
|
||||
puts "d2: " + distributor2.id.to_s + " "+ distributor2.name
|
||||
order_cycle1.distributors.each do |distributor|
|
||||
puts "oc1d: " + distributor.id.to_s + " "+ distributor.name
|
||||
end
|
||||
Enterprise.is_distributor.managed_by(@enterprise_user).each do |distributor|
|
||||
puts "eud: " + distributor.id.to_s + " "+ distributor.name
|
||||
end
|
||||
|
||||
click_link 'Add'
|
||||
page.has_selector? "table.index tbody[data-hook='admin_order_form_line_items'] tr" # Wait for JS
|
||||
expect(page).to have_selector 'td', text: product.name
|
||||
|
||||
@@ -11,31 +11,26 @@ feature "Registration", js: true do
|
||||
|
||||
expect(URI.parse(current_url).path).to eq registration_auth_path
|
||||
|
||||
sleep 0.5 # TOTO: DEAL WITH ME
|
||||
page.has_selector? "dd", text: "Log in"
|
||||
switch_to_login_tab
|
||||
|
||||
# Logging in
|
||||
click_link "Log in"
|
||||
# Enter Login details
|
||||
fill_in "Email", with: user.email
|
||||
fill_in "Password", with: user.password
|
||||
click_button 'Log in'
|
||||
click_login_and_ensure_content "This wizard will step you through creating a profile"
|
||||
|
||||
# Log in was successful, introduction shown
|
||||
sleep 0.5 # TOTO: DEAL WITH ME
|
||||
|
||||
expect(page).to have_content "This wizard will step you through creating a profile"
|
||||
expect(URI.parse(current_url).path).to eq registration_path
|
||||
|
||||
# Done reading introduction
|
||||
click_button "Let's get started!"
|
||||
click_button_and_ensure_content "Let's get started!", "Woot! First we need to know what sort of enterprise you are:"
|
||||
|
||||
# Filling in details
|
||||
expect(page).to have_content "Woot! First we need to know what sort of enterprise you are:"
|
||||
fill_in 'enterprise_name', with: "My Awesome Enterprise"
|
||||
click_link 'both-panel'
|
||||
click_button 'Continue'
|
||||
|
||||
click_button_and_ensure_content "Continue", "Greetings My Awesome Enterprise"
|
||||
|
||||
# Filling in address
|
||||
expect(page).to have_content 'Greetings My Awesome Enterprise'
|
||||
fill_in 'enterprise_address', with: '123 Abc Street'
|
||||
fill_in 'enterprise_city', with: 'Northcote'
|
||||
fill_in 'enterprise_zipcode', with: '3070'
|
||||
@@ -96,22 +91,18 @@ feature "Registration", js: true do
|
||||
|
||||
expect(URI.parse(current_url).path).to eq registration_auth_path
|
||||
|
||||
sleep 0.5 # TOTO: DEAL WITH ME
|
||||
page.has_selector? "dd", text: "Log in"
|
||||
switch_to_login_tab
|
||||
|
||||
# Logging in
|
||||
click_link "Log in"
|
||||
# Enter Login details
|
||||
fill_in "Email", with: user.email
|
||||
fill_in "Password", with: user.password
|
||||
click_button 'Log in'
|
||||
click_login_and_ensure_content "This wizard will step you through creating a profile"
|
||||
|
||||
# Log in was successful, introduction shown
|
||||
sleep 0.5 # TOTO: DEAL WITH ME
|
||||
|
||||
expect(page).to have_content "This wizard will step you through creating a profile"
|
||||
expect(URI.parse(current_url).path).to eq store_registration_path
|
||||
|
||||
# Done reading introduction
|
||||
click_button "Let's get started!"
|
||||
click_button_and_ensure_content "Let's get started!", "Woot! First we need to know the name of your farm:"
|
||||
|
||||
# Details Page
|
||||
expect(page).to have_content "Woot! First we need to know the name of your farm:"
|
||||
@@ -120,4 +111,35 @@ feature "Registration", js: true do
|
||||
# Everything from here should be covered in 'profile' spec
|
||||
end
|
||||
end
|
||||
|
||||
def switch_to_login_tab
|
||||
# Link appears to be unresponsive for a while, so keep clicking it until it works
|
||||
using_wait_time 0.5 do
|
||||
10.times do
|
||||
click_link "Log in"
|
||||
break if page.has_selector? "dd.active", text: "Log in"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def click_login_and_ensure_content(content)
|
||||
# Buttons appear to be unresponsive for a while, so keep clicking them until content appears
|
||||
using_wait_time 1 do
|
||||
3.times do
|
||||
click_button "Log in"
|
||||
break if page.has_selector? "div#loading", text: "Hold on a moment, we're logging you in"
|
||||
end
|
||||
end
|
||||
expect(page).to have_content content
|
||||
end
|
||||
|
||||
def click_button_and_ensure_content(button_text, content)
|
||||
# Buttons appear to be unresponsive for a while, so keep clicking them until content appears
|
||||
using_wait_time 0.5 do
|
||||
10.times do
|
||||
click_button button_text
|
||||
break if page.has_content? content
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
describe 'convert number to localised currency ', ->
|
||||
filter = currencyconfig = null
|
||||
|
||||
beforeEach ->
|
||||
currencyconfig =
|
||||
symbol: "$"
|
||||
symbol_position: "before"
|
||||
currency: "D"
|
||||
hide_cents: "false"
|
||||
# Not used yet...
|
||||
# decimal_mark: "."
|
||||
# thousands_separator: ","
|
||||
module 'Darkswarm'
|
||||
module ($provide)->
|
||||
$provide.value "currencyConfig", currencyconfig
|
||||
null
|
||||
inject ($filter) ->
|
||||
filter = $filter('localizeCurrency')
|
||||
|
||||
it "adds decimal fraction to an amount", ->
|
||||
expect(filter(10)).toEqual "$10.00"
|
||||
|
||||
it "handles an existing fraction", ->
|
||||
expect(filter(9.9)).toEqual "$9.90"
|
||||
|
||||
it "can use any currency symbol", ->
|
||||
currencyconfig.symbol = "£"
|
||||
expect(filter(404.04)).toEqual "£404.04"
|
||||
|
||||
it "can place symbols after the amount", ->
|
||||
currencyconfig.symbol_position = "after"
|
||||
expect(filter(333.3)).toEqual "333.30 $"
|
||||
|
||||
it "can add a currency string", ->
|
||||
currencyconfig.display_currency = "true"
|
||||
expect(filter(5)).toEqual "$5.00 D"
|
||||
|
||||
it "can hide cents", ->
|
||||
currencyconfig.hide_cents = "true"
|
||||
expect(filter(5)).toEqual "$5"
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ describe 'Variants service', ->
|
||||
beforeEach ->
|
||||
variant =
|
||||
id: 1
|
||||
base_price: 80.5
|
||||
price: 100
|
||||
price: 80.5
|
||||
price_with_fees: 100
|
||||
module 'Darkswarm'
|
||||
inject ($injector)->
|
||||
Variants = $injector.get("Variants")
|
||||
|
||||
Reference in New Issue
Block a user