tb_cms 1.3.2 → 1.3.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 +4 -4
- data/app/controllers/pages_controller.rb +3 -3
- data/app/models/spud_page.rb +0 -1
- data/lib/spud_cms/engine.rb +3 -9
- data/lib/spud_cms/template_parser.rb +2 -2
- data/lib/spud_cms/version.rb +1 -1
- data/spec/controllers/admin/menu_items_controller_spec.rb +18 -18
- data/spec/controllers/admin/menus_controller_spec.rb +9 -9
- data/spec/controllers/admin/pages_controller_spec.rb +9 -9
- data/spec/controllers/pages_controller_spec.rb +5 -5
- data/spec/dummy/config/application.rb +1 -1
- data/spec/helpers/cms/application_helper_spec.rb +29 -29
- data/spec/models/spud_menu_item_spec.rb +4 -4
- data/spec/models/spud_page_partial_spec.rb +5 -5
- data/spec/models/spud_page_spec.rb +12 -12
- data/spec/rails_helper.rb +1 -1
- metadata +59 -59
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf2fe4b361b6f73b675c9c263b53be34c0a80c60
|
4
|
+
data.tar.gz: 2b8ced4d2cfdd18bd7578f2dadc284dcf89cb9e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb80687cde5988b4b9151c31e711c4487807d6d794a398da68bb6f606957194cbd8f5e58c8c51d3a0654ade1b0efa43386c0b8ffe9fb8a937018b603e64e9817
|
7
|
+
data.tar.gz: 0a11371e6df82a12cd4d0652d4a6ab6db7580cd58d8e95b9568573327dc5b8c5fb88637bdc2331a9cd9b9ffda839028476f69cad20adb7e55b22b0d1b8b81d47
|
@@ -34,11 +34,11 @@ class PagesController < ApplicationController
|
|
34
34
|
private
|
35
35
|
|
36
36
|
def render_404
|
37
|
-
raise
|
38
|
-
|
37
|
+
raise TbCore::NotFoundError, item: 'page'
|
38
|
+
end
|
39
39
|
|
40
40
|
def set_default_content_type
|
41
41
|
request.format = :html if params[:format].blank?
|
42
|
-
|
42
|
+
end
|
43
43
|
|
44
44
|
end
|
data/app/models/spud_page.rb
CHANGED
data/lib/spud_cms/engine.rb
CHANGED
@@ -11,7 +11,7 @@ module Spud
|
|
11
11
|
end
|
12
12
|
|
13
13
|
initializer :admin do
|
14
|
-
|
14
|
+
TbCore.configure do |config|
|
15
15
|
config.admin_applications += [{ name: 'Pages', thumbnail: 'admin/pages_thumb.png', url: '/admin/pages', order: 0 }]
|
16
16
|
if Spud::Cms.menus_enabled
|
17
17
|
config.admin_applications += [{ name: 'Menus', thumbnail: 'admin/menus_thumb.png', url: '/admin/menus', order: 2 }]
|
@@ -23,19 +23,13 @@ module Spud
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
initializer :model_overrides_cms do |_config|
|
27
|
-
ActiveRecord::Base.class_eval do
|
28
|
-
include Spud::Searchable
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
26
|
initializer :spud_cms_routes do |config|
|
33
27
|
config.routes_reloader.paths << File.expand_path('../page_route.rb', __FILE__)
|
34
28
|
end
|
35
29
|
|
36
30
|
initializer 'tb_cms.assets' do |_config|
|
37
|
-
|
38
|
-
|
31
|
+
TbCore.append_admin_javascripts('admin/cms/application')
|
32
|
+
TbCore.append_admin_stylesheets('admin/cms/application')
|
39
33
|
Rails.application.config.assets.precompile += ['admin/pages_thumb.png', 'admin/snippets_thumb.png', 'admin/menus_thumb.png']
|
40
34
|
end
|
41
35
|
|
@@ -44,7 +44,7 @@ module Spud
|
|
44
44
|
process_directive(header_line, layout)
|
45
45
|
end
|
46
46
|
layout[:partials] = ['Body'] if layout[:partials].blank?
|
47
|
-
layout[:sites] = [
|
47
|
+
layout[:sites] = [TbCore.config.short_name.downcase] if layout[:sites].blank?
|
48
48
|
if layout[:template_name].blank? == false
|
49
49
|
return layout
|
50
50
|
else
|
@@ -58,7 +58,7 @@ module Spud
|
|
58
58
|
default_layout_path = layout_path(Rails.application.root.join('app', 'views', 'layouts', Spud::Cms.default_page_layout))
|
59
59
|
# puts(layouts)
|
60
60
|
if layouts[default_layout_path].blank?
|
61
|
-
layouts[default_layout_path] = { template_name: 'Default', partials: ['Body'], sites: [
|
61
|
+
layouts[default_layout_path] = { template_name: 'Default', partials: ['Body'], sites: [TbCore.short_name.downcase], default: true }
|
62
62
|
else
|
63
63
|
layouts[default_layout_path][:default] = true
|
64
64
|
end
|
data/lib/spud_cms/version.rb
CHANGED
@@ -6,12 +6,12 @@ describe Admin::MenuItemsController, type: :controller do
|
|
6
6
|
end
|
7
7
|
|
8
8
|
let (:menu) do
|
9
|
-
|
9
|
+
FactoryBot.create(:spud_menu)
|
10
10
|
end
|
11
11
|
|
12
12
|
describe 'index' do
|
13
13
|
it 'should return an array of menus' do
|
14
|
-
2.times { |_x| s =
|
14
|
+
2.times { |_x| s = FactoryBot.create(:spud_menu_item, spud_menu_id: menu.id, parent_id: menu.id) }
|
15
15
|
get :index, params: { menu_id: menu.id }
|
16
16
|
|
17
17
|
expect(assigns(:menu_items).count).to be > 1
|
@@ -33,43 +33,43 @@ describe Admin::MenuItemsController, type: :controller do
|
|
33
33
|
describe 'create' do
|
34
34
|
it 'should create a new menu item with a valid form submission' do
|
35
35
|
expect do
|
36
|
-
post :create, params: { menu_id: menu.id, spud_menu_item:
|
36
|
+
post :create, params: { menu_id: menu.id, spud_menu_item: FactoryBot.attributes_for(:spud_menu_item, parent_id: nil).reject { |k, _v| k == 'id' || k == :spud_menu_id } }
|
37
37
|
end.to change(SpudMenuItem, :count).by(1)
|
38
38
|
expect(response).to be_redirect
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'should not create a menu item with an invalid form entry' do
|
42
|
-
yamldata =
|
42
|
+
yamldata = FactoryBot.attributes_for(:spud_menu_item, name: nil).reject { |k, _v| k == 'id' || k == :spud_menu_id }
|
43
43
|
|
44
44
|
expect do
|
45
|
-
post :create, params: { menu_id: menu.id, spud_menu_item:
|
45
|
+
post :create, params: { menu_id: menu.id, spud_menu_item: FactoryBot.attributes_for(:spud_menu_item, name: nil, parent_id: nil).reject { |k, _v| k == 'id' || k == :spud_menu_id } }
|
46
46
|
end.to_not change(SpudMenuItem, :count)
|
47
47
|
end
|
48
48
|
|
49
49
|
it 'should autoset order if not specified' do
|
50
|
-
menuitem =
|
50
|
+
menuitem = FactoryBot.create(:spud_menu_item, parent_id: menu.id)
|
51
51
|
|
52
|
-
post :create, params: { menu_id: menu.id, spud_menu_item:
|
52
|
+
post :create, params: { menu_id: menu.id, spud_menu_item: FactoryBot.attributes_for(:spud_menu_item, menu_order: nil, parent_id: nil).reject { |k, _v| k == 'id' || k == :spud_menu_id } }
|
53
53
|
expect(assigns(:menu_item).menu_order).to eq(1)
|
54
54
|
end
|
55
55
|
|
56
56
|
it 'should assign the menu name based on page name if left blank' do
|
57
|
-
page =
|
58
|
-
post :create, params: { menu_id: menu.id, spud_menu_item:
|
57
|
+
page = FactoryBot.create(:spud_page)
|
58
|
+
post :create, params: { menu_id: menu.id, spud_menu_item: FactoryBot.attributes_for(:spud_menu_item, name: nil, spud_page_id: page.id).reject { |k, _v| k == 'id' || k == :spud_menu_id } }
|
59
59
|
expect(assigns(:menu_item).name).to eq(page.name)
|
60
60
|
end
|
61
61
|
|
62
62
|
it 'should set the parent to a submenu if specified' do
|
63
|
-
menuitem =
|
64
|
-
post :create, params: { menu_id: menu.id, spud_menu_item:
|
63
|
+
menuitem = FactoryBot.create(:spud_menu_item, parent_id: menu.id)
|
64
|
+
post :create, params: { menu_id: menu.id, spud_menu_item: FactoryBot.attributes_for(:spud_menu_item, parent_id: menuitem.id).reject { |k, _v| k == 'id' || k == :spud_menu_id } }
|
65
65
|
expect(assigns(:menu_item).parent).to eq(menuitem)
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
69
|
describe 'edit' do
|
70
70
|
it 'should respond with menu item by id' do
|
71
|
-
menu1 =
|
72
|
-
menu2 =
|
71
|
+
menu1 = FactoryBot.create(:spud_menu_item)
|
72
|
+
menu2 = FactoryBot.create(:spud_menu_item)
|
73
73
|
get :edit, params: { menu_id: menu.id, id: menu2.id }
|
74
74
|
expect(assigns(:menu_item)).to eq(menu2)
|
75
75
|
end
|
@@ -82,7 +82,7 @@ describe Admin::MenuItemsController, type: :controller do
|
|
82
82
|
|
83
83
|
describe 'update' do
|
84
84
|
it 'should update the name when the name attribute is changed' do
|
85
|
-
menu_item =
|
85
|
+
menu_item = FactoryBot.create(:spud_menu_item)
|
86
86
|
new_name = 'MyMenu'
|
87
87
|
expect do
|
88
88
|
put :update, params: { menu_id: menu.id, id: menu_item.id, spud_menu_item: menu_item.attributes.merge!(name: new_name, parent_id: nil).reject { |k, _v| k.to_sym == :spud_menu_id || k == 'id' || k.to_sym == :updated_at || k.to_sym == :created_at } }
|
@@ -90,8 +90,8 @@ describe Admin::MenuItemsController, type: :controller do
|
|
90
90
|
end.to change(menu_item, :name).to(new_name)
|
91
91
|
end
|
92
92
|
it 'should assign a menu to a submenu if parentid is defined' do
|
93
|
-
menu_item1 =
|
94
|
-
menu_item =
|
93
|
+
menu_item1 = FactoryBot.create(:spud_menu_item)
|
94
|
+
menu_item = FactoryBot.create(:spud_menu_item)
|
95
95
|
|
96
96
|
expect do
|
97
97
|
put :update, params: { menu_id: menu.id, id: menu_item.id, spud_menu_item: menu_item.attributes.merge!(parent_id: menu_item1.id).reject { |k, _v| k.to_sym == :spud_menu_id || k == 'id' || k.to_sym == :updated_at || k.to_sym == :created_at } }
|
@@ -102,7 +102,7 @@ describe Admin::MenuItemsController, type: :controller do
|
|
102
102
|
|
103
103
|
describe 'destroy' do
|
104
104
|
it 'should destroy the menu item' do
|
105
|
-
menu_item =
|
105
|
+
menu_item = FactoryBot.create(:spud_menu_item, parent_id: menu.id)
|
106
106
|
expect do
|
107
107
|
delete :destroy, params: { menu_id: menu.id, id: menu_item.id }
|
108
108
|
end.to change(SpudMenuItem, :count).by(-1)
|
@@ -113,7 +113,7 @@ describe Admin::MenuItemsController, type: :controller do
|
|
113
113
|
it 'should update all menu items menu_order fields' do
|
114
114
|
ordered_arr = Array.new(5)
|
115
115
|
ordered_arr.each_with_index do |item, index|
|
116
|
-
item =
|
116
|
+
item = FactoryBot.create(:spud_menu_item, parent_id: menu.id, menu_order: index)
|
117
117
|
ordered_arr[index] = item.id.to_s
|
118
118
|
end
|
119
119
|
new_order_arr = ordered_arr.shuffle
|
@@ -7,7 +7,7 @@ describe Admin::MenusController, type: :controller do
|
|
7
7
|
|
8
8
|
describe 'index' do
|
9
9
|
it 'should return an array of menus' do
|
10
|
-
2.times {
|
10
|
+
2.times { FactoryBot.create(:spud_menu) }
|
11
11
|
get :index
|
12
12
|
|
13
13
|
expect(assigns(:menus).count).to be > 1
|
@@ -26,14 +26,14 @@ describe Admin::MenusController, type: :controller do
|
|
26
26
|
describe 'create' do
|
27
27
|
it 'should create a new menu with a valid form submission' do
|
28
28
|
expect do
|
29
|
-
post :create, params: { spud_menu:
|
29
|
+
post :create, params: { spud_menu: FactoryBot.attributes_for(:spud_menu).reject { |k, _v| k == 'id' } }
|
30
30
|
end.to change(SpudMenu, :count).by(1)
|
31
31
|
expect(response).to be_redirect
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'should not create a menu with an invalid form entry' do
|
35
35
|
expect do
|
36
|
-
post :create, params: { spud_menu:
|
36
|
+
post :create, params: { spud_menu: FactoryBot.attributes_for(:spud_menu, name: nil).reject { |k, _v| k == 'id' } }
|
37
37
|
end.to_not change(SpudMenu, :count)
|
38
38
|
|
39
39
|
end
|
@@ -41,8 +41,8 @@ describe Admin::MenusController, type: :controller do
|
|
41
41
|
|
42
42
|
describe 'edit' do
|
43
43
|
it 'should response with menu by id' do
|
44
|
-
menu1 =
|
45
|
-
menu2 =
|
44
|
+
menu1 = FactoryBot.create(:spud_menu)
|
45
|
+
menu2 = FactoryBot.create(:spud_menu)
|
46
46
|
get :edit, params: { id: menu2.id }
|
47
47
|
expect(assigns(:menu)).to eq(menu2)
|
48
48
|
end
|
@@ -55,7 +55,7 @@ describe Admin::MenusController, type: :controller do
|
|
55
55
|
|
56
56
|
describe 'update' do
|
57
57
|
it 'should update the name when the name attribute is changed' do
|
58
|
-
menu =
|
58
|
+
menu = FactoryBot.create(:spud_menu)
|
59
59
|
new_name = 'MyMenu'
|
60
60
|
expect do
|
61
61
|
put :update, params: { id: menu.id, spud_menu: menu.attributes.merge!(name: new_name).reject { |k, _v| k == 'id' } }
|
@@ -65,7 +65,7 @@ describe Admin::MenusController, type: :controller do
|
|
65
65
|
end
|
66
66
|
|
67
67
|
it 'should redirect to the admin menus after a successful update' do
|
68
|
-
menu =
|
68
|
+
menu = FactoryBot.create(:spud_menu)
|
69
69
|
put :update, params: { id: menu.id, spud_menu: menu.attributes.merge!(name: 'MyMenu').reject { |k, _v| k == 'id' } }
|
70
70
|
|
71
71
|
expect(response).to redirect_to(admin_menu_menu_items_url(menu_id: menu.id))
|
@@ -74,7 +74,7 @@ describe Admin::MenusController, type: :controller do
|
|
74
74
|
|
75
75
|
describe 'destroy' do
|
76
76
|
it 'should destroy the menu' do
|
77
|
-
menu =
|
77
|
+
menu = FactoryBot.create(:spud_menu)
|
78
78
|
expect do
|
79
79
|
delete :destroy, params: { id: menu.id }
|
80
80
|
end.to change(SpudMenu, :count).by(-1)
|
@@ -82,7 +82,7 @@ describe Admin::MenusController, type: :controller do
|
|
82
82
|
end
|
83
83
|
|
84
84
|
it 'should not destroy the menu with a wrong id' do
|
85
|
-
menu =
|
85
|
+
menu = FactoryBot.create(:spud_menu)
|
86
86
|
expect do
|
87
87
|
delete :destroy, params: { id: '23532' }
|
88
88
|
end.to_not change(SpudMenu, :count)
|
@@ -7,15 +7,15 @@ describe Admin::PagesController, type: :controller do
|
|
7
7
|
|
8
8
|
describe 'index' do
|
9
9
|
it 'should return an array of parent pages' do
|
10
|
-
2.times { |_x| s =
|
10
|
+
2.times { |_x| s = FactoryBot.create(:spud_page) }
|
11
11
|
get :index
|
12
12
|
|
13
13
|
expect(assigns(:pages).count).to be > 1
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'should only return parent pages' do
|
17
|
-
2.times { |_x|
|
18
|
-
|
17
|
+
2.times { |_x| FactoryBot.create(:spud_page) }
|
18
|
+
FactoryBot.create(:spud_page, spud_page_id: 1)
|
19
19
|
|
20
20
|
get :index
|
21
21
|
expect(assigns(:pages).count).to eq(2)
|
@@ -24,7 +24,7 @@ describe Admin::PagesController, type: :controller do
|
|
24
24
|
|
25
25
|
describe 'show' do
|
26
26
|
it 'should respond successfully' do
|
27
|
-
p =
|
27
|
+
p = FactoryBot.create(:spud_page)
|
28
28
|
get :show, params: { id: p.id }
|
29
29
|
expect(assigns(:layout)).to render_template(layout: "layouts/#{Spud::Cms.default_page_layout}")
|
30
30
|
expect(response).to be_success
|
@@ -48,7 +48,7 @@ describe Admin::PagesController, type: :controller do
|
|
48
48
|
describe 'edit' do
|
49
49
|
context 'HTML format' do
|
50
50
|
it 'should load the correct page for the edit form' do
|
51
|
-
page =
|
51
|
+
page = FactoryBot.create(:spud_page)
|
52
52
|
get :edit, params: { id: page.id }
|
53
53
|
|
54
54
|
expect(assigns(:page).id).to eq(page.id)
|
@@ -59,7 +59,7 @@ describe Admin::PagesController, type: :controller do
|
|
59
59
|
|
60
60
|
describe 'update' do
|
61
61
|
it 'should update the name when the attribute is changed' do
|
62
|
-
page =
|
62
|
+
page = FactoryBot.create(:spud_page)
|
63
63
|
new_name = 'Adam'
|
64
64
|
expect do
|
65
65
|
put :update, params: { id: page.id, spud_page: { name: new_name } }
|
@@ -68,7 +68,7 @@ describe Admin::PagesController, type: :controller do
|
|
68
68
|
end
|
69
69
|
|
70
70
|
it 'should redirect to the page root index after a successful update' do
|
71
|
-
page =
|
71
|
+
page = FactoryBot.create(:spud_page)
|
72
72
|
new_name = 'Adam'
|
73
73
|
put :update, params: { id: page.id, spud_page: page.attributes.merge!(name: new_name).reject { |key, _value| key == 'id' || key == 'created_at' || key == 'updated_at' } }
|
74
74
|
|
@@ -78,7 +78,7 @@ describe Admin::PagesController, type: :controller do
|
|
78
78
|
|
79
79
|
describe 'destroy' do
|
80
80
|
it 'should destroy the page' do
|
81
|
-
page =
|
81
|
+
page = FactoryBot.create(:spud_page)
|
82
82
|
expect do
|
83
83
|
delete :destroy, params: { id: page.id }
|
84
84
|
end.to change(SpudPage, :count).by(-1)
|
@@ -86,7 +86,7 @@ describe Admin::PagesController, type: :controller do
|
|
86
86
|
end
|
87
87
|
|
88
88
|
it 'should destroy the user with the wrong id' do
|
89
|
-
page =
|
89
|
+
page = FactoryBot.create(:spud_page)
|
90
90
|
expect do
|
91
91
|
delete :destroy, params: { id: '23532' }
|
92
92
|
end.to_not change(SpudPage, :count)
|
@@ -4,21 +4,21 @@ describe PagesController, type: :controller do
|
|
4
4
|
describe 'show' do
|
5
5
|
|
6
6
|
it 'should render a page' do
|
7
|
-
page =
|
7
|
+
page = FactoryBot.create(:spud_page)
|
8
8
|
get :show, params: { id: page.url_name }
|
9
9
|
expect(assigns(:layout)).to render_template(layout: "layouts/#{Spud::Cms.default_page_layout}")
|
10
10
|
expect(response).to be_success
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'should render home page if id is blank' do
|
14
|
-
page =
|
14
|
+
page = FactoryBot.create(:spud_page, name: 'home')
|
15
15
|
get :show
|
16
16
|
expect(assigns(:page)).to eq(page)
|
17
17
|
expect(response).to be_success
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'should redirect to new page url from old page url if it was changed' do
|
21
|
-
page =
|
21
|
+
page = FactoryBot.create(:spud_page, name: 'about', url_name: 'about')
|
22
22
|
page.update(url_name: 'about-us')
|
23
23
|
page.save
|
24
24
|
get :show, params: { id: 'about' }
|
@@ -27,7 +27,7 @@ describe PagesController, type: :controller do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'should not allow access to private pages when logged out' do
|
30
|
-
page =
|
30
|
+
page = FactoryBot.create(:spud_page, name: 'about', visibility: 1)
|
31
31
|
|
32
32
|
get :show, params: { id: 'about' }
|
33
33
|
expect(response).to redirect_to login_path(return_to: '/about')
|
@@ -43,7 +43,7 @@ describe PagesController, type: :controller do
|
|
43
43
|
end
|
44
44
|
|
45
45
|
it 'should allow access to private pages when logged in' do
|
46
|
-
page =
|
46
|
+
page = FactoryBot.create(:spud_page, name: 'about', visibility: 1)
|
47
47
|
|
48
48
|
get :show, params: { id: 'about' }
|
49
49
|
expect(response).to be_success
|
@@ -7,36 +7,36 @@ describe Cms::ApplicationHelper, type: :helper do
|
|
7
7
|
|
8
8
|
describe '#sp_list_menu' do
|
9
9
|
it 'should be able to find a menu by its name' do
|
10
|
-
menu =
|
11
|
-
2.times { |_x|
|
10
|
+
menu = FactoryBot.create(:spud_menu, name: 'Main')
|
11
|
+
2.times { |_x| FactoryBot.create(:spud_menu_item, parent_id: menu.id, spud_menu_id: menu.id, url: '/') }
|
12
12
|
|
13
13
|
result = helper.sp_list_menu(name: 'Main', active_class: 'active')
|
14
14
|
expect(result).to match /\<li/
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'should assign id to ul block' do
|
18
|
-
menu =
|
19
|
-
2.times { |_x| s =
|
18
|
+
menu = FactoryBot.create(:spud_menu)
|
19
|
+
2.times { |_x| s = FactoryBot.create(:spud_menu_item, parent_id: menu.id, spud_menu_id: menu.id, url: '/') }
|
20
20
|
|
21
21
|
result = helper.sp_list_menu(name: menu.name, id: 'nav')
|
22
22
|
expect(result).to match /id=\'nav\'/
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'should render nested menu items' do
|
26
|
-
menu =
|
27
|
-
s =
|
28
|
-
s2 =
|
29
|
-
s3 =
|
26
|
+
menu = FactoryBot.create(:spud_menu, name: 'Main2')
|
27
|
+
s = FactoryBot.create(:spud_menu_item, parent_id: menu.id, spud_menu_id: menu.id, url: '/')
|
28
|
+
s2 = FactoryBot.create(:spud_menu_item, parent_id: menu.id, spud_menu_id: menu.id, url: '/')
|
29
|
+
s3 = FactoryBot.create(:spud_menu_item, parent_type: 'SpudMenuItem', parent_id: s.id, spud_menu_id: menu.id, url: '/', name: 'SubItem')
|
30
30
|
|
31
31
|
result = helper.sp_list_menu(name: 'Main2')
|
32
32
|
expect(result).to match /SubItem/
|
33
33
|
end
|
34
34
|
|
35
35
|
it 'should respect max depth' do
|
36
|
-
menu =
|
37
|
-
s =
|
38
|
-
s2 =
|
39
|
-
s3 =
|
36
|
+
menu = FactoryBot.create(:spud_menu, name: 'Main4')
|
37
|
+
s = FactoryBot.create(:spud_menu_item, parent_id: menu.id, spud_menu_id: menu.id, url: '/')
|
38
|
+
s2 = FactoryBot.create(:spud_menu_item, parent_id: menu.id, spud_menu_id: menu.id, url: '/')
|
39
|
+
s3 = FactoryBot.create(:spud_menu_item, parent_type: 'SpudMenuItem', parent_id: s.id, spud_menu_id: menu.id, url: '/', name: 'SubItem')
|
40
40
|
|
41
41
|
result = helper.sp_list_menu(name: 'Main4', max_depth: 1)
|
42
42
|
expect(result).to_not match /SubItem/
|
@@ -45,10 +45,10 @@ describe Cms::ApplicationHelper, type: :helper do
|
|
45
45
|
|
46
46
|
describe '#sp_menu_with_seperator' do
|
47
47
|
it 'should render a flattened list of links' do
|
48
|
-
menu =
|
49
|
-
s =
|
50
|
-
s2 =
|
51
|
-
s3 =
|
48
|
+
menu = FactoryBot.create(:spud_menu, name: 'Main3')
|
49
|
+
s = FactoryBot.create(:spud_menu_item, parent_id: menu.id, spud_menu_id: menu.id, url: '/')
|
50
|
+
s2 = FactoryBot.create(:spud_menu_item, parent_id: menu.id, spud_menu_id: menu.id, url: '/')
|
51
|
+
s3 = FactoryBot.create(:spud_menu_item, parent_type: 'SpudMenuItem', parent_id: s.id, spud_menu_id: menu.id, url: '/', name: 'SubItem')
|
52
52
|
|
53
53
|
content = helper.sp_menu_with_seperator(name: 'Main3')
|
54
54
|
expect(content).to match /SubItem/
|
@@ -58,9 +58,9 @@ describe Cms::ApplicationHelper, type: :helper do
|
|
58
58
|
|
59
59
|
describe '#sp_list_pages' do
|
60
60
|
it 'should be able to list created pages' do
|
61
|
-
page =
|
62
|
-
page2 =
|
63
|
-
page3 =
|
61
|
+
page = FactoryBot.create(:spud_page)
|
62
|
+
page2 = FactoryBot.create(:spud_page)
|
63
|
+
page3 = FactoryBot.create(:spud_page, spud_page_id: page.id)
|
64
64
|
|
65
65
|
content = helper.sp_list_pages(active_class: 'active')
|
66
66
|
expect(content).to match /#{page.name}/
|
@@ -69,8 +69,8 @@ describe Cms::ApplicationHelper, type: :helper do
|
|
69
69
|
end
|
70
70
|
|
71
71
|
it 'should assign id' do
|
72
|
-
page =
|
73
|
-
page2 =
|
72
|
+
page = FactoryBot.create(:spud_page)
|
73
|
+
page2 = FactoryBot.create(:spud_page)
|
74
74
|
|
75
75
|
content = helper.sp_list_pages(id: 'page_nav')
|
76
76
|
expect(content).to match /id=\'page_nav\'/
|
@@ -78,17 +78,17 @@ describe Cms::ApplicationHelper, type: :helper do
|
|
78
78
|
end
|
79
79
|
|
80
80
|
it 'should be able to exclude certain pages' do
|
81
|
-
page =
|
82
|
-
page2 =
|
81
|
+
page = FactoryBot.create(:spud_page)
|
82
|
+
page2 = FactoryBot.create(:spud_page)
|
83
83
|
|
84
84
|
content = helper.sp_list_pages(exclude: [page2.name])
|
85
85
|
expect(content).to match /#{page.name}/
|
86
86
|
expect(content).to_not match /#{page2.name}/
|
87
87
|
end
|
88
88
|
it 'should respect max depth' do
|
89
|
-
page =
|
90
|
-
page2 =
|
91
|
-
page3 =
|
89
|
+
page = FactoryBot.create(:spud_page)
|
90
|
+
page2 = FactoryBot.create(:spud_page)
|
91
|
+
page3 = FactoryBot.create(:spud_page, spud_page_id: page.id)
|
92
92
|
|
93
93
|
content = helper.sp_list_pages(max_depth: 1)
|
94
94
|
expect(content).to match /#{page.name}/
|
@@ -97,9 +97,9 @@ describe Cms::ApplicationHelper, type: :helper do
|
|
97
97
|
end
|
98
98
|
|
99
99
|
it 'should be able to list sub pages of a particular page' do
|
100
|
-
page =
|
101
|
-
page2 =
|
102
|
-
page3 =
|
100
|
+
page = FactoryBot.create(:spud_page)
|
101
|
+
page2 = FactoryBot.create(:spud_page)
|
102
|
+
page3 = FactoryBot.create(:spud_page, spud_page_id: page.id)
|
103
103
|
content = helper.sp_list_pages(start_page_id: page.id)
|
104
104
|
expect(content).to_not match /#{page.name}/
|
105
105
|
expect(content).to_not match /#{page2.name}/
|
@@ -9,22 +9,22 @@ describe SpudMenuItem, type: :model do
|
|
9
9
|
|
10
10
|
describe :validations do
|
11
11
|
it 'should require a name' do
|
12
|
-
p =
|
12
|
+
p = FactoryBot.build(:spud_menu_item, name: nil)
|
13
13
|
expect(p).to_not be_valid
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'should require a menu_id' do
|
17
|
-
p =
|
17
|
+
p = FactoryBot.build(:spud_menu_item, spud_menu_id: nil)
|
18
18
|
expect(p).to_not be_valid
|
19
19
|
end
|
20
20
|
|
21
21
|
it 'should require a parent_type' do
|
22
|
-
p =
|
22
|
+
p = FactoryBot.build(:spud_menu_item, parent_type: nil)
|
23
23
|
expect(p).to_not be_valid
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'should require a parent_id' do
|
27
|
-
p =
|
27
|
+
p = FactoryBot.build(:spud_menu_item, parent_id: nil)
|
28
28
|
expect(p).to_not be_valid
|
29
29
|
end
|
30
30
|
end
|
@@ -4,24 +4,24 @@ describe SpudPagePartial, type: :model do
|
|
4
4
|
describe 'validations' do
|
5
5
|
|
6
6
|
it 'should require a name' do
|
7
|
-
p =
|
7
|
+
p = FactoryBot.build(:spud_page_partial, name: nil)
|
8
8
|
expect(p).to_not be_valid
|
9
9
|
end
|
10
10
|
|
11
11
|
it 'should respond with a symbol_name based on name' do
|
12
|
-
p =
|
12
|
+
p = FactoryBot.build(:spud_page_partial, name: 'Test Page')
|
13
13
|
expect(p.symbol_name).to eq('test_page')
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
17
|
describe 'save hooks' do
|
18
18
|
it 'should save the symbol name' do
|
19
|
-
p =
|
19
|
+
p = FactoryBot.create(:spud_page_partial, name: 'Test Page')
|
20
20
|
expect(p.attributes['symbol_name']).to eq('test_page')
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'should create a new revision if content is changed' do
|
24
|
-
p =
|
24
|
+
p = FactoryBot.create(:spud_page_partial, name: 'Test Page', content: 'Content')
|
25
25
|
expect(SpudPagePartialRevision.where(spud_page_id: p.spud_page_id).count).to eq(1)
|
26
26
|
end
|
27
27
|
|
@@ -29,7 +29,7 @@ describe SpudPagePartial, type: :model do
|
|
29
29
|
Spud::Cms.configure do |config|
|
30
30
|
config.max_revisions = 2
|
31
31
|
end
|
32
|
-
p =
|
32
|
+
p = FactoryBot.create(:spud_page_partial, name: 'Test Page', content: 'Home Sweet Home', spud_page_id: 1)
|
33
33
|
p.content = 'Nah'
|
34
34
|
p.save
|
35
35
|
|
@@ -11,26 +11,26 @@ describe SpudPage, type: :model do
|
|
11
11
|
describe 'validations' do
|
12
12
|
|
13
13
|
it 'should require a name' do
|
14
|
-
p =
|
14
|
+
p = FactoryBot.build(:spud_page, name: nil)
|
15
15
|
expect(p).to_not be_valid
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'should require a unique url_name' do
|
19
|
-
|
20
|
-
t =
|
19
|
+
FactoryBot.create(:spud_page, url_name: 'test', use_custom_url_name: true)
|
20
|
+
t = FactoryBot.build(:spud_page, url_name: 'test', use_custom_url_name: true)
|
21
21
|
expect(t).to_not be_valid
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'should generate a url_name if taken' do
|
25
|
-
|
26
|
-
t =
|
25
|
+
FactoryBot.create(:spud_page, name: 'test')
|
26
|
+
t = FactoryBot.build(:spud_page, name: 'test')
|
27
27
|
expect do
|
28
28
|
t.valid?
|
29
29
|
end.to change(t, :url_name)
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'should dependantly destroy page_partials' do
|
33
|
-
t =
|
33
|
+
t = FactoryBot.create(:spud_page, spud_page_partials: [SpudPagePartial.new(name: 'body')])
|
34
34
|
expect do
|
35
35
|
t.destroy
|
36
36
|
end.to change(SpudPagePartial, :count).from(1).to(0)
|
@@ -53,7 +53,7 @@ describe SpudPage, type: :model do
|
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'should return private if visibility is == 1' do
|
56
|
-
parent_page =
|
56
|
+
parent_page = FactoryBot.build(:spud_page, name: 'parent', visibility: 1)
|
57
57
|
|
58
58
|
expect(parent_page.is_private?).to eq(true)
|
59
59
|
|
@@ -64,25 +64,25 @@ describe SpudPage, type: :model do
|
|
64
64
|
|
65
65
|
describe '#generate_url_name' do
|
66
66
|
it 'should use the provided url' do
|
67
|
-
@page =
|
67
|
+
@page = FactoryBot.create(:spud_page, url_name: 'test')
|
68
68
|
expect(@page.url_name).to eq('test')
|
69
69
|
end
|
70
70
|
|
71
71
|
it 'should generate a url based on the page name' do
|
72
|
-
@page =
|
72
|
+
@page = FactoryBot.create(:spud_page, name: 'Hello World')
|
73
73
|
expect(@page.url_name).to eq('hello-world')
|
74
74
|
end
|
75
75
|
|
76
76
|
it 'should generate a url based on the page name and parent page' do
|
77
|
-
@parent =
|
78
|
-
@page =
|
77
|
+
@parent = FactoryBot.create(:spud_page, name: 'About Us')
|
78
|
+
@page = FactoryBot.create(:spud_page, name: 'Hello World', spud_page: @parent)
|
79
79
|
expect(@page.url_name).to eq('about-us/hello-world')
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
83
|
describe '#create_redirect_if_necessary' do
|
84
84
|
it 'should create a redirect' do
|
85
|
-
page =
|
85
|
+
page = FactoryBot.create(:spud_page, url_name: 'page-a')
|
86
86
|
expect do
|
87
87
|
page.update(url_name: 'page-b')
|
88
88
|
end.to change(page.tb_redirects, :count).by(1)
|
data/spec/rails_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tb_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Moser Consulting
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.4.
|
33
|
+
version: 1.4.4
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.4.
|
40
|
+
version: 1.4.4
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: tb_redirects
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,7 +95,7 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: factory_bot_rails
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
@@ -338,87 +338,87 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
338
338
|
version: '0'
|
339
339
|
requirements: []
|
340
340
|
rubyforge_project:
|
341
|
-
rubygems_version: 2.
|
341
|
+
rubygems_version: 2.6.12
|
342
342
|
signing_key:
|
343
343
|
specification_version: 4
|
344
344
|
summary: Twice Baked CMS
|
345
345
|
test_files:
|
346
|
-
- spec/
|
347
|
-
- spec/controllers/
|
348
|
-
- spec/
|
349
|
-
- spec/
|
350
|
-
- spec/controllers/pages_controller_spec.rb
|
346
|
+
- spec/spec_helper.rb
|
347
|
+
- spec/dummy/app/controllers/application_controller.rb
|
348
|
+
- spec/dummy/app/views/layouts/content_left.html.erb
|
349
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
351
350
|
- spec/dummy/app/assets/javascripts/application.js
|
352
351
|
- spec/dummy/app/assets/stylesheets/application.css
|
353
|
-
- spec/dummy/app/controllers/application_controller.rb
|
354
352
|
- spec/dummy/app/helpers/application_helper.rb
|
355
|
-
- spec/dummy/
|
356
|
-
- spec/dummy/
|
357
|
-
- spec/dummy/config/application.rb
|
358
|
-
- spec/dummy/config/boot.rb
|
359
|
-
- spec/dummy/config/database.yml
|
360
|
-
- spec/dummy/config/environment.rb
|
361
|
-
- spec/dummy/config/environments/development.rb
|
353
|
+
- spec/dummy/config/routes.rb
|
354
|
+
- spec/dummy/config/locales/en.yml
|
362
355
|
- spec/dummy/config/environments/production.rb
|
356
|
+
- spec/dummy/config/environments/development.rb
|
363
357
|
- spec/dummy/config/environments/test.rb
|
358
|
+
- spec/dummy/config/environment.rb
|
359
|
+
- spec/dummy/config/application.rb
|
360
|
+
- spec/dummy/config/database.yml
|
361
|
+
- spec/dummy/config/boot.rb
|
364
362
|
- spec/dummy/config/initializers/backtrace_silencers.rb
|
365
|
-
- spec/dummy/config/initializers/inflections.rb
|
366
363
|
- spec/dummy/config/initializers/mime_types.rb
|
367
|
-
- spec/dummy/config/initializers/secret_token.rb
|
368
364
|
- spec/dummy/config/initializers/session_store.rb
|
369
365
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
370
|
-
- spec/dummy/config/
|
371
|
-
- spec/dummy/config/
|
366
|
+
- spec/dummy/config/initializers/secret_token.rb
|
367
|
+
- spec/dummy/config/initializers/inflections.rb
|
372
368
|
- spec/dummy/config.ru
|
373
|
-
- spec/dummy/
|
374
|
-
- spec/dummy/
|
369
|
+
- spec/dummy/script/rails
|
370
|
+
- spec/dummy/Rakefile
|
371
|
+
- spec/dummy/public/favicon.ico
|
372
|
+
- spec/dummy/public/422.html
|
373
|
+
- spec/dummy/public/500.html
|
374
|
+
- spec/dummy/public/404.html
|
375
|
+
- spec/dummy/db/schema.rb
|
375
376
|
- spec/dummy/db/migrate/20141231214448_add_time_zone_to_spud_user.tb_core.rb
|
376
|
-
- spec/dummy/db/migrate/20141231214449_add_scope_to_spud_admin_permissions.tb_core.rb
|
377
|
-
- spec/dummy/db/migrate/20141231214450_create_spud_user_settings.tb_core.rb
|
378
|
-
- spec/dummy/db/migrate/20141231214451_create_spud_roles.tb_core.rb
|
379
|
-
- spec/dummy/db/migrate/20141231214452_create_spud_permissions.tb_core.rb
|
380
|
-
- spec/dummy/db/migrate/20141231214453_create_spud_role_permissions.tb_core.rb
|
381
377
|
- spec/dummy/db/migrate/20141231214454_drop_spud_admin_permissions.tb_core.rb
|
382
|
-
- spec/dummy/db/migrate/
|
383
|
-
- spec/dummy/db/migrate/
|
384
|
-
- spec/dummy/db/migrate/
|
378
|
+
- spec/dummy/db/migrate/20141231214451_create_spud_roles.tb_core.rb
|
379
|
+
- spec/dummy/db/migrate/20150108164814_remove_site_id_from_cms_tables.tb_cms.rb
|
380
|
+
- spec/dummy/db/migrate/20141231214469_add_classes_to_spud_menu_items.tb_cms.rb
|
385
381
|
- spec/dummy/db/migrate/20141231214459_create_spud_pages.tb_cms.rb
|
382
|
+
- spec/dummy/db/migrate/20141231214477_add_layout_to_spud_pages.tb_cms.rb
|
383
|
+
- spec/dummy/db/migrate/20141231214464_add_visibility_to_spud_pages.tb_cms.rb
|
384
|
+
- spec/dummy/db/migrate/20141231214473_create_spud_page_partial_revisions.tb_cms.rb
|
385
|
+
- spec/dummy/db/migrate/20141231214470_add_site_id_to_spud_pages.tb_cms.rb
|
386
|
+
- spec/dummy/db/migrate/20141231214447_create_spud_users.tb_core.rb
|
386
387
|
- spec/dummy/db/migrate/20141231214460_create_spud_menus.tb_cms.rb
|
387
|
-
- spec/dummy/db/migrate/
|
388
|
-
- spec/dummy/db/migrate/
|
388
|
+
- spec/dummy/db/migrate/20141231214450_create_spud_user_settings.tb_core.rb
|
389
|
+
- spec/dummy/db/migrate/20141231214476_add_content_processed_to_spud_page_partials.tb_cms.rb
|
389
390
|
- spec/dummy/db/migrate/20141231214463_create_spud_page_partials.tb_cms.rb
|
390
|
-
- spec/dummy/db/migrate/
|
391
|
-
- spec/dummy/db/migrate/20141231214465_add_menu_name_to_spud_menu_items.tb_cms.rb
|
392
|
-
- spec/dummy/db/migrate/20141231214466_add_use_custom_url_name_to_spud_pages.tb_cms.rb
|
391
|
+
- spec/dummy/db/migrate/20141231214449_add_scope_to_spud_admin_permissions.tb_core.rb
|
393
392
|
- spec/dummy/db/migrate/20141231214467_add_notes_to_spud_pages.tb_cms.rb
|
394
|
-
- spec/dummy/db/migrate/
|
395
|
-
- spec/dummy/db/migrate/
|
396
|
-
- spec/dummy/db/migrate/20141231214470_add_site_id_to_spud_pages.tb_cms.rb
|
397
|
-
- spec/dummy/db/migrate/20141231214471_add_site_id_to_spud_templates.tb_cms.rb
|
393
|
+
- spec/dummy/db/migrate/20141231214446_create_spud_admin_permissions.tb_core.rb
|
394
|
+
- spec/dummy/db/migrate/20160215180157_create_tb_redirects.tb_redirects.rb
|
398
395
|
- spec/dummy/db/migrate/20141231214472_add_site_id_to_spud_menus.tb_cms.rb
|
399
|
-
- spec/dummy/db/migrate/
|
400
|
-
- spec/dummy/db/migrate/
|
396
|
+
- spec/dummy/db/migrate/20141231214465_add_menu_name_to_spud_menu_items.tb_cms.rb
|
397
|
+
- spec/dummy/db/migrate/20141231214452_create_spud_permissions.tb_core.rb
|
398
|
+
- spec/dummy/db/migrate/20141231214453_create_spud_role_permissions.tb_core.rb
|
401
399
|
- spec/dummy/db/migrate/20141231214475_modify_site_id_for_spud_pages.tb_cms.rb
|
402
|
-
- spec/dummy/db/migrate/
|
403
|
-
- spec/dummy/db/migrate/
|
400
|
+
- spec/dummy/db/migrate/20141231214461_create_spud_menu_items.tb_cms.rb
|
401
|
+
- spec/dummy/db/migrate/20141231214457_modify_site_id_for_spud_permalinks.tb_permalinks.rb
|
402
|
+
- spec/dummy/db/migrate/20141231214455_create_spud_permalinks.tb_permalinks.rb
|
403
|
+
- spec/dummy/db/migrate/20141231214466_add_use_custom_url_name_to_spud_pages.tb_cms.rb
|
404
|
+
- spec/dummy/db/migrate/20141231214468_add_menu_id_to_spud_menu_items.tb_cms.rb
|
404
405
|
- spec/dummy/db/migrate/20141231214479_create_spud_snippets.tb_cms.rb
|
405
|
-
- spec/dummy/db/migrate/
|
406
|
-
- spec/dummy/db/migrate/20150911185843_add_requires_password_change_to_spud_users.tb_core.rb
|
406
|
+
- spec/dummy/db/migrate/20141231214471_add_site_id_to_spud_templates.tb_cms.rb
|
407
407
|
- spec/dummy/db/migrate/20150911185844_add_title_tag_to_spud_page.tb_cms.rb
|
408
|
-
- spec/dummy/db/migrate/
|
409
|
-
- spec/dummy/db/
|
410
|
-
- spec/dummy/
|
411
|
-
- spec/dummy/
|
412
|
-
- spec/dummy/public/500.html
|
413
|
-
- spec/dummy/public/favicon.ico
|
414
|
-
- spec/dummy/Rakefile
|
408
|
+
- spec/dummy/db/migrate/20141231214462_create_spud_templates.tb_cms.rb
|
409
|
+
- spec/dummy/db/migrate/20141231214456_add_site_id_to_spud_permalinks.tb_permalinks.rb
|
410
|
+
- spec/dummy/db/migrate/20150911185843_add_requires_password_change_to_spud_users.tb_core.rb
|
411
|
+
- spec/dummy/db/migrate/20141231214474_add_symbol_name_to_spud_page_partials.tb_cms.rb
|
415
412
|
- spec/dummy/README.rdoc
|
416
|
-
- spec/dummy/script/rails
|
417
|
-
- spec/helpers/cms/application_helper_spec.rb
|
418
|
-
- spec/models/spud_menu_item_spec.rb
|
419
413
|
- spec/models/spud_page_partial_revision_spec.rb
|
420
414
|
- spec/models/spud_page_partial_spec.rb
|
421
415
|
- spec/models/spud_page_spec.rb
|
416
|
+
- spec/models/spud_menu_item_spec.rb
|
422
417
|
- spec/models/spud_snippet_spec.rb
|
418
|
+
- spec/controllers/pages_controller_spec.rb
|
419
|
+
- spec/controllers/admin/snippets_controller_spec.rb
|
420
|
+
- spec/controllers/admin/pages_controller_spec.rb
|
421
|
+
- spec/controllers/admin/menu_items_controller_spec.rb
|
422
|
+
- spec/controllers/admin/menus_controller_spec.rb
|
423
423
|
- spec/rails_helper.rb
|
424
|
-
- spec/
|
424
|
+
- spec/helpers/cms/application_helper_spec.rb
|