spree_pages 1.0.2 → 1.0.3

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
- 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