solidus_static_content 1.0.0 → 2.0.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.
- checksums.yaml +5 -5
- data/.circleci/config.yml +35 -0
- data/.gem_release.yml +5 -0
- data/.gitignore +17 -6
- data/.rspec +2 -3
- data/.rubocop.yml +2 -0
- data/CHANGELOG.md +80 -0
- data/Gemfile +26 -6
- data/{LICENSE.md → LICENSE} +0 -0
- data/README.md +81 -68
- data/Rakefile +4 -13
- data/app/assets/stylesheets/spree/frontend/solidus_static_content.css +7 -0
- data/app/assets/stylesheets/spree/frontend/spree_static_content.css +2 -7
- data/app/models/solidus_static_content/permission_sets/page_display.rb +11 -0
- data/app/models/solidus_static_content/permission_sets/page_management.rb +11 -0
- data/app/models/spree/page.rb +16 -21
- data/bin/console +17 -0
- data/bin/r +8 -0
- data/bin/rails +6 -6
- data/bin/rails-engine +13 -0
- data/bin/rails-sandbox +16 -0
- data/bin/rake +7 -0
- data/bin/sandbox +84 -0
- data/bin/sandbox_rails +8 -0
- data/bin/setup +8 -0
- data/config/locales/de.yml +7 -5
- data/config/locales/en.yml +9 -7
- data/config/locales/es-MX.yml +38 -0
- data/config/locales/es.yml +6 -5
- data/config/locales/et.yml +6 -5
- data/config/locales/fr.yml +7 -5
- data/config/locales/it.yml +6 -5
- data/config/locales/nl.yml +7 -5
- data/config/locales/pl.yml +6 -5
- data/config/locales/pt-BR.yml +6 -5
- data/config/locales/pt.yml +7 -5
- data/config/locales/ro.yml +11 -9
- data/config/locales/ru.yml +7 -5
- data/config/locales/sv.yml +7 -5
- data/config/routes.rb +9 -2
- data/db/migrate/20081216193152_create_pages.rb +1 -1
- data/db/migrate/20090625125735_extend_pages.rb +1 -1
- data/db/migrate/20090814113100_add_visible_to_pages.rb +1 -1
- data/db/migrate/20090814142845_add_default_true_to_visible_for_page.rb +1 -1
- data/db/migrate/20090829000527_add_index_for_page.rb +1 -1
- data/db/migrate/20091219021134_add_meta_fields_to_pages.rb +1 -1
- data/db/migrate/20100204105222_add_layout_to_pages.rb +1 -1
- data/db/migrate/20100323085528_add_show_in_sidebar_option_to_pages.rb +1 -1
- data/db/migrate/20110717103112_add_meta_title_to_page.rb +1 -1
- data/db/migrate/20120723144115_add_render_as_partial_for_layout_for_spree_pages.rb +1 -1
- data/db/migrate/20140926121757_add_pages_stores.rb +1 -1
- data/db/migrate/20180305193240_update_spree_page_position.rb +13 -0
- data/lib/controllers/backend/spree/admin/pages_controller.rb +16 -0
- data/{app/controllers → lib/controllers/frontend}/spree/static_content_controller.rb +7 -3
- data/lib/generators/solidus_static_content/install/install_generator.rb +7 -5
- data/lib/solidus_static_content.rb +6 -18
- data/lib/solidus_static_content/engine.rb +35 -0
- data/lib/solidus_static_content/factories.rb +18 -0
- data/lib/solidus_static_content/route_matcher.rb +11 -0
- data/lib/solidus_static_content/version.rb +5 -0
- data/lib/views/backend/spree/admin/pages/_form.html.erb +119 -0
- data/lib/views/backend/spree/admin/pages/edit.html.erb +32 -0
- data/lib/views/backend/spree/admin/pages/index.html.erb +68 -0
- data/lib/views/backend/spree/admin/pages/new.html.erb +31 -0
- data/lib/views/backend/spree/admin/shared/_pages_tabs.html.erb +9 -0
- data/{app/views → lib/views/frontend}/spree/static_content/_static_content_footer.html.erb +0 -0
- data/{app/views → lib/views/frontend}/spree/static_content/_static_content_header.html.erb +0 -0
- data/{app/views → lib/views/frontend}/spree/static_content/_static_content_list.html.erb +0 -0
- data/{app/views → lib/views/frontend}/spree/static_content/_static_content_sidebar.html.erb +1 -1
- data/lib/views/frontend/spree/static_content/show.html.erb +18 -0
- data/solidus_static_content.gemspec +36 -31
- data/spec/controllers/spree/admin/pages_controller_spec.rb +11 -0
- data/spec/controllers/{static_content_controller_spec.rb → spree/static_content_controller_spec.rb} +9 -12
- data/spec/features/{admin → spree/admin}/pages_spec.rb +8 -5
- data/spec/features/{static_content_spec.rb → spree/static_content_spec.rb} +6 -4
- data/spec/helpers/{page_helper_spec.rb → spree/page_helper_spec.rb} +0 -0
- data/spec/lib/solidus_static_content/engine_spec.rb +14 -0
- data/spec/lib/{spree_static.content_spec.rb → solidus_static_content/route_matcher_spec.rb} +4 -13
- data/spec/models/{page_spec.rb → spree/page_spec.rb} +22 -7
- data/spec/spec_helper.rb +17 -40
- metadata +85 -177
- data/.travis.yml +0 -21
- data/app/assets/javascripts/spree/backend/spree_static_content.js +0 -1
- data/app/assets/javascripts/spree/frontend/spree_static_content.js +0 -1
- data/app/assets/stylesheets/spree/backend/spree_static_content.css +0 -3
- data/app/controllers/spree/admin/pages_controller.rb +0 -3
- data/app/overrides/pages_in_menu.rb +0 -5
- data/app/views/spree/admin/pages/_form.html.erb +0 -98
- data/app/views/spree/admin/pages/edit.html.erb +0 -18
- data/app/views/spree/admin/pages/index.html.erb +0 -51
- data/app/views/spree/admin/pages/new.html.erb +0 -18
- data/app/views/spree/static_content/show.html.erb +0 -26
- data/lib/spree_static_content/engine.rb +0 -17
- data/spec/factories/page_factory.rb +0 -18
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<%= render 'spree/admin/shared/pages_tabs' %>
|
|
2
|
+
|
|
3
|
+
<% admin_breadcrumb(link_to plural_resource_name(Spree::Page), spree.admin_pages_path) %>
|
|
4
|
+
<% admin_breadcrumb(@page.title) %>
|
|
5
|
+
|
|
6
|
+
<% content_for :page_title do %>
|
|
7
|
+
<%= t("spree.editing_page") %>
|
|
8
|
+
<% end %>
|
|
9
|
+
|
|
10
|
+
<% content_for :page_actions do %>
|
|
11
|
+
<li>
|
|
12
|
+
<%= button_to t("spree.back_to_static_pages_list"), spree.admin_pages_path %>
|
|
13
|
+
</li>
|
|
14
|
+
<% end %>
|
|
15
|
+
|
|
16
|
+
<div data-hook='admin_page_edit_form_header'>
|
|
17
|
+
<%= render "spree/shared/error_messages", :target => @page %>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<%= form_for [:admin, @page], as: :page, url: admin_page_path(@page) do |f| %>
|
|
21
|
+
<fieldset class="no-border-top">
|
|
22
|
+
<%= render :partial => 'form', :locals => { :f => f } %>
|
|
23
|
+
|
|
24
|
+
<div class='clear'></div>
|
|
25
|
+
|
|
26
|
+
<div data-hook='admin_page_edit_form_buttons'>
|
|
27
|
+
<% if can?(:update, @page) %>
|
|
28
|
+
<%= render partial: 'spree/admin/shared/edit_resource_links' %>
|
|
29
|
+
<% end %>
|
|
30
|
+
</div>
|
|
31
|
+
</fieldset>
|
|
32
|
+
<% end %>
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<%= render 'spree/admin/shared/pages_tabs' %>
|
|
2
|
+
|
|
3
|
+
<% content_for :page_actions do %>
|
|
4
|
+
<% if can?(:create, Spree::Page) %>
|
|
5
|
+
<li>
|
|
6
|
+
<%= link_to t("spree.new_page"), new_object_url, icon: 'plus' %>
|
|
7
|
+
</li>
|
|
8
|
+
<% end %>
|
|
9
|
+
<% end %>
|
|
10
|
+
|
|
11
|
+
<% content_for :page_title do %>
|
|
12
|
+
<%= t("spree.static_pages") %>
|
|
13
|
+
<% end %>
|
|
14
|
+
|
|
15
|
+
<% if @pages.any? %>
|
|
16
|
+
<table class="index responsive sortable" id="listing_pages" data-hook data-sortable-link="<%= update_positions_admin_pages_url %>">
|
|
17
|
+
<colgroup>
|
|
18
|
+
<col style="width: 10%">
|
|
19
|
+
<col style="width: 40%">
|
|
20
|
+
<col style="width: 35%">
|
|
21
|
+
<col style="width: 10%">
|
|
22
|
+
<col style="width: 15%">
|
|
23
|
+
</colgroup>
|
|
24
|
+
|
|
25
|
+
<thead>
|
|
26
|
+
<tr data-hook="admin_pages_index_headers">
|
|
27
|
+
<th></th>
|
|
28
|
+
<th><%= Spree::Page.human_attribute_name(:title) %></th>
|
|
29
|
+
<th><%= t("spree.link") %></th>
|
|
30
|
+
<th><%= Spree::Page.human_attribute_name(:visible) %></th>
|
|
31
|
+
<th data-hook="admin_pages_index_header_actions" class="actions"></th>
|
|
32
|
+
</tr>
|
|
33
|
+
</thead>
|
|
34
|
+
|
|
35
|
+
<tbody class="ui-sortable">
|
|
36
|
+
<% @pages.each do |page| %>
|
|
37
|
+
<tr data-hook="admin_pages_index_rows" class="<%= cycle('odd', 'even') %>" id="<%= dom_id page %>">
|
|
38
|
+
<td>
|
|
39
|
+
<% if can?(:update_positions, Spree::StockLocation) %>
|
|
40
|
+
<span class='handle ui-sortable-handle'></span>
|
|
41
|
+
<% end %>
|
|
42
|
+
</td>
|
|
43
|
+
<td><%= page.title %></td>
|
|
44
|
+
<td><%= link_to page.link, page.link, :target => '_blank' %></td>
|
|
45
|
+
<td>
|
|
46
|
+
<span class='pill pill-<%= page.visible ? 'active' : 'inactive' %>'>
|
|
47
|
+
<%= t("spree.#{page.visible? ? :active : :inactive}") %>
|
|
48
|
+
</span>
|
|
49
|
+
</td>
|
|
50
|
+
<td data-hook="admin_pages_index_row_actions" class="actions" >
|
|
51
|
+
<% if can?(:update, page) %>
|
|
52
|
+
<%= link_to_edit page, no_text: true %>
|
|
53
|
+
<% end %>
|
|
54
|
+
<% if can?(:destroy, page) %>
|
|
55
|
+
<%= link_to_delete page, no_text: true %>
|
|
56
|
+
<% end %>
|
|
57
|
+
</td>
|
|
58
|
+
</tr>
|
|
59
|
+
<% end %>
|
|
60
|
+
</tbody>
|
|
61
|
+
</table>
|
|
62
|
+
<% else %>
|
|
63
|
+
<div class="no-objects-found">
|
|
64
|
+
<%= render 'spree/admin/shared/no_objects_found',
|
|
65
|
+
resource: Spree::Page,
|
|
66
|
+
new_resource_url: new_object_url %>
|
|
67
|
+
</div>
|
|
68
|
+
<% end %>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<%= render 'spree/admin/shared/pages_tabs' %>
|
|
2
|
+
|
|
3
|
+
<% admin_breadcrumb(link_to plural_resource_name(Spree::Page), spree.admin_pages_path) %>
|
|
4
|
+
|
|
5
|
+
<% content_for :page_title do %>
|
|
6
|
+
<%= t("spree.new_page") %>
|
|
7
|
+
<% end %>
|
|
8
|
+
|
|
9
|
+
<% content_for :page_actions do %>
|
|
10
|
+
<li>
|
|
11
|
+
<%= button_to t("spree.back_to_static_pages_list"), spree.admin_pages_path %>
|
|
12
|
+
</li>
|
|
13
|
+
<% end %>
|
|
14
|
+
|
|
15
|
+
<%= render "spree/shared/error_messages", :target => @page %>
|
|
16
|
+
|
|
17
|
+
<div data-hook='admin_page_new_form'>
|
|
18
|
+
<%= form_for [:admin, @page] do |f| %>
|
|
19
|
+
<fieldset class='no-border-top'>
|
|
20
|
+
<%= render partial: 'form', locals: { f: f } %>
|
|
21
|
+
|
|
22
|
+
<div class='clear'></div>
|
|
23
|
+
|
|
24
|
+
<% if can?(:create, Spree::Page) %>
|
|
25
|
+
<div data-hook='admin_page_new_form_buttons'>
|
|
26
|
+
<%= render partial: 'spree/admin/shared/new_resource_links' %>
|
|
27
|
+
</div>
|
|
28
|
+
<% end %>
|
|
29
|
+
</fieldset>
|
|
30
|
+
<% end %>
|
|
31
|
+
</div>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<% if Spree::Page.by_store(current_store).visible.sidebar_links.any? %>
|
|
2
2
|
<nav id="pages" class="sidebar-item">
|
|
3
|
-
<h6 class="pages-root"><%=
|
|
3
|
+
<h6 class="pages-root"><%= t("spree.pages") %></h6>
|
|
4
4
|
<ul class="pages-list"><%= render :partial => "spree/static_content/static_content_list", :collection => Spree::Page.visible.sidebar_links, :as => :page %></ul>
|
|
5
5
|
</nav>
|
|
6
6
|
<% end %>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<% if @page.layout.present? and @page.render_layout_as_partial? %>
|
|
2
|
+
<%= render :partial => @page.layout %>
|
|
3
|
+
<% else %>
|
|
4
|
+
<% content_for :sidebar do %>
|
|
5
|
+
<div data-hook="homepage_sidebar_navigation">
|
|
6
|
+
<% if "spree/products" == params[:controller] && @taxon %>
|
|
7
|
+
<%= render partial: 'spree/shared/filters' %>
|
|
8
|
+
<% else %>
|
|
9
|
+
<%= render partial: 'spree/shared/taxonomies' %>
|
|
10
|
+
<% end %>
|
|
11
|
+
</div>
|
|
12
|
+
<% end %>
|
|
13
|
+
|
|
14
|
+
<h1><%= @page.title %></h1>
|
|
15
|
+
<div id="page_content">
|
|
16
|
+
<%= raw @page.body %>
|
|
17
|
+
</div>
|
|
18
|
+
<% end %>
|
|
@@ -1,32 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'lib/solidus_static_content/version'
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |spec|
|
|
6
|
+
spec.name = 'solidus_static_content'
|
|
7
|
+
spec.version = SolidusStaticContent::VERSION
|
|
8
|
+
spec.authors = ['Peter Berkenbosch', 'Roman Smirnov']
|
|
9
|
+
spec.email = 'peter@pero-ict.nl'
|
|
10
|
+
|
|
11
|
+
spec.summary = 'Extension to manage the static pages for your Solidus store.'
|
|
12
|
+
spec.description = 'Manage the static pages of your Solidus store or replace existing pages with a static version'
|
|
13
|
+
spec.homepage = 'https://github.com/solidusio-contrib/solidus_static_content#readme'
|
|
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_static_content#readme'
|
|
18
|
+
spec.metadata['changelog_uri'] = 'https://github.com/solidusio-contrib/solidus_static_content/releases'
|
|
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', '~> 1.0'
|
|
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'
|
|
32
37
|
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
RSpec.describe Spree::Admin::PagesController do
|
|
4
|
+
describe '.build_resource' do
|
|
5
|
+
it 'pre-assigns the default store' do
|
|
6
|
+
default_store = create(:store, default: true)
|
|
7
|
+
|
|
8
|
+
expect(subject.send(:build_resource).stores).to eq([default_store])
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
data/spec/controllers/{static_content_controller_spec.rb → spree/static_content_controller_spec.rb}
RENAMED
|
@@ -1,37 +1,34 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe Spree::StaticContentController, type: :controller do
|
|
4
|
-
before do
|
|
5
|
-
controller.stub spree_current_user: nil
|
|
6
|
-
end
|
|
7
|
-
|
|
8
4
|
let!(:store) { create(:store, default: true) }
|
|
9
5
|
|
|
10
6
|
context '#show' do
|
|
11
7
|
it 'accepts path as root' do
|
|
12
8
|
page = create(:page, slug: '/', stores: [store])
|
|
13
9
|
request.path = page.slug
|
|
14
|
-
|
|
15
|
-
expect(response).to
|
|
10
|
+
get :show, params: { path: page.slug }
|
|
11
|
+
expect(response).to be_successful
|
|
16
12
|
end
|
|
17
13
|
|
|
18
14
|
it 'accepts path as string' do
|
|
19
15
|
page = create(:page, slug: 'hello', stores: [store])
|
|
20
16
|
request.path = page.slug
|
|
21
|
-
|
|
22
|
-
expect(response).to
|
|
17
|
+
get :show, params: { path: page.slug }
|
|
18
|
+
expect(response).to be_successful
|
|
23
19
|
end
|
|
24
20
|
|
|
25
21
|
it 'accepts path as nested' do
|
|
26
22
|
page = create(:page, slug: 'aa/bb/cc', stores: [store])
|
|
27
23
|
request.path = page.slug
|
|
28
|
-
|
|
29
|
-
expect(response).to
|
|
24
|
+
get :show, params: { path: page.slug }
|
|
25
|
+
expect(response).to be_successful
|
|
30
26
|
end
|
|
31
27
|
|
|
32
28
|
it 'respond with a 404 when no page exists' do
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
expect {
|
|
30
|
+
get :show
|
|
31
|
+
}.to raise_error(ActiveRecord::RecordNotFound)
|
|
35
32
|
end
|
|
36
33
|
end
|
|
37
34
|
end
|
|
@@ -3,6 +3,10 @@ require 'spec_helper'
|
|
|
3
3
|
RSpec.feature 'Admin Static Content', js: true do
|
|
4
4
|
stub_authorization!
|
|
5
5
|
|
|
6
|
+
background do
|
|
7
|
+
create :store, default: true
|
|
8
|
+
end
|
|
9
|
+
|
|
6
10
|
context 'when no page exists' do
|
|
7
11
|
background do
|
|
8
12
|
visit spree.admin_path
|
|
@@ -10,10 +14,11 @@ RSpec.feature 'Admin Static Content', js: true do
|
|
|
10
14
|
end
|
|
11
15
|
|
|
12
16
|
scenario 'can create new page' do
|
|
13
|
-
expect(page).to have_text /No Pages found
|
|
17
|
+
expect(page).to have_text /No Pages found/i
|
|
14
18
|
|
|
15
19
|
click_link 'New page'
|
|
16
|
-
|
|
20
|
+
|
|
21
|
+
expect(page).to have_text 'New page'
|
|
17
22
|
|
|
18
23
|
fill_in 'page_title', with: 'Contact us'
|
|
19
24
|
fill_in 'page_slug', with: 'contact-us'
|
|
@@ -56,11 +61,9 @@ RSpec.feature 'Admin Static Content', js: true do
|
|
|
56
61
|
|
|
57
62
|
scenario 'can be deleted' do
|
|
58
63
|
within_row(1) do
|
|
59
|
-
click_icon :trash
|
|
64
|
+
accept_confirm { click_icon :trash }
|
|
60
65
|
end
|
|
61
66
|
|
|
62
|
-
page.driver.browser.switch_to.alert.accept unless Capybara.javascript_driver == :poltergeist
|
|
63
|
-
|
|
64
67
|
expect(page).not_to have_text static_page.title
|
|
65
68
|
end
|
|
66
69
|
end
|
|
@@ -29,10 +29,12 @@ feature 'Static Content Page', js: true do
|
|
|
29
29
|
expect(page).to have_text 'Root Page Test'
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
scenario 'is limited within its own constraints' do
|
|
33
|
-
create(:
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
scenario 'is limited within its own constraints', js: false do
|
|
33
|
+
create(:taxon, permalink: 'test', name: 'The Taxon')
|
|
34
|
+
create(:page, slug: '/t/test', title: 'The Page', stores: [store])
|
|
35
|
+
visit '/t/test'
|
|
36
|
+
expect(page).to have_content('The Taxon')
|
|
37
|
+
expect(page).not_to have_content('The Page')
|
|
36
38
|
end
|
|
37
39
|
|
|
38
40
|
scenario 'fetch correct page' do
|
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
RSpec.describe SolidusStaticContent::Engine do
|
|
4
|
+
describe '.activate_menu_item' do
|
|
5
|
+
it 'adds the menu item only once' do
|
|
6
|
+
described_class.activate_menu_items
|
|
7
|
+
|
|
8
|
+
expect {
|
|
9
|
+
described_class.activate_menu_items
|
|
10
|
+
described_class.activate_menu_items
|
|
11
|
+
}.not_to change(Spree::Backend::Config.menu_items, :size)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -1,33 +1,24 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
|
-
describe
|
|
4
|
-
context '.remove_spree_mount_point' do
|
|
5
|
-
specify do
|
|
6
|
-
path = '/hello'
|
|
7
|
-
expect(subject.remove_spree_mount_point(path)).to eq 'hello'
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
describe Spree::StaticPage do
|
|
3
|
+
describe SolidusStaticContent::RouteMatcher do
|
|
13
4
|
subject { described_class }
|
|
14
5
|
|
|
15
6
|
context '.matches?' do
|
|
16
7
|
it 'is true when valid page' do
|
|
17
8
|
page = create(:page, slug: 'hello', visible: true)
|
|
18
|
-
request =
|
|
9
|
+
request = instance_double(Rack::Request, path_info: page.slug)
|
|
19
10
|
expect(subject.matches?(request)).to be true
|
|
20
11
|
end
|
|
21
12
|
|
|
22
13
|
it 'is false when using reserved slug name' do
|
|
23
14
|
page = create(:page, slug: 'login', visible: true)
|
|
24
|
-
request =
|
|
15
|
+
request = instance_double(Rack::Request, path_info: page.slug)
|
|
25
16
|
expect(subject.matches?(request)).to be false
|
|
26
17
|
end
|
|
27
18
|
|
|
28
19
|
it 'is false when page is not accessible' do
|
|
29
20
|
page = create(:page, slug: 'hello', visible: false)
|
|
30
|
-
request =
|
|
21
|
+
request = instance_double(Rack::Request, path_info: page.slug)
|
|
31
22
|
expect(subject.matches?(request)).to be false
|
|
32
23
|
end
|
|
33
24
|
end
|
|
@@ -9,11 +9,6 @@ describe Spree::Page do
|
|
|
9
9
|
end
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
it 'always add / prefix to slug' do
|
|
13
|
-
page = create(:page, slug: 'hello')
|
|
14
|
-
expect(page.slug).to eq '/hello'
|
|
15
|
-
end
|
|
16
|
-
|
|
17
12
|
context '.link' do
|
|
18
13
|
it 'return slug if foreign_link blank' do
|
|
19
14
|
page = create(:page, slug: 'hello')
|
|
@@ -26,9 +21,7 @@ describe Spree::Page do
|
|
|
26
21
|
end
|
|
27
22
|
end
|
|
28
23
|
|
|
29
|
-
|
|
30
24
|
context "pages in stores" do
|
|
31
|
-
|
|
32
25
|
before(:each) do
|
|
33
26
|
@store = create(:store)
|
|
34
27
|
@page = create(:page, :stores => [@store])
|
|
@@ -40,7 +33,29 @@ describe Spree::Page do
|
|
|
40
33
|
expect(pages_by_store).to include(@page)
|
|
41
34
|
expect(pages_by_store).to_not include(@page2)
|
|
42
35
|
end
|
|
36
|
+
end
|
|
43
37
|
|
|
38
|
+
describe '#slug' do
|
|
39
|
+
it 'always adds a "/" (slash) prefix to the slug' do
|
|
40
|
+
page = create(:page, slug: 'hello')
|
|
41
|
+
expect(page.slug).to eq '/hello'
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
context 'when a title is present' do
|
|
45
|
+
it 'is generated from the title' do
|
|
46
|
+
page = create(:page, slug: nil, title: 'Hello World!')
|
|
47
|
+
|
|
48
|
+
expect(page).to be_valid
|
|
49
|
+
expect(page.slug).to eq('/hello-world')
|
|
50
|
+
end
|
|
51
|
+
end
|
|
44
52
|
end
|
|
45
53
|
|
|
54
|
+
describe '.meta_title' do
|
|
55
|
+
it 'falls back to title' do
|
|
56
|
+
page = build(:page, title: "Foo Bar", meta_title: nil)
|
|
57
|
+
|
|
58
|
+
expect(page.meta_title).to eq("Foo Bar")
|
|
59
|
+
end
|
|
60
|
+
end
|
|
46
61
|
end
|