solidus_frontend 2.1.1 → 2.2.0.beta1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of solidus_frontend might be problematic. Click here for more details.

Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/README.md +30 -0
  4. data/app/assets/config/solidus_frontend_manifest.js +6 -0
  5. data/app/assets/javascripts/spree/frontend/checkout/coupon-code.js.coffee +2 -2
  6. data/app/assets/javascripts/spree/frontend/checkout.js.coffee +8 -0
  7. data/app/assets/stylesheets/spree/frontend/screen.css.scss +18 -7
  8. data/app/controllers/spree/checkout_controller.rb +63 -21
  9. data/app/controllers/spree/orders_controller.rb +2 -2
  10. data/app/controllers/spree/products_controller.rb +2 -2
  11. data/app/controllers/spree/store_controller.rb +1 -1
  12. data/app/controllers/spree/taxons_controller.rb +1 -1
  13. data/app/models/spree/frontend_configuration.rb +3 -0
  14. data/app/views/spree/address/_form.html.erb +2 -2
  15. data/app/views/spree/checkout/_address.html.erb +4 -4
  16. data/app/views/spree/checkout/_confirm.html.erb +15 -2
  17. data/app/views/spree/checkout/_delivery.html.erb +2 -2
  18. data/app/views/spree/checkout/_payment.html.erb +14 -14
  19. data/app/views/spree/checkout/_terms_and_conditions.en.html.erb +1 -0
  20. data/app/views/spree/checkout/edit.html.erb +4 -4
  21. data/app/views/spree/checkout/existing_payment/_gateway.html.erb +9 -0
  22. data/app/views/spree/checkout/payment/_gateway.html.erb +8 -8
  23. data/app/views/spree/home/index.html.erb +2 -2
  24. data/app/views/spree/layouts/spree_application.html.erb +4 -4
  25. data/app/views/spree/orders/_adjustment_row.html.erb +1 -1
  26. data/app/views/spree/orders/_adjustments.html.erb +3 -3
  27. data/app/views/spree/orders/_form.html.erb +7 -6
  28. data/app/views/spree/orders/_line_item.html.erb +2 -2
  29. data/app/views/spree/orders/edit.html.erb +9 -9
  30. data/app/views/spree/orders/show.html.erb +4 -4
  31. data/app/views/spree/products/_cart_form.html.erb +3 -3
  32. data/app/views/spree/products/_properties.html.erb +1 -1
  33. data/app/views/spree/products/index.html.erb +4 -4
  34. data/app/views/spree/products/show.html.erb +6 -6
  35. data/app/views/spree/shared/_filters.html.erb +2 -2
  36. data/app/views/spree/shared/_head.html.erb +1 -1
  37. data/app/views/spree/shared/_header.html.erb +2 -2
  38. data/app/views/spree/shared/_main_nav_bar.html.erb +2 -2
  39. data/app/views/spree/shared/_nav_bar.html.erb +1 -1
  40. data/app/views/spree/shared/_order_details.html.erb +7 -7
  41. data/app/views/spree/shared/_search.html.erb +4 -4
  42. data/app/views/spree/shared/_taxonomies.html.erb +1 -1
  43. data/config/initializers/assets.rb +1 -8
  44. data/config/routes.rb +1 -1
  45. data/lib/generators/solidus/views/override_generator.rb +46 -0
  46. data/spec/controllers/spree/checkout_controller_spec.rb +5 -52
  47. data/spec/controllers/spree/orders_controller_spec.rb +3 -3
  48. data/spec/controllers/spree/orders_controller_transitions_spec.rb +1 -1
  49. data/spec/features/caching/products_spec.rb +0 -1
  50. data/spec/features/caching/taxons_spec.rb +0 -1
  51. data/spec/features/checkout_spec.rb +4 -3
  52. data/spec/generators/solidus/views/override_generator_spec.rb +47 -0
  53. metadata +12 -7
@@ -1,12 +1,12 @@
1
1
  <tbody id="cart_adjustments" data-hook>
2
2
  <% if @order.line_item_adjustments.exists? %>
3
3
  <% @order.line_item_adjustments.promotion.eligible.group_by(&:label).each do |label, adjustments| %>
4
- <%= render "spree/orders/adjustment_row", :label => label, :adjustments => adjustments, :type => Spree.t(:promotion) %>
4
+ <%= render "spree/orders/adjustment_row", label: label, adjustments: adjustments, type: Spree.t(:promotion) %>
5
5
  <% end %>
6
6
  <% end %>
7
7
 
8
8
  <% @order.all_adjustments.tax.eligible.group_by(&:label).each do |label, adjustments| %>
9
- <%= render "spree/orders/adjustment_row", :label => label, :adjustments => adjustments, :type => Spree.t(:tax) %>
9
+ <%= render "spree/orders/adjustment_row", label: label, adjustments: adjustments, type: Spree.t(:tax) %>
10
10
  <% end %>
11
11
 
12
12
  <% @order.shipments.each do |shipment| %>
@@ -19,6 +19,6 @@
19
19
  <% end %>
20
20
 
21
21
  <% @order.adjustments.eligible.group_by(&:label).each do |label, adjustments| %>
22
- <%= render "spree/orders/adjustment_row", :label => label, :adjustments => adjustments, :type => Spree.t(:adjustment) %>
22
+ <%= render "spree/orders/adjustment_row", label: label, adjustments: adjustments, type: Spree.t(:adjustment) %>
23
23
  <% end %>
24
24
  </tbody>
@@ -1,4 +1,5 @@
1
- <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @order } %>
1
+ <% order = order_form.object %>
2
+ <%= render 'spree/shared/error_messages', target: order %>
2
3
  <table id="cart-detail" data-hook>
3
4
  <thead>
4
5
  <tr data-hook="cart_items_headers">
@@ -10,19 +11,19 @@
10
11
  </tr>
11
12
  </thead>
12
13
  <tbody id="line_items" data-hook>
13
- <%= render partial: 'spree/orders/line_item', collection: order_form.object.line_items, locals: {order_form: order_form} %>
14
+ <%= render partial: 'spree/orders/line_item', collection: order.line_items, locals: { order_form: order_form } %>
14
15
  </tbody>
15
- <% if @order.adjustments.nonzero.exists? || @order.line_item_adjustments.nonzero.exists? || @order.shipment_adjustments.nonzero.exists? || @order.shipments.any? %>
16
+ <% if order.adjustments.nonzero.exists? || order.line_item_adjustments.nonzero.exists? || order.shipment_adjustments.nonzero.exists? || order.shipments.any? %>
16
17
  <tr class="cart-subtotal">
17
- <td colspan="4" align='right'><h5><%= Spree.t(:cart_subtotal, :count => @order.line_items.sum(:quantity)) %></h5></th>
18
- <td colspan><h5><%= order_form.object.display_item_total %></h5></td>
18
+ <td colspan="4" align='right'><h5><%= Spree.t(:cart_subtotal, count: order.line_items.sum(:quantity)) %></h5></th>
19
+ <td colspan><h5><%= order.display_item_total %></h5></td>
19
20
  <td></td>
20
21
  </tr>
21
22
  <%= render "spree/orders/adjustments" %>
22
23
  <% end %>
23
24
  <tr class="cart-total">
24
25
  <td colspan="4" align='right'><h5><%= Spree.t(:total) %></h5></th>
25
- <td colspan><h5><%= order_form.object.display_total %></h5></td>
26
+ <td colspan><h5><%= order.display_total %></h5></td>
26
27
  <td></td>
27
28
  </tr>
28
29
  </table>
@@ -24,13 +24,13 @@
24
24
  <%= line_item.single_money.to_html %>
25
25
  </td>
26
26
  <td class="cart-item-quantity" data-hook="cart_item_quantity">
27
- <%= item_form.number_field :quantity, :min => 0, :class => "line_item_quantity", :size => 5 %>
27
+ <%= item_form.number_field :quantity, min: 0, class: "line_item_quantity", size: 5 %>
28
28
  </td>
29
29
  <td class="cart-item-total" data-hook="cart_item_total">
30
30
  <%= line_item.display_amount.to_html unless line_item.quantity.nil? %>
31
31
  </td>
32
32
  <td class="cart-item-delete" data-hook="cart_item_delete">
33
- <%= link_to image_tag('icons/delete.png'), '#', :class => 'delete', :id => "delete_#{dom_id(line_item)}" %>
33
+ <%= link_to image_tag('icons/delete.png'), '#', class: 'delete', id: "delete_#{dom_id(line_item)}" %>
34
34
  </td>
35
35
  </tr>
36
36
  <% end -%>
@@ -6,25 +6,25 @@
6
6
 
7
7
  <div data-hook="empty_cart">
8
8
  <p><%= Spree.t(:your_cart_is_empty) %></p>
9
- <p><%= link_to Spree.t(:continue_shopping), products_path, :class => 'button continue' %></p>
9
+ <p><%= link_to Spree.t(:continue_shopping), products_path, class: 'button continue' %></p>
10
10
  </div>
11
11
 
12
12
  <% else %>
13
13
 
14
14
  <div data-hook="outside_cart_form">
15
- <%= form_for @order, :url => update_cart_path, :html => {:id => 'update-cart'} do |order_form| %>
15
+ <%= form_for @order, url: update_cart_path, html: {id: 'update-cart'} do |order_form| %>
16
16
  <div data-hook="inside_cart_form">
17
17
 
18
18
  <div data-hook="cart_items">
19
- <%= render :partial => 'form', :locals => { :order_form => order_form } %>
19
+ <%= render 'form', order_form: order_form %>
20
20
  </div>
21
21
 
22
22
  <div class="links columns sixteen alpha omega" data-hook="cart_buttons">
23
- <%= order_form.text_field :coupon_code, :size => 10, :placeholder => Spree.t(:coupon_code) %>
24
- <%= button_tag :class => 'primary', :id => 'update-button' do %>
23
+ <%= order_form.text_field :coupon_code, size: 10, placeholder: Spree.t(:coupon_code) %>
24
+ <%= button_tag class: 'primary', id: 'update-button' do %>
25
25
  <%= Spree.t(:update) %>
26
26
  <% end %>
27
- <%= button_tag :class => 'button checkout primary', :id => 'checkout-link', :name => 'checkout' do %>
27
+ <%= button_tag class: 'button checkout primary', id: 'checkout-link', name: 'checkout' do %>
28
28
  <%= Spree.t(:checkout) %>
29
29
  <% end %>
30
30
  </div>
@@ -34,11 +34,11 @@
34
34
  </div>
35
35
 
36
36
  <div id="empty-cart" data-hook>
37
- <%= form_tag empty_cart_path, :method => :put do %>
37
+ <%= form_tag empty_cart_path, method: :put do %>
38
38
  <p id="clear_cart_link" data-hook>
39
- <%= submit_tag Spree.t(:empty_cart), :class => 'button gray' %>
39
+ <%= submit_tag Spree.t(:empty_cart), class: 'button gray' %>
40
40
  <%= Spree.t(:or) %>
41
- <%= link_to Spree.t(:continue_shopping), products_path, :class => 'continue button gray' %>
41
+ <%= link_to Spree.t(:continue_shopping), products_path, class: 'continue button gray' %>
42
42
  </p>
43
43
  <% end %>
44
44
  </div>
@@ -1,20 +1,20 @@
1
1
  <fieldset id="order_summary" data-hook>
2
- <legend><%= Spree.t(:order_number, :number => @order.number) %></legend>
2
+ <legend><%= Spree.t(:order_number, number: @order.number) %></legend>
3
3
  <h1><%= accurate_title %></h1>
4
4
  <% if order_just_completed?(@order) %>
5
5
  <strong><%= Spree.t(:thank_you_for_your_order) %></strong>
6
6
  <% end %>
7
7
 
8
8
  <div id="order" data-hook>
9
- <%= render :partial => 'spree/shared/order_details', :locals => { :order => @order } %>
9
+ <%= render partial: 'spree/shared/order_details', locals: { order: @order } %>
10
10
 
11
11
  <br class="clear" />
12
12
 
13
13
  <p data-hook="links">
14
- <%= link_to Spree.t(:back_to_store), spree.root_path, :class => "button" %>
14
+ <%= link_to Spree.t(:back_to_store), spree.root_path, class: "button" %>
15
15
  <% unless order_just_completed?(@order) %>
16
16
  <% if try_spree_current_user && respond_to?(:account_path) %>
17
- <%= link_to Spree.t(:my_account), spree.account_path, :class => "button" %>
17
+ <%= link_to Spree.t(:my_account), spree.account_path, class: "button" %>
18
18
  <% end %>
19
19
  <% end %>
20
20
  </p>
@@ -1,4 +1,4 @@
1
- <%= form_for :order, :url => populate_orders_path do |f| %>
1
+ <%= form_for :order, url: populate_orders_path do |f| %>
2
2
  <div id="inside-product-cart-form" data-hook="inside_product_cart_form" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
3
3
 
4
4
  <% if @product.variants_and_option_values_for(current_pricing_options).any? %>
@@ -49,8 +49,8 @@
49
49
  </div>
50
50
 
51
51
  <div class="add-to-cart">
52
- <%= number_field_tag :quantity, 1, :class => 'title', :min => 1 %>
53
- <%= button_tag :class => 'large primary', :id => 'add-to-cart-button', :type => :submit do %>
52
+ <%= number_field_tag :quantity, 1, class: 'title', min: 1 %>
53
+ <%= button_tag class: 'large primary', id: 'add-to-cart-button', type: :submit do %>
54
54
  <%= Spree.t(:add_to_cart) %>
55
55
  <% end %>
56
56
  </div>
@@ -3,7 +3,7 @@
3
3
  <table id="product-properties" class="table-display" data-hook>
4
4
  <tbody>
5
5
  <% @product_properties.each do |product_property| %>
6
- <% css_class = cycle('even', 'odd', :name => "properties") %>
6
+ <% css_class = cycle('even', 'odd', name: "properties") %>
7
7
  <tr class="<%= css_class %>">
8
8
  <td><strong><%= product_property.property.presentation %></strong></td>
9
9
  <td><%= product_property.value %></td>
@@ -1,9 +1,9 @@
1
1
  <% content_for :sidebar do %>
2
2
  <div data-hook="homepage_sidebar_navigation">
3
3
  <% if "spree/products" == params[:controller] && @taxon %>
4
- <%= render :partial => 'spree/shared/filters' %>
4
+ <%= render partial: 'spree/shared/filters' %>
5
5
  <% else %>
6
- <%= render :partial => 'spree/shared/taxonomies' %>
6
+ <%= render partial: 'spree/shared/taxonomies' %>
7
7
  <% end %>
8
8
  </div>
9
9
  <% end %>
@@ -15,13 +15,13 @@
15
15
  <% if @products.empty? %>
16
16
  <h6 class="search-results-title"><%= Spree.t(:no_products_found) %></h6>
17
17
  <% else %>
18
- <%= render :partial => 'spree/shared/products', :locals => { :products => @products, :taxon => @taxon } %>
18
+ <%= render partial: 'spree/shared/products', locals: { products: @products, taxon: @taxon } %>
19
19
  <% end %>
20
20
  </div>
21
21
 
22
22
  <% else %>
23
23
 
24
24
  <div data-hook="homepage_products">
25
- <%= render :partial => 'spree/shared/products', :locals => { :products => @products, :taxon => @taxon } %>
25
+ <%= render partial: 'spree/shared/products', locals: { products: @products, taxon: @taxon } %>
26
26
  </div>
27
27
  <% end %>
@@ -7,19 +7,19 @@
7
7
 
8
8
  <div id="product-images" data-hook="product_images">
9
9
  <div id="main-image" data-hook>
10
- <%= render :partial => 'image' %>
10
+ <%= render partial: 'image' %>
11
11
  </div>
12
12
  <div id="thumbnails" data-hook>
13
- <%= render :partial => 'thumbnails' %>
13
+ <%= render partial: 'thumbnails' %>
14
14
  </div>
15
15
  </div>
16
16
 
17
17
  <div data-hook="product_properties">
18
- <%= render :partial => 'properties' %>
18
+ <%= render partial: 'properties' %>
19
19
  </div>
20
20
 
21
21
  <div data-hook="promotions">
22
- <%= render :partial => 'promotions' %>
22
+ <%= render partial: 'promotions' %>
23
23
  </div>
24
24
 
25
25
  </div>
@@ -37,12 +37,12 @@
37
37
  </div>
38
38
 
39
39
  <div id="cart-form" data-hook="cart_form">
40
- <%= render :partial => 'cart_form' %>
40
+ <%= render partial: 'cart_form' %>
41
41
  </div>
42
42
 
43
43
  </div>
44
44
 
45
- <%= render :partial => 'taxons' %>
45
+ <%= render partial: 'taxons' %>
46
46
 
47
47
  </div>
48
48
  </div>
@@ -1,6 +1,6 @@
1
1
  <% filters = @taxon ? @taxon.applicable_filters : [Spree::Core::ProductFilters.all_taxons] %>
2
2
  <% unless filters.empty? %>
3
- <%= form_tag '', :method => :get, :id => 'sidebar_products_search' do %>
3
+ <%= form_tag '', method: :get, id: 'sidebar_products_search' do %>
4
4
  <%= hidden_field_tag 'per_page', params[:per_page] %>
5
5
  <% filters.each do |filter| %>
6
6
  <% labels = filter[:labels] || filter[:conds].map {|m,c| [m,m]} %>
@@ -22,6 +22,6 @@
22
22
  </ul>
23
23
  </div>
24
24
  <% end %>
25
- <%= submit_tag Spree.t(:search), :name => nil %>
25
+ <%= submit_tag Spree.t(:search), name: nil %>
26
26
  <% end %>
27
27
  <% end %>
@@ -5,7 +5,7 @@
5
5
  <%== meta_data_tags %>
6
6
  <%= canonical_tag(current_store.url) %>
7
7
  <%= favicon_link_tag 'favicon.ico' %>
8
- <%= stylesheet_link_tag 'spree/frontend/all', :media => 'screen' %>
8
+ <%= stylesheet_link_tag 'spree/frontend/all', media: 'screen' %>
9
9
  <%= csrf_meta_tags %>
10
10
  <%= javascript_include_tag 'spree/frontend/all' %>
11
11
  <!--[if lt IE 9]>
@@ -1,5 +1,5 @@
1
1
  <header id="header" class="row" data-hook>
2
2
  <figure id="logo" class="columns six" data-hook><%= logo %></figure>
3
- <%= render :partial => 'spree/shared/nav_bar' %>
4
- <%= render :partial => 'spree/shared/main_nav_bar' if store_menu? %>
3
+ <%= render partial: 'spree/shared/nav_bar' %>
4
+ <%= render partial: 'spree/shared/main_nav_bar' if store_menu? %>
5
5
  </header>
@@ -3,10 +3,10 @@
3
3
  <li id="home-link" data-hook><%= link_to Spree.t(:home), spree.root_path %></li>
4
4
  <li id="link-to-cart" data-hook>
5
5
  <noscript>
6
- <%= link_to Spree.t(:cart), '/cart' %>
6
+ <%= link_to Spree.t(:cart), spree.cart_path %>
7
7
  </noscript>
8
8
  &nbsp;
9
9
  </li>
10
- <script>Spree.fetch_cart('<%= j spree.cart_link_url %>')</script>
11
10
  </ul>
11
+ <script>Spree.fetch_cart('<%= j spree.cart_link_path %>')</script>
12
12
  </nav>
@@ -1,7 +1,7 @@
1
1
  <nav id="top-nav-bar" class="columns ten">
2
2
  <ul id="nav-bar" class="inline" data-hook>
3
3
  <li id="search-bar" data-hook>
4
- <%= render :partial => 'spree/shared/search' %>
4
+ <%= render partial: 'spree/shared/search' %>
5
5
  </li>
6
6
  </ul>
7
7
  </nav>
@@ -1,16 +1,16 @@
1
1
  <div class="row steps-data">
2
2
 
3
- <% if order.has_step?("address") %>
3
+ <% if order.has_checkout_step?("address") %>
4
4
 
5
5
  <div class="columns alpha four" data-hook="order-bill-address">
6
6
  <h6><%= Spree.t(:billing_address) %> <%= link_to "(#{Spree.t('actions.edit')})", checkout_state_path(:address) unless order.completed? %></h6>
7
- <%= render :partial => 'spree/shared/address', :locals => { :address => order.bill_address } %>
7
+ <%= render partial: 'spree/shared/address', locals: { address: order.bill_address } %>
8
8
  </div>
9
9
 
10
- <% if order.has_step?("delivery") %>
10
+ <% if order.has_checkout_step?("delivery") %>
11
11
  <div class="columns alpha four" data-hook="order-ship-address">
12
12
  <h6><%= Spree.t(:shipping_address) %> <%= link_to "(#{Spree.t('actions.edit')})", checkout_state_path(:address) unless order.completed? %></h6>
13
- <%= render :partial => 'spree/shared/address', :locals => { :address => order.ship_address } %>
13
+ <%= render partial: 'spree/shared/address', locals: { address: order.ship_address } %>
14
14
  </div>
15
15
 
16
16
  <div class="columns alpha four" data-hook="order-shipment">
@@ -19,16 +19,16 @@
19
19
  <% order.shipments.each do |shipment| %>
20
20
  <div>
21
21
  <i class='fa fa-truck'></i>
22
- <%= Spree.t(:shipment_details, :stock_location => shipment.stock_location.name, :shipping_method => shipment.selected_shipping_rate.name) %>
22
+ <%= Spree.t(:shipment_details, stock_location: shipment.stock_location.name, shipping_method: shipment.selected_shipping_rate.name) %>
23
23
  </div>
24
24
  <% end %>
25
25
  </div>
26
- <%= render(:partial => 'spree/shared/shipment_tracking', :locals => {:order => order}) if order.shipped? %>
26
+ <%= render(partial: 'spree/shared/shipment_tracking', locals: {order: order}) if order.shipped? %>
27
27
  </div>
28
28
  <% end %>
29
29
  <% end %>
30
30
 
31
- <% if order.has_step?("payment") %>
31
+ <% if order.has_checkout_step?("payment") %>
32
32
  <div class="columns omega four">
33
33
  <h6><%= Spree.t(:payment_information) %> <%= link_to "(#{Spree.t('actions.edit')})", checkout_state_path(:payment) unless order.completed? %></h6>
34
34
  <div class="payment-info">
@@ -1,11 +1,11 @@
1
1
  <% @taxons = @taxon && @taxon.parent ? @taxon.parent.children : Spree::Taxon.roots %>
2
- <%= form_tag spree.products_path, :method => :get do %>
3
- <% cache(cache_key_for_taxons) do %>
2
+ <%= form_tag spree.products_path, method: :get do %>
3
+ <% cache [I18n.locale, @taxons] do %>
4
4
  <%= select_tag :taxon,
5
5
  options_for_select([[Spree.t(:all_departments), '']] +
6
6
  @taxons.map {|t| [t.name, t.id]},
7
7
  @taxon ? @taxon.id : params[:taxon]), 'aria-label' => 'Taxon' %>
8
8
  <% end %>
9
- <%= search_field_tag :keywords, params[:keywords], :placeholder => Spree.t(:search) %>
10
- <%= submit_tag Spree.t(:search), :name => nil %>
9
+ <%= search_field_tag :keywords, params[:keywords], placeholder: Spree.t(:search) %>
10
+ <%= submit_tag Spree.t(:search), name: nil %>
11
11
  <% end %>
@@ -2,7 +2,7 @@
2
2
  <nav id="taxonomies" class="sidebar-item" data-hook>
3
3
  <% @taxonomies.each do |taxonomy| %>
4
4
  <% cache [I18n.locale, taxonomy, max_level] do %>
5
- <h6 class='taxonomy-root'><%= Spree.t(:shop_by_taxonomy, :taxonomy => taxonomy.name) %></h6>
5
+ <h6 class='taxonomy-root'><%= Spree.t(:shop_by_taxonomy, taxonomy: taxonomy.name) %></h6>
6
6
  <%= taxons_tree(taxonomy.root, @taxon, max_level) %>
7
7
  <% end %>
8
8
  <% end %>
@@ -1,8 +1 @@
1
- Rails.application.config.assets.precompile += %w[
2
- spree/frontend/all*
3
- jquery.validate/localization/messages_*
4
- favicon.ico
5
- spree/frontend/cart.png
6
- credit_cards/*
7
- icons/delete.png
8
- ]
1
+ Rails.application.config.assets.precompile << 'solidus_frontend_manifest.js'
data/config/routes.rb CHANGED
@@ -11,7 +11,7 @@ Spree::Core::Engine.routes.draw do
11
11
  get '/checkout', to: 'checkout#edit', as: :checkout
12
12
 
13
13
  get '/orders/populate', to: 'orders#populate_redirect'
14
- get '/orders/:id/token/:token' => 'orders#show', :as => :token_order
14
+ get '/orders/:id/token/:token' => 'orders#show', as: :token_order
15
15
 
16
16
  resources :orders, except: [:index, :new, :create, :destroy] do
17
17
  post :populate, on: :collection
@@ -0,0 +1,46 @@
1
+ require 'rails'
2
+
3
+ module Solidus
4
+ module Views
5
+ class OverrideGenerator < ::Rails::Generators::Base
6
+ def self.views_folder
7
+ Spree::Frontend::Engine.root.join('app', 'views', 'spree')
8
+ end
9
+
10
+ VIEWS = Dir.glob(views_folder.join('**', '*'))
11
+
12
+ desc "Override solidus frontend views in your app. You can either provide single files or complete folders."
13
+
14
+ class_option :only,
15
+ type: :string,
16
+ default: nil,
17
+ desc: "Name of file or folder to copy exclusively. Can be a substring."
18
+
19
+ source_root views_folder
20
+
21
+ def copy_views
22
+ views_to_copy.each do |file|
23
+ next if File.directory?(file)
24
+ dest_file = Pathname.new(file).relative_path_from(source_dir)
25
+ copy_file file, Rails.root.join('app', 'views', 'spree', dest_file)
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def views_to_copy
32
+ if @options['only']
33
+ VIEWS.select do |v|
34
+ Pathname.new(v).relative_path_from(source_dir).to_s.include?(@options['only'])
35
+ end
36
+ else
37
+ VIEWS
38
+ end
39
+ end
40
+
41
+ def source_dir
42
+ self.class.views_folder
43
+ end
44
+ end
45
+ end
46
+ end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Spree::CheckoutController, type: :controller do
4
4
  let(:token) { 'some_token' }
5
- let(:user) { stub_model(Spree::LegacyUser) }
5
+ let(:user) { create(:user) }
6
6
  let(:order) { FactoryGirl.create(:order_with_totals) }
7
7
 
8
8
  let(:address_params) do
@@ -58,7 +58,7 @@ describe Spree::CheckoutController, type: :controller do
58
58
  it "should associate the order with a user" do
59
59
  order.update_column :user_id, nil
60
60
  expect(order).to receive(:associate_user!).with(user)
61
- get :edit, session: { order_id: 1 }
61
+ get :edit
62
62
  end
63
63
  end
64
64
  end
@@ -81,9 +81,9 @@ describe Spree::CheckoutController, type: :controller do
81
81
  }
82
82
  end
83
83
 
84
- let!(:payment_method) { create(:payment_method) }
85
84
  before do
86
85
  # Must have *a* shipping method and a payment method so updating from address works
86
+ allow(order).to receive_messages available_payment_methods: [stub_model(Spree::PaymentMethod)]
87
87
  allow(order).to receive_messages ensure_available_shipping_rates: true
88
88
  order.line_items << FactoryGirl.create(:line_item)
89
89
  end
@@ -218,53 +218,6 @@ describe Spree::CheckoutController, type: :controller do
218
218
  end
219
219
  end
220
220
 
221
- context "when in the payment state" do
222
- let(:order) { create(:order_with_line_items) }
223
- let(:payment_method) { create(:credit_card_payment_method) }
224
-
225
- let(:params) do
226
- {
227
- state: 'payment',
228
- order: {
229
- payments_attributes: [
230
- {
231
- payment_method_id: payment_method.id.to_s,
232
- source_attributes: attributes_for(:credit_card)
233
- }
234
- ]
235
- }
236
- }
237
- end
238
-
239
- before do
240
- order.update_attributes! user: user
241
- 3.times { order.next! } # should put us in the payment state
242
- end
243
-
244
- context 'with a permitted payment method' do
245
- it 'sets the payment amount' do
246
- post :update, params: params
247
- order.reload
248
- expect(order.state).to eq('confirm')
249
- expect(order.payments.size).to eq(1)
250
- expect(order.payments.first.amount).to eq(order.total)
251
- end
252
- end
253
-
254
- context 'with an unpermitted payment method' do
255
- before { payment_method.update!(available_to_users: false) }
256
-
257
- it 'sets the payment amount' do
258
- expect {
259
- post :update, params: params
260
- }.to raise_error(ActiveRecord::RecordNotFound)
261
-
262
- expect(order.state).to eq('payment')
263
- expect(order.payments).to be_empty
264
- end
265
- end
266
- end
267
-
268
221
  context "when in the confirm state" do
269
222
  before do
270
223
  order.update_attributes! user: user
@@ -288,7 +241,7 @@ describe Spree::CheckoutController, type: :controller do
288
241
  end
289
242
 
290
243
  it "should remove completed order from current_order" do
291
- post :update, params: { state: "confirm" }, session: { order_id: "foofah" }
244
+ post :update, params: { state: "confirm" }
292
245
  expect(assigns(:current_order)).to be_nil
293
246
  expect(assigns(:order)).to eql controller.current_order
294
247
  end
@@ -437,7 +390,7 @@ describe Spree::CheckoutController, type: :controller do
437
390
  context "When last inventory item has been purchased" do
438
391
  let(:product) { mock_model(Spree::Product, name: "Amazing Object") }
439
392
  let(:variant) { mock_model(Spree::Variant) }
440
- let(:line_item) { mock_model Spree::LineItem, insufficient_stock?: true, amount: 0 }
393
+ let(:line_item) { mock_model Spree::LineItem, insufficient_stock?: true, amount: 0, name: "Amazing Item" }
441
394
  let(:order) { create(:order) }
442
395
 
443
396
  before do
@@ -81,20 +81,20 @@ describe Spree::OrdersController, type: :controller do
81
81
  it "should render the edit view (on failure)" do
82
82
  # email validation is only after address state
83
83
  order.update_column(:state, "delivery")
84
- put :update, params: { order: { email: "" } }, session: { order_id: order.id }
84
+ put :update, params: { order: { email: "" } }
85
85
  expect(response).to render_template :edit
86
86
  end
87
87
 
88
88
  it "should redirect to cart path (on success)" do
89
89
  allow(order).to receive(:update_attributes).and_return true
90
- put :update, session: { order_id: 1 }
90
+ put :update
91
91
  expect(response).to redirect_to(spree.cart_path)
92
92
  end
93
93
 
94
94
  it "should advance the order if :checkout button is pressed" do
95
95
  allow(order).to receive(:update_attributes).and_return true
96
96
  expect(order).to receive(:next)
97
- put :update, { checkout: true }, { order_id: 1 }
97
+ put :update, params: { checkout: true }
98
98
  expect(response).to redirect_to checkout_state_path('address')
99
99
  end
100
100
  end
@@ -23,7 +23,7 @@ module Spree
23
23
  it "correctly calls the transition callback" do
24
24
  expect(order.did_transition).to be_nil
25
25
  order.line_items << FactoryGirl.create(:line_item)
26
- put :update, params: { checkout: "checkout" }, session: { order_id: 1 }
26
+ put :update, params: { checkout: "checkout" }
27
27
  expect(order.did_transition).to be true
28
28
  end
29
29
  end
@@ -13,7 +13,6 @@ describe 'products', type: :feature, caching: true do
13
13
  assert_written_to_cache("views/en/USD/spree/products/all--#{product.updated_at.utc.to_s(:number)}")
14
14
  assert_written_to_cache("views/en/USD/spree/products/#{product.id}-#{product.updated_at.utc.to_s(:number)}")
15
15
  assert_written_to_cache("views/en/spree/taxonomies/#{taxonomy.id}")
16
- assert_written_to_cache("views/en/taxons/#{taxon.updated_at.utc.to_i}")
17
16
 
18
17
  clear_cache_events
19
18
  end
@@ -8,7 +8,6 @@ describe 'taxons', type: :feature, caching: true do
8
8
  # warm up the cache
9
9
  visit spree.root_path
10
10
  assert_written_to_cache("views/en/spree/taxonomies/#{taxonomy.id}")
11
- assert_written_to_cache("views/en/taxons/#{taxon.updated_at.utc.to_i}")
12
11
 
13
12
  clear_cache_events
14
13
  end
@@ -77,9 +77,9 @@ describe "Checkout", type: :feature, inaccessible: true do
77
77
 
78
78
  # Regression test for https://github.com/spree/spree/issues/2694 and https://github.com/spree/spree/issues/4117
79
79
  context "doesn't allow bad credit card numbers" do
80
- let!(:payment_method) { create(:credit_card_payment_method) }
81
80
  before(:each) do
82
81
  order = OrderWalkthrough.up_to(:delivery)
82
+ allow(order).to receive_messages(available_payment_methods: [create(:credit_card_payment_method)])
83
83
 
84
84
  user = create(:user)
85
85
  order.user = user
@@ -180,8 +180,7 @@ describe "Checkout", type: :feature, inaccessible: true do
180
180
  end
181
181
 
182
182
  context "user has payment sources", js: true do
183
- before { Spree::PaymentMethod.all.each(&:really_destroy!) }
184
- let!(:bogus) { create(:credit_card_payment_method) }
183
+ let(:bogus) { create(:credit_card_payment_method) }
185
184
  let(:user) { create(:user) }
186
185
 
187
186
  let!(:credit_card) do
@@ -189,7 +188,9 @@ describe "Checkout", type: :feature, inaccessible: true do
189
188
  end
190
189
 
191
190
  before do
191
+ user.wallet.add(credit_card)
192
192
  order = OrderWalkthrough.up_to(:delivery)
193
+ allow(order).to receive_messages(available_payment_methods: [bogus])
193
194
 
194
195
  allow_any_instance_of(Spree::CheckoutController).to receive_messages(current_order: order)
195
196
  allow_any_instance_of(Spree::CheckoutController).to receive_messages(try_spree_current_user: user)