solidus_product_feed 1.0.0 → 1.1.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.
Files changed (54) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +35 -0
  3. data/.gem_release.yml +5 -0
  4. data/.github/stale.yml +17 -0
  5. data/.gitignore +10 -2
  6. data/.rspec +2 -1
  7. data/.rubocop.yml +3 -149
  8. data/.rubocop_todo.yml +50 -0
  9. data/CHANGELOG.md +63 -0
  10. data/Gemfile +28 -9
  11. data/LICENSE +2 -2
  12. data/README.md +71 -26
  13. data/Rakefile +4 -19
  14. data/app/decorators/controllers/solidus_product_feed/spree/products_controller_decorator.rb +25 -0
  15. data/app/models/spree/feed_product.rb +39 -10
  16. data/app/overrides/rss_link.rb +2 -0
  17. data/app/views/spree/products/index.rss.builder +10 -12
  18. data/bin/console +17 -0
  19. data/bin/r +13 -0
  20. data/bin/rails +15 -0
  21. data/bin/rake +7 -0
  22. data/bin/sandbox +84 -0
  23. data/bin/sandbox_rails +18 -0
  24. data/bin/setup +8 -0
  25. data/config/locales/en.yml +5 -0
  26. data/config/routes.rb +3 -1
  27. data/lib/generators/solidus_product_feed/install/install_generator.rb +6 -8
  28. data/lib/solidus_product_feed.rb +42 -1
  29. data/lib/solidus_product_feed/engine.rb +9 -10
  30. data/lib/solidus_product_feed/factories.rb +4 -0
  31. data/lib/solidus_product_feed/version.rb +3 -1
  32. data/lib/spree_product_feed.rb +2 -0
  33. data/solidus_product_feed.gemspec +36 -30
  34. data/spec/controllers/products_controller_spec.rb +14 -2
  35. data/spec/models/spree/feed_product_spec.rb +10 -1
  36. data/spec/spec_helper.rb +23 -13
  37. data/spec/support/devise.rb +5 -0
  38. metadata +53 -92
  39. data/.travis.yml +0 -21
  40. data/Guardfile +0 -10
  41. data/app/assets/javascripts/admin/solidus_product_feed.js +0 -1
  42. data/app/assets/javascripts/spree/backend/solidus_product_feed.js +0 -0
  43. data/app/assets/javascripts/spree/backend/spree_product_feed.js +0 -0
  44. data/app/assets/javascripts/spree/frontend/solidus_product_feed.js +0 -0
  45. data/app/assets/javascripts/spree/frontend/spree_product_feed.js +0 -0
  46. data/app/assets/javascripts/store/solidus_product_feed.js +0 -1
  47. data/app/assets/stylesheets/admin/solidus_product_feed.css +0 -3
  48. data/app/assets/stylesheets/spree/backend/solidus_product_feed.css +0 -0
  49. data/app/assets/stylesheets/spree/backend/spree_product_feed.css +0 -0
  50. data/app/assets/stylesheets/spree/frontend/solidus_product_feed.css +0 -0
  51. data/app/assets/stylesheets/spree/frontend/spree_product_feed.css +0 -0
  52. data/app/assets/stylesheets/store/solidus_product_feed.css +0 -3
  53. data/app/controllers/spree/products_controller_decorator.rb +0 -18
  54. data/script/rails +0 -7
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.define do
4
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SolidusProductFeed
2
- VERSION = '1.0.0'
4
+ VERSION = '1.1.0'
3
5
  end
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'solidus_product_feed/version'
@@ -1,31 +1,37 @@
1
- # encoding: UTF-8
2
- lib = File.expand_path('../lib/', __FILE__)
3
- $:.unshift lib unless $:.include?(lib)
4
-
5
- require 'solidus_product_feed/version'
6
-
7
- Gem::Specification.new do |s|
8
- s.platform = Gem::Platform::RUBY
9
- s.name = 'solidus_product_feed'
10
- s.version = SolidusProductFeed::VERSION
11
- s.summary = 'Spree extension that provides an RSS feed for products'
12
- s.description = 'A Spree extension that provides an RSS feed for products, with Google Shopper extensions'
13
- s.required_ruby_version = '>= 1.8.7'
14
-
15
- s.author = 'Joshua Nussbaum'
16
- s.email = 'joshnuss@gmail.com'
17
-
18
- s.files = `git ls-files`.split("\n")
19
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
- s.require_path = 'lib'
21
- s.requirements << 'none'
22
-
23
- s.add_runtime_dependency 'solidus_backend', [">= 1.0", "< 3"]
24
-
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'
30
- s.add_development_dependency 'sqlite3'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/solidus_product_feed/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'solidus_product_feed'
7
+ spec.version = SolidusProductFeed::VERSION
8
+ spec.authors = ['Joshua Nussbaum']
9
+ spec.email = 'joshnuss@gmail.com'
10
+
11
+ spec.summary = 'Solidus extension that provides an RSS feed for products.'
12
+ spec.description = 'A Solidus extension that provides an RSS feed for products, with support for Google Merchant Feed.'
13
+ spec.homepage = 'https://github.com/solidusio-contrib/solidus_product_feed'
14
+ spec.license = 'BSD-3-Clause'
15
+
16
+ spec.metadata['homepage_uri'] = spec.homepage
17
+ spec.metadata['source_code_uri'] = 'https://github.com/solidusio-contrib/solidus_product_feed'
18
+ spec.metadata['changelog_uri'] = 'https://github.com/solidusio-contrib/solidus_product_feed/blob/master/CHANGELOG.md'
19
+
20
+ spec.required_ruby_version = Gem::Requirement.new('~> 2.5')
21
+
22
+ # Specify which files should be added to the gem when it is released.
23
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
24
+ files = Dir.chdir(__dir__) { `git ls-files -z`.split("\x0") }
25
+
26
+ spec.files = files.grep_v(%r{^(test|spec|features)/})
27
+ spec.test_files = files.grep(%r{^(test|spec|features)/})
28
+ spec.bindir = "exe"
29
+ spec.executables = files.grep(%r{^exe/}) { |f| File.basename(f) }
30
+ spec.require_paths = ["lib"]
31
+
32
+ spec.add_dependency 'deface'
33
+ spec.add_dependency 'solidus_core', ['>= 2.0.0', '< 3']
34
+ spec.add_dependency 'solidus_support', '~> 0.5'
35
+
36
+ spec.add_development_dependency 'solidus_dev_support'
31
37
  end
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Spree::ProductsController, type: :controller do
4
6
  render_views
5
7
 
6
8
  context "GET #index" do
7
- subject { spree_get :index, format: 'rss' }
9
+ subject { get :index, params: { format: 'rss' } }
8
10
 
9
11
  let!(:product) { create :product, name: "2 Hams", price: 20.00 }
10
12
 
@@ -14,7 +16,17 @@ describe Spree::ProductsController, type: :controller do
14
16
 
15
17
  it 'returns the correct content type' do
16
18
  subject
17
- expect(response.content_type).to eq 'application/rss+xml'
19
+ expect(response.content_type.split(';').first).to eq 'application/rss+xml'
20
+ end
21
+ end
22
+
23
+ context 'GET #index with weirdo formats' do
24
+ subject { get :index, params: { format: 'wat' } }
25
+
26
+ let!(:product) { create :product, name: "2 Hams", price: 20.00 }
27
+
28
+ it "raises ActionController::UnkownFormat" do
29
+ expect { subject }.to raise_exception(ActionController::UnknownFormat)
18
30
  end
19
31
  end
20
32
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "spec_helper"
2
4
 
3
5
  RSpec.describe Spree::FeedProduct do
@@ -18,23 +20,28 @@ RSpec.describe Spree::FeedProduct do
18
20
 
19
21
  describe "#category" do
20
22
  subject { feed_product.category }
23
+
21
24
  it { is_expected.to be_nil }
22
25
  end
23
26
 
24
27
  describe "#condition" do
25
28
  subject { feed_product.condition }
29
+
26
30
  it { is_expected.to eq "new" }
27
31
  end
28
32
 
29
33
  describe "#price" do
30
34
  subject { feed_product.price }
31
- it { is_expected.to eq Spree::Money.new(19.99, currency: 'USD') }
35
+
36
+ it { is_expected.to eq '19.99 USD' }
32
37
  end
33
38
 
34
39
  describe "#image_link" do
35
40
  subject { feed_product.image_link }
41
+
36
42
  context "when the product has images" do
37
43
  before { Spree::Image.create! viewable: product.master, attachment_file_name: 'hams.png' }
44
+
38
45
  it { is_expected.to eq '/spree/products/1/large/hams.png' }
39
46
  end
40
47
 
@@ -45,11 +52,13 @@ RSpec.describe Spree::FeedProduct do
45
52
 
46
53
  describe "#description" do
47
54
  subject { feed_product.description }
55
+
48
56
  it { is_expected.to eq "As seen on TV!" }
49
57
  end
50
58
 
51
59
  describe "#title" do
52
60
  subject { feed_product.title }
61
+
53
62
  it { is_expected.to eq "2 Hams 20 Dollars" }
54
63
  end
55
64
  end
@@ -1,17 +1,27 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Configure Rails Environment
2
- ENV["RAILS_ENV"] = "test"
3
- require File.expand_path("../dummy/config/environment.rb", __FILE__)
4
- require 'rspec/rails'
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'
4
+ ENV['RAILS_ENV'] = 'test'
5
+
6
+ # Run Coverage report
7
+ require 'solidus_dev_support/rspec/coverage'
8
+
9
+ require File.expand_path('dummy/config/environment.rb', __dir__).tap { |file|
10
+ # Create the dummy app if it's still missing.
11
+ system 'bin/rake extension:test_app' unless File.exist? file
12
+ }
13
+
14
+ # Requires factories and other useful helpers defined in spree_core.
15
+ require 'solidus_dev_support/rspec/feature_helper'
16
+
17
+ # Requires supporting ruby files with custom matchers and macros, etc,
18
+ # in spec/support/ and its subdirectories.
19
+ Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f }
20
+
21
+ # Requires factories defined in lib/solidus_product_feed/factories.rb
22
+ require 'solidus_product_feed/factories'
10
23
 
11
24
  RSpec.configure do |config|
12
- config.mock_with :rspec
13
- config.use_transactional_fixtures = true
14
- config.include Devise::TestHelpers, type: :controller
15
- config.include Spree::TestingSupport::ControllerRequests, type: :controller
16
- config.include FactoryGirl::Syntax::Methods
25
+ config.infer_spec_type_from_file_location!
26
+ config.use_transactional_fixtures = false
17
27
  end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.configure do |config|
4
+ config.include Devise::Test::ControllerHelpers, type: :controller
5
+ end
metadata CHANGED
@@ -1,71 +1,23 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_product_feed
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Nussbaum
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-22 00:00:00.000000000 Z
11
+ date: 2020-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: solidus_backend
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '1.0'
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '3'
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: '1.0'
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '3'
33
- - !ruby/object:Gem::Dependency
34
- name: rspec-rails
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '3.4'
40
- type: :development
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '3.4'
47
- - !ruby/object:Gem::Dependency
48
- name: rubocop
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: 0.39.0
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: 0.39.0
61
- - !ruby/object:Gem::Dependency
62
- name: factory_girl_rails
14
+ name: deface
63
15
  requirement: !ruby/object:Gem::Requirement
64
16
  requirements:
65
17
  - - ">="
66
18
  - !ruby/object:Gem::Version
67
19
  version: '0'
68
- type: :development
20
+ type: :runtime
69
21
  prerelease: false
70
22
  version_requirements: !ruby/object:Gem::Requirement
71
23
  requirements:
@@ -73,35 +25,41 @@ dependencies:
73
25
  - !ruby/object:Gem::Version
74
26
  version: '0'
75
27
  - !ruby/object:Gem::Dependency
76
- name: pry
28
+ name: solidus_core
77
29
  requirement: !ruby/object:Gem::Requirement
78
30
  requirements:
79
31
  - - ">="
80
32
  - !ruby/object:Gem::Version
81
- version: '0'
82
- type: :development
33
+ version: 2.0.0
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '3'
37
+ type: :runtime
83
38
  prerelease: false
84
39
  version_requirements: !ruby/object:Gem::Requirement
85
40
  requirements:
86
41
  - - ">="
87
42
  - !ruby/object:Gem::Version
88
- version: '0'
43
+ version: 2.0.0
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '3'
89
47
  - !ruby/object:Gem::Dependency
90
- name: faker
48
+ name: solidus_support
91
49
  requirement: !ruby/object:Gem::Requirement
92
50
  requirements:
93
- - - ">="
51
+ - - "~>"
94
52
  - !ruby/object:Gem::Version
95
- version: '0'
96
- type: :development
53
+ version: '0.5'
54
+ type: :runtime
97
55
  prerelease: false
98
56
  version_requirements: !ruby/object:Gem::Requirement
99
57
  requirements:
100
- - - ">="
58
+ - - "~>"
101
59
  - !ruby/object:Gem::Version
102
- version: '0'
60
+ version: '0.5'
103
61
  - !ruby/object:Gem::Dependency
104
- name: sqlite3
62
+ name: solidus_dev_support
105
63
  requirement: !ruby/object:Gem::Requirement
106
64
  requirements:
107
65
  - - ">="
@@ -114,74 +72,77 @@ dependencies:
114
72
  - - ">="
115
73
  - !ruby/object:Gem::Version
116
74
  version: '0'
117
- description: A Spree extension that provides an RSS feed for products, with Google
118
- Shopper extensions
75
+ description: A Solidus extension that provides an RSS feed for products, with support
76
+ for Google Merchant Feed.
119
77
  email: joshnuss@gmail.com
120
78
  executables: []
121
79
  extensions: []
122
80
  extra_rdoc_files: []
123
81
  files:
82
+ - ".circleci/config.yml"
83
+ - ".gem_release.yml"
84
+ - ".github/stale.yml"
124
85
  - ".gitignore"
125
86
  - ".rspec"
126
87
  - ".rubocop.yml"
127
- - ".travis.yml"
88
+ - ".rubocop_todo.yml"
89
+ - CHANGELOG.md
128
90
  - Gemfile
129
- - Guardfile
130
91
  - LICENSE
131
92
  - README.md
132
93
  - Rakefile
133
- - app/assets/javascripts/admin/solidus_product_feed.js
134
- - app/assets/javascripts/spree/backend/solidus_product_feed.js
135
- - app/assets/javascripts/spree/backend/spree_product_feed.js
136
- - app/assets/javascripts/spree/frontend/solidus_product_feed.js
137
- - app/assets/javascripts/spree/frontend/spree_product_feed.js
138
- - app/assets/javascripts/store/solidus_product_feed.js
139
- - app/assets/stylesheets/admin/solidus_product_feed.css
140
- - app/assets/stylesheets/spree/backend/solidus_product_feed.css
141
- - app/assets/stylesheets/spree/backend/spree_product_feed.css
142
- - app/assets/stylesheets/spree/frontend/solidus_product_feed.css
143
- - app/assets/stylesheets/spree/frontend/spree_product_feed.css
144
- - app/assets/stylesheets/store/solidus_product_feed.css
145
- - app/controllers/spree/products_controller_decorator.rb
94
+ - app/decorators/controllers/solidus_product_feed/spree/products_controller_decorator.rb
146
95
  - app/models/spree/feed_product.rb
147
96
  - app/overrides/rss_link.rb
148
97
  - app/views/spree/products/index.rss.builder
98
+ - bin/console
99
+ - bin/r
100
+ - bin/rails
101
+ - bin/rake
102
+ - bin/sandbox
103
+ - bin/sandbox_rails
104
+ - bin/setup
105
+ - config/locales/en.yml
149
106
  - config/routes.rb
150
107
  - lib/generators/solidus_product_feed/install/install_generator.rb
151
108
  - lib/solidus_product_feed.rb
152
109
  - lib/solidus_product_feed/engine.rb
110
+ - lib/solidus_product_feed/factories.rb
153
111
  - lib/solidus_product_feed/version.rb
154
112
  - lib/spree_product_feed.rb
155
- - script/rails
156
113
  - solidus_product_feed.gemspec
157
114
  - spec/controllers/products_controller_spec.rb
158
115
  - spec/models/spree/feed_product_spec.rb
159
116
  - spec/spec_helper.rb
160
- homepage:
161
- licenses: []
162
- metadata: {}
117
+ - spec/support/devise.rb
118
+ homepage: https://github.com/solidusio-contrib/solidus_product_feed
119
+ licenses:
120
+ - BSD-3-Clause
121
+ metadata:
122
+ homepage_uri: https://github.com/solidusio-contrib/solidus_product_feed
123
+ source_code_uri: https://github.com/solidusio-contrib/solidus_product_feed
124
+ changelog_uri: https://github.com/solidusio-contrib/solidus_product_feed/blob/master/CHANGELOG.md
163
125
  post_install_message:
164
126
  rdoc_options: []
165
127
  require_paths:
166
128
  - lib
167
129
  required_ruby_version: !ruby/object:Gem::Requirement
168
130
  requirements:
169
- - - ">="
131
+ - - "~>"
170
132
  - !ruby/object:Gem::Version
171
- version: 1.8.7
133
+ version: '2.5'
172
134
  required_rubygems_version: !ruby/object:Gem::Requirement
173
135
  requirements:
174
136
  - - ">="
175
137
  - !ruby/object:Gem::Version
176
138
  version: '0'
177
- requirements:
178
- - none
179
- rubyforge_project:
180
- rubygems_version: 2.5.1
139
+ requirements: []
140
+ rubygems_version: 3.0.8
181
141
  signing_key:
182
142
  specification_version: 4
183
- summary: Spree extension that provides an RSS feed for products
143
+ summary: Solidus extension that provides an RSS feed for products.
184
144
  test_files:
185
145
  - spec/controllers/products_controller_spec.rb
186
146
  - spec/models/spree/feed_product_spec.rb
187
147
  - spec/spec_helper.rb
148
+ - spec/support/devise.rb