spree_frontend 3.0.0.rc1 → 3.0.0.rc3
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/app/controllers/spree/orders_controller.rb +0 -1
- data/app/helpers/spree/frontend_helper.rb +1 -1
- data/app/views/kaminari/twitter-bootstrap-3/_first_page.html.erb +4 -4
- data/app/views/kaminari/twitter-bootstrap-3/_last_page.html.erb +3 -3
- data/app/views/kaminari/twitter-bootstrap-3/_next_page.html.erb +3 -3
- data/app/views/kaminari/twitter-bootstrap-3/_paginator.html.erb +17 -16
- data/app/views/kaminari/twitter-bootstrap-3/_prev_page.html.erb +3 -3
- data/app/views/spree/address/_form.html.erb +2 -1
- data/app/views/spree/checkout/_confirm.html.erb +1 -1
- data/app/views/spree/checkout/_delivery.html.erb +0 -3
- data/app/views/spree/checkout/_payment.html.erb +6 -7
- data/app/views/spree/checkout/edit.html.erb +1 -0
- data/app/views/spree/checkout/payment/_gateway.html.erb +0 -1
- data/app/views/spree/layouts/spree_application.html.erb +0 -2
- data/app/views/spree/orders/_line_item.html.erb +4 -3
- data/app/views/spree/orders/edit.html.erb +0 -3
- data/app/views/spree/orders/show.html.erb +1 -0
- data/app/views/spree/payments/_payment.html.erb +1 -0
- data/app/views/spree/products/_cart_form.html.erb +4 -6
- data/app/views/spree/products/_promotions.html.erb +6 -5
- data/app/views/spree/products/_taxons.html.erb +3 -5
- data/app/views/spree/products/index.html.erb +0 -4
- data/app/views/spree/products/show.html.erb +1 -8
- data/app/views/spree/shared/_error_messages.html.erb +3 -3
- data/app/views/spree/shared/_filters.html.erb +1 -0
- data/app/views/spree/shared/_google_checkout.js.erb +1 -1
- data/app/views/spree/shared/_header.html.erb +1 -3
- data/app/views/spree/shared/_nav_bar.html.erb +0 -1
- data/app/views/spree/shared/_order_details.html.erb +0 -3
- data/app/views/spree/shared/_products.html.erb +21 -21
- data/app/views/spree/shared/_search.html.erb +13 -12
- data/app/views/spree/shared/_shipment_tracking.html.erb +1 -0
- data/app/views/spree/shared/_taxonomies.html.erb +1 -0
- data/config/routes.rb +0 -1
- data/spec/controllers/controller_extension_spec.rb +13 -2
- data/spec/controllers/spree/checkout_controller_spec.rb +5 -4
- data/spec/controllers/spree/orders_controller_ability_spec.rb +22 -30
- data/spec/spec_helper.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 21c4d3d6e5618eab61604b1b12a95fd8cdde9891
|
4
|
+
data.tar.gz: 148499f4d495b915912a7ce7cd5d41ef409a92ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65bcce2469d7125984737b17d7a5367df1bb15eb1bedac13856f42492429923d94377510a5475a1fcc457681badbf2dd5d65c03bd5743daaa1e193deaa5a9227
|
7
|
+
data.tar.gz: ea10c019574ae8d23cc7e5c58b42f87899cb8a64f311d00a84e20c40fecf3efac36d682a34aa7fd30a31657ec1268a32a17a25996c7ee1448600c7c150205fe0
|
@@ -10,7 +10,7 @@ module Spree
|
|
10
10
|
separator = raw(separator)
|
11
11
|
crumbs = [content_tag(:li, content_tag(:span, link_to(Spree.t(:home), spree.root_path, itemprop: "url") + separator, itemprop: "title"), itemscope: "itemscope", itemtype: "http://data-vocabulary.org/Breadcrumb")]
|
12
12
|
if taxon
|
13
|
-
crumbs << content_tag(:li, content_tag(:span, link_to(Spree.t(:products), products_path, itemprop: "url") + separator, itemprop: "title"), itemscope: "itemscope", itemtype: "http://data-vocabulary.org/Breadcrumb")
|
13
|
+
crumbs << content_tag(:li, content_tag(:span, link_to(Spree.t(:products), spree.products_path, itemprop: "url") + separator, itemprop: "title"), itemscope: "itemscope", itemtype: "http://data-vocabulary.org/Breadcrumb")
|
14
14
|
crumbs << taxon.ancestors.collect { |ancestor| content_tag(:li, content_tag(:span, link_to(ancestor.name , seo_url(ancestor), itemprop: "url") + separator, itemprop: "title"), itemscope: "itemscope", itemtype: "http://data-vocabulary.org/Breadcrumb") } unless taxon.ancestors.empty?
|
15
15
|
crumbs << content_tag(:li, content_tag(:span, link_to(taxon.name , seo_url(taxon), itemprop: "url"), itemprop: "title"), class: 'active', itemscope: "itemscope", itemtype: "http://data-vocabulary.org/Breadcrumb")
|
16
16
|
else
|
@@ -7,7 +7,7 @@
|
|
7
7
|
remote: data-remote
|
8
8
|
-%>
|
9
9
|
<% unless current_page.first? %>
|
10
|
-
<li class="first">
|
11
|
-
|
12
|
-
</li>
|
13
|
-
<% end %>
|
10
|
+
<li class="first">
|
11
|
+
<%= link_to_unless current_page.first?, raw(t 'views.pagination.first'), url, :remote => remote %>
|
12
|
+
</li>
|
13
|
+
<% end %>
|
@@ -7,7 +7,7 @@
|
|
7
7
|
remote: data-remote
|
8
8
|
-%>
|
9
9
|
<% unless current_page.last? %>
|
10
|
-
<li class="last next"><%# "next" class present for border styling in twitter bootstrap %>
|
11
|
-
|
12
|
-
</li>
|
10
|
+
<li class="last next"><%# "next" class present for border styling in twitter bootstrap %>
|
11
|
+
<%= link_to_unless current_page.last?, raw(t 'views.pagination.last'), url, {:remote => remote} %>
|
12
|
+
</li>
|
13
13
|
<% end %>
|
@@ -7,7 +7,7 @@
|
|
7
7
|
remote: data-remote
|
8
8
|
-%>
|
9
9
|
<% unless current_page.last? %>
|
10
|
-
<li class="next_page">
|
11
|
-
|
12
|
-
</li>
|
10
|
+
<li class="next_page">
|
11
|
+
<%= link_to_unless current_page.last?, raw(t 'views.pagination.next'), url, :rel => 'next', :remote => remote %>
|
12
|
+
</li>
|
13
13
|
<% end %>
|
@@ -6,19 +6,20 @@
|
|
6
6
|
remote: data-remote
|
7
7
|
paginator: the paginator that renders the pagination tags inside
|
8
8
|
-%>
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
<%
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
9
|
+
<% pagination_class ||= '' %>
|
10
|
+
|
11
|
+
<%= paginator.render do %>
|
12
|
+
<ul class="pagination <%= pagination_class %>">
|
13
|
+
<%= first_page_tag unless current_page.first? %>
|
14
|
+
<%= prev_page_tag unless current_page.first? %>
|
15
|
+
<% each_page do |page| %>
|
16
|
+
<% if page.left_outer? || page.right_outer? || page.inside_window? %>
|
17
|
+
<%= page_tag page %>
|
18
|
+
<% elsif !page.was_truncated? %>
|
19
|
+
<%= gap_tag %>
|
20
|
+
<% end %>
|
21
|
+
<% end %>
|
22
|
+
<%= next_page_tag unless current_page.last? %>
|
23
|
+
<%= last_page_tag unless current_page.last? %>
|
24
|
+
</ul>
|
25
|
+
<% end %>
|
@@ -7,7 +7,7 @@
|
|
7
7
|
remote: data-remote
|
8
8
|
-%>
|
9
9
|
<% unless current_page.first? %>
|
10
|
-
<li class="prev">
|
11
|
-
|
12
|
-
</li>
|
10
|
+
<li class="prev">
|
11
|
+
<%= link_to_unless current_page.first?, raw(t 'views.pagination.previous'), url, :rel => 'prev', :remote => remote %>
|
12
|
+
</li>
|
13
13
|
<% end %>
|
@@ -1,4 +1,5 @@
|
|
1
1
|
<% address_id = address_type.chars.first %>
|
2
|
+
|
2
3
|
<div class="inner" data-hook=<%="#{address_type}_inner" %>>
|
3
4
|
<p class="form-group" id=<%="#{address_id}firstname" %>>
|
4
5
|
<%= form.label :firstname, Spree.t(:first_name) %><span class="required">*</span><br />
|
@@ -49,7 +50,7 @@
|
|
49
50
|
:disabled => have_states)
|
50
51
|
].join.gsub('"', "'").gsub("\n", "")
|
51
52
|
%>
|
52
|
-
<%= javascript_tag do
|
53
|
+
<%= javascript_tag do %>
|
53
54
|
$('#<%="#{address_id}state" %>').append("<%== state_elements %>");
|
54
55
|
<% end %>
|
55
56
|
</p>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<h3 class="panel-title"><%= Spree.t(:confirm) %></h3>
|
4
4
|
</div>
|
5
5
|
<div class="panel-body">
|
6
|
-
|
6
|
+
<%= render :partial => 'spree/shared/order_details', :locals => { :order => @order } %>
|
7
7
|
</div>
|
8
8
|
</div>
|
9
9
|
|
@@ -5,7 +5,6 @@
|
|
5
5
|
<div class="panel-body" data-hook="shipping_method_inner">
|
6
6
|
<div id="methods">
|
7
7
|
<%= form.fields_for :shipments do |ship_form| %>
|
8
|
-
|
9
8
|
<div class="shipment">
|
10
9
|
<h4 class="stock-location" data-hook="stock-location">
|
11
10
|
<%= Spree.t(:package_from) %>
|
@@ -52,7 +51,6 @@
|
|
52
51
|
<% end %>
|
53
52
|
</ul>
|
54
53
|
</div>
|
55
|
-
|
56
54
|
<% end %>
|
57
55
|
|
58
56
|
<% if @differentiator.try(:missing?) %>
|
@@ -86,7 +84,6 @@
|
|
86
84
|
</table>
|
87
85
|
</div>
|
88
86
|
<% end %>
|
89
|
-
|
90
87
|
</div>
|
91
88
|
<% if Spree::Config[:shipping_instructions] %>
|
92
89
|
<p id="minstrs" data-hook>
|
@@ -3,7 +3,6 @@
|
|
3
3
|
<h3 class="panel-title"><%= Spree.t(:payment_information) %></h3>
|
4
4
|
</div>
|
5
5
|
<div class="panel-body" data-hook="checkout_payment_step">
|
6
|
-
|
7
6
|
<% if @payment_sources.present? %>
|
8
7
|
<div class="card_options">
|
9
8
|
<%= radio_button_tag 'use_existing_card', 'yes', true %>
|
@@ -39,12 +38,12 @@
|
|
39
38
|
|
40
39
|
<ul class="list-group" id="payment-method-fields" data-hook>
|
41
40
|
<% @order.available_payment_methods.each do |method| %>
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
41
|
+
<li class="list-group-item">
|
42
|
+
<label>
|
43
|
+
<%= radio_button_tag "order[payments_attributes][][payment_method_id]", method.id, method == @order.available_payment_methods.first %>
|
44
|
+
<%= Spree.t(method.name, :scope => :payment_methods, :default => method.name) %>
|
45
|
+
</label>
|
46
|
+
</li>
|
48
47
|
<% end %>
|
49
48
|
</ul>
|
50
49
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
<% content_for :google_analytics do %>
|
2
2
|
<%= render partial: 'spree/shared/google_checkout.js', locals: { order: @order, step_number: (@order.checkout_steps.index(@order.state) + 1) } %>
|
3
3
|
<% end %>
|
4
|
+
|
4
5
|
<div id="checkout" data-hook>
|
5
6
|
<%= render partial: 'spree/shared/error_messages', locals: { target: @order } %>
|
6
7
|
|
@@ -1,5 +1,6 @@
|
|
1
|
-
<% variant = line_item.variant
|
2
|
-
|
1
|
+
<% variant = line_item.variant %>
|
2
|
+
|
3
|
+
<%= order_form.fields_for :line_items, line_item do |item_form| %>
|
3
4
|
<tr class="line-item">
|
4
5
|
<td class="cart-item-image" data-hook="cart_item_image">
|
5
6
|
<% if variant.images.length == 0 %>
|
@@ -33,4 +34,4 @@
|
|
33
34
|
<%= link_to content_tag(:span, '', class: 'glyphicon glyphicon-minus-sign'), '#', class: 'delete', id: "delete_#{dom_id(line_item)}" %>
|
34
35
|
</td>
|
35
36
|
</tr>
|
36
|
-
<% end
|
37
|
+
<% end %>
|
@@ -3,14 +3,11 @@
|
|
3
3
|
<h1><%= Spree.t(:shopping_cart) %></h1>
|
4
4
|
|
5
5
|
<% if @order.line_items.empty? %>
|
6
|
-
|
7
6
|
<div data-hook="empty_cart">
|
8
7
|
<div class="alert alert-info"><%= Spree.t(:your_cart_is_empty) %></div>
|
9
8
|
<p><%= link_to Spree.t(:continue_shopping), products_path, class: 'btn btn-default' %></p>
|
10
9
|
</div>
|
11
|
-
|
12
10
|
<% else %>
|
13
|
-
|
14
11
|
<div data-hook="outside_cart_form">
|
15
12
|
<%= form_for @order, url: update_cart_path, html: { id: 'update-cart' } do |order_form| %>
|
16
13
|
<div data-hook="inside_cart_form">
|
@@ -1,6 +1,5 @@
|
|
1
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="http://schema.org/Offer">
|
3
|
-
|
4
3
|
<% if @product.variants_and_option_values(current_currency).any? %>
|
5
4
|
<div id="product-variants" class="col-md-6">
|
6
5
|
<h3 class="product-section-title"><%= Spree.t(:variants) %></h3>
|
@@ -29,7 +28,6 @@
|
|
29
28
|
|
30
29
|
<% if @product.price_in(current_currency) and !@product.price.nil? %>
|
31
30
|
<div data-hook="product_price" class="col-md-5">
|
32
|
-
|
33
31
|
<div id="product-price">
|
34
32
|
<h6 class="product-section-title"><%= Spree.t(:price) %></h6>
|
35
33
|
<div>
|
@@ -60,10 +58,10 @@
|
|
60
58
|
</div>
|
61
59
|
</div>
|
62
60
|
<% else %>
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
61
|
+
<div id="product-price">
|
62
|
+
<br>
|
63
|
+
<div><span class="price selling" itemprop="price"><%= Spree.t('product_not_available_in_this_currency') %></span></div>
|
64
|
+
</div>
|
67
65
|
<% end %>
|
68
66
|
</div>
|
69
67
|
<% end %>
|
@@ -1,4 +1,5 @@
|
|
1
1
|
<% promotions = @product.possible_promotions %>
|
2
|
+
|
2
3
|
<% if promotions.any? %>
|
3
4
|
<div id="promotions">
|
4
5
|
<h3><%= Spree.t(:promotions) %></h3>
|
@@ -7,11 +8,11 @@
|
|
7
8
|
<h4><%= promotion.name %></h4>
|
8
9
|
<p><%= promotion.description %></p>
|
9
10
|
<% if promotion.products.any? %>
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
<ul>
|
12
|
+
<% promotion.products.each do |product| %>
|
13
|
+
<li><%= link_to product.name, product_path(product) %></li>
|
14
|
+
<% end %>
|
15
|
+
</ul>
|
15
16
|
<% end %>
|
16
17
|
</div>
|
17
18
|
<% end %>
|
@@ -1,14 +1,12 @@
|
|
1
1
|
<% if !@product.taxons.blank? %>
|
2
2
|
<div id="taxon-crumbs" data-hook class=" five ">
|
3
3
|
<h3 class="product-section-title"><%= Spree.t(:look_for_similar_items) %></h3>
|
4
|
-
|
5
4
|
<div data-hook="product_taxons">
|
6
5
|
<ul class="list-group" id="similar_items_by_taxon" data-hook>
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
<% @product.taxons.each do |taxon| %>
|
7
|
+
<li class="list-group-item"><%= link_to taxon.name, seo_url(taxon) %></li>
|
8
|
+
<% end %>
|
10
9
|
</ul>
|
11
10
|
</div>
|
12
|
-
|
13
11
|
</div>
|
14
12
|
<% end %>
|
@@ -10,9 +10,7 @@
|
|
10
10
|
<% end %>
|
11
11
|
<% end %>
|
12
12
|
|
13
|
-
|
14
13
|
<% if params[:keywords] %>
|
15
|
-
|
16
14
|
<div data-hook="search_results">
|
17
15
|
<% if @products.empty? %>
|
18
16
|
<h6 class="search-results-title"><%= Spree.t(:no_products_found) %></h6>
|
@@ -20,9 +18,7 @@
|
|
20
18
|
<%= render :partial => 'spree/shared/products', :locals => { :products => @products, :taxon => @taxon } %>
|
21
19
|
<% end %>
|
22
20
|
</div>
|
23
|
-
|
24
21
|
<% else %>
|
25
|
-
|
26
22
|
<div data-hook="homepage_products">
|
27
23
|
<% cache(cache_key_for_products) do %>
|
28
24
|
<%= render :partial => 'spree/shared/products', :locals => { :products => @products, :taxon => @taxon } %>
|
@@ -1,10 +1,9 @@
|
|
1
1
|
<% @body_id = 'product-details' %>
|
2
|
+
|
2
3
|
<% cache [I18n.locale, current_currency, @product] do %>
|
3
4
|
<div data-hook="product_show" itemscope itemtype="http://schema.org/Product">
|
4
|
-
|
5
5
|
<div class="col-md-4" data-hook="product_left_part">
|
6
6
|
<div data-hook="product_left_part_wrap">
|
7
|
-
|
8
7
|
<div id="product-images" data-hook="product_images">
|
9
8
|
<div id="main-image" class="panel panel-default" data-hook>
|
10
9
|
<div class="panel-body text-center">
|
@@ -23,15 +22,12 @@
|
|
23
22
|
<div data-hook="promotions">
|
24
23
|
<%= render :partial => 'promotions' %>
|
25
24
|
</div>
|
26
|
-
|
27
25
|
</div>
|
28
26
|
</div>
|
29
27
|
|
30
28
|
<div class="col-md-8" data-hook="product_right_part">
|
31
29
|
<div data-hook="product_right_part_wrap">
|
32
|
-
|
33
30
|
<div id="product-description" data-hook="product_description">
|
34
|
-
|
35
31
|
<h1 class="product-title" itemprop="name"><%= @product.name %></h1>
|
36
32
|
|
37
33
|
<div class="well" itemprop="description" data-hook="description">
|
@@ -41,13 +37,10 @@
|
|
41
37
|
<div id="cart-form" data-hook="cart_form">
|
42
38
|
<%= render :partial => 'cart_form' %>
|
43
39
|
</div>
|
44
|
-
|
45
40
|
</div>
|
46
41
|
|
47
42
|
<%= render :partial => 'taxons' %>
|
48
|
-
|
49
43
|
</div>
|
50
44
|
</div>
|
51
|
-
|
52
45
|
</div>
|
53
46
|
<% end %>
|
@@ -3,9 +3,9 @@
|
|
3
3
|
<h3><%= Spree.t(:errors_prohibited_this_record_from_being_saved, :count => target.errors.count) %>:</h3>
|
4
4
|
<p><%= Spree.t(:there_were_problems_with_the_following_fields) %>:</p>
|
5
5
|
<ul>
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
<% target.errors.full_messages.each do |msg| %>
|
7
|
+
<li><%= msg %></li>
|
8
|
+
<% end %>
|
9
9
|
</ul>
|
10
10
|
<br/>
|
11
11
|
</div>
|
@@ -1,7 +1,5 @@
|
|
1
1
|
<div class="row steps-data">
|
2
|
-
|
3
2
|
<% if order.has_step?("address") %>
|
4
|
-
|
5
3
|
<div class="col-md-3" data-hook="order-bill-address">
|
6
4
|
<h4><%= Spree.t(:billing_address) %> <%= link_to "(#{Spree.t(:edit)})", checkout_state_path(:address) unless order.completed? %></h4>
|
7
5
|
<%= render partial: 'spree/shared/address', locals: { address: order.bill_address } %>
|
@@ -36,7 +34,6 @@
|
|
36
34
|
<% end %>
|
37
35
|
</div>
|
38
36
|
</div>
|
39
|
-
|
40
37
|
</div>
|
41
38
|
|
42
39
|
<hr />
|
@@ -16,33 +16,33 @@
|
|
16
16
|
</div>
|
17
17
|
<% elsif params.key?(:keywords) %>
|
18
18
|
<div data-hook="products_search_results_heading_results_found">
|
19
|
-
<h6 class="search-results-title"><%= Spree.t(:search_results, :
|
19
|
+
<h6 class="search-results-title"><%= Spree.t(:search_results, keywords: h(params[:keywords])) %></h6>
|
20
20
|
</div>
|
21
21
|
<% end %>
|
22
22
|
</div>
|
23
23
|
|
24
24
|
<% if products.any? %>
|
25
|
-
<div id="products" class="row" data-hook>
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
25
|
+
<div id="products" class="row" data-hook>
|
26
|
+
<% products.each do |product| %>
|
27
|
+
<% url = spree.product_url(product, taxon_id: @taxon.try(:id)) %>
|
28
|
+
<div id="product_<%= product.id %>" class="col-md-3 col-sm-6 product-list-item" data-hook="products_list_item" itemscope itemtype="http://schema.org/Product">
|
29
|
+
<div class="panel panel-default">
|
30
|
+
<% cache(@taxon.present? ? [I18n.locale, current_currency, @taxon, product] : [I18n.locale, current_currency, product]) do %>
|
31
|
+
<div class="panel-body text-center product-body">
|
32
|
+
<%= link_to small_image(product, itemprop: "image"), url, itemprop: 'url' %><br/>
|
33
|
+
<%= link_to truncate(product.name, length: 50), url, class: 'info', itemprop: "name", title: product.name %>
|
34
|
+
</div>
|
35
|
+
<div class="panel-footer text-center">
|
36
|
+
<span itemprop="offers" itemscope itemtype="http://schema.org/Offer">
|
37
|
+
<span class="price selling lead" itemprop="price"><%= display_price(product) %></span>
|
38
|
+
</span>
|
39
|
+
</div>
|
40
|
+
<% end %>
|
41
|
+
</div>
|
41
42
|
</div>
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
</div>
|
43
|
+
<% end %>
|
44
|
+
<% reset_cycle("classes") %>
|
45
|
+
</div>
|
46
46
|
<% end %>
|
47
47
|
|
48
48
|
<% if paginated_products.respond_to?(:num_pages) %>
|
@@ -1,15 +1,16 @@
|
|
1
1
|
<% @taxons = @taxon && @taxon.parent ? @taxon.parent.children : Spree::Taxon.roots %>
|
2
|
+
|
2
3
|
<%= form_tag spree.products_path, :method => :get, class: "navbar-form" do %>
|
3
|
-
<div class="form-group">
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
</div>
|
11
|
-
<div class="form-group">
|
12
|
-
|
13
|
-
</div>
|
14
|
-
<%= submit_tag Spree.t(:search), :name => nil, class: "btn btn-success" %>
|
4
|
+
<div class="form-group">
|
5
|
+
<% cache(cache_key_for_taxons) do %>
|
6
|
+
<%= select_tag :taxon,
|
7
|
+
options_for_select([[Spree.t(:all_departments), '']] +
|
8
|
+
@taxons.map {|t| [t.name, t.id]},
|
9
|
+
@taxon ? @taxon.id : params[:taxon]), 'aria-label' => 'Taxon', class: "form-control" %>
|
10
|
+
<% end %>
|
11
|
+
</div>
|
12
|
+
<div class="form-group">
|
13
|
+
<%= search_field_tag :keywords, params[:keywords], :placeholder => Spree.t(:search), class: "form-control" %>
|
14
|
+
</div>
|
15
|
+
<%= submit_tag Spree.t(:search), :name => nil, class: "btn btn-success" %>
|
15
16
|
<% end %>
|
data/config/routes.rb
CHANGED
@@ -17,7 +17,6 @@ Spree::Core::Engine.add_routes do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
get '/orders/populate', :to => populate_redirect
|
20
|
-
get '/orders/:id/token/:token' => 'orders#show', :as => :token_order
|
21
20
|
|
22
21
|
resources :orders, :except => [:index, :new, :create, :destroy] do
|
23
22
|
post :populate, :on => :collection
|
@@ -23,6 +23,15 @@ describe Spree::CustomController, :type => :controller do
|
|
23
23
|
Spree::CustomController.clear_overrides!
|
24
24
|
end
|
25
25
|
|
26
|
+
before do
|
27
|
+
@routes = ActionDispatch::Routing::RouteSet.new.tap do |r|
|
28
|
+
r.draw {
|
29
|
+
get 'index', to: 'spree/custom#index'
|
30
|
+
post 'create', to: 'spree/custom#create'
|
31
|
+
}
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
26
35
|
context "extension testing" do
|
27
36
|
context "index" do
|
28
37
|
context "specify symbol for handler instead of Proc" do
|
@@ -37,6 +46,7 @@ describe Spree::CustomController, :type => :controller do
|
|
37
46
|
end
|
38
47
|
end
|
39
48
|
end
|
49
|
+
|
40
50
|
describe "GET" do
|
41
51
|
it "has value success" do
|
42
52
|
spree_get :index
|
@@ -53,6 +63,7 @@ describe Spree::CustomController, :type => :controller do
|
|
53
63
|
respond_override({:index => {:html => {:failure => lambda { render(:text => 'failure!!!') }}}})
|
54
64
|
end
|
55
65
|
end
|
66
|
+
|
56
67
|
describe "GET" do
|
57
68
|
it "has value success" do
|
58
69
|
spree_get :index
|
@@ -69,6 +80,7 @@ describe Spree::CustomController, :type => :controller do
|
|
69
80
|
respond_override({:index => {:html => {:failure => lambda { render(:text => 'failure!!!') }}}})
|
70
81
|
end
|
71
82
|
end
|
83
|
+
|
72
84
|
describe "GET" do
|
73
85
|
it "has value success" do
|
74
86
|
spree_get :index
|
@@ -101,6 +113,7 @@ describe Spree::CustomController, :type => :controller do
|
|
101
113
|
respond_override({:index => {:html => {:success => lambda { render(:text => 'success!!!') }}}})
|
102
114
|
end
|
103
115
|
end
|
116
|
+
|
104
117
|
describe "POST" do
|
105
118
|
it "should not effect the wrong controller" do
|
106
119
|
spree_get :index
|
@@ -108,8 +121,6 @@ describe Spree::CustomController, :type => :controller do
|
|
108
121
|
end
|
109
122
|
end
|
110
123
|
end
|
111
|
-
|
112
124
|
end
|
113
125
|
end
|
114
|
-
|
115
126
|
end
|
@@ -318,7 +318,8 @@ describe Spree::CheckoutController, :type => :controller do
|
|
318
318
|
it "due to no available shipping rates for any of the shipments" do
|
319
319
|
expect(order.shipments.count).to eq(1)
|
320
320
|
order.shipments.first.shipping_rates.delete_all
|
321
|
-
|
321
|
+
|
322
|
+
spree_put :update, state: order.state, :order => {}
|
322
323
|
expect(flash[:error]).to eq(Spree.t(:items_cannot_be_shipped))
|
323
324
|
expect(response).to redirect_to(spree.checkout_state_path('address'))
|
324
325
|
end
|
@@ -332,7 +333,7 @@ describe Spree::CheckoutController, :type => :controller do
|
|
332
333
|
end
|
333
334
|
|
334
335
|
it "due to the order having errors" do
|
335
|
-
spree_put :update, :order => {}
|
336
|
+
spree_put :update, state: order.state, :order => {}
|
336
337
|
expect(flash[:error]).to eq("Base error\nAdjustments error")
|
337
338
|
expect(response).to redirect_to(spree.checkout_state_path('address'))
|
338
339
|
end
|
@@ -359,7 +360,7 @@ describe Spree::CheckoutController, :type => :controller do
|
|
359
360
|
|
360
361
|
it "when GatewayError is raised" do
|
361
362
|
allow_any_instance_of(Spree::Payment).to receive(:process!).and_raise(Spree::Core::GatewayError.new(Spree.t(:payment_processing_failed)))
|
362
|
-
spree_put :update, :order => {}
|
363
|
+
spree_put :update, state: order.state, :order => {}
|
363
364
|
expect(flash[:error]).to eq(Spree.t(:payment_processing_failed))
|
364
365
|
end
|
365
366
|
end
|
@@ -403,7 +404,7 @@ describe Spree::CheckoutController, :type => :controller do
|
|
403
404
|
|
404
405
|
it "doesn't set shipping address on the order" do
|
405
406
|
expect(order).to_not receive(:ship_address=)
|
406
|
-
spree_post :update
|
407
|
+
spree_post :update, state: order.state
|
407
408
|
end
|
408
409
|
|
409
410
|
it "doesn't remove unshippable items before payment" do
|
@@ -1,45 +1,40 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module Spree
|
4
|
-
describe OrdersController, :
|
5
|
-
ORDER_TOKEN = 'ORDER_TOKEN'
|
6
|
-
|
4
|
+
describe OrdersController, type: :controller do
|
7
5
|
let(:user) { create(:user) }
|
8
6
|
let(:guest_user) { create(:user) }
|
9
7
|
let(:order) { Spree::Order.create }
|
10
8
|
|
11
|
-
it 'should understand order routes with token' do
|
12
|
-
expect(spree.token_order_path('R123456', 'ABCDEF')).to eq('/orders/R123456/token/ABCDEF')
|
13
|
-
end
|
14
|
-
|
15
9
|
context 'when an order exists in the cookies.signed' do
|
16
10
|
let(:token) { 'some_token' }
|
17
11
|
let(:specified_order) { create(:order) }
|
18
12
|
|
19
13
|
before do
|
20
|
-
|
21
|
-
allow(controller).to receive_messages :
|
14
|
+
cookies.signed[:guest_token] = token
|
15
|
+
allow(controller).to receive_messages current_order: order
|
16
|
+
allow(controller).to receive_messages spree_current_user: user
|
22
17
|
end
|
23
18
|
|
24
19
|
context '#populate' do
|
25
20
|
it 'should check if user is authorized for :edit' do
|
26
21
|
expect(controller).to receive(:authorize!).with(:edit, order, token)
|
27
|
-
spree_post :populate
|
22
|
+
spree_post :populate
|
28
23
|
end
|
29
24
|
it "should check against the specified order" do
|
30
25
|
expect(controller).to receive(:authorize!).with(:edit, specified_order, token)
|
31
|
-
spree_post :populate, :
|
26
|
+
spree_post :populate, id: specified_order.number
|
32
27
|
end
|
33
28
|
end
|
34
29
|
|
35
30
|
context '#edit' do
|
36
31
|
it 'should check if user is authorized for :edit' do
|
37
32
|
expect(controller).to receive(:authorize!).with(:edit, order, token)
|
38
|
-
spree_get :edit
|
33
|
+
spree_get :edit
|
39
34
|
end
|
40
35
|
it "should check against the specified order" do
|
41
36
|
expect(controller).to receive(:authorize!).with(:edit, specified_order, token)
|
42
|
-
spree_get :edit, :
|
37
|
+
spree_get :edit, id: specified_order.number
|
43
38
|
end
|
44
39
|
end
|
45
40
|
|
@@ -47,54 +42,51 @@ module Spree
|
|
47
42
|
it 'should check if user is authorized for :edit' do
|
48
43
|
allow(order).to receive :update_attributes
|
49
44
|
expect(controller).to receive(:authorize!).with(:edit, order, token)
|
50
|
-
spree_post :update, :
|
45
|
+
spree_post :update, order: { email: "foo@bar.com" }
|
51
46
|
end
|
52
47
|
it "should check against the specified order" do
|
53
48
|
allow(order).to receive :update_attributes
|
54
49
|
expect(controller).to receive(:authorize!).with(:edit, specified_order, token)
|
55
|
-
spree_post :update, :
|
50
|
+
spree_post :update, order: { email: "foo@bar.com" }, id: specified_order.number
|
56
51
|
end
|
57
52
|
end
|
58
53
|
|
59
54
|
context '#empty' do
|
60
55
|
it 'should check if user is authorized for :edit' do
|
61
56
|
expect(controller).to receive(:authorize!).with(:edit, order, token)
|
62
|
-
spree_post :empty
|
57
|
+
spree_post :empty
|
63
58
|
end
|
64
59
|
it "should check against the specified order" do
|
65
60
|
expect(controller).to receive(:authorize!).with(:edit, specified_order, token)
|
66
|
-
spree_post :empty, :
|
61
|
+
spree_post :empty, id: specified_order.number
|
67
62
|
end
|
68
63
|
end
|
69
64
|
|
70
65
|
context "#show" do
|
71
66
|
it "should check against the specified order" do
|
72
67
|
expect(controller).to receive(:authorize!).with(:edit, specified_order, token)
|
73
|
-
spree_get :show, :
|
68
|
+
spree_get :show, id: specified_order.number
|
74
69
|
end
|
75
70
|
end
|
76
71
|
end
|
77
72
|
|
78
73
|
context 'when no authenticated user' do
|
79
|
-
let(:order) { create(:order, :
|
74
|
+
let(:order) { create(:order, number: 'R123') }
|
80
75
|
|
81
76
|
context '#show' do
|
82
|
-
context 'when
|
83
|
-
|
84
|
-
cookies.signed[:guest_token] = "soo wrong"
|
85
|
-
spree_get :show, { :id => 'R123', :token => order.guest_token }
|
86
|
-
expect(cookies.signed[:guest_token]).to eq(order.guest_token)
|
87
|
-
end
|
77
|
+
context 'when guest_token correct' do
|
78
|
+
before { cookies.signed[:guest_token] = order.guest_token }
|
88
79
|
|
89
|
-
it '
|
90
|
-
|
91
|
-
|
80
|
+
it 'displays the page' do
|
81
|
+
expect(controller).to receive(:authorize!).with(:edit, order, order.guest_token)
|
82
|
+
spree_get :show, { id: 'R123' }
|
83
|
+
expect(response.code).to eq('200')
|
92
84
|
end
|
93
85
|
end
|
94
86
|
|
95
|
-
context 'when
|
87
|
+
context 'when guest_token not present' do
|
96
88
|
it 'should respond with 404' do
|
97
|
-
spree_get :show, {:
|
89
|
+
spree_get :show, { id: 'R123'}
|
98
90
|
expect(response.code).to eq('404')
|
99
91
|
end
|
100
92
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -108,7 +108,7 @@ RSpec.configure do |config|
|
|
108
108
|
|
109
109
|
config.include Spree::TestingSupport::Preferences
|
110
110
|
config.include Spree::TestingSupport::UrlHelpers
|
111
|
-
config.include Spree::TestingSupport::ControllerRequests
|
111
|
+
config.include Spree::TestingSupport::ControllerRequests, type: :controller
|
112
112
|
config.include Spree::TestingSupport::Flash
|
113
113
|
|
114
114
|
config.include Paperclip::Shoulda::Matchers
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_frontend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.0.
|
4
|
+
version: 3.0.0.rc3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Schofield
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: spree_api
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 3.0.0.
|
19
|
+
version: 3.0.0.rc3
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 3.0.0.
|
26
|
+
version: 3.0.0.rc3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: spree_core
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 3.0.0.
|
33
|
+
version: 3.0.0.rc3
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 3.0.0.
|
40
|
+
version: 3.0.0.rc3
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bootstrap-sass
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|