tb_cms 1.3.2 → 1.3.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|