spree_my_favourites 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: bf076b39fb36075a87aeebe46b86c7265eb5aff2
4
+ data.tar.gz: ddd2896e8a7161de3c610ba822ad7b70e20c276f
5
+ SHA512:
6
+ metadata.gz: 20f2aaed6488a94baffec1ae751229db9bed96c6a000cd275573d1b44d970d7709ccb35b4d8ec64c10c677a6c222f0672f12683475167fcd7fa46beb5f84d23f
7
+ data.tar.gz: bd1a2d95c15d8821ee3eb03ba9d60b4b8924dd82d7ebe3d0adca19631c1809d055572a48b23f8d54987fc986ca7e5b271ae0b3d4fd47a0ccf99858cc94a6d1a2
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ \#*
2
+ *~
3
+ .#*
4
+ .DS_Store
5
+ .idea
6
+ .project
7
+ .sass-cache
8
+ coverage
9
+ Gemfile.lock
10
+ tmp
11
+ nbproject
12
+ pkg
13
+ *.swp
14
+ spec/dummy
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Provides basic authentication functionality for testing parts of your engine
4
+ gem 'spree_auth_devise', github: 'spree/spree_auth_devise', branch: '2-2-stable'
5
+ gem 'haml'
6
+ gem 'debugger'
7
+
8
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,26 @@
1
+ Copyright (c) 2014 [name of plugin creator]
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification,
5
+ are permitted provided that the following conditions are met:
6
+
7
+ * Redistributions of source code must retain the above copyright notice,
8
+ this list of conditions and the following disclaimer.
9
+ * Redistributions in binary form must reproduce the above copyright notice,
10
+ this list of conditions and the following disclaimer in the documentation
11
+ and/or other materials provided with the distribution.
12
+ * Neither the name Spree nor the names of its contributors may be used to
13
+ endorse or promote products derived from this software without specific
14
+ prior written permission.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md ADDED
@@ -0,0 +1,21 @@
1
+ SpreeMyFavourites
2
+ =================
3
+
4
+ Adds a My Favourites page to the My Account section of spree frontend. At the moment, the favourites list is
5
+ just all the items a customer has ordered, sorted by the number of times they have been ordered.
6
+
7
+ Installation
8
+ ------------
9
+
10
+ Add spree_my_favourites to your Gemfile:
11
+
12
+ ```ruby
13
+ gem 'spree_my_favourites'
14
+ ```
15
+
16
+ Bundle your dependencies and run the installation generator:
17
+
18
+ ```shell
19
+ bundle
20
+ bundle exec rails g spree_my_favourites:install
21
+ ```
data/Rakefile ADDED
@@ -0,0 +1,15 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core/rake_task'
5
+ require 'spree/testing_support/extension_rake'
6
+
7
+ RSpec::Core::RakeTask.new
8
+
9
+ task :default => [:spec]
10
+
11
+ desc 'Generates a dummy app for testing'
12
+ task :test_app do
13
+ ENV['LIB_NAME'] = 'spree_my_favourites'
14
+ Rake::Task['extension:test_app'].invoke
15
+ end
@@ -0,0 +1 @@
1
+ //= require admin/spree_backend
@@ -0,0 +1 @@
1
+ //= require store/spree_frontend
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require admin/spree_backend
3
+ */
@@ -0,0 +1,39 @@
1
+ #my-account {
2
+
3
+ #account-nav {
4
+ margin: 0;
5
+ }
6
+
7
+ nav ul {
8
+ list-style: none;
9
+ margin-bottom: 0;
10
+
11
+ li {
12
+ background: #f0f0f0;
13
+ margin: 0;
14
+ padding: 10px 15px;
15
+ display: inline-block;
16
+ }
17
+
18
+ li.selected {
19
+ background: #d9d9db;
20
+ }
21
+ }
22
+
23
+ .account-my-favourites {
24
+
25
+ table {
26
+
27
+ width: 100%;
28
+
29
+ th.favourite-description, td.favourite-description {
30
+ width: 70%;
31
+ }
32
+
33
+ th.favourite-number-orders, td.favourite-number-orders {
34
+ width: 30%;
35
+ text-align: center;
36
+ }
37
+ }
38
+ }
39
+ }
@@ -0,0 +1,5 @@
1
+ /*
2
+ *= require spree/frontend
3
+ *= require_self
4
+ *= require_tree
5
+ */
@@ -0,0 +1,27 @@
1
+ module Spree
2
+ module Account
3
+ class FavouritesController < Spree::StoreController
4
+
5
+ def index
6
+ @user = try_spree_current_user
7
+ if @user
8
+ line_items = Spree::LineItem.includes(:variant, order: [:user]).where(['spree_orders.user_id = ?', @user.id]).all
9
+ ordered_items = line_items.inject({}) do |result, line_item|
10
+ if result[line_item.variant.sku]
11
+ result[line_item.variant.sku][:number_of_orders] = result[line_item.variant.sku][:number_of_orders] + 1
12
+ else
13
+ result[line_item.variant.sku] = {variant: line_item.variant, number_of_orders: 1}
14
+ end
15
+ result
16
+ end
17
+
18
+ @favourites = ordered_items.values
19
+ @favourites = @favourites.sort_by{|favourite| favourite[:number_of_orders]}.reverse
20
+ else
21
+ unauthorized
22
+ end
23
+ end
24
+
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,20 @@
1
+ module Spree
2
+ module Account
3
+ class OrdersController < Spree::StoreController
4
+
5
+ def index
6
+ if try_spree_current_user
7
+ @user = try_spree_current_user
8
+ @orders = @user.orders.complete.order('completed_at desc')
9
+ else
10
+ unauthorized
11
+ end
12
+ end
13
+
14
+ def accurate_title
15
+ Spree.t(:my_account)
16
+ end
17
+
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,17 @@
1
+ #my-account
2
+ = render partial: 'spree/shared/account_header', locals: {selected: :favourites}
3
+
4
+ .account-my-favourites(data-hook="account_my_favourites")
5
+ - if @favourites.present?
6
+ %table.favourites-summary
7
+ %thead
8
+ %tr
9
+ %th.favourite-description= Spree.t(:name)
10
+ %th.favourite-number-orders= Spree.t(:number_of_orders)
11
+ %tbody
12
+ - @favourites.each do |favourite|
13
+ %tr
14
+ %td.favourite-description= favourite[:variant].name
15
+ %td.favourite-number-orders= favourite[:number_of_orders]
16
+ - else
17
+ %p= Spree.t(:you_have_no_orders_yet)
@@ -0,0 +1,3 @@
1
+ #my-account
2
+ = render partial: 'spree/shared/account_header', locals: {selected: :orders}
3
+ = render partial: 'spree/shared/user_orders'
@@ -0,0 +1,21 @@
1
+ %h1= accurate_title
2
+
3
+ .account-summary(data-hook="account_summary")
4
+ %dl#user-info
5
+ %dt= Spree.t(:email)
6
+ %dd
7
+ = @user.email
8
+ (
9
+ = link_to Spree.t(:edit), spree.edit_account_path
10
+ )
11
+
12
+ .row#account-nav
13
+ .columns.six.alpha.omega
14
+ %nav
15
+ %ul
16
+ %li{class: "#{selected == :orders ? 'selected' : ''}"}
17
+ %h3
18
+ = link_to Spree.t(:my_orders), account_orders_path
19
+ %li{class: "#{selected == :favourites ? 'selected' : ''}"}
20
+ %h3
21
+ = link_to Spree.t(:my_favourites), account_favourites_path
@@ -0,0 +1,22 @@
1
+ .account-my-orders(data-hook="account_my_orders")
2
+ - if @orders.present?
3
+ %table.order-summary
4
+ %thead
5
+ %tr
6
+ %th.order-number= I18n.t(:number, :scope => 'activerecord.attributes.spree/order')
7
+ %th.order-date= Spree.t(:date)
8
+ %th.order-status= Spree.t(:status)
9
+ %th.order-payment-state= Spree.t(:payment_state)
10
+ %th.order-shipment-state= Spree.t(:shipment_state)
11
+ %th.order-total= Spree.t(:total)
12
+ %tbody
13
+ - @orders.each do |order|
14
+ %tr
15
+ %td.order-number= link_to order.number, order_url(order)
16
+ %td.order-date= l order.completed_at.to_date
17
+ %td.order-status= Spree.t("order_state.#{order.state}").titleize
18
+ %td.order-payment-state= Spree.t("payment_states.#{order.payment_state}").titleize if order.payment_state
19
+ %td.order-shipment-state= Spree.t("shipment_states.#{order.shipment_state}").titleize if order.shipment_state
20
+ %td.order-total= order.display_total
21
+ - else
22
+ %p= Spree.t(:you_have_no_orders_yet)
@@ -0,0 +1,3 @@
1
+ #my-account
2
+ = render partial: 'spree/shared/account_header', locals: {selected: :orders}
3
+ = render partial: 'spree/shared/user_orders'
data/bin/rails ADDED
@@ -0,0 +1,7 @@
1
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
2
+
3
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
4
+ ENGINE_PATH = File.expand_path('../../lib/spree_my_favourites/engine', __FILE__)
5
+
6
+ require 'rails/all'
7
+ require 'rails/engine/commands'
@@ -0,0 +1,5 @@
1
+ # Sample localization file for English. Add more files in this directory for other locales.
2
+ # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
+
4
+ en:
5
+ hello: "Hello world"
data/config/routes.rb ADDED
@@ -0,0 +1,8 @@
1
+ Spree::Core::Engine.routes.draw do
2
+ # Add your extension routes here
3
+ namespace :account do
4
+ resources :orders, only: [:index]
5
+ resources :favourites, only: [:index]
6
+ end
7
+
8
+ end
@@ -0,0 +1,29 @@
1
+ module SpreeMyFavourites
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+
5
+ class_option :auto_run_migrations, :type => :boolean, :default => false
6
+
7
+ def add_javascripts
8
+ append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/spree_my_favourites\n"
9
+ end
10
+
11
+ def add_stylesheets
12
+ inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/spree_my_favourites\n", :before => /\*\//, :verbose => true
13
+ end
14
+
15
+ def add_migrations
16
+ run 'bundle exec rake railties:install:migrations FROM=spree_my_favourites'
17
+ end
18
+
19
+ def run_migrations
20
+ run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask 'Would you like to run the migrations now? [Y/n]')
21
+ if run_migrations
22
+ run 'bundle exec rake db:migrate'
23
+ else
24
+ puts 'Skipping rake db:migrate, don\'t forget to run it!'
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,22 @@
1
+ module SpreeMyFavourites
2
+ class Engine < Rails::Engine
3
+ require 'spree/core'
4
+ isolate_namespace Spree
5
+ engine_name 'spree_my_favourites'
6
+
7
+ config.autoload_paths += %W(#{config.root}/lib)
8
+
9
+ # use rspec for tests
10
+ config.generators do |g|
11
+ g.test_framework :rspec
12
+ end
13
+
14
+ def self.activate
15
+ Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
16
+ Rails.configuration.cache_classes ? require(c) : load(c)
17
+ end
18
+ end
19
+
20
+ config.to_prepare &method(:activate).to_proc
21
+ end
22
+ end
@@ -0,0 +1,6 @@
1
+ FactoryGirl.define do
2
+ # Define your Spree extensions Factories within this file to enable applications, and other extensions to use and override them.
3
+ #
4
+ # Example adding this to your spec_helper will load these Factories for use:
5
+ # require 'spree_my_favourites/factories'
6
+ end
@@ -0,0 +1,2 @@
1
+ require 'spree_core'
2
+ require 'spree_my_favourites/engine'
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Account::FavouritesController do
4
+
5
+ describe "index" do
6
+
7
+ let(:complete_orders) { double(Array) }
8
+ let(:user_orders) { double(Array, complete: complete_orders) }
9
+ let(:user) { mock_model Spree::User, :last_incomplete_spree_order => nil, :has_spree_role? => true, :spree_api_key => 'fake', :orders => user_orders }
10
+
11
+ before :each do
12
+ controller.stub :spree_current_user => user
13
+ controller.stub :check_authorization
14
+ end
15
+
16
+ it 'should redirect to login if user is not logged in' do
17
+ controller.stub(:spree_current_user).and_return nil
18
+ spree_get :index
19
+ response.status.should == 401
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Account::OrdersController do
4
+
5
+ describe "index" do
6
+
7
+ let(:sorted_orders) { double(Array) }
8
+ let(:complete_orders) { double(Array, order: sorted_orders) }
9
+ let(:user_orders) { double(Array, complete: complete_orders) }
10
+ let(:user) { mock_model Spree::User, :last_incomplete_spree_order => nil, :has_spree_role? => true, :spree_api_key => 'fake', :orders => user_orders }
11
+
12
+ before :each do
13
+ controller.stub :spree_current_user => user
14
+ controller.stub :check_authorization
15
+ end
16
+
17
+ it 'should render current users orders' do
18
+ spree_get :index
19
+ assigns(:user).should == user
20
+ assigns(:orders).should == sorted_orders
21
+ end
22
+
23
+ it 'should redirect to login if user is not logged in' do
24
+ controller.stub(:spree_current_user).and_return nil
25
+ spree_get :index
26
+ response.status.should == 401
27
+ end
28
+
29
+ end
30
+
31
+ end
@@ -0,0 +1,83 @@
1
+ # Run Coverage report
2
+ require 'simplecov'
3
+ SimpleCov.start do
4
+ add_filter 'spec/dummy'
5
+ add_group 'Controllers', 'app/controllers'
6
+ add_group 'Helpers', 'app/helpers'
7
+ add_group 'Mailers', 'app/mailers'
8
+ add_group 'Models', 'app/models'
9
+ add_group 'Views', 'app/views'
10
+ add_group 'Libraries', 'lib'
11
+ end
12
+
13
+ # Configure Rails Environment
14
+ ENV['RAILS_ENV'] = 'test'
15
+
16
+ require File.expand_path('../dummy/config/environment.rb', __FILE__)
17
+
18
+ require 'rspec/rails'
19
+ require 'database_cleaner'
20
+ require 'ffaker'
21
+
22
+ # Requires supporting ruby files with custom matchers and macros, etc,
23
+ # in spec/support/ and its subdirectories.
24
+ Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f }
25
+
26
+ # Requires factories defined in spree_core
27
+ require 'spree/testing_support/factories'
28
+ require 'spree/testing_support/controller_requests'
29
+ require 'spree/testing_support/authorization_helpers'
30
+ require 'spree/testing_support/url_helpers'
31
+
32
+ # Requires factories defined in lib/spree_my_favourites/factories.rb
33
+ require 'spree_my_favourites/factories'
34
+
35
+ RSpec.configure do |config|
36
+ config.include FactoryGirl::Syntax::Methods
37
+
38
+ # == URL Helpers
39
+ #
40
+ # Allows access to Spree's routes in specs:
41
+ #
42
+ # visit spree.admin_path
43
+ # current_path.should eql(spree.products_path)
44
+ config.include Spree::TestingSupport::UrlHelpers
45
+ config.include Spree::TestingSupport::ControllerRequests
46
+
47
+ # == Mock Framework
48
+ #
49
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
50
+ #
51
+ # config.mock_with :mocha
52
+ # config.mock_with :flexmock
53
+ # config.mock_with :rr
54
+ config.mock_with :rspec
55
+ config.color = true
56
+
57
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
58
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
59
+
60
+ # Capybara javascript drivers require transactional fixtures set to false, and we use DatabaseCleaner
61
+ # to cleanup after each test instead. Without transactional fixtures set to false the records created
62
+ # to setup a test will be unavailable to the browser, which runs under a seperate server instance.
63
+ config.use_transactional_fixtures = false
64
+
65
+ # Ensure Suite is set to use transactions for speed.
66
+ config.before :suite do
67
+ DatabaseCleaner.strategy = :transaction
68
+ DatabaseCleaner.clean_with :truncation
69
+ end
70
+
71
+ # Before each spec check if it is a Javascript test and switch between using database transactions or not where necessary.
72
+ config.before :each do
73
+ DatabaseCleaner.strategy = example.metadata[:js] ? :truncation : :transaction
74
+ DatabaseCleaner.start
75
+ end
76
+
77
+ # After each spec clean the database.
78
+ config.after :each do
79
+ DatabaseCleaner.clean
80
+ end
81
+
82
+ config.fail_fast = ENV['FAIL_FAST'] || false
83
+ end
@@ -0,0 +1,34 @@
1
+ # encoding: UTF-8
2
+ Gem::Specification.new do |s|
3
+ s.platform = Gem::Platform::RUBY
4
+ s.name = 'spree_my_favourites'
5
+ s.version = '2.2.1'
6
+ s.summary = 'Adds My Favourites tab to My Account section of the website'
7
+ s.required_ruby_version = '>= 2.0.0'
8
+
9
+ s.author = 'Francisco Trindade'
10
+ s.email = 'frank.trindade@gmail.com'
11
+ s.homepage = 'http://blog.franktrindade.com'
12
+
13
+ s.files = `git ls-files`.split("\n")
14
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
+ s.require_path = 'lib'
16
+ s.requirements << 'none'
17
+
18
+ s.add_dependency 'spree_core', '~> 2.2.1'
19
+ s.add_dependency 'spree_frontend', '~> 2.2.1'
20
+
21
+ s.add_development_dependency 'nokogiri', '=1.6.1'
22
+ s.add_development_dependency 'capybara', '~> 2.1'
23
+ s.add_development_dependency 'coffee-rails'
24
+ s.add_development_dependency 'database_cleaner'
25
+ s.add_development_dependency 'factory_girl', '~> 4.2'
26
+ s.add_development_dependency 'ffaker'
27
+ s.add_development_dependency 'rspec-rails', '~> 2.13'
28
+ s.add_development_dependency 'sass-rails'
29
+ s.add_development_dependency 'selenium-webdriver'
30
+ s.add_development_dependency 'simplecov'
31
+ s.add_development_dependency 'sqlite3'
32
+ s.add_development_dependency 'haml'
33
+ s.add_development_dependency 'debugger'
34
+ end
metadata ADDED
@@ -0,0 +1,285 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spree_my_favourites
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.2.1
5
+ platform: ruby
6
+ authors:
7
+ - Francisco Trindade
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: spree_core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 2.2.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 2.2.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: spree_frontend
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 2.2.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 2.2.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: nokogiri
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 1.6.1
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 1.6.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: capybara
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '2.1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '2.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: coffee-rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: database_cleaner
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: factory_girl
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: '4.2'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: '4.2'
111
+ - !ruby/object:Gem::Dependency
112
+ name: ffaker
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec-rails
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: '2.13'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ~>
137
+ - !ruby/object:Gem::Version
138
+ version: '2.13'
139
+ - !ruby/object:Gem::Dependency
140
+ name: sass-rails
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: selenium-webdriver
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: simplecov
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: sqlite3
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - '>='
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - '>='
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: haml
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - '>='
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - '>='
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: debugger
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - '>='
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - '>='
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ description:
224
+ email: frank.trindade@gmail.com
225
+ executables: []
226
+ extensions: []
227
+ extra_rdoc_files: []
228
+ files:
229
+ - .gitignore
230
+ - .rspec
231
+ - Gemfile
232
+ - LICENSE
233
+ - README.md
234
+ - Rakefile
235
+ - app/assets/javascripts/spree/backend/spree_my_favourites.js
236
+ - app/assets/javascripts/spree/frontend/spree_my_favourites.js
237
+ - app/assets/stylesheets/spree/backend/spree_my_favourites.css
238
+ - app/assets/stylesheets/spree/frontend/my_account.scss
239
+ - app/assets/stylesheets/spree/frontend/spree_my_favourites.css
240
+ - app/controllers/spree/account/favourites_controller.rb
241
+ - app/controllers/spree/account/orders_controller.rb
242
+ - app/views/spree/account/favourites/index.haml
243
+ - app/views/spree/account/orders/index.haml
244
+ - app/views/spree/shared/_account_header.haml
245
+ - app/views/spree/shared/_user_orders.haml
246
+ - app/views/spree/users/show.haml
247
+ - bin/rails
248
+ - config/locales/en.yml
249
+ - config/routes.rb
250
+ - lib/generators/spree_my_favourites/install/install_generator.rb
251
+ - lib/spree_my_favourites.rb
252
+ - lib/spree_my_favourites/engine.rb
253
+ - lib/spree_my_favourites/factories.rb
254
+ - spec/controllers/spree/account/favourites_controller_spec.rb
255
+ - spec/controllers/spree/account/orders_controller_spec.rb
256
+ - spec/spec_helper.rb
257
+ - spree_my_favourites.gemspec
258
+ homepage: http://blog.franktrindade.com
259
+ licenses: []
260
+ metadata: {}
261
+ post_install_message:
262
+ rdoc_options: []
263
+ require_paths:
264
+ - lib
265
+ required_ruby_version: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - '>='
268
+ - !ruby/object:Gem::Version
269
+ version: 2.0.0
270
+ required_rubygems_version: !ruby/object:Gem::Requirement
271
+ requirements:
272
+ - - '>='
273
+ - !ruby/object:Gem::Version
274
+ version: '0'
275
+ requirements:
276
+ - none
277
+ rubyforge_project:
278
+ rubygems_version: 2.1.11
279
+ signing_key:
280
+ specification_version: 4
281
+ summary: Adds My Favourites tab to My Account section of the website
282
+ test_files:
283
+ - spec/controllers/spree/account/favourites_controller_spec.rb
284
+ - spec/controllers/spree/account/orders_controller_spec.rb
285
+ - spec/spec_helper.rb