spree_favorite_products 1.0.1 → 2.0.0

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.
data/Gemfile CHANGED
@@ -1,9 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Provides basic authentication functionality for testing parts of your engine
4
- gem 'spree', '2.0.3'
5
- gem 'rails', '3.2.15'
6
- gem 'spree_auth_devise', github: 'spree/spree_auth_devise', branch: '2-0-stable'
4
+ gem 'spree', '2.1.0'
5
+ gem 'spree_auth_devise', github: 'spree/spree_auth_devise', branch: '2-1-stable'
7
6
  gem 'mysql2'
8
7
 
9
8
  group :test do
data/README.md CHANGED
@@ -2,6 +2,7 @@ SpreeFavoriteProducts [![Code Climate](https://codeclimate.com/github/vinsol/spr
2
2
  =====================
3
3
 
4
4
  This extension adds the following features:
5
+
5
6
  1. Adds a link 'Mark as favorite' on product detail page.
6
7
  2. Favorite Products tab on header
7
8
  3. Favorite Products tab in admin section
@@ -15,6 +16,12 @@ Add spree_favorite_products to your Gemfile:
15
16
  gem 'spree_favorite_products'
16
17
  ```
17
18
 
19
+ If you're still using Spree 2.0.x, you should do this instead:
20
+
21
+ ```ruby
22
+ gem 'spree_favorite_products', '1.0.0'
23
+ ```
24
+
18
25
  Bundle your dependencies and run the installation generator:
19
26
 
20
27
  ```shell
@@ -5,7 +5,7 @@ module Spree
5
5
  before_filter :find_favorite_product, :only => :destroy
6
6
 
7
7
  def index
8
- @favorite_products = spree_current_user.favorite_products.page(params[:page]).per(Spree::Config.favorite_products_per_page)
8
+ @favorite_products = spree_current_user.favorite_products
9
9
  end
10
10
 
11
11
  def create
@@ -28,7 +28,7 @@ module Spree
28
28
 
29
29
  private
30
30
  def find_favorite_product
31
- @favorite = spree_current_user.favorites.joins(:product).where(:spree_products => {:id => params[:id]}).first
31
+ @favorite = spree_current_user.favorites.joins(:product).readonly(false).where(:spree_products => {:permalink => params[:id]}).first
32
32
  end
33
33
  end
34
34
  end
@@ -1,6 +1,5 @@
1
1
  module Spree
2
2
  class Favorite < ActiveRecord::Base
3
- attr_accessible :product_id
4
3
  belongs_to :product
5
4
  belongs_to :user
6
5
  validates :user_id, :product_id, :presence => true
@@ -1,8 +1,4 @@
1
1
  Spree::User.class_eval do
2
2
  has_many :favorites
3
3
  has_many :favorite_products, :through => :favorites, :class_name => 'Spree::Product', :source => 'product'
4
-
5
- def has_favorite_product?(product_id)
6
- favorites.exists? :product_id => product_id
7
- end
8
4
  end
@@ -2,11 +2,5 @@ Deface::Override.new(
2
2
  :virtual_path => 'spree/products/show',
3
3
  :name => 'add_link_to_mark_product_as_favorite',
4
4
  :insert_after => "div[itemprop='description']",
5
- :text => %Q{
6
- <% if spree_user_signed_in? && spree_current_user.has_favorite_product?(@product.id) %>
7
- <%= link_to Spree.t(:unmark_as_favorite), favorite_product_path(:id => @product.id), :method => :delete, :remote => true, :class => 'favorite_link' %>
8
- <% else %>
9
- <%= link_to Spree.t(:mark_as_favorite), favorite_products_path(:id => @product.id), :method => :post, :remote => spree_user_signed_in?, :class => 'favorite_link' %>
10
- <% end %>
11
- }
5
+ :text => "<%= link_to 'Mark as favorite', favorite_products_path(:id => @product.id), :method => :post, :remote => spree_user_signed_in? %>"
12
6
  )
@@ -1,4 +1 @@
1
- <% if @success %>
2
- $('.favorite_link').attr('href', '<%= favorite_product_path(:id => params[:id]) %>').data('method', 'delete').text('<%= Spree.t(:unmark_as_favorite) %>')
3
- <% end %>
4
1
  alert("<%=j @message%>");
@@ -1,11 +1,6 @@
1
1
  <% if @success %>
2
- if($('.favorite_link').length) {
3
- $('.favorite_link').attr('href', '<%= favorite_products_path(:id => @favorite.product_id) %>').data('method', 'post').text('<%= Spree.t(:mark_as_favorite) %>');
4
- alert('Successfully unmarked as favorite');
5
- } else {
6
- $("#favorite_product_<%= @favorite.product_id%>").remove();
7
- alert("Successfully removed favorite product from your list");
8
- }
2
+ $("#favorite_product_<%= @favorite.product_id%>").remove();
3
+ alert("Successfully removed favorite product from your list")
9
4
  <% else %>
10
- alert("Could not remove product form your list");
5
+ alert("Could not remove product form your list")
11
6
  <% end %>
@@ -14,7 +14,7 @@
14
14
  <tr class="<%= cycle('even', 'odd') %>" id="favorite_product_<%= product.id %>">
15
15
  <td class="favorite-product-image"><%= link_to small_image(product), product_path(product) %></td>
16
16
  <td class="favorite-product-name"><%= product.name %></td>
17
- <td class="favorite-product-remove"><%= link_to 'Remove', favorite_product_path(:id => product.id), :method => :delete, :remote => true %>
17
+ <td class="favorite-product-remove"><%= link_to 'Remove', favorite_product_path(product), :method => :delete, :remote => true %>
18
18
  </tr>
19
19
  <% end %>
20
20
  </tbody>
@@ -22,6 +22,4 @@
22
22
  <% else %>
23
23
  <p><%= Spree.t(:you_have_no_favorite_products_yet) %></p>
24
24
  <% end %>
25
-
26
- <%= paginate @favorite_products %>
27
25
  </div>
@@ -3,8 +3,3 @@
3
3
 
4
4
  en:
5
5
  hello: "Hello world"
6
- spree:
7
- favorite_products_settings: "Favorite Products Settings"
8
- favorite_products_per_page: "Per Page"
9
- mark_as_favorite: "Mark as favorite"
10
- unmark_as_favorite: "Unmark as favorite"
@@ -40,7 +40,7 @@ describe Spree::Admin::FavoriteProductsController do
40
40
 
41
41
  it "renders favorite products template" do
42
42
  send_request
43
- response.should render_template(:favorite)
43
+ response.should render_template(:index)
44
44
  end
45
45
  end
46
46
 
@@ -11,7 +11,12 @@ describe Spree::FavoriteProductsController do
11
11
 
12
12
  shared_examples_for "request which finds favorite product" do
13
13
  it "finds favorite product" do
14
- @current_user_favorites.should_receive(:where).with(:spree_products => {:id => 'permalink'})
14
+ @current_user_favorites.should_receive(:where).with(:spree_products => {:permalink => 'permalink'})
15
+ send_request
16
+ end
17
+
18
+ it "sets readonly to false" do
19
+ @current_user_favorites.should_receive(:readonly).with(false)
15
20
  send_request
16
21
  end
17
22
 
@@ -79,15 +84,12 @@ describe Spree::FavoriteProductsController do
79
84
 
80
85
  describe 'GET index' do
81
86
  def send_request
82
- get :index, :page => 'current_page', :use_route => 'spree'
87
+ get :index, :use_route => 'spree'
83
88
  end
84
89
 
85
90
  before(:each) do
86
- @favorite_products = double('favorite_products')
87
- @favorite_products.stub(:page).and_return(@favorite_products)
88
- @favorite_products.stub(:per).and_return(@favorite_products)
89
- Spree::Config.stub(:favorite_products_per_page).and_return('favorite_products_per_page')
90
- @user = mock_model(Spree::User, :favorite_products => @favorite_products, :generate_spree_api_key! => false, :last_incomplete_spree_order => nil)
91
+ @favorite_product = mock_model(Spree::Product)
92
+ @user = mock_model(Spree::User, :favorite_products => [@favorite_product], :generate_spree_api_key! => false, :last_incomplete_spree_order => nil)
91
93
  controller.stub(:authenticate_spree_user!).and_return(true)
92
94
  controller.stub(:spree_current_user).and_return(@user)
93
95
  end
@@ -104,17 +106,7 @@ describe Spree::FavoriteProductsController do
104
106
 
105
107
  it "assigns @favorite_products" do
106
108
  send_request
107
- assigns(:favorite_products).should eq(@favorite_products)
108
- end
109
-
110
- it "paginates favorite products" do
111
- @favorite_products.should_receive(:page).with('current_page')
112
- send_request
113
- end
114
-
115
- it "shows Spree::Config.favorite_products_per_page" do
116
- @favorite_products.should_receive(:per).with('favorite_products_per_page')
117
- send_request
109
+ assigns(:favorite_products).should eq([@favorite_product])
118
110
  end
119
111
  end
120
112
 
@@ -127,6 +119,7 @@ describe Spree::FavoriteProductsController do
127
119
  @favorite = mock_model(Spree::Favorite)
128
120
  @current_user_favorites = double('spree_favorites')
129
121
  @current_user_favorites.stub(:where).and_return([@favorite])
122
+ @current_user_favorites.stub(:readonly).and_return(@current_user_favorites)
130
123
  @favorites = double('spree_favorites')
131
124
  @favorites.stub(:joins).with(:product).and_return(@current_user_favorites)
132
125
  @user = mock_model(Spree::User, :favorites => @favorites, :generate_spree_api_key! => false, :last_incomplete_spree_order => nil)
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Spree::Favorite do
4
- it { should allow_mass_assignment_of :product_id }
5
4
  it { should belong_to(:product) }
6
5
  it { should belong_to(:user) }
7
6
  it { should validate_uniqueness_of(:product_id).scoped_to(:user_id).with_message("already marked as favorite") }
@@ -1,28 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Spree::User do
4
-
5
- before(:each) do
6
- @user = Spree::User.create! :email => 'test@example.com', :password => 'spree123'
7
- @product1 = Spree::Product.create! :name => 'product1', :price => 100, :shipping_category_id => 1
8
- @product2 = Spree::Product.create! :name => 'product2', :price => 100, :shipping_category_id => 1
9
- favorite = Spree::Favorite.new
10
- favorite.product_id = @product1.id
11
- favorite.user_id = @user.id
12
- favorite.save!
13
- end
14
-
15
4
  it { should have_many(:favorites) }
16
5
  it { should have_many(:favorite_products).through(:favorites).class_name('Spree::Product') }
17
-
18
-
19
- describe "has_favorite_product?" do
20
- context "when product in user's favorite products" do
21
- it { @user.has_favorite_product?(@product1.id).should be_true }
22
- end
23
-
24
- context 'when product is not in users favorite products' do
25
- it { @user.has_favorite_product?(@product2.id).should be_false }
26
- end
27
- end
28
6
  end
@@ -2,7 +2,7 @@
2
2
  Gem::Specification.new do |s|
3
3
  s.platform = Gem::Platform::RUBY
4
4
  s.name = 'spree_favorite_products'
5
- s.version = '1.0.1'
5
+ s.version = '2.0.0'
6
6
  s.summary = 'users can mark product as favorite'
7
7
  s.description = 'This extension adds the following features: 1. Adds a link Mark as favorite on product detail page. 2. Favorite Products tab on header 3. Favorite Products tab in admin section'
8
8
  s.required_ruby_version = '>= 1.9.3'
@@ -17,5 +17,5 @@ Gem::Specification.new do |s|
17
17
  s.require_path = 'lib'
18
18
  s.requirements << 'none'
19
19
 
20
- s.add_dependency 'spree_core', '~> 2.0.3'
20
+ s.add_dependency 'spree_core', '~> 2.1.0'
21
21
  end
metadata CHANGED
@@ -1,47 +1,40 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: spree_favorite_products
3
- version: !ruby/object:Gem::Version
4
- hash: 21
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
5
  prerelease:
6
- segments:
7
- - 1
8
- - 0
9
- - 1
10
- version: 1.0.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Mohit Bansal
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2014-03-07 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2014-02-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: spree_core
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
18
+ requirements:
26
19
  - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 9
29
- segments:
30
- - 2
31
- - 0
32
- - 3
33
- version: 2.0.3
20
+ - !ruby/object:Gem::Version
21
+ version: 2.1.0
34
22
  type: :runtime
35
- version_requirements: *id001
36
- description: "This extension adds the following features: 1. Adds a link Mark as favorite on product detail page. 2. Favorite Products tab on header 3. Favorite Products tab in admin section"
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 2.1.0
30
+ description: ! 'This extension adds the following features: 1. Adds a link Mark as
31
+ favorite on product detail page. 2. Favorite Products tab on header 3. Favorite
32
+ Products tab in admin section'
37
33
  email: info@vinsol.com
38
34
  executables: []
39
-
40
35
  extensions: []
41
-
42
36
  extra_rdoc_files: []
43
-
44
- files:
37
+ files:
45
38
  - .rspec
46
39
  - .travis.yml
47
40
  - Gemfile
@@ -56,12 +49,10 @@ files:
56
49
  - app/assets/stylesheets/store/spree_favorite_products.css
57
50
  - app/controllers/spree/admin/favorite_products_controller.rb
58
51
  - app/controllers/spree/favorite_products_controller.rb
59
- - app/models/spree/app_configuration_decorator.rb
60
52
  - app/models/spree/favorite.rb
61
53
  - app/models/spree/product_decorator.rb
62
54
  - app/models/spree/user_decorator.rb
63
55
  - app/overrides/.DS_Store
64
- - app/overrides/add_favorite_products_per_page_configuration.rb
65
56
  - app/overrides/add_favorite_products_tab.rb
66
57
  - app/overrides/add_link_to_mark_product_as_favorite.rb
67
58
  - app/overrides/add_link_to_users_favorite_products.rb
@@ -82,46 +73,35 @@ files:
82
73
  - script/rails
83
74
  - spec/controllers/spree/admin/favorite_products_controller_spec.rb
84
75
  - spec/controllers/spree/favorite_products_controller_spec.rb
85
- - spec/models/spree/app_configuration_decorator_spec.rb
86
76
  - spec/models/spree/favorite_spec.rb
87
77
  - spec/models/spree/product_decorator_spec.rb
88
78
  - spec/models/spree/user_decorator_spec.rb
89
79
  - spec/spec_helper.rb
90
80
  - spree_favorite_products.gemspec
91
81
  homepage: http://vinsol.com
92
- licenses:
82
+ licenses:
93
83
  - MIT
94
84
  post_install_message:
95
85
  rdoc_options: []
96
-
97
- require_paths:
86
+ require_paths:
98
87
  - lib
99
- required_ruby_version: !ruby/object:Gem::Requirement
88
+ required_ruby_version: !ruby/object:Gem::Requirement
100
89
  none: false
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- hash: 53
105
- segments:
106
- - 1
107
- - 9
108
- - 3
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
109
93
  version: 1.9.3
110
- required_rubygems_version: !ruby/object:Gem::Requirement
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
111
95
  none: false
112
- requirements:
113
- - - ">="
114
- - !ruby/object:Gem::Version
115
- hash: 3
116
- segments:
117
- - 0
118
- version: "0"
119
- requirements:
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ requirements:
120
101
  - none
121
102
  rubyforge_project:
122
- rubygems_version: 1.8.24
103
+ rubygems_version: 1.8.25
123
104
  signing_key:
124
105
  specification_version: 3
125
106
  summary: users can mark product as favorite
126
107
  test_files: []
127
-
@@ -1,3 +0,0 @@
1
- Spree::AppConfiguration.class_eval do
2
- preference :favorite_products_per_page, :integer, default: 10
3
- end
@@ -1,16 +0,0 @@
1
- Deface::Override.new(
2
- :virtual_path => 'spree/admin/general_settings/edit',
3
- :name => 'add_favorite_products_per_page_configuration',
4
- :insert_after => "#preferences .row",
5
- :text => %Q{
6
- <div class="row">
7
- <fieldset class="no-border-bottom">
8
- <legend align="center"><%= Spree.t(:favorite_products_settings) %></legend>
9
- <div class="field">
10
- <%= label_tag :favorite_products_per_page, Spree.t(:favorite_products_per_page) %><br>
11
- <%= text_field_tag :favorite_products_per_page, Spree::Config[:favorite_products_per_page], :size => 3 %>
12
- </div>
13
- </fieldset>
14
- </div>
15
- }
16
- )
@@ -1,3 +0,0 @@
1
- describe Spree::AppConfiguration do
2
- it { Spree::Config.favorite_products_per_page.should eq 10 }
3
- end