solidus_product_feed 0.1.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7c3bec9a0329340d4408fe6ba7e3e9817394ab86
4
- data.tar.gz: 99c1d07475c2d437db367c2ac5bf52035c40a143
3
+ metadata.gz: be2f9f7cc2d18d5a7378987fc39bf1cd8c1d6aeb
4
+ data.tar.gz: bedae2c876c2da7cc7a7c0fcabcb571d731d196d
5
5
  SHA512:
6
- metadata.gz: 96f166ddd4787da1441c2c47d335fd529e8232176ddf9c4ae9c20a3724c651d096393c00ec419874f47c3473e1153d61085ed313792ef9c2296d2634ccd59e24
7
- data.tar.gz: 544fb19985b15ec8bb26c7bb79eeb4b35d6e8a6dfa710a79f61db0453e3d4cda65cbdc9301b903738fdfaa3c20a57e0ad2af1e57a710d18ff18ba49d8f315c76
6
+ metadata.gz: 44f3c3e13bd3e8edc0bee99561ffa9949fa0c71975b1dd4b4b98d4987b16b3f01d02eeff2d3bdccc3d48eb885e1bea5dd0927696957a2209c1f13b2462a2f1bf
7
+ data.tar.gz: 0ca8f25a3f15966b8df37d5c697d35f686d7143a06cb9e1331f6777d625a330d7e600189e6c3498270e73d0eb171f54e9a1440f33388f1b401ab9140d8b9d545
@@ -0,0 +1,150 @@
1
+ AllCops:
2
+ Exclude:
3
+ - spec/dummy/**/*
4
+ - script/*
5
+ - Guardfile
6
+ - vendor/**/*
7
+
8
+ Style/MutableConstant:
9
+ Enabled: false
10
+
11
+ # Relaxed.Ruby.Style
12
+
13
+ Style/Alias:
14
+ Enabled: false
15
+ StyleGuide: http://relaxed.ruby.style/#stylealias
16
+
17
+ Style/BeginBlock:
18
+ Enabled: false
19
+ StyleGuide: http://relaxed.ruby.style/#stylebeginblock
20
+
21
+ Style/BlockDelimiters:
22
+ Enabled: false
23
+ StyleGuide: http://relaxed.ruby.style/#styleblockdelimiters
24
+
25
+ Style/Documentation:
26
+ Enabled: false
27
+ StyleGuide: http://relaxed.ruby.style/#styledocumentation
28
+
29
+ Style/DotPosition:
30
+ Enabled: false
31
+ StyleGuide: http://relaxed.ruby.style/#styledotposition
32
+
33
+ Style/DoubleNegation:
34
+ Enabled: false
35
+ StyleGuide: http://relaxed.ruby.style/#styledoublenegation
36
+
37
+ Style/EndBlock:
38
+ Enabled: false
39
+ StyleGuide: http://relaxed.ruby.style/#styleendblock
40
+
41
+ Style/FormatString:
42
+ Enabled: false
43
+ StyleGuide: http://relaxed.ruby.style/#styleformatstring
44
+
45
+ Style/IfUnlessModifier:
46
+ Enabled: false
47
+ StyleGuide: http://relaxed.ruby.style/#styleifunlessmodifier
48
+
49
+ Style/Lambda:
50
+ Enabled: false
51
+ StyleGuide: http://relaxed.ruby.style/#stylelambda
52
+
53
+ Style/ModuleFunction:
54
+ Enabled: false
55
+ StyleGuide: http://relaxed.ruby.style/#stylemodulefunction
56
+
57
+ Style/MultilineBlockChain:
58
+ Enabled: false
59
+ StyleGuide: http://relaxed.ruby.style/#stylemultilineblockchain
60
+
61
+ Style/NegatedIf:
62
+ Enabled: false
63
+ StyleGuide: http://relaxed.ruby.style/#stylenegatedif
64
+
65
+ Style/NegatedWhile:
66
+ Enabled: false
67
+ StyleGuide: http://relaxed.ruby.style/#stylenegatedwhile
68
+
69
+ Style/ParallelAssignment:
70
+ Enabled: false
71
+ StyleGuide: http://relaxed.ruby.style/#styleparallelassignment
72
+
73
+ Style/PercentLiteralDelimiters:
74
+ Enabled: false
75
+ StyleGuide: http://relaxed.ruby.style/#stylepercentliteraldelimiters
76
+
77
+ Style/PerlBackrefs:
78
+ Enabled: false
79
+ StyleGuide: http://relaxed.ruby.style/#styleperlbackrefs
80
+
81
+ Style/Semicolon:
82
+ Enabled: false
83
+ StyleGuide: http://relaxed.ruby.style/#stylesemicolon
84
+
85
+ Style/SignalException:
86
+ Enabled: false
87
+ StyleGuide: http://relaxed.ruby.style/#stylesignalexception
88
+
89
+ Style/SingleLineBlockParams:
90
+ Enabled: false
91
+ StyleGuide: http://relaxed.ruby.style/#stylesinglelineblockparams
92
+
93
+ Style/SingleLineMethods:
94
+ Enabled: false
95
+ StyleGuide: http://relaxed.ruby.style/#stylesinglelinemethods
96
+
97
+ Style/SpaceBeforeBlockBraces:
98
+ Enabled: false
99
+ StyleGuide: http://relaxed.ruby.style/#stylespacebeforeblockbraces
100
+
101
+ Style/SpaceInsideParens:
102
+ Enabled: false
103
+ StyleGuide: http://relaxed.ruby.style/#stylespaceinsideparens
104
+
105
+ Style/SpecialGlobalVars:
106
+ Enabled: false
107
+ StyleGuide: http://relaxed.ruby.style/#stylespecialglobalvars
108
+
109
+ Style/StringLiterals:
110
+ Enabled: false
111
+ StyleGuide: http://relaxed.ruby.style/#stylestringliterals
112
+
113
+ Style/WhileUntilModifier:
114
+ Enabled: false
115
+ StyleGuide: http://relaxed.ruby.style/#stylewhileuntilmodifier
116
+
117
+ Lint/AmbiguousRegexpLiteral:
118
+ Enabled: false
119
+ StyleGuide: http://relaxed.ruby.style/#lintambiguousregexpliteral
120
+
121
+ Lint/AssignmentInCondition:
122
+ Enabled: false
123
+ StyleGuide: http://relaxed.ruby.style/#lintassignmentincondition
124
+
125
+ Metrics/AbcSize:
126
+ Enabled: false
127
+
128
+ Metrics/BlockNesting:
129
+ Enabled: false
130
+
131
+ Metrics/ClassLength:
132
+ Enabled: false
133
+
134
+ Metrics/ModuleLength:
135
+ Enabled: false
136
+
137
+ Metrics/CyclomaticComplexity:
138
+ Enabled: false
139
+
140
+ Metrics/LineLength:
141
+ Enabled: false
142
+
143
+ Metrics/MethodLength:
144
+ Enabled: false
145
+
146
+ Metrics/ParameterLists:
147
+ Enabled: false
148
+
149
+ Metrics/PerceivedComplexity:
150
+ Enabled: false
@@ -1,11 +1,21 @@
1
1
  sudo: false
2
+ cache: bundler
2
3
  language: ruby
3
4
  rvm:
4
- - 2.3.0
5
+ - 2.3.1
5
6
  env:
6
7
  matrix:
7
- - SOLIDUS_BRANCH=v1.0
8
- - SOLIDUS_BRANCH=v1.1
9
- - SOLIDUS_BRANCH=v1.2
10
- - SOLIDUS_BRANCH=v1.3
11
- - SOLIDUS_BRANCH=master
8
+ - SOLIDUS_BRANCH=v1.0 DB=postgres
9
+ - SOLIDUS_BRANCH=v1.1 DB=postgres
10
+ - SOLIDUS_BRANCH=v1.2 DB=postgres
11
+ - SOLIDUS_BRANCH=v1.3 DB=postgres
12
+ - SOLIDUS_BRANCH=v1.4 DB=postgres
13
+ - SOLIDUS_BRANCH=v2.0 DB=postgres
14
+ - SOLIDUS_BRANCH=master DB=postgres
15
+ - SOLIDUS_BRANCH=v1.0 DB=mysql
16
+ - SOLIDUS_BRANCH=v1.1 DB=mysql
17
+ - SOLIDUS_BRANCH=v1.2 DB=mysql
18
+ - SOLIDUS_BRANCH=v1.3 DB=mysql
19
+ - SOLIDUS_BRANCH=v1.4 DB=mysql
20
+ - SOLIDUS_BRANCH=v2.0 DB=mysql
21
+ - SOLIDUS_BRANCH=master DB=mysql
data/Gemfile CHANGED
@@ -1,11 +1,18 @@
1
- source 'http://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  branch = ENV.fetch('SOLIDUS_BRANCH', 'master')
4
- gem 'solidus', github: 'solidusio/solidus', branch: branch
4
+ gem "solidus", github: "solidusio/solidus", branch: branch
5
+ gem 'solidus_auth_devise'
6
+
7
+ if branch == 'master' || branch >= "v2.0"
8
+ gem "rails-controller-testing", group: :test
9
+ end
10
+
11
+ gem 'pg'
12
+ gem 'mysql2'
5
13
 
6
- # Provides basic authentication functionality for testing parts of your engine
7
14
  group :development, :test do
8
- gem 'solidus_auth_devise'
15
+ gem "pry-rails"
9
16
  end
10
17
 
11
18
  gemspec
data/README.md CHANGED
@@ -6,6 +6,14 @@ Solidus Product Feed
6
6
  An extension that provides an RSS feed for products. Google Shopper attributes are also implemented.
7
7
  An RSS link is automatically appended to the `<head>` tag in the `layouts/spree_application` file.
8
8
 
9
+ Note on Versions
10
+ ================
11
+
12
+ The master branch tracks the 1.0 version of this gem, which has some major changes from it's predecessor `spree_product_feed`.
13
+ The 1.0 version is cleaner, more extensible, and more correct at the expense of compatibility.
14
+
15
+ We also have a [`~> 0.1.0` version](https://github.com/solidusio-contrib/solidus_product_feed/tree/v0.1) which is a direct port of `spree_product_feed` with minimal changes.
16
+
9
17
 
10
18
  Installation
11
19
  ===============
@@ -1,15 +1,18 @@
1
- Spree::ProductsController.class_eval do
2
- respond_to :rss, :only => [:index]
3
- before_filter :check_rss, only: :index
4
-
5
- def check_rss
6
- if request.format.rss?
7
- @products = Spree::Product.all
8
- respond_to do |format|
9
- format.rss { render 'spree/products/index.rss', :layout => false }
10
- end
1
+ Spree::ProductsController.prepend(Module.new do
2
+ class << self
3
+ def prepended(klass)
4
+ klass.respond_to :rss, only: :index
11
5
  end
12
6
  end
13
7
 
14
- # caches_page :index, :if => Proc.new {|c| c.request.format.rss? }, :expires_in => 1.days
15
- end
8
+ def index
9
+ load_feed_products if request.format.rss?
10
+ super
11
+ end
12
+
13
+ private
14
+
15
+ def load_feed_products
16
+ @feed_products = Spree::Product.all.map(&Spree::FeedProduct.method(:new))
17
+ end
18
+ end)
@@ -0,0 +1,39 @@
1
+ module Spree
2
+ class FeedProduct
3
+ attr_reader :product
4
+
5
+ def initialize(product)
6
+ @product = product
7
+ end
8
+
9
+ def id
10
+ product.id
11
+ end
12
+
13
+ def title
14
+ product.name
15
+ end
16
+
17
+ def description
18
+ product.description
19
+ end
20
+
21
+ # Must be selected from https://support.google.com/merchants/answer/1705911
22
+ def category
23
+ end
24
+
25
+ # Must be "new", "refurbished", or "used".
26
+ def condition
27
+ "new"
28
+ end
29
+
30
+ def price
31
+ Spree::Money.new(product.price)
32
+ end
33
+
34
+ def image_link
35
+ return unless product.images.any?
36
+ product.images.first.attachment.url(:large)
37
+ end
38
+ end
39
+ end
@@ -1,5 +1,5 @@
1
- Deface::Override.new(:virtual_path => 'layouts/spree_application',
2
- :name => 'product_rss_link',
3
- :original => '86987c7feaaea3181df195ca520571d801bbbaf3',
4
- :insert_bottom => "[data-hook='inside_head']",
5
- :text => '<%= auto_discovery_link_tag(:rss, products_path(:format => :rss), {:title => "#{Spree::Config[:site_title]} Products"}) %>')
1
+ Deface::Override.new(virtual_path: 'layouts/spree_application',
2
+ name: 'product_rss_link',
3
+ original: '86987c7feaaea3181df195ca520571d801bbbaf3',
4
+ insert_bottom: "[data-hook='inside_head']",
5
+ text: '<%= auto_discovery_link_tag(:rss, products_path(:format => :rss), {:title => "#{Spree::Config[:site_title]} Products"}) %>')
@@ -1,27 +1,23 @@
1
- xml.instruct! :xml, :version=>"1.0"
2
- xml.rss(:version=>"2.0", "xmlns:g" => "http://base.google.com/ns/1.0"){
3
- xml.channel{
4
- xml.title(current_store.name)
5
- xml.link("http://#{current_store.url}")
6
- xml.description("Find out about new products on http://#{current_store.url} first!")
7
- xml.language('en-us')
8
- @products.each do |product|
9
- xml.item do
10
- xml.title(product.name)
11
- xml.description((product.images.count > 0 ? link_to(image_tag(product.images.first.attachment.url(:product)), product_url(product)) : '') + simple_format(product.description))
12
- xml.author(current_store.url)
13
- xml.pubDate((product.available_on || product.created_at).strftime("%a, %d %b %Y %H:%M:%S %z"))
14
- xml.link(product_url(product))
15
- xml.guid(product.id)
1
+ xml.instruct! :xml, version: "1.0"
16
2
 
17
- if product.images.count > 0
18
- xml.tag!('g:image_link', product.images.first.attachment.url(:large))
19
- end
3
+ xml.rss version: "2.0", "xmlns:g" => "http://base.google.com/ns/1.0" do
4
+ xml.channel do
5
+ xml.title current_store.name
6
+ xml.link "http://#{current_store.url}"
7
+ xml.description "Find out about new products on http://#{current_store.url} first!"
8
+ xml.language 'en-us'
20
9
 
21
- xml.tag!('g:price', product.price)
22
- xml.tag!('g:condition', 'retail')
23
- xml.tag!('g:id', product.id)
10
+ @feed_products.each do |feed_product|
11
+ xml.item do
12
+ xml.tag! 'g:id', feed_product.id
13
+ xml.title feed_product.title
14
+ xml.description feed_product.description
15
+ xml.category feed_product.category if feed_product.category
16
+ xml.link product_url(feed_product.product)
17
+ xml.tag! 'g:image_link', feed_product.image_link
18
+ xml.tag! 'g:condition', feed_product.condition
19
+ xml.tag! 'g:price', feed_product.price.money.format(symbol: false, with_currency: true)
24
20
  end
25
21
  end
26
- }
27
- }
22
+ end
23
+ end
@@ -1,7 +1,7 @@
1
1
  module SolidusProductFeed
2
2
  module Generators
3
3
  class InstallGenerator < Rails::Generators::Base
4
- class_option :auto_run_migrations, :type => :boolean, :default => false
4
+ class_option :auto_run_migrations, type: :boolean, default: false
5
5
 
6
6
  def add_migrations
7
7
  run 'rake railties:install:migrations FROM=spree_product_feed'
@@ -12,12 +12,12 @@ module SolidusProductFeed
12
12
  end
13
13
 
14
14
  def run_migrations
15
- run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask 'Would you like to run the migrations now? [Y/n]')
15
+ run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]'))
16
16
  if run_migrations
17
- run 'rake db:migrate'
18
- else
19
- puts "Skiping rake db:migrate, don't forget to run it!"
20
- end
17
+ run 'rake db:migrate'
18
+ else
19
+ puts "Skipping rake db:migrate, don't forget to run it!"
20
+ end
21
21
  end
22
22
  end
23
23
  end
@@ -15,6 +15,6 @@ module SolidusProductFeed
15
15
  end
16
16
  end
17
17
 
18
- config.to_prepare &method(:activate).to_proc
18
+ config.to_prepare(&method(:activate).to_proc)
19
19
  end
20
20
  end
@@ -1,3 +1,3 @@
1
1
  module SolidusProductFeed
2
- VERSION = '0.1.0'
2
+ VERSION = '1.0.0'
3
3
  end
@@ -20,9 +20,12 @@ Gem::Specification.new do |s|
20
20
  s.require_path = 'lib'
21
21
  s.requirements << 'none'
22
22
 
23
- s.add_runtime_dependency 'solidus_core', ["~> 1.0"]
24
- s.add_runtime_dependency 'solidus_backend', ["~> 1.0"]
23
+ s.add_runtime_dependency 'solidus_backend', [">= 1.0", "< 3"]
25
24
 
26
- s.add_development_dependency 'rspec-rails', '~> 3.4'
25
+ s.add_development_dependency 'rspec-rails', '~> 3.4'
26
+ s.add_development_dependency 'rubocop', '~> 0.39.0'
27
+ s.add_development_dependency 'factory_girl_rails'
28
+ s.add_development_dependency 'pry'
29
+ s.add_development_dependency 'faker'
27
30
  s.add_development_dependency 'sqlite3'
28
31
  end
@@ -1,15 +1,20 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Spree::ProductsController, type: :controller do
4
- context "GET /index.rss" do
5
- before { get :index, format: 'rss', use_route: :spree}
4
+ render_views
6
5
 
7
- it 'succeeds' do
8
- expect(response).to be_success
9
- end
6
+ context "GET #index" do
7
+ subject { spree_get :index, format: 'rss' }
8
+
9
+ let!(:product) { create :product, name: "2 Hams", price: 20.00 }
10
+
11
+ it { is_expected.to have_http_status :ok }
12
+
13
+ it { is_expected.to render_template 'spree/products/index' }
10
14
 
11
15
  it 'returns the correct content type' do
12
- expect(response.content_type).to eql('application/rss+xml')
16
+ subject
17
+ expect(response.content_type).to eq 'application/rss+xml'
13
18
  end
14
19
  end
15
20
  end
@@ -0,0 +1,55 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Spree::FeedProduct do
4
+ let(:feed_product) { described_class.new(product) }
5
+ let(:product) do
6
+ create :product,
7
+ name: "2 Hams 20 Dollars",
8
+ description: "As seen on TV!"
9
+ end
10
+
11
+ describe "#id" do
12
+ subject { feed_product.id }
13
+
14
+ it "delegates to the product's SKU" do
15
+ expect(subject).to eq product.id
16
+ end
17
+ end
18
+
19
+ describe "#category" do
20
+ subject { feed_product.category }
21
+ it { is_expected.to be_nil }
22
+ end
23
+
24
+ describe "#condition" do
25
+ subject { feed_product.condition }
26
+ it { is_expected.to eq "new" }
27
+ end
28
+
29
+ describe "#price" do
30
+ subject { feed_product.price }
31
+ it { is_expected.to eq Spree::Money.new(19.99, currency: 'USD') }
32
+ end
33
+
34
+ describe "#image_link" do
35
+ subject { feed_product.image_link }
36
+ context "when the product has images" do
37
+ before { Spree::Image.create! viewable: product.master, attachment_file_name: 'hams.png' }
38
+ it { is_expected.to eq '/spree/products/1/large/hams.png' }
39
+ end
40
+
41
+ context "when the product doesn't have images" do
42
+ it { is_expected.to be_nil }
43
+ end
44
+ end
45
+
46
+ describe "#description" do
47
+ subject { feed_product.description }
48
+ it { is_expected.to eq "As seen on TV!" }
49
+ end
50
+
51
+ describe "#title" do
52
+ subject { feed_product.title }
53
+ it { is_expected.to eq "2 Hams 20 Dollars" }
54
+ end
55
+ end
@@ -1,29 +1,17 @@
1
1
  # Configure Rails Environment
2
2
  ENV["RAILS_ENV"] = "test"
3
- require File.expand_path("../dummy/config/environment.rb", __FILE__)
3
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
4
4
  require 'rspec/rails'
5
-
6
- # Requires supporting ruby files with custom matchers and macros, etc,
7
- # in spec/support/ and its subdirectories.
8
- Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |file| require file }
5
+ require 'factory_girl_rails'
6
+ require 'pry'
7
+ require 'faker' # Required for factories.
8
+ require 'spree/testing_support/factories'
9
+ require 'spree/testing_support/controller_requests'
9
10
 
10
11
  RSpec.configure do |config|
11
- # == Mock Framework
12
- #
13
- # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
14
- #
15
- # config.mock_with :mocha
16
- # config.mock_with :flexmock
17
- # config.mock_with :rr
18
12
  config.mock_with :rspec
19
-
20
- # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
21
- config.fixture_path = "#{::Rails.root}/spec/fixtures"
22
-
23
- # If you're not using ActiveRecord, or you'd prefer not to run each of your
24
- # examples within a transaction, remove the following line or assign false
25
- # instead of true.
26
13
  config.use_transactional_fixtures = true
27
-
28
14
  config.include Devise::TestHelpers, type: :controller
15
+ config.include Spree::TestingSupport::ControllerRequests, type: :controller
16
+ config.include FactoryGirl::Syntax::Methods
29
17
  end
metadata CHANGED
@@ -1,57 +1,105 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_product_feed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Nussbaum
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-10 00:00:00.000000000 Z
11
+ date: 2016-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: solidus_core
14
+ name: solidus_backend
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '3'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '1.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '3'
27
33
  - !ruby/object:Gem::Dependency
28
- name: solidus_backend
34
+ name: rspec-rails
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - "~>"
32
38
  - !ruby/object:Gem::Version
33
- version: '1.0'
34
- type: :runtime
39
+ version: '3.4'
40
+ type: :development
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
44
  - - "~>"
39
45
  - !ruby/object:Gem::Version
40
- version: '1.0'
46
+ version: '3.4'
41
47
  - !ruby/object:Gem::Dependency
42
- name: rspec-rails
48
+ name: rubocop
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: '3.4'
53
+ version: 0.39.0
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
58
  - - "~>"
53
59
  - !ruby/object:Gem::Version
54
- version: '3.4'
60
+ version: 0.39.0
61
+ - !ruby/object:Gem::Dependency
62
+ name: factory_girl_rails
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: pry
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: faker
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
55
103
  - !ruby/object:Gem::Dependency
56
104
  name: sqlite3
57
105
  requirement: !ruby/object:Gem::Requirement
@@ -75,6 +123,7 @@ extra_rdoc_files: []
75
123
  files:
76
124
  - ".gitignore"
77
125
  - ".rspec"
126
+ - ".rubocop.yml"
78
127
  - ".travis.yml"
79
128
  - Gemfile
80
129
  - Guardfile
@@ -94,6 +143,7 @@ files:
94
143
  - app/assets/stylesheets/spree/frontend/spree_product_feed.css
95
144
  - app/assets/stylesheets/store/solidus_product_feed.css
96
145
  - app/controllers/spree/products_controller_decorator.rb
146
+ - app/models/spree/feed_product.rb
97
147
  - app/overrides/rss_link.rb
98
148
  - app/views/spree/products/index.rss.builder
99
149
  - config/routes.rb
@@ -105,6 +155,7 @@ files:
105
155
  - script/rails
106
156
  - solidus_product_feed.gemspec
107
157
  - spec/controllers/products_controller_spec.rb
158
+ - spec/models/spree/feed_product_spec.rb
108
159
  - spec/spec_helper.rb
109
160
  homepage:
110
161
  licenses: []
@@ -132,4 +183,5 @@ specification_version: 4
132
183
  summary: Spree extension that provides an RSS feed for products
133
184
  test_files:
134
185
  - spec/controllers/products_controller_spec.rb
186
+ - spec/models/spree/feed_product_spec.rb
135
187
  - spec/spec_helper.rb