spree_minicart 1.1.0 → 1.1.1

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.
@@ -1,2 +1 @@
1
- ---
2
- BUNDLE_DISABLE_SHARED_GEMS: '1'
1
+ --- {}
data/README.md CHANGED
@@ -18,7 +18,7 @@ To install Spree Minicart, just add the following to your Gemfile:
18
18
  gem 'spree_minicart', '~> 1.0.0'
19
19
 
20
20
  # Spree 1.1.X
21
- gem 'spree_size_chart', '~> 1.1.0'
21
+ gem 'spree_minicart', '~> 1.1.0'
22
22
  ```
23
23
 
24
24
  Now, bundle up with:
@@ -1,5 +1,13 @@
1
1
  module Spree
2
2
  OrdersController.class_eval do
3
+ before_filter :set_current_order, :only => [:populate]
4
+
3
5
  respond_to :js, :only => [:populate, :update]
6
+
7
+ ssl_allowed :populate, :update
8
+
9
+ def set_current_order
10
+ current_order(true)
11
+ end
4
12
  end
5
13
  end
@@ -0,0 +1,21 @@
1
+ module Spree
2
+ BaseHelper.module_eval do
3
+
4
+ # removed current_page? check because link_to_cart is called everywhere by spree_minicart
5
+ def link_to_cart(text = nil)
6
+ text = text ? h(text) : t('cart')
7
+ css_class = nil
8
+
9
+ if current_order.nil? or current_order.line_items.empty?
10
+ text = "#{text}: (#{t('empty')})"
11
+ css_class = 'empty'
12
+ else
13
+ text = "#{text}: (#{current_order.item_count}) <span class='amount'>#{order_subtotal(current_order)}</span>".html_safe
14
+ css_class = 'full'
15
+ end
16
+
17
+ link_to text, cart_path, :class => css_class
18
+ end
19
+
20
+ end
21
+ end
@@ -1,8 +1,7 @@
1
- <% @minicart_order ||= current_order(true) %>
2
1
  <div id="minicart">
3
2
  <% @body_id = 'cart' %>
4
3
 
5
- <% if @minicart_order.line_items.empty? %>
4
+ <% if current_order.nil? || current_order.line_items.empty? %>
6
5
 
7
6
  <div data-hook="empty_minicart">
8
7
  <p><%= t(:your_cart_is_empty) %></p>
@@ -13,11 +12,11 @@
13
12
  <div data-hook="outside_minicart_form">
14
13
  <div id="minicart-details" data-hook="minicart_details" class="clearfix">
15
14
  <p>
16
- <span><%= t(:subtotal) %>: <span class="order-total"><%= order_subtotal(@minicart_order) %></span></span>
15
+ <span><%= t(:subtotal) %>: <span class="order-total"><%= order_subtotal(current_order) %></span></span>
17
16
  <%= link_to t(:checkout), checkout_path, :class => 'button checkout primary', :id => 'checkout-link' %>
18
17
  </p>
19
18
  </div>
20
- <%= form_for @minicart_order, :url => update_cart_path, :html => {:id => 'update-minicart'}, :remote => true do |order_form| %>
19
+ <%= form_for current_order, :url => update_cart_path, :html => {:id => 'update-minicart'}, :remote => true do |order_form| %>
21
20
  <div data-hook="inside_minicart_form">
22
21
 
23
22
  <div data-hook="minicart_items" class="clearfix">
@@ -11,7 +11,7 @@
11
11
  <span><%= link_to variant.product.name, product_path(variant.product) %></span>
12
12
  <span><%= "x#{line_item.quantity}" -%></span>
13
13
  <%= variant.options_text %>
14
- <% if @minicart_order.insufficient_stock_lines.include? line_item %>
14
+ <% if current_order.insufficient_stock_lines.include? line_item %>
15
15
  <span class="out-of-stock">
16
16
  <%= variant.in_stock? ? t(:insufficient_stock, :on_hand => variant.on_hand) : t(:out_of_stock) %><br />
17
17
  </span>
@@ -1,3 +1,3 @@
1
1
  module SpreeMinicart
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.1"
3
3
  end
@@ -1,12 +1,17 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  feature "minicart", :js => true do
4
- background { @product = Factory(:product, :name => "ror mug", :price => 30) }
4
+ background { @product = FactoryGirl.create(:product, :name => "ror mug", :price => 30) }
5
5
 
6
6
  scenario "customer should be able to add and delete a product in the minicart" do
7
7
  visit spree.products_path
8
+
8
9
  click_link("ror mug")
9
10
 
11
+ within("li#link-to-cart") do
12
+ page.should have_content("Cart: (Empty)")
13
+ end
14
+
10
15
  click_button "Add To Cart"
11
16
 
12
17
  within("#link-to-cart a") do
@@ -26,6 +31,52 @@ feature "minicart", :js => true do
26
31
  click_link "Delete"
27
32
  end
28
33
 
34
+ within("li#link-to-cart") do
35
+ page.should have_content("Cart: (Empty)")
36
+ end
37
+
38
+ URI.parse(current_url).path.should =~ /products/
39
+
40
+ within("#minicart") do
41
+ page.should_not have_content("ror mug")
42
+ page.should_not have_content("$30")
43
+ end
44
+
45
+ end
46
+
47
+ scenario "delete a line item with multiple quantity should totally remove from minicart" do
48
+ visit spree.products_path
49
+ click_link("ror mug")
50
+
51
+ within("li#link-to-cart") do
52
+ page.should have_content("Cart: (Empty)")
53
+ end
54
+
55
+ click_button "Add To Cart"
56
+ click_button "Add To Cart"
57
+
58
+ within("#link-to-cart a") do
59
+ page.should have_content("(2)")
60
+ end
61
+
62
+ within("#minicart") do
63
+ page.should have_content("ror mug")
64
+ page.should have_content("$30")
65
+ end
66
+
67
+ page.execute_script '$("#minicart-items li").trigger("mouseenter")'
68
+
69
+ within "li div.minicart-actions" do
70
+ page.should have_content("Delete")
71
+ # manually sliding down the minicart actions, dont know why its not working
72
+ page.execute_script '$("#minicart-items li div.minicart-actions").slideDown()'
73
+ click_link "Delete"
74
+ end
75
+
76
+ within("li#link-to-cart") do
77
+ page.should have_content("Cart: (Empty)")
78
+ end
79
+
29
80
  URI.parse(current_url).path.should =~ /products/
30
81
 
31
82
  within("#minicart") do
@@ -41,4 +92,10 @@ feature "minicart", :js => true do
41
92
  click_button "Add To Cart"
42
93
  URI.parse(current_url).path.should == "/cart"
43
94
  end
95
+
96
+ scenario 'minicart should not create new order for every visitor', :js => false do
97
+ expect {
98
+ visit spree.products_path
99
+ }.to_not change(Spree::Order, :count)
100
+ end
44
101
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_minicart
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-05 00:00:00.000000000 Z
12
+ date: 2012-08-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: spree_core
16
- requirement: &2152731160 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 1.1.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2152731160
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 1.1.0
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: spree_sample
27
- requirement: &2152730600 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,21 +37,31 @@ dependencies:
32
37
  version: '0'
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *2152730600
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: capybara
38
- requirement: &2152729680 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
- - - =
51
+ - - '='
42
52
  - !ruby/object:Gem::Version
43
53
  version: 1.0.1
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *2152729680
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.0.1
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: factory_girl
49
- requirement: &2152729180 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '0'
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *2152729180
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: ffaker
60
- requirement: &2152728720 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: '0'
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *2152728720
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: rspec-rails
71
- requirement: &2152728200 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ~>
@@ -76,10 +101,15 @@ dependencies:
76
101
  version: '2.7'
77
102
  type: :development
78
103
  prerelease: false
79
- version_requirements: *2152728200
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: '2.7'
80
110
  - !ruby/object:Gem::Dependency
81
111
  name: sqlite3
82
- requirement: &2152727720 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
83
113
  none: false
84
114
  requirements:
85
115
  - - ! '>='
@@ -87,10 +117,15 @@ dependencies:
87
117
  version: '0'
88
118
  type: :development
89
119
  prerelease: false
90
- version_requirements: *2152727720
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
91
126
  - !ruby/object:Gem::Dependency
92
127
  name: sass-rails
93
- requirement: &2152727260 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
94
129
  none: false
95
130
  requirements:
96
131
  - - ! '>='
@@ -98,10 +133,15 @@ dependencies:
98
133
  version: '0'
99
134
  type: :development
100
135
  prerelease: false
101
- version_requirements: *2152727260
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
102
142
  - !ruby/object:Gem::Dependency
103
143
  name: debugger
104
- requirement: &2152726840 !ruby/object:Gem::Requirement
144
+ requirement: !ruby/object:Gem::Requirement
105
145
  none: false
106
146
  requirements:
107
147
  - - ! '>='
@@ -109,7 +149,12 @@ dependencies:
109
149
  version: '0'
110
150
  type: :development
111
151
  prerelease: false
112
- version_requirements: *2152726840
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
113
158
  description: Spree Minicart allows customer to add/remove an item from their cart
114
159
  without ever leaving the page they're on.Let your customers preview their cart before
115
160
  they start the checkout process.
@@ -132,6 +177,7 @@ files:
132
177
  - app/assets/stylesheets/admin/spree_minicart.css
133
178
  - app/assets/stylesheets/store/spree_minicart.css
134
179
  - app/controllers/orders_controller_decorator.rb
180
+ - app/helpers/spree/base_helper_decorator.rb
135
181
  - app/overrides/layout.rb
136
182
  - app/overrides/minicart.rb
137
183
  - app/views/spree/orders/populate.js.erb
@@ -171,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
171
217
  requirements:
172
218
  - none
173
219
  rubyforge_project:
174
- rubygems_version: 1.8.17
220
+ rubygems_version: 1.8.24
175
221
  signing_key:
176
222
  specification_version: 3
177
223
  summary: Spree Minicart displays a minicart in your spree store