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 +5 -5
- data/README.md +1 -1
- data/app/controllers/spree/admin/pages_controller.rb +1 -1
- data/app/models/spree/page.rb +2 -4
- data/app/views/spree/pages/_og_meta_tags.html.erb +1 -5
- data/config/routes.rb +1 -0
- data/lib/spree_pages/routes_contstraints.rb +1 -1
- data/lib/spree_pages/version.rb +1 -1
- data/spec/controllers/spree/admin/pages_controller_spec.rb +18 -0
- data/spec/factories/pages.rb +7 -0
- data/spec/features/visit_pages_spec.rb +31 -1
- data/spec/models/spree/page_spec.rb +9 -1
- data/spec/support/devise.rb +3 -0
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f999e0f6a38e2ae387badc6f1e5ca52abf07290d025686c4cd2e31caa7cb6071
|
4
|
+
data.tar.gz: 4e68af456716ee031b77a37006b97fbb4d68dd08a4e1e7e26c58767d5f66aacf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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[
|
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
|
data/app/models/spree/page.rb
CHANGED
@@ -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
|
-
|
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
@@ -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
|
data/lib/spree_pages/version.rb
CHANGED
@@ -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
|
data/spec/factories/pages.rb
CHANGED
@@ -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 {
|
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
|
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
|
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.
|
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-
|
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.
|
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
|