spree_frontend 3.0.10 → 3.1.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/app/assets/javascripts/spree/frontend.js +3 -0
- data/app/assets/javascripts/spree/frontend/checkout.js.coffee +12 -7
- data/app/assets/javascripts/spree/frontend/checkout/payment.js.coffee +5 -3
- data/app/assets/javascripts/spree/frontend/product.js.coffee +11 -4
- data/app/assets/stylesheets/spree/frontend.css +0 -1
- data/app/assets/stylesheets/spree/frontend/frontend_bootstrap.css.scss +2 -2
- data/app/controllers/spree/checkout_controller.rb +17 -1
- data/app/controllers/spree/home_controller.rb +1 -1
- data/app/controllers/spree/orders_controller.rb +4 -2
- data/app/controllers/spree/products_controller.rb +7 -4
- data/app/controllers/spree/store_controller.rb +23 -18
- data/app/controllers/spree/taxons_controller.rb +1 -6
- data/app/helpers/spree/frontend_helper.rb +3 -2
- data/app/helpers/spree/taxons_helper.rb +3 -2
- data/app/views/spree/address/_form.html.erb +28 -15
- data/app/views/spree/checkout/_payment.html.erb +3 -2
- data/app/views/spree/checkout/_summary.html.erb +7 -0
- data/app/views/spree/checkout/edit.html.erb +3 -1
- data/app/views/spree/checkout/payment/_gateway.html.erb +13 -5
- data/app/views/spree/checkout/payment/_storecredit.html.erb +16 -0
- data/app/views/spree/payments/_payment.html.erb +2 -0
- data/app/views/spree/products/_cart_form.html.erb +24 -15
- data/app/views/spree/products/_taxons.html.erb +7 -11
- data/app/views/spree/products/show.html.erb +8 -6
- data/app/views/spree/shared/_filters.html.erb +1 -1
- data/app/views/spree/shared/_header.html.erb +1 -1
- data/app/views/spree/shared/_nav_bar.html.erb +1 -1
- data/app/views/spree/shared/_order_details.html.erb +6 -6
- data/app/views/spree/shared/_products.html.erb +12 -14
- data/app/views/spree/shared/forbidden.html.erb +0 -0
- data/config/routes.rb +15 -19
- data/spec/controllers/controller_helpers_spec.rb +102 -6
- data/spec/controllers/spree/checkout_controller_spec.rb +7 -0
- data/spec/features/checkout_spec.rb +223 -165
- data/spec/features/checkout_unshippable_spec.rb +1 -1
- data/spec/features/microdata_spec.rb +0 -0
- data/spec/features/products_spec.rb +79 -7
- data/spec/helpers/frontend_helper_spec.rb +16 -0
- data/spec/spec_helper.rb +1 -0
- metadata +13 -10
- data/CHANGELOG.md +0 -1
@@ -61,5 +61,12 @@
|
|
61
61
|
<td><strong><%= Spree.t(:order_total) %>:</strong></td>
|
62
62
|
<td><strong><span id='summary-order-total' class="lead text-primary"><%= order.display_total.to_html %></span></strong></td>
|
63
63
|
</tr>
|
64
|
+
|
65
|
+
<% if order.using_store_credit? %>
|
66
|
+
<tr data-hook="order_details_store_credit">
|
67
|
+
<td><%= Spree.t(:store_credit_name) %>:</strong></td>
|
68
|
+
<td><span id='summary-store-credit'><%= order.display_total_applied_store_credit.to_html %></span></td>
|
69
|
+
</tr>
|
70
|
+
<% end %>
|
64
71
|
</tbody>
|
65
72
|
</table>
|
@@ -9,7 +9,9 @@
|
|
9
9
|
<div class="col-sm-3">
|
10
10
|
<h1 data-hook="checkout_title"><%= Spree.t(:checkout) %></h1>
|
11
11
|
</div>
|
12
|
-
<div class="col-sm-9" data-hook="checkout_progress"
|
12
|
+
<div class="col-sm-9" data-hook="checkout_progress">
|
13
|
+
<%= checkout_progress %>
|
14
|
+
</div>
|
13
15
|
</div>
|
14
16
|
|
15
17
|
<div class="row" data-hook="checkout_content">
|
@@ -3,12 +3,16 @@
|
|
3
3
|
<% param_prefix = "payment_source[#{payment_method.id}]" %>
|
4
4
|
|
5
5
|
<p class="field">
|
6
|
-
<%= label_tag "name_on_card_#{payment_method.id}"
|
7
|
-
|
6
|
+
<%= label_tag "name_on_card_#{payment_method.id}" do %>
|
7
|
+
<%= Spree.t(:name_on_card) %><abbr class="required" title="required">*</abbr>
|
8
|
+
<% end %>
|
9
|
+
<%= text_field_tag "#{param_prefix}[name]", "#{@order.bill_address_firstname} #{@order.bill_address_lastname}", { id: "name_on_card_#{payment_method.id}", :class => 'form-control required'} %>
|
8
10
|
</p>
|
9
11
|
|
10
12
|
<p class="field" data-hook="card_number">
|
11
|
-
<%= label_tag "card_number"
|
13
|
+
<%= label_tag "card_number" do %>
|
14
|
+
<%= Spree.t(:card_number) %><abbr class="required" title="required">*</abbr>
|
15
|
+
<% end %>
|
12
16
|
<% options_hash = Rails.env.production? ? {:autocomplete => 'off'} : {} %>
|
13
17
|
<%= text_field_tag "#{param_prefix}[number]", '', options_hash.merge(:id => 'card_number', :class => 'form-control required cardNumber', :size => 19, :maxlength => 19, :autocomplete => "off") %>
|
14
18
|
|
@@ -20,11 +24,15 @@
|
|
20
24
|
</p>
|
21
25
|
<div class="row">
|
22
26
|
<div class="col-md-8 field" data-hook="card_expiration">
|
23
|
-
<%= label_tag "card_expiry"
|
27
|
+
<%= label_tag "card_expiry" do %>
|
28
|
+
<%= Spree.t(:expiration) %><abbr class="required" title="required">*</abbr>
|
29
|
+
<% end %>
|
24
30
|
<%= text_field_tag "#{param_prefix}[expiry]", '', :id => 'card_expiry', :class => "form-control required cardExpiry", :placeholder => "MM / YY" %>
|
25
31
|
</div>
|
26
32
|
<div class="col-md-4 field" data-hook="card_code">
|
27
|
-
<%= label_tag "card_code"
|
33
|
+
<%= label_tag "card_code" do %>
|
34
|
+
<%= Spree.t(:card_code) %><abbr class="required" title="required">*</abbr>
|
35
|
+
<% end %>
|
28
36
|
<%= text_field_tag "#{param_prefix}[verification_value]", '', options_hash.merge(:id => 'card_code', :class => 'form-control required cardCode', :size => 5) %>
|
29
37
|
<%= link_to "(#{Spree.t(:what_is_this)})", spree.content_path('cvv'), :target => '_blank', "data-hook" => "cvv_link", :id => "cvv_link" %>
|
30
38
|
</div>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<% if @order.using_store_credit? %>
|
2
|
+
<div class="alert alert-success text-center" data-hook="checkout_payment_store_credit_success">
|
3
|
+
<h3><%= Spree.t('store_credit.applicable_amount', amount: Spree::Money.new(@order.total_applicable_store_credit, { currency: @order.currency })) %></h3>
|
4
|
+
<% if @order.covered_by_store_credit? %>
|
5
|
+
<p><%= Spree.t('store_credit.remaining_amount', amount: @order.display_store_credit_remaining_after_capture) %></p>
|
6
|
+
<% else %>
|
7
|
+
<p><%= Spree.t('store_credit.additional_payment_needed', amount: @order.display_order_total_after_store_credit) %></p>
|
8
|
+
<% end %>
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<% elsif @order.could_use_store_credit? %>
|
12
|
+
<div class="alert alert-info text-center" data-hook="checkout_payment_store_credit_available">
|
13
|
+
<h2><%= Spree.t('store_credit.available_amount', amount: @order.display_total_available_store_credit) %></h2>
|
14
|
+
<%= button_tag Spree.t('store_credit.apply'), name: 'apply_store_credit', class: 'continue btn btn-lg btn-primary' %>
|
15
|
+
</div>
|
16
|
+
<% end %>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= form_for :order, :
|
1
|
+
<%= form_for :order, url: populate_orders_path do |f| %>
|
2
2
|
<div class="row" id="inside-product-cart-form" data-hook="inside_product_cart_form" itemprop="offers" itemscope itemtype="https://schema.org/Offer">
|
3
3
|
<% if @product.variants_and_option_values(current_currency).any? %>
|
4
4
|
<div id="product-variants" class="col-md-6">
|
@@ -6,7 +6,10 @@
|
|
6
6
|
<ul class="list-group">
|
7
7
|
<% @product.variants_and_option_values(current_currency).each_with_index do |variant, index| %>
|
8
8
|
<li>
|
9
|
-
<%= radio_button_tag "variant_id", variant.id, index == 0,
|
9
|
+
<%= radio_button_tag "variant_id", variant.id, index == 0,
|
10
|
+
'data-price' => variant.price_in(current_currency).money,
|
11
|
+
'data-in-stock' => variant.can_supply?
|
12
|
+
%>
|
10
13
|
<%= label_tag "variant_id_#{ variant.id }" do %>
|
11
14
|
<span class="variant-description">
|
12
15
|
<%= variant_options variant %>
|
@@ -26,7 +29,7 @@
|
|
26
29
|
<%= hidden_field_tag "variant_id", @product.master.id %>
|
27
30
|
<% end %>
|
28
31
|
|
29
|
-
<% if @product.price_in(current_currency)
|
32
|
+
<% if @product.price_in(current_currency) && !@product.price.nil? %>
|
30
33
|
<div data-hook="product_price" class="col-md-5">
|
31
34
|
<div id="product-price">
|
32
35
|
<h6 class="product-section-title"><%= Spree.t(:price) %></h6>
|
@@ -45,22 +48,28 @@
|
|
45
48
|
<% end %>
|
46
49
|
</div>
|
47
50
|
|
48
|
-
|
49
|
-
<
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
<%=
|
55
|
-
|
56
|
-
|
51
|
+
<% if @product.can_supply? %>
|
52
|
+
<div class="add-to-cart">
|
53
|
+
<br />
|
54
|
+
<div class="input-group">
|
55
|
+
<%= number_field_tag :quantity, 1, class: 'title form-control', min: 1 %>
|
56
|
+
<span class="input-group-btn">
|
57
|
+
<%= button_tag class: 'btn btn-success', id: 'add-to-cart-button', type: :submit do %>
|
58
|
+
<%= Spree.t(:add_to_cart) %>
|
59
|
+
<% end %>
|
60
|
+
</span>
|
61
|
+
</div>
|
57
62
|
</div>
|
58
|
-
|
63
|
+
<% end %>
|
59
64
|
</div>
|
60
65
|
<% else %>
|
61
66
|
<div id="product-price">
|
62
|
-
<br
|
63
|
-
<div
|
67
|
+
<br />
|
68
|
+
<div>
|
69
|
+
<span class="price selling" itemprop="price">
|
70
|
+
<%= Spree.t('product_not_available_in_this_currency') %>
|
71
|
+
</span>
|
72
|
+
</div>
|
64
73
|
</div>
|
65
74
|
<% end %>
|
66
75
|
</div>
|
@@ -1,12 +1,8 @@
|
|
1
|
-
<% if
|
2
|
-
<
|
3
|
-
|
4
|
-
|
5
|
-
<
|
6
|
-
|
7
|
-
|
8
|
-
<% end %>
|
9
|
-
</ul>
|
10
|
-
</div>
|
11
|
-
</div>
|
1
|
+
<% if @product.taxons.present? %>
|
2
|
+
<h3 class="product-section-title"><%= Spree.t(:look_for_similar_items) %></h3>
|
3
|
+
<ul class="list-group" id="similar_items_by_taxon" data-hook>
|
4
|
+
<% @product.taxons.each do |taxon| %>
|
5
|
+
<li class="list-group-item"><%= link_to taxon.name, seo_url(taxon) %></li>
|
6
|
+
<% end %>
|
7
|
+
</ul>
|
12
8
|
<% end %>
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<% @body_id = 'product-details' %>
|
2
2
|
|
3
|
-
<% cache
|
4
|
-
<div data-hook="product_show" itemscope itemtype="https://schema.org/Product">
|
5
|
-
<div class="col-md-4" data-hook="product_left_part">
|
3
|
+
<% cache cache_key_for_product do %>
|
4
|
+
<div data-hook="product_show" class="row" itemscope itemtype="https://schema.org/Product">
|
5
|
+
<div class="col-md-4 col-sm-5" data-hook="product_left_part">
|
6
6
|
<div data-hook="product_left_part_wrap">
|
7
7
|
<div id="product-images" data-hook="product_images">
|
8
8
|
<div id="main-image" class="panel panel-default" data-hook>
|
@@ -25,13 +25,13 @@
|
|
25
25
|
</div>
|
26
26
|
</div>
|
27
27
|
|
28
|
-
<div class="col-md-8" data-hook="product_right_part">
|
28
|
+
<div class="col-md-8 col-sm-7" data-hook="product_right_part">
|
29
29
|
<div data-hook="product_right_part_wrap">
|
30
30
|
<div id="product-description" data-hook="product_description">
|
31
31
|
<h1 class="product-title" itemprop="name"><%= @product.name %></h1>
|
32
32
|
|
33
33
|
<div class="well" itemprop="description" data-hook="description">
|
34
|
-
<%= product_description(@product)
|
34
|
+
<%= product_description(@product) %>
|
35
35
|
</div>
|
36
36
|
|
37
37
|
<div id="cart-form" data-hook="cart_form">
|
@@ -39,7 +39,9 @@
|
|
39
39
|
</div>
|
40
40
|
</div>
|
41
41
|
|
42
|
-
|
42
|
+
<div id="taxon-crumbs" class=" five " data-hook="product_taxons">
|
43
|
+
<%= render :partial => 'taxons' %>
|
44
|
+
</div>
|
43
45
|
</div>
|
44
46
|
</div>
|
45
47
|
</div>
|
@@ -16,7 +16,7 @@
|
|
16
16
|
id="<%= label %>"
|
17
17
|
name="search[<%= filter[:scope].to_s %>][]"
|
18
18
|
value="<%= val %>"
|
19
|
-
<%= params[:search] && params[:search][filter[:scope]] && params[:search][filter[:scope]].include?(val.to_s) ? "checked" : "" %> />
|
19
|
+
<%= params[:search].present? && params[:search][filter[:scope]] && params[:search][filter[:scope]].include?(val.to_s) ? "checked" : "" %> />
|
20
20
|
<label class="nowrap" for="<%= label %>"> <%= nm %> </label>
|
21
21
|
</li>
|
22
22
|
<% end %>
|
@@ -1,17 +1,17 @@
|
|
1
1
|
<div class="row steps-data">
|
2
2
|
<% if order.has_step?("address") %>
|
3
|
-
<div class="col-md-3" data-hook="order-bill-address">
|
3
|
+
<div class="col-md-3 col-sm-3 col-xs-6" data-hook="order-bill-address">
|
4
4
|
<h4><%= Spree.t(:billing_address) %> <%= link_to "(#{Spree.t(:edit)})", checkout_state_path(:address) unless order.completed? %></h4>
|
5
5
|
<%= render 'spree/shared/address', address: order.bill_address %>
|
6
6
|
</div>
|
7
7
|
|
8
8
|
<% if order.has_step?("delivery") %>
|
9
|
-
<div class="col-md-3" data-hook="order-ship-address">
|
9
|
+
<div class="col-md-3 col-sm-3 col-xs-6" data-hook="order-ship-address">
|
10
10
|
<h4><%= Spree.t(:shipping_address) %> <%= link_to "(#{Spree.t(:edit)})", checkout_state_path(:address) unless order.completed? %></h4>
|
11
11
|
<%= render 'spree/shared/address', address: order.ship_address %>
|
12
12
|
</div>
|
13
13
|
|
14
|
-
<div class="
|
14
|
+
<div class="col-md-3 col-sm-3 col-xs-6" data-hook="order-shipment">
|
15
15
|
<h4><%= Spree.t(:shipments) %> <%= link_to "(#{Spree.t(:edit)})", checkout_state_path(:delivery) unless order.completed? %></h4>
|
16
16
|
<div class="delivery">
|
17
17
|
<% order.shipments.each do |shipment| %>
|
@@ -25,9 +25,9 @@
|
|
25
25
|
</div>
|
26
26
|
<% end %>
|
27
27
|
<% end %>
|
28
|
-
|
29
|
-
<% if
|
30
|
-
<div class="col-md-3">
|
28
|
+
|
29
|
+
<% if order.has_step?("payment") %>
|
30
|
+
<div class="col-md-3 col-sm-3 col-xs-6" data-hook="order-payment">
|
31
31
|
<h4><%= Spree.t(:payment_information) %> <%= link_to "(#{Spree.t(:edit)})", checkout_state_path(:payment) unless order.completed? %></h4>
|
32
32
|
<div class="payment-info">
|
33
33
|
<% order.payments.valid.each do |payment| %>
|
@@ -1,11 +1,6 @@
|
|
1
|
-
<%
|
2
|
-
paginated_products = @searcher.retrieve_products if params.key?(:keywords)
|
3
|
-
paginated_products ||= products
|
4
|
-
%>
|
5
|
-
|
6
1
|
<% content_for :head do %>
|
7
|
-
<% if
|
8
|
-
<%= rel_next_prev_link_tags
|
2
|
+
<% if products.respond_to?(:num_pages) %>
|
3
|
+
<%= rel_next_prev_link_tags products %>
|
9
4
|
<% end %>
|
10
5
|
<% end %>
|
11
6
|
|
@@ -24,13 +19,16 @@
|
|
24
19
|
<% if products.any? %>
|
25
20
|
<div id="products" class="row" data-hook>
|
26
21
|
<% products.each do |product| %>
|
27
|
-
<% url = spree.
|
28
|
-
<div id="product_<%= product.id %>" class="col-md-3 col-sm-6 product-list-item" data-hook="products_list_item" itemscope itemtype="https://schema.org/Product">
|
22
|
+
<% url = spree.product_url(product, taxon_id: @taxon.try(:id)) %>
|
23
|
+
<div id="product_<%= product.id %>" class="col-md-3 col-sm-6 col-xs-6 product-list-item" data-hook="products_list_item" itemscope itemtype="https://schema.org/Product">
|
29
24
|
<div class="panel panel-default">
|
30
|
-
<% cache(@taxon.present? ? [I18n.locale, current_currency, @taxon, product] :
|
25
|
+
<% cache(@taxon.present? ? [I18n.locale, current_currency, @taxon, product] : cache_key_for_product(product)) do %>
|
31
26
|
<div class="panel-body text-center product-body">
|
32
|
-
<%= link_to
|
33
|
-
|
27
|
+
<%= link_to url, itemprop: "url" do %>
|
28
|
+
<%= small_image(product, itemprop: "image") %><br/>
|
29
|
+
<%= content_tag(:span, truncate(product.name, length: 50), class: 'info', itemprop: "name", title: product.name) %>
|
30
|
+
<% end %>
|
31
|
+
<br/>
|
34
32
|
</div>
|
35
33
|
<div class="panel-footer text-center">
|
36
34
|
<span itemprop="offers" itemscope itemtype="https://schema.org/Offer">
|
@@ -45,6 +43,6 @@
|
|
45
43
|
</div>
|
46
44
|
<% end %>
|
47
45
|
|
48
|
-
<% if
|
49
|
-
<%= paginate
|
46
|
+
<% if products.respond_to?(:num_pages) %>
|
47
|
+
<%= paginate products, theme: 'twitter-bootstrap-3' %>
|
50
48
|
<% end %>
|
File without changes
|
data/config/routes.rb
CHANGED
@@ -1,36 +1,32 @@
|
|
1
1
|
Spree::Core::Engine.add_routes do
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
resources :products, :only => [:index, :show]
|
6
|
-
|
7
|
-
get '/locale/set', :to => 'locale#set'
|
3
|
+
get '/locale/set', to: 'locale#set'
|
8
4
|
|
9
5
|
# non-restful checkout stuff
|
10
|
-
patch '/checkout/update/:state', :
|
11
|
-
get '/checkout/:state', :
|
12
|
-
get '/checkout', :
|
6
|
+
patch '/checkout/update/:state', to: 'checkout#update', as: :update_checkout
|
7
|
+
get '/checkout/:state', to: 'checkout#edit', as: :checkout_state
|
8
|
+
get '/checkout', to: 'checkout#edit', as: :checkout
|
13
9
|
|
14
10
|
populate_redirect = redirect do |params, request|
|
15
11
|
request.flash[:error] = Spree.t(:populate_get_error)
|
16
12
|
request.referer || '/cart'
|
17
13
|
end
|
18
14
|
|
19
|
-
get '/orders/populate', :
|
15
|
+
get '/orders/populate', to: populate_redirect
|
20
16
|
|
21
|
-
resources :orders, :
|
22
|
-
post :populate, :
|
17
|
+
resources :orders, except: [:index, :new, :create, :destroy] do
|
18
|
+
post :populate, on: :collection
|
23
19
|
end
|
24
20
|
|
25
|
-
get '/cart', :
|
26
|
-
patch '/cart', :
|
27
|
-
put '/cart/empty', :
|
21
|
+
get '/cart', to: 'orders#edit', as: :cart
|
22
|
+
patch '/cart', to: 'orders#update', as: :update_cart
|
23
|
+
put '/cart/empty', to: 'orders#empty', as: :empty_cart
|
28
24
|
|
29
25
|
# route globbing for pretty nested taxon and product paths
|
30
|
-
get '/t/*id', :
|
26
|
+
get '/t/*id', to: 'taxons#show', as: :nested_taxons
|
31
27
|
|
32
|
-
get '/unauthorized', :
|
33
|
-
get '/content/cvv', :
|
34
|
-
get '/content/*path', :
|
35
|
-
get '/cart_link', :
|
28
|
+
get '/unauthorized', to: 'home#unauthorized', as: :unauthorized
|
29
|
+
get '/content/cvv', to: 'content#cvv', as: :cvv
|
30
|
+
get '/content/*path', to: 'content#show', as: :content
|
31
|
+
get '/cart_link', to: 'store#cart_link', as: :cart_link
|
36
32
|
end
|
@@ -5,22 +5,118 @@ require 'spec_helper'
|
|
5
5
|
# ProductsController is good.
|
6
6
|
describe Spree::ProductsController, :type => :controller do
|
7
7
|
|
8
|
+
let!(:available_locales) { [:en, :de] }
|
9
|
+
let!(:available_locale) { :de }
|
10
|
+
let!(:unavailable_locale) { :ru }
|
11
|
+
|
8
12
|
before do
|
9
13
|
I18n.enforce_available_locales = false
|
10
|
-
expect(I18n).to receive(:available_locales).and_return(
|
11
|
-
Spree::Frontend::Config[:locale] = :de
|
14
|
+
expect(I18n).to receive(:available_locales).and_return(available_locales)
|
12
15
|
end
|
13
16
|
|
14
17
|
after do
|
15
18
|
Spree::Frontend::Config[:locale] = :en
|
19
|
+
Rails.application.config.i18n.default_locale = :en
|
16
20
|
I18n.locale = :en
|
17
21
|
I18n.enforce_available_locales = true
|
18
22
|
end
|
19
23
|
|
20
24
|
# Regression test for #1184
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
+
context 'when session locale not set' do
|
26
|
+
before(:each) do
|
27
|
+
session[:locale] = nil
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'when Spree::Frontend::Config[:locale] not present' do
|
31
|
+
before(:each) do
|
32
|
+
Spree::Frontend::Config[:locale] = nil
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'when rails application default locale not set' do
|
36
|
+
before(:each) do
|
37
|
+
Rails.application.config.i18n.default_locale = nil
|
38
|
+
end
|
39
|
+
|
40
|
+
it "sets the I18n default locale" do
|
41
|
+
spree_get :index
|
42
|
+
expect(I18n.locale).to eq(I18n.default_locale)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'when rails application default locale is set' do
|
47
|
+
context 'and not in available_locales' do
|
48
|
+
before(:each) do
|
49
|
+
Rails.application.config.i18n.default_locale = unavailable_locale
|
50
|
+
end
|
51
|
+
|
52
|
+
it "sets the I18n default locale" do
|
53
|
+
spree_get :index
|
54
|
+
expect(I18n.locale).to eq(I18n.default_locale)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context 'and in available_locales' do
|
59
|
+
before(:each) do
|
60
|
+
Rails.application.config.i18n.default_locale = available_locale
|
61
|
+
end
|
62
|
+
|
63
|
+
it "sets the rails app locale" do
|
64
|
+
expect(I18n.locale).to eq(:en)
|
65
|
+
spree_get :index
|
66
|
+
expect(I18n.locale).to eq(available_locale)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'when Spree::Frontend::Config[:locale] is present' do
|
73
|
+
context 'and not in available_locales' do
|
74
|
+
before(:each) do
|
75
|
+
Spree::Frontend::Config[:locale] = unavailable_locale
|
76
|
+
end
|
77
|
+
|
78
|
+
it "sets the I18n default locale" do
|
79
|
+
spree_get :index
|
80
|
+
expect(I18n.locale).to eq(I18n.default_locale)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context 'and not in available_locales' do
|
85
|
+
before(:each) do
|
86
|
+
Spree::Frontend::Config[:locale] = available_locale
|
87
|
+
end
|
88
|
+
|
89
|
+
it "sets the default locale based on Spree::Frontend::Config[:locale]" do
|
90
|
+
expect(I18n.locale).to eq(:en)
|
91
|
+
spree_get :index
|
92
|
+
expect(I18n.locale).to eq(available_locale)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
context 'when session locale is set' do
|
99
|
+
context 'and not in available_locales' do
|
100
|
+
before(:each) do
|
101
|
+
session[:locale] = unavailable_locale
|
102
|
+
end
|
103
|
+
|
104
|
+
it "sets the I18n default locale" do
|
105
|
+
spree_get :index
|
106
|
+
expect(I18n.locale).to eq(I18n.default_locale)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
context 'and in available_locales' do
|
111
|
+
before(:each) do
|
112
|
+
session[:locale] = available_locale
|
113
|
+
end
|
114
|
+
|
115
|
+
it "sets the session locale" do
|
116
|
+
expect(I18n.locale).to eq(:en)
|
117
|
+
spree_get :index
|
118
|
+
expect(I18n.locale).to eq(available_locale)
|
119
|
+
end
|
120
|
+
end
|
25
121
|
end
|
26
122
|
end
|