spree_pages 1.0.2 → 1.0.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: be5106f5472ee19e3046f5efbe402465c4a0ff8d
4
- data.tar.gz: 2854db9fbac114800340062cd7bd7874b55f010e
2
+ SHA256:
3
+ metadata.gz: f999e0f6a38e2ae387badc6f1e5ca52abf07290d025686c4cd2e31caa7cb6071
4
+ data.tar.gz: 4e68af456716ee031b77a37006b97fbb4d68dd08a4e1e7e26c58767d5f66aacf
5
5
  SHA512:
6
- metadata.gz: 06ee4a8872f42e0c6670fd9fece3f9deb31af9902f6d0d44acc073f45b9007cf394a9546ec47a3ee7fcdca8952c0a7c51e838287924bb9925b8d17cfa6b43b02
7
- data.tar.gz: 1b08b4f3643c888d45935253767b7f3c7ea49b8c68e07282da1e2b23840939d9f5e873bae86c3814f1fa3302cfafff5198b2fb45fd311080f846bf62e53f22b8
6
+ metadata.gz: 800f43b9c67109819f9536d92dac1ef6fe16ba68e789896983fc12d5f7665f4c7178cba0f932bfe1e1c5616617fcd9fddf2a16aab3938e1564d0929dc46228ca
7
+ data.tar.gz: 5dc1e4103ac4714ce97cf4698e623064e5453a9a4b817c563fd24351c83fcd4d5ec4c200a7290d58ffb9583252110f0b63b541e1aefcb3a66198dd21eb91b5b2
data/README.md CHANGED
@@ -80,4 +80,4 @@ If you'd like to contribute, please take a look at the
80
80
  [instructions](CONTRIBUTING.md) for installing dependencies and crafting a good
81
81
  pull request.
82
82
 
83
- Copyright (c) 2018 Abundance Labs, Inc., released under the New BSD License
83
+ Copyright (c) 2018 Public Market Foundation, released under the New BSD License
@@ -4,7 +4,7 @@ module Spree
4
4
  private
5
5
 
6
6
  def permitted_resource_params
7
- params.require(:page).permit(%i[id title content slug meta_title meta_description meta_image live])
7
+ params.require(:page).permit(%i[title content slug meta_title meta_description meta_image live])
8
8
  end
9
9
  end
10
10
  end
@@ -14,12 +14,10 @@ module Spree
14
14
  self.slug = slug[1..-1] if slug.start_with?('/') # ensure that slugs don't start with a slash
15
15
  end
16
16
 
17
+ private
18
+
17
19
  def self.meta_image_sizes
18
20
  { large: '1200x630>', medium: '600x315>', small: '200x200>' }
19
21
  end
20
-
21
- def self.meta_image_sizes_tags
22
- meta_image_sizes.map { |style, sizes| [style, { width: sizes.split('x')[0], height: sizes.split('x')[1].tr('>', '') }] }.to_h
23
- end
24
22
  end
25
23
  end
@@ -4,10 +4,6 @@
4
4
  <meta property="og:title" content="<%= page_meta_title %>">
5
5
  <meta property="og:description" content="<%= page.meta_description || meta_data[:description] %>">
6
6
  <% if page.meta_image.exists? %>
7
- <% Spree::Page.meta_image_sizes.keys.each do |style| %>
8
- <meta property="og:image" content="<%= page.meta_image.url(style) %>">
9
- <meta property="og:image:width" content="<%= Spree::Page.meta_image_sizes_tags[style][:width] %>">
10
- <meta property="og:image:height" content="<%= Spree::Page.meta_image_sizes_tags[style][:height] %>">
11
- <% end %>
7
+ <meta property="og:image" content="<%= page.meta_image.url(:large) %>">
12
8
  <% end %>
13
9
  <% end %>
data/config/routes.rb CHANGED
@@ -2,6 +2,7 @@ Spree::Core::Engine.add_routes do
2
2
  namespace :admin, path: Spree.admin_path do
3
3
  resources :pages
4
4
  end
5
+
5
6
  constraints(Spree::SpreePages::RoutesConstraints) do
6
7
  get '/(*path)', to: 'pages#show', as: 'page'
7
8
  end
@@ -5,7 +5,7 @@ module Spree
5
5
  def self.matches?(request)
6
6
  return false if request.path == '/' ||
7
7
  request.path.starts_with?(Spree.admin_path) ||
8
- request.path =~ %r{\A\/+(account|cart|checkout|content|login|pg\/|orders|products|s\/|session|signup|shipments|states|t\/|tax_categories|user)+}
8
+ request.path =~ %r{\A\/+(api|account|cart|checkout|content|login|pg\/|orders|products|s\/|session|signup|shipments|states|t\/|tax_categories|user)+}
9
9
  Spree::Page.find_by(slug: request.path[1..-1]).present?
10
10
  end
11
11
  # rubocop:enable Metrics/LineLength
@@ -10,7 +10,7 @@ module SpreePages
10
10
  module VERSION
11
11
  MAJOR = 1
12
12
  MINOR = 0
13
- TINY = 2
13
+ TINY = 3
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY].compact.join('.')
16
16
  end
@@ -0,0 +1,18 @@
1
+ RSpec.describe Spree::Admin::PagesController, type: :controller do
2
+ stub_authorization!
3
+
4
+ routes { Spree::Core::Engine.routes }
5
+
6
+ describe '#update' do
7
+ subject(:update_page) { put :update, params: { id: page.id, page: { title: new_page_title }} }
8
+
9
+ let(:new_page_title) { 'New page title' }
10
+ let(:page) { create(:page, title: 'Old page title') }
11
+
12
+ it 'updates page' do
13
+ expect {
14
+ update_page
15
+ }.to change { page.reload.title }.to new_page_title
16
+ end
17
+ end
18
+ end
@@ -3,6 +3,13 @@ FactoryBot.define do
3
3
  title { generate(:random_string) }
4
4
  content { generate(:random_description) }
5
5
 
6
+ meta_title { generate(:random_string) }
7
+ meta_description { generate(:random_string) }
8
+
6
9
  sequence(:slug) { |n| "page#{n}" }
10
+
11
+ trait :with_image do
12
+ meta_image { File.new(Spree::Core::Engine.root + 'spec/fixtures' + 'thinking-cat.jpg') }
13
+ end
7
14
  end
8
15
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  RSpec.describe 'Visits page', type: :feature do
4
- before { create(:store, default: true) }
4
+ before { allow(Spree::Store).to receive(:default) { build_stubbed(:store) } }
5
5
 
6
6
  it 'correctly loads page' do
7
7
  spree_page = create(:page, slug: 'page')
@@ -20,4 +20,34 @@ RSpec.describe 'Visits page', type: :feature do
20
20
  visit spree.product_path(product)
21
21
  expect(page).to have_text product.name
22
22
  end
23
+
24
+ describe 'meta tags' do
25
+ let(:spree_page) { create(:page) }
26
+
27
+ before { visit spree.page_path(spree_page.slug) }
28
+
29
+ it 'includes meta name' do
30
+ expect(page).to have_css("meta[property='og:title'][content='#{spree_page.meta_title}']", visible: false)
31
+ end
32
+
33
+ it 'includes meta description' do
34
+ expect(page).to have_css("meta[property='og:description'][content='#{spree_page.meta_description}']", visible: false)
35
+ end
36
+
37
+ describe 'image' do
38
+ context 'without meta image' do
39
+ it 'does not include meta image' do
40
+ expect(page).not_to have_css("meta[property='og:image']", visible: false)
41
+ end
42
+ end
43
+
44
+ context 'with meta image' do
45
+ let(:spree_page) { create(:page, :with_image) }
46
+
47
+ it 'includes meta image' do
48
+ expect(page).to have_css("meta[property='og:image'][content='#{spree_page.meta_image.url(:large)}']", visible: false)
49
+ end
50
+ end
51
+ end
52
+ end
23
53
  end
@@ -1,5 +1,5 @@
1
1
  RSpec.describe Spree::Page, type: :model do
2
- let!(:page) { build_stubbed(:page) }
2
+ let(:page) { build_stubbed(:page) }
3
3
 
4
4
  describe 'factory' do
5
5
  it 'is valid' do
@@ -15,4 +15,12 @@ RSpec.describe Spree::Page, type: :model do
15
15
  expect(page.slug).to eq 'slash'
16
16
  end
17
17
  end
18
+
19
+ describe '#meta_image' do
20
+ subject(:image) { page.meta_image }
21
+
22
+ let(:page) { build_stubbed(:page, :with_image) }
23
+
24
+ it { expect(image.styles).to include(:large, :medium, :small) }
25
+ end
18
26
  end
@@ -0,0 +1,3 @@
1
+ RSpec.configure do |config|
2
+ config.include Devise::Test::ControllerHelpers, type: :controller
3
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_pages
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kozaev Artem
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-19 00:00:00.000000000 Z
11
+ date: 2018-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: paperclip
@@ -282,6 +282,7 @@ files:
282
282
  - lib/spree_pages/routes_contstraints.rb
283
283
  - lib/spree_pages/version.rb
284
284
  - spec/.rubocop.yml
285
+ - spec/controllers/spree/admin/pages_controller_spec.rb
285
286
  - spec/controllers/spree/pages_controller_spec.rb
286
287
  - spec/factories/pages.rb
287
288
  - spec/features/visit_pages_spec.rb
@@ -289,6 +290,7 @@ files:
289
290
  - spec/spec_helper.rb
290
291
  - spec/support/capybara.rb
291
292
  - spec/support/database_cleaner.rb
293
+ - spec/support/devise.rb
292
294
  - spec/support/factory_bot.rb
293
295
  - spec/support/simplecov.rb
294
296
  - spree_pages.gemspec
@@ -313,11 +315,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
313
315
  requirements:
314
316
  - none
315
317
  rubyforge_project:
316
- rubygems_version: 2.6.10
318
+ rubygems_version: 2.7.3
317
319
  signing_key:
318
320
  specification_version: 4
319
321
  summary: Simple static pages for spree
320
322
  test_files:
323
+ - spec/controllers/spree/admin/pages_controller_spec.rb
321
324
  - spec/controllers/spree/pages_controller_spec.rb
322
325
  - spec/factories/pages.rb
323
326
  - spec/features/visit_pages_spec.rb
@@ -325,5 +328,6 @@ test_files:
325
328
  - spec/spec_helper.rb
326
329
  - spec/support/capybara.rb
327
330
  - spec/support/database_cleaner.rb
331
+ - spec/support/devise.rb
328
332
  - spec/support/factory_bot.rb
329
333
  - spec/support/simplecov.rb