kuhsaft 2.2.6 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +37 -0
- data/Rakefile +6 -5
- data/app/assets/javascripts/ckeditor/plugins/adv_link/LICENSE.txt +674 -0
- data/app/assets/javascripts/ckeditor/plugins/adv_link/README.md +62 -0
- data/app/assets/javascripts/ckeditor/plugins/adv_link/dialogs/anchor.js.coffee +81 -0
- data/app/assets/javascripts/ckeditor/plugins/adv_link/dialogs/link.js.coffee +1353 -0
- data/app/assets/javascripts/ckeditor/plugins/adv_link/images/anchor.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/adv_link/images/hidpi/anchor.png +0 -0
- data/app/assets/javascripts/ckeditor/plugins/adv_link/lang/de.js +68 -0
- data/app/assets/javascripts/ckeditor/plugins/adv_link/lang/en.js +68 -0
- data/app/assets/javascripts/ckeditor/plugins/adv_link/plugin.js.coffee +282 -0
- data/app/assets/javascripts/kuhsaft/cms/application.js.coffee.erb +42 -4
- data/app/assets/stylesheets/kuhsaft/application.css.sass +0 -3
- data/app/assets/stylesheets/kuhsaft/cms/application.css.sass +26 -11
- data/app/controllers/kuhsaft/api/pages_controller.rb +14 -0
- data/app/controllers/kuhsaft/cms/admin_controller.rb +1 -1
- data/app/controllers/kuhsaft/cms/assets_controller.rb +7 -7
- data/app/controllers/kuhsaft/cms/bricks_controller.rb +15 -4
- data/app/controllers/kuhsaft/cms/pages_controller.rb +8 -15
- data/app/controllers/kuhsaft/pages_controller.rb +16 -6
- data/app/controllers/kuhsaft/sitemaps_controller.rb +13 -0
- data/app/helpers/cms_helper.rb +4 -4
- data/app/helpers/kuhsaft/admin_helper.rb +0 -1
- data/app/helpers/kuhsaft/cms/admin_helper.rb +1 -2
- data/app/helpers/kuhsaft/cms/pages_helper.rb +2 -7
- data/app/helpers/pages_helper.rb +8 -37
- data/app/helpers/sitemaps_helper.rb +12 -0
- data/app/models/kuhsaft/accordion_item_brick.rb +1 -1
- data/app/models/kuhsaft/anchor_brick.rb +1 -1
- data/app/models/kuhsaft/asset.rb +26 -23
- data/app/models/kuhsaft/asset_brick.rb +2 -1
- data/app/models/kuhsaft/brick.rb +38 -16
- data/app/models/kuhsaft/brick_type.rb +2 -2
- data/app/models/kuhsaft/brick_type_filter.rb +0 -2
- data/app/models/kuhsaft/column_brick.rb +0 -1
- data/app/models/kuhsaft/image_brick.rb +2 -2
- data/app/models/kuhsaft/image_size.rb +0 -1
- data/app/models/kuhsaft/link_brick.rb +1 -1
- data/app/models/kuhsaft/page.rb +111 -107
- data/app/models/kuhsaft/page_type.rb +1 -1
- data/app/models/kuhsaft/partition.rb +12 -12
- data/app/models/kuhsaft/placeholder_brick.rb +8 -0
- data/app/models/kuhsaft/publish_state.rb +9 -10
- data/app/models/kuhsaft/slider_brick.rb +0 -2
- data/app/models/kuhsaft/text_brick.rb +1 -1
- data/app/models/kuhsaft/two_column_brick.rb +0 -1
- data/app/models/kuhsaft/video_brick.rb +1 -2
- data/app/uploaders/kuhsaft/asset_brick_asset_uploader.rb +39 -38
- data/app/uploaders/kuhsaft/asset_uploader.rb +43 -43
- data/app/uploaders/kuhsaft/image_brick_image_uploader.rb +7 -34
- data/app/views/kuhsaft/asset_bricks/asset_brick/_edit.html.haml +3 -2
- data/app/views/kuhsaft/cms/admin/_brick_type_dropdown.html.haml +2 -2
- data/app/views/kuhsaft/cms/bricks/_brick_item.html.haml +17 -10
- data/app/views/kuhsaft/cms/bricks/_new.html.haml +34 -0
- data/app/views/kuhsaft/cms/bricks/create.js.haml +6 -0
- data/app/views/kuhsaft/cms/bricks/destroy.js.haml +4 -0
- data/app/views/kuhsaft/cms/bricks/new.js.haml +11 -0
- data/app/views/kuhsaft/cms/pages/_branch.html.haml +2 -2
- data/app/views/kuhsaft/cms/pages/_form.html.haml +29 -18
- data/app/views/kuhsaft/image_bricks/_image_brick.html.haml +9 -7
- data/app/views/kuhsaft/image_bricks/image_brick/_edit.html.haml +3 -0
- data/app/views/kuhsaft/pages/show.html.haml +1 -9
- data/app/views/kuhsaft/placeholder_bricks/_placeholder_brick.html.haml +1 -1
- data/app/views/kuhsaft/sitemaps/index.xml.haml +9 -0
- data/app/views/kuhsaft/video_bricks/_video_brick.html.haml +4 -4
- data/app/views/layouts/kuhsaft/cms/application.html.haml +4 -3
- data/config/initializers/simple_form.rb +4 -4
- data/config/initializers/simple_form_bootstrap.rb +14 -14
- data/config/locales/de.yml +203 -0
- data/config/locales/en.yml +282 -0
- data/config/locales/kuhsaft.de.yml +14 -0
- data/config/locales/kuhsaft.en.yml +60 -0
- data/config/locales/models/kuhsaft/image_brick/de.yml +1 -0
- data/config/locales/models/kuhsaft/image_brick/en.yml +16 -0
- data/config/locales/models/kuhsaft/text_brick/de.yml +3 -0
- data/config/locales/models/kuhsaft/text_brick/en.yml +16 -0
- data/config/locales/models/kuhsaft/video_brick/en.yml +15 -0
- data/config/locales/views/kuhsaft/cms/pages/de.yml +3 -0
- data/config/locales/views/kuhsaft/cms/video_bricks/de.yml +1 -1
- data/config/routes.rb +18 -9
- data/db/migrate/10_add_redirect_url_to_kuhsaft_pages.rb +1 -1
- data/db/migrate/11_update_url_and_redirect_url_value.rb +4 -4
- data/db/migrate/13_add_page_title_to_pages.rb +1 -1
- data/db/migrate/15_add_alt_text_to_bricks.rb +5 -0
- data/db/migrate/16_update_default_value_for_page_type.rb +9 -0
- data/db/migrate/17_set_page_type_to_content_for_empty_fields.rb +7 -0
- data/lib/generators/kuhsaft/assets/install_generator.rb +1 -2
- data/lib/generators/kuhsaft/translations/add_generator.rb +19 -4
- data/lib/kuhsaft.rb +1 -0
- data/lib/kuhsaft/brick_list.rb +6 -8
- data/lib/kuhsaft/engine.rb +5 -1
- data/lib/kuhsaft/orderable.rb +22 -19
- data/lib/kuhsaft/partial_extractor.rb +1 -1
- data/lib/kuhsaft/searchable.rb +8 -11
- data/lib/kuhsaft/translatable.rb +35 -19
- data/lib/kuhsaft/version.rb +1 -1
- data/lib/tasks/kuhsaft_tasks.rake +12 -0
- data/lib/templates/kuhsaft/assets/ck-config.js.coffee +7 -0
- data/lib/templates/kuhsaft/translations/add_translation.html.erb +4 -10
- data/spec/controllers/kuhsaft/api/pages_controller_spec.rb +70 -0
- data/spec/controllers/kuhsaft/pages_controller_spec.rb +18 -14
- data/spec/controllers/kuhsaft/sitemaps_controller_spec.rb +13 -0
- data/spec/dummy/app/assets/javascripts/kuhsaft/cms/ck-config.js.coffee +7 -0
- data/spec/dummy/config/application.rb +2 -1
- data/spec/dummy/config/database.yml +1 -1
- data/spec/factories.rb +3 -3
- data/spec/features/cms_pages_spec.rb +13 -13
- data/spec/features/search_spec.rb +16 -18
- data/spec/helpers/kuhsaft/cms/pages_helper_spec.rb +2 -1
- data/spec/kuhsaft_spec.rb +1 -1
- data/spec/lib/brick_list_spec.rb +1 -1
- data/spec/lib/page_tree_spec.rb +10 -6
- data/spec/lib/searchable_spec.rb +4 -4
- data/spec/lib/translatable_spec.rb +114 -44
- data/spec/models/anchor_brick_spec.rb +1 -1
- data/spec/models/asset_spec.rb +1 -1
- data/spec/models/brick_spec.rb +1 -1
- data/spec/models/page_spec.rb +48 -37
- data/spec/models/publish_state_spec.rb +9 -9
- data/spec/spec_helper.rb +43 -21
- data/spec/support/kuhsaft_spec_helper.rb +2 -2
- data/spec/support/write_expectation.rb +57 -0
- data/spec/views/kuhsaft/sitemaps/index.xml.haml_spec.rb +67 -0
- metadata +119 -4
@@ -33,7 +33,8 @@ describe Kuhsaft::Cms::PagesHelper do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
it 'has a redirect page' do
|
36
|
-
@page = create(:page, title: 'Page 1', slug: 'page1',
|
36
|
+
@page = create(:page, title: 'Page 1', slug: 'page1',
|
37
|
+
page_type: Kuhsaft::PageType::REDIRECT, redirect_url: 'en/references')
|
37
38
|
expect(helper.hide_content_tab?(@page)).to be_true
|
38
39
|
end
|
39
40
|
|
data/spec/kuhsaft_spec.rb
CHANGED
data/spec/lib/brick_list_spec.rb
CHANGED
@@ -13,7 +13,7 @@ describe Kuhsaft::BrickList do
|
|
13
13
|
describe '#collect_fulltext' do
|
14
14
|
context 'with bricks' do
|
15
15
|
it 'collects its childs fulltext' do
|
16
|
-
brick.stub_chain(:bricks, :localized).and_return([mock_model(Kuhsaft::Brick, :
|
16
|
+
brick.stub_chain(:bricks, :localized).and_return([mock_model(Kuhsaft::Brick, collect_fulltext: 'hallo')])
|
17
17
|
brick.collect_fulltext.should == 'hallo'
|
18
18
|
end
|
19
19
|
end
|
data/spec/lib/page_tree_spec.rb
CHANGED
@@ -6,8 +6,12 @@ require_relative '../../app/models/kuhsaft/page'
|
|
6
6
|
|
7
7
|
module Kuhsaft
|
8
8
|
describe PageTree do
|
9
|
-
let(:page_tree)
|
10
|
-
|
9
|
+
let(:page_tree) do
|
10
|
+
{
|
11
|
+
'0' => { 'id' => '1', 'children' => { '0' => { 'id' => '2' } } },
|
12
|
+
'1' => { 'id' => '3' }
|
13
|
+
}
|
14
|
+
end
|
11
15
|
|
12
16
|
before :each do
|
13
17
|
@page1 = FactoryGirl.create(:page, id: 1, position: 10)
|
@@ -18,15 +22,15 @@ module Kuhsaft
|
|
18
22
|
describe 'update' do
|
19
23
|
it 'sets the correct position of the root nodes' do
|
20
24
|
PageTree.update(page_tree)
|
21
|
-
@page1.reload.position.
|
22
|
-
@page2.reload.position.
|
23
|
-
@page3.reload.position.
|
25
|
+
expect(@page1.reload.position).to eq(0)
|
26
|
+
expect(@page2.reload.position).to eq(0)
|
27
|
+
expect(@page3.reload.position).to eq(1)
|
24
28
|
end
|
25
29
|
|
26
30
|
it 'sets the correct parent attribute for the nodes' do
|
27
31
|
PageTree.update(page_tree)
|
28
32
|
@page1.reload.parent_id.should be_nil
|
29
|
-
@page2.reload.parent_id.
|
33
|
+
expect(@page2.reload.parent_id).to eq(1)
|
30
34
|
@page3.reload.parent_id.should be nil
|
31
35
|
end
|
32
36
|
end
|
data/spec/lib/searchable_spec.rb
CHANGED
@@ -4,11 +4,11 @@ describe Kuhsaft::Searchable do
|
|
4
4
|
|
5
5
|
context 'with missing includes' do
|
6
6
|
it 'raises exteption when class does not include Kuhsaft::Bricklist' do
|
7
|
-
expect
|
7
|
+
expect do
|
8
8
|
class Foo
|
9
9
|
include Kuhsaft::Searchable
|
10
10
|
end
|
11
|
-
|
11
|
+
end.to raise_error(/needs Kuhsaft::BrickList to be included/)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
@@ -19,12 +19,12 @@ describe Kuhsaft::Searchable do
|
|
19
19
|
|
20
20
|
context 'without postgresql' do
|
21
21
|
it 'initializes scope' do
|
22
|
-
ActiveRecord::Base.connection.instance_values.
|
22
|
+
expect(ActiveRecord::Base.connection.instance_values).not_to eq('postgresql')
|
23
23
|
SearchableDemo.should_receive :scope
|
24
24
|
SearchableDemo.class_eval do
|
25
25
|
include Kuhsaft::Searchable
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
29
|
-
end
|
29
|
+
end
|
30
30
|
end
|
@@ -11,74 +11,144 @@ describe Kuhsaft::Translatable do
|
|
11
11
|
Demo.new
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
describe 'normal locale' do
|
15
|
+
before do
|
16
|
+
I18n.locale = :en
|
17
|
+
end
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
describe '.translate' do
|
20
|
+
it 'defines a getter for each attribute' do
|
21
|
+
expect(model).to respond_to(:name)
|
22
|
+
end
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
it 'defines a setter for each attributes' do
|
25
|
+
expect(model).to respond_to(:name=)
|
26
|
+
end
|
27
27
|
end
|
28
28
|
|
29
|
-
|
30
|
-
|
29
|
+
describe '.locale_attr' do
|
30
|
+
it 'returns a suffixed attribute name' do
|
31
|
+
expect(Demo.locale_attr('text')).to eq('text_en')
|
32
|
+
end
|
31
33
|
end
|
32
|
-
end
|
33
34
|
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
describe '#locale_attr' do
|
36
|
+
it 'returns a suffixed attribute name' do
|
37
|
+
expect(model.locale_attr('text')).to eq('text_en')
|
38
|
+
end
|
37
39
|
end
|
38
|
-
end
|
39
40
|
|
40
|
-
|
41
|
-
|
42
|
-
|
41
|
+
describe 'translated attributes' do
|
42
|
+
it 'delegates the getter to the suffixed attribute' do
|
43
|
+
model.should_receive(:name_en).and_return('John')
|
44
|
+
model.name.should == 'John'
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'delegates the setter to the suffixed attribute' do
|
48
|
+
model.should_receive(:name_en=).with('Johnny')
|
49
|
+
model.name = 'Johnny'
|
50
|
+
end
|
51
|
+
|
52
|
+
context 'dynamic methods' do
|
53
|
+
it 'delegates boolean accessors' do
|
54
|
+
model.should_receive(:name_en?)
|
55
|
+
model.name?
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'delegates simple dynamic finders' do
|
59
|
+
Demo.should_receive(:find_by_name_en).with('Max')
|
60
|
+
Demo.find_by_name('Max')
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'when changing the locale' do
|
65
|
+
before do
|
66
|
+
I18n.locale = :de
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'delegates the getter to current locale' do
|
70
|
+
model.should_receive(:name_de).and_return('Johannes')
|
71
|
+
model.name.should == 'Johannes'
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'delegates the getter to current locale' do
|
75
|
+
model.should_receive(:name_de=).with('Johannes')
|
76
|
+
model.name = 'Johannes'
|
77
|
+
end
|
78
|
+
end
|
43
79
|
end
|
44
80
|
end
|
45
81
|
|
46
|
-
describe '
|
47
|
-
|
48
|
-
|
49
|
-
|
82
|
+
describe 'country specific locale' do
|
83
|
+
before do
|
84
|
+
I18n.available_locales = [:de, 'de-CH']
|
85
|
+
I18n.locale = 'de-CH'
|
50
86
|
end
|
51
87
|
|
52
|
-
|
53
|
-
|
54
|
-
|
88
|
+
after do
|
89
|
+
I18n.available_locales = [:en]
|
90
|
+
I18n.locale = :en
|
55
91
|
end
|
56
92
|
|
57
|
-
|
58
|
-
it '
|
59
|
-
model.
|
60
|
-
model.name?
|
93
|
+
describe '.translate' do
|
94
|
+
it 'defines a getter for each attribute' do
|
95
|
+
expect(model).to respond_to(:name)
|
61
96
|
end
|
62
97
|
|
63
|
-
it '
|
64
|
-
|
65
|
-
Demo.find_by_name('Max')
|
98
|
+
it 'defines a setter for each attributes' do
|
99
|
+
expect(model).to respond_to(:name=)
|
66
100
|
end
|
67
101
|
end
|
68
102
|
|
69
|
-
|
70
|
-
|
71
|
-
|
103
|
+
describe '.locale_attr' do
|
104
|
+
it 'returns a suffixed attribute name' do
|
105
|
+
expect(Demo.locale_attr('text')).to eq('text_de_ch')
|
72
106
|
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe '#locale_attr' do
|
110
|
+
it 'returns a suffixed attribute name' do
|
111
|
+
expect(Demo.locale_attr('text')).to eq('text_de_ch')
|
112
|
+
end
|
113
|
+
end
|
73
114
|
|
74
|
-
|
75
|
-
|
76
|
-
model.
|
115
|
+
describe 'translated attributes' do
|
116
|
+
it 'delegates the getter to the suffixed attribute' do
|
117
|
+
model.should_receive(:name_de_ch).and_return('John')
|
118
|
+
model.name.should == 'John'
|
77
119
|
end
|
78
120
|
|
79
|
-
it 'delegates the
|
80
|
-
model.should_receive(:
|
81
|
-
model.name = '
|
121
|
+
it 'delegates the setter to the suffixed attribute' do
|
122
|
+
model.should_receive(:name_de_ch=).with('Johnny')
|
123
|
+
model.name = 'Johnny'
|
124
|
+
end
|
125
|
+
|
126
|
+
context 'dynamic methods' do
|
127
|
+
it 'delegates boolean accessors' do
|
128
|
+
model.should_receive(:name_de_ch?)
|
129
|
+
model.name?
|
130
|
+
end
|
131
|
+
|
132
|
+
it 'delegates simple dynamic finders' do
|
133
|
+
Demo.should_receive(:find_by_name_de_ch).with('Max')
|
134
|
+
Demo.find_by_name('Max')
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
context 'when changing the locale' do
|
139
|
+
before do
|
140
|
+
I18n.locale = :de
|
141
|
+
end
|
142
|
+
|
143
|
+
it 'delegates the getter to current locale' do
|
144
|
+
model.should_receive(:name_de).and_return('Johannes')
|
145
|
+
model.name.should == 'Johannes'
|
146
|
+
end
|
147
|
+
|
148
|
+
it 'delegates the getter to current locale' do
|
149
|
+
model.should_receive(:name_de=).with('Johannes')
|
150
|
+
model.name = 'Johannes'
|
151
|
+
end
|
82
152
|
end
|
83
153
|
end
|
84
154
|
end
|
data/spec/models/asset_spec.rb
CHANGED
@@ -24,7 +24,7 @@ describe Kuhsaft::Asset do
|
|
24
24
|
uploader.should respond_to(:thumb)
|
25
25
|
end
|
26
26
|
|
27
|
-
it
|
27
|
+
it 'makes the image readable only to the owner and not executable' do
|
28
28
|
pending 'how and where do we ensure permissions?'
|
29
29
|
uploader.should have_permissions(0600)
|
30
30
|
end
|
data/spec/models/brick_spec.rb
CHANGED
@@ -98,7 +98,7 @@ describe Kuhsaft::Brick do
|
|
98
98
|
|
99
99
|
context 'with the parenthesis option given' do
|
100
100
|
brick = Kuhsaft::TextBrick.new
|
101
|
-
brick.backend_label(:
|
101
|
+
brick.backend_label(parenthesis: true).should == '(Text)'
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
data/spec/models/page_spec.rb
CHANGED
@@ -5,9 +5,7 @@ describe Kuhsaft::Page do
|
|
5
5
|
|
6
6
|
describe '.search' do
|
7
7
|
before do
|
8
|
-
create :page
|
9
|
-
create :page
|
10
|
-
create :page
|
8
|
+
3.times { create :page }
|
11
9
|
end
|
12
10
|
|
13
11
|
it 'should find any containing the search term' do
|
@@ -70,33 +68,32 @@ describe Kuhsaft::Page do
|
|
70
68
|
|
71
69
|
describe '#published' do
|
72
70
|
it 'returns only published pages' do
|
73
|
-
|
71
|
+
_p1, p2, _p3 = 3.times.map { create(:page) }
|
74
72
|
p2.update_attribute :published, Kuhsaft::PublishState::UNPUBLISHED
|
75
73
|
Kuhsaft::Page.published.should be_all { |p| p.published?.should be_true }
|
76
74
|
end
|
77
75
|
end
|
78
76
|
|
79
77
|
describe '#content_page' do
|
80
|
-
it 'returns only content pages
|
78
|
+
it 'returns only content pages' do
|
81
79
|
p1, p2, p3 = 3.times.map { create(:page) }
|
82
80
|
p2.update_attribute :page_type, Kuhsaft::PageType::REDIRECT
|
83
|
-
p3.update_attribute :page_type, nil
|
84
81
|
Kuhsaft::Page.content_page.should == [p1, p3]
|
85
82
|
end
|
86
83
|
end
|
87
84
|
|
88
|
-
describe
|
85
|
+
describe '#state_class' do
|
89
86
|
|
90
87
|
let(:page) { Kuhsaft::Page.new }
|
91
88
|
|
92
89
|
it 'returns publsihed as string when page is published' do
|
93
|
-
page.published
|
94
|
-
page.state_class
|
90
|
+
page.published = Kuhsaft::PublishState::PUBLISHED
|
91
|
+
expect(page.state_class).to eq 'published'
|
95
92
|
end
|
96
93
|
|
97
94
|
it 'returns unpublsihed as string when page is unpublished' do
|
98
|
-
page.published
|
99
|
-
page.state_class
|
95
|
+
page.published = Kuhsaft::PublishState::UNPUBLISHED
|
96
|
+
expect(page.state_class).to eq 'unpublished'
|
100
97
|
end
|
101
98
|
end
|
102
99
|
|
@@ -114,11 +111,11 @@ describe Kuhsaft::Page do
|
|
114
111
|
end
|
115
112
|
|
116
113
|
let :child_page do
|
117
|
-
create(:page, :
|
114
|
+
create(:page, parent: page)
|
118
115
|
end
|
119
116
|
|
120
117
|
let :child_child_page do
|
121
|
-
create(:page, :
|
118
|
+
create(:page, parent: child_page)
|
122
119
|
end
|
123
120
|
|
124
121
|
context 'on the topmost level' do
|
@@ -146,7 +143,7 @@ describe Kuhsaft::Page do
|
|
146
143
|
end
|
147
144
|
|
148
145
|
let :child_page do
|
149
|
-
create(:page, :
|
146
|
+
create(:page, parent: page)
|
150
147
|
end
|
151
148
|
|
152
149
|
it 'has a list of parent pages' do
|
@@ -162,7 +159,7 @@ describe Kuhsaft::Page do
|
|
162
159
|
context 'when it has no content' do
|
163
160
|
it 'should return the link of it\'s first child' do
|
164
161
|
page = create(:page)
|
165
|
-
child = create(:page, :
|
162
|
+
child = create(:page, parent: page)
|
166
163
|
page.body = nil
|
167
164
|
page.save
|
168
165
|
page.link.should == child.link
|
@@ -190,7 +187,7 @@ describe Kuhsaft::Page do
|
|
190
187
|
|
191
188
|
describe '#preceding_sibling' do
|
192
189
|
it 'finds the predecing sibling' do
|
193
|
-
|
190
|
+
_page1 = create :page
|
194
191
|
page2 = create :page
|
195
192
|
page3 = create :page
|
196
193
|
page3.preceding_sibling.id.should == page2.id
|
@@ -199,7 +196,7 @@ describe Kuhsaft::Page do
|
|
199
196
|
|
200
197
|
describe '#succeeding_sibling' do
|
201
198
|
it 'finds the succeeding sibling' do
|
202
|
-
|
199
|
+
_page1 = create :page
|
203
200
|
page2 = create :page
|
204
201
|
page3 = create :page
|
205
202
|
page2.succeeding_sibling.id.should == page3.id
|
@@ -209,14 +206,14 @@ describe Kuhsaft::Page do
|
|
209
206
|
describe '#reposition' do
|
210
207
|
it 'repositions before a page, specified by id' do
|
211
208
|
page1 = create :page
|
212
|
-
|
209
|
+
_page2 = create :page
|
213
210
|
page3 = create :page
|
214
211
|
page3.reposition page1.id
|
215
212
|
page3.preceding_sibling.id.should == page1.id
|
216
213
|
end
|
217
214
|
|
218
215
|
it 'repositions before all siblings, specified by nil' do
|
219
|
-
|
216
|
+
_page1 = create :page
|
220
217
|
page2 = create :page
|
221
218
|
page2.reposition nil
|
222
219
|
page2.position.should == 1
|
@@ -252,30 +249,30 @@ describe Kuhsaft::Page do
|
|
252
249
|
describe '#url' do
|
253
250
|
context 'when it is a normal page' do
|
254
251
|
it 'returns the concatenated slug of the whole child/parent tree' do
|
255
|
-
page = create(:page, :
|
256
|
-
child = create(:page, :
|
252
|
+
page = create(:page, slug: 'parent-slug')
|
253
|
+
child = create(:page, slug: 'child-slug', parent: page)
|
257
254
|
child.url.should == 'en/parent-slug/child-slug'
|
258
255
|
end
|
259
256
|
end
|
260
257
|
|
261
258
|
context 'when it is a navigation? page' do
|
262
259
|
it 'returns without the parent page slug' do
|
263
|
-
page = create(:page, :
|
264
|
-
child = create(:page, :
|
260
|
+
page = create(:page, slug: 'parent-slug', page_type: Kuhsaft::PageType::NAVIGATION)
|
261
|
+
child = create(:page, slug: 'child-slug', parent: page)
|
265
262
|
child.url.should == 'en/child-slug'
|
266
263
|
end
|
267
264
|
end
|
268
265
|
|
269
266
|
context 'when it is a redirect? page' do
|
270
267
|
it 'returns the absolute url' do
|
271
|
-
page = create(:page, :
|
268
|
+
page = create(:page, page_type: Kuhsaft::PageType::REDIRECT, redirect_url: 'en/references', slug: 'news')
|
272
269
|
page.link.should eq('/en/news')
|
273
270
|
end
|
274
271
|
end
|
275
272
|
|
276
273
|
context 'when url part is empty' do
|
277
274
|
it 'strips the trailing slash' do
|
278
|
-
page = create(:page, :
|
275
|
+
page = create(:page, page_type: Kuhsaft::PageType::NAVIGATION)
|
279
276
|
page.link.should eq('/en')
|
280
277
|
end
|
281
278
|
end
|
@@ -284,13 +281,13 @@ describe Kuhsaft::Page do
|
|
284
281
|
describe '#navigation?' do
|
285
282
|
context 'when the page_type is navigation' do
|
286
283
|
it 'returns true if the page_type is PageType::NAVIGATION' do
|
287
|
-
Kuhsaft::Page.new(:
|
284
|
+
Kuhsaft::Page.new(page_type: Kuhsaft::PageType::NAVIGATION).navigation?.should be_true
|
288
285
|
end
|
289
286
|
end
|
290
287
|
|
291
288
|
context 'when the page_type is anything else' do
|
292
289
|
it 'returns false' do
|
293
|
-
Kuhsaft::Page.new(:
|
290
|
+
Kuhsaft::Page.new(page_type: Kuhsaft::PageType::REDIRECT).navigation?.should be_false
|
294
291
|
end
|
295
292
|
end
|
296
293
|
end
|
@@ -298,17 +295,31 @@ describe Kuhsaft::Page do
|
|
298
295
|
describe '#redirect?' do
|
299
296
|
context 'when the page_type is a redirect' do
|
300
297
|
it 'returns true' do
|
301
|
-
Kuhsaft::Page.new(:
|
298
|
+
Kuhsaft::Page.new(page_type: Kuhsaft::PageType::REDIRECT).redirect?.should be_true
|
302
299
|
end
|
303
300
|
end
|
304
301
|
|
305
302
|
context 'when the page type is anything else' do
|
306
303
|
it 'returns false' do
|
307
|
-
Kuhsaft::Page.new(:
|
304
|
+
Kuhsaft::Page.new(page_type: Kuhsaft::PageType::NAVIGATION).redirect?.should be_false
|
308
305
|
end
|
309
306
|
end
|
310
307
|
end
|
311
308
|
|
309
|
+
describe 'page types' do
|
310
|
+
it 'returns content by default' do
|
311
|
+
expect(Kuhsaft::Page.new.page_type).to eq('content')
|
312
|
+
end
|
313
|
+
|
314
|
+
it 'returns navigation if set' do
|
315
|
+
expect(Kuhsaft::Page.new(page_type: Kuhsaft::PageType::NAVIGATION).page_type).to eq('navigation')
|
316
|
+
end
|
317
|
+
|
318
|
+
it 'returns redirect if set' do
|
319
|
+
expect(Kuhsaft::Page.new(page_type: Kuhsaft::PageType::REDIRECT).page_type).to eq('redirect')
|
320
|
+
end
|
321
|
+
end
|
322
|
+
|
312
323
|
describe '#translated?' do
|
313
324
|
it 'returns true when page is translated' do
|
314
325
|
@page = create(:page, title: 'Page 1', slug: 'page1')
|
@@ -325,8 +336,8 @@ describe Kuhsaft::Page do
|
|
325
336
|
|
326
337
|
describe '#fulltext' do
|
327
338
|
let :page do
|
328
|
-
p = create(:page, :
|
329
|
-
p.bricks << Kuhsaft::TextBrick.new(:
|
339
|
+
p = create(:page, keywords: 'key words', description: 'descrip tion', title: 'my title')
|
340
|
+
p.bricks << Kuhsaft::TextBrick.new(locale: I18n.locale, text: 'oh la la')
|
330
341
|
p.save
|
331
342
|
p
|
332
343
|
end
|
@@ -349,7 +360,7 @@ describe Kuhsaft::Page do
|
|
349
360
|
|
350
361
|
describe '#before_validation' do
|
351
362
|
it 'generates url automatically' do
|
352
|
-
page = Kuhsaft::Page.new :
|
363
|
+
page = Kuhsaft::Page.new slug: 'slug'
|
353
364
|
page.url.should be_nil
|
354
365
|
page.valid?
|
355
366
|
page.url.should be_present
|
@@ -358,7 +369,7 @@ describe Kuhsaft::Page do
|
|
358
369
|
|
359
370
|
describe '#url_without_locale' do
|
360
371
|
let :page do
|
361
|
-
create(:page, :
|
372
|
+
create(:page, slug: 'page')
|
362
373
|
end
|
363
374
|
|
364
375
|
context 'without parent' do
|
@@ -373,11 +384,11 @@ describe Kuhsaft::Page do
|
|
373
384
|
|
374
385
|
context 'when parent is navigation' do
|
375
386
|
let :parent do
|
376
|
-
create(:page, :
|
387
|
+
create(:page, page_type: Kuhsaft::PageType::NAVIGATION)
|
377
388
|
end
|
378
389
|
|
379
390
|
let :child do
|
380
|
-
create(:page, :
|
391
|
+
create(:page, slug: 'child', parent: parent)
|
381
392
|
end
|
382
393
|
|
383
394
|
it 'returns url without leading /' do
|
@@ -391,11 +402,11 @@ describe Kuhsaft::Page do
|
|
391
402
|
|
392
403
|
context 'when parent is normal page' do
|
393
404
|
let :parent do
|
394
|
-
create(:page, :
|
405
|
+
create(:page, slug: 'parent')
|
395
406
|
end
|
396
407
|
|
397
408
|
let :child do
|
398
|
-
create(:page, :
|
409
|
+
create(:page, slug: 'child', parent: parent)
|
399
410
|
end
|
400
411
|
|
401
412
|
it 'returns url without leading /' do
|