alchemy_cms 3.3.0.rc1 → 3.3.0.rc2
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/CHANGELOG.md +3 -2
- data/Gemfile +1 -0
- data/alchemy_cms.gemspec +6 -6
- data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +0 -7
- data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +4 -4
- data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +51 -5
- data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +0 -2
- data/app/assets/stylesheets/alchemy/elements.scss +2 -2
- data/app/controllers/alchemy/admin/elements_controller.rb +2 -0
- data/app/controllers/alchemy/admin/pages_controller.rb +11 -3
- data/app/controllers/alchemy/admin/pictures_controller.rb +1 -0
- data/app/models/alchemy/element.rb +3 -1
- data/app/models/alchemy/element/element_contents.rb +2 -7
- data/app/models/alchemy/element/presenters.rb +11 -4
- data/app/models/alchemy/page.rb +3 -1
- data/app/views/alchemy/admin/attachments/archive_overlay.js.erb +0 -1
- data/app/views/alchemy/admin/contents/create.js.erb +0 -1
- data/app/views/alchemy/admin/elements/_element_header.html.erb +3 -1
- data/app/views/alchemy/admin/elements/order.js.erb +25 -10
- data/app/views/alchemy/admin/elements/update.js.erb +1 -2
- data/app/views/alchemy/admin/essence_files/assign.js.erb +0 -1
- data/app/views/alchemy/admin/essence_pictures/assign.js.erb +0 -1
- data/app/views/alchemy/admin/legacy_page_urls/create.js.erb +0 -1
- data/app/views/alchemy/admin/pages/destroy.js.erb +0 -1
- data/app/views/alchemy/admin/pages/update.js.erb +6 -4
- data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +2 -1
- data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +1 -7
- data/app/views/alchemy/admin/pictures/archive_overlay.js.erb +0 -1
- data/bin/alchemy +1 -1
- data/bin/rspec +3 -2
- data/bin/spring +6 -6
- data/config/alchemy/config.yml +6 -1
- data/lib/alchemy/seeder.rb +9 -3
- data/lib/alchemy/version.rb +1 -1
- metadata +6 -471
- data/spec/controllers/alchemy/admin/attachments_controller_spec.rb +0 -193
- data/spec/controllers/alchemy/admin/base_controller_spec.rb +0 -87
- data/spec/controllers/alchemy/admin/clipboard_controller_spec.rb +0 -60
- data/spec/controllers/alchemy/admin/contents_controller_spec.rb +0 -78
- data/spec/controllers/alchemy/admin/dashboard_controller_spec.rb +0 -144
- data/spec/controllers/alchemy/admin/elements_controller_spec.rb +0 -496
- data/spec/controllers/alchemy/admin/essence_files_controller_spec.rb +0 -76
- data/spec/controllers/alchemy/admin/essence_pictures_controller_spec.rb +0 -202
- data/spec/controllers/alchemy/admin/languages_controller_spec.rb +0 -73
- data/spec/controllers/alchemy/admin/layoutpages_controller_spec.rb +0 -21
- data/spec/controllers/alchemy/admin/pages_controller_spec.rb +0 -639
- data/spec/controllers/alchemy/admin/pictures_controller_spec.rb +0 -383
- data/spec/controllers/alchemy/admin/resources_controller_spec.rb +0 -81
- data/spec/controllers/alchemy/admin/tags_controller_spec.rb +0 -63
- data/spec/controllers/alchemy/admin/trash_controller_spec.rb +0 -67
- data/spec/controllers/alchemy/api/contents_controller_spec.rb +0 -125
- data/spec/controllers/alchemy/api/elements_controller_spec.rb +0 -124
- data/spec/controllers/alchemy/api/pages_controller_spec.rb +0 -167
- data/spec/controllers/alchemy/attachments_controller_spec.rb +0 -64
- data/spec/controllers/alchemy/base_controller_spec.rb +0 -106
- data/spec/controllers/alchemy/elements_controller_spec.rb +0 -48
- data/spec/controllers/alchemy/messages_controller_spec.rb +0 -204
- data/spec/controllers/alchemy/on_page_layout_mixin_spec.rb +0 -330
- data/spec/controllers/alchemy/pages_controller_spec.rb +0 -343
- data/spec/controllers/alchemy/pictures_controller_spec.rb +0 -415
- data/spec/dummy/Rakefile +0 -6
- data/spec/dummy/app/assets/javascripts/application.js +0 -13
- data/spec/dummy/app/assets/stylesheets/application.css +0 -15
- data/spec/dummy/app/controllers/admin/events_controller.rb +0 -3
- data/spec/dummy/app/controllers/application_controller.rb +0 -15
- data/spec/dummy/app/controllers/login_controller.rb +0 -5
- data/spec/dummy/app/helpers/application_helper.rb +0 -2
- data/spec/dummy/app/mailers/.gitkeep +0 -0
- data/spec/dummy/app/models/ability.rb +0 -9
- data/spec/dummy/app/models/dummy_model.rb +0 -3
- data/spec/dummy/app/models/dummy_user.rb +0 -15
- data/spec/dummy/app/models/event.rb +0 -10
- data/spec/dummy/app/models/location.rb +0 -3
- data/spec/dummy/app/views/alchemy/elements/_all_you_can_eat_editor.html.erb +0 -11
- data/spec/dummy/app/views/alchemy/elements/_all_you_can_eat_view.html.erb +0 -31
- data/spec/dummy/app/views/alchemy/elements/_article_editor.html.erb +0 -6
- data/spec/dummy/app/views/alchemy/elements/_article_view.html.erb +0 -10
- data/spec/dummy/app/views/alchemy/elements/_bild_editor.html.erb +0 -3
- data/spec/dummy/app/views/alchemy/elements/_bild_view.html.erb +0 -5
- data/spec/dummy/app/views/alchemy/elements/_contactform_editor.html.erb +0 -6
- data/spec/dummy/app/views/alchemy/elements/_contactform_view.html.erb +0 -16
- data/spec/dummy/app/views/alchemy/elements/_download_editor.html.erb +0 -3
- data/spec/dummy/app/views/alchemy/elements/_download_view.html.erb +0 -5
- data/spec/dummy/app/views/alchemy/elements/_erb_element_editor.html.erb +0 -3
- data/spec/dummy/app/views/alchemy/elements/_erb_element_view.html.erb +0 -5
- data/spec/dummy/app/views/alchemy/elements/_header_editor.html.erb +0 -3
- data/spec/dummy/app/views/alchemy/elements/_header_view.html.erb +0 -5
- data/spec/dummy/app/views/alchemy/elements/_headline_editor.html.erb +0 -1
- data/spec/dummy/app/views/alchemy/elements/_headline_view.html.erb +0 -1
- data/spec/dummy/app/views/alchemy/elements/_news_editor.html.erb +0 -5
- data/spec/dummy/app/views/alchemy/elements/_news_view.html.erb +0 -11
- data/spec/dummy/app/views/alchemy/elements/_search_editor.html.erb +0 -1
- data/spec/dummy/app/views/alchemy/elements/_search_view.html.erb +0 -4
- data/spec/dummy/app/views/alchemy/elements/_slide_editor.html.erb +0 -3
- data/spec/dummy/app/views/alchemy/elements/_slide_view.html.erb +0 -5
- data/spec/dummy/app/views/alchemy/elements/_slider_editor.html.erb +0 -2
- data/spec/dummy/app/views/alchemy/elements/_slider_view.html.erb +0 -4
- data/spec/dummy/app/views/alchemy/elements/_text_editor.html.erb +0 -3
- data/spec/dummy/app/views/alchemy/elements/_text_view.html.erb +0 -5
- data/spec/dummy/app/views/alchemy/page_layouts/_standard.html.erb +0 -15
- data/spec/dummy/app/views/layouts/application.html.erb +0 -17
- data/spec/dummy/bin/bundle +0 -3
- data/spec/dummy/bin/rails +0 -4
- data/spec/dummy/bin/rake +0 -4
- data/spec/dummy/config.ru +0 -4
- data/spec/dummy/config/alchemy/cells.yml +0 -5
- data/spec/dummy/config/alchemy/elements.yml +0 -109
- data/spec/dummy/config/alchemy/page_layouts.yml +0 -32
- data/spec/dummy/config/application.rb +0 -32
- data/spec/dummy/config/boot.rb +0 -5
- data/spec/dummy/config/database.yml +0 -32
- data/spec/dummy/config/environment.rb +0 -5
- data/spec/dummy/config/environments/development.rb +0 -41
- data/spec/dummy/config/environments/production.rb +0 -77
- data/spec/dummy/config/environments/test.rb +0 -43
- data/spec/dummy/config/initializers/alchemy.rb +0 -3
- data/spec/dummy/config/initializers/assets.rb +0 -11
- data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
- data/spec/dummy/config/initializers/cookies_serializer.rb +0 -3
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +0 -4
- data/spec/dummy/config/initializers/inflections.rb +0 -16
- data/spec/dummy/config/initializers/mime_types.rb +0 -4
- data/spec/dummy/config/initializers/secret_token.rb +0 -12
- data/spec/dummy/config/initializers/session_store.rb +0 -3
- data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
- data/spec/dummy/config/locales/kl.yml +0 -2
- data/spec/dummy/config/routes.rb +0 -12
- data/spec/dummy/config/secrets.yml +0 -22
- data/spec/dummy/db/migrate/20121026104128_create_events.rb +0 -20
- data/spec/dummy/db/migrate/20130328101418_create_locations.rb +0 -9
- data/spec/dummy/db/migrate/20130827094554_alchemy_two_point_six.rb +0 -1
- data/spec/dummy/db/migrate/20130828121054_remove_do_not_index_from_alchemy_essence_texts.rb +0 -1
- data/spec/dummy/db/migrate/20130828121120_remove_do_not_index_from_alchemy_essence_richtexts.rb +0 -1
- data/spec/dummy/db/migrate/20130918201742_add_published_at_to_alchemy_pages.rb +0 -1
- data/spec/dummy/db/migrate/20131209225243_create_dummy_users.rb +0 -9
- data/spec/dummy/db/migrate/20150122213511_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb +0 -31
- data/spec/dummy/db/migrate/20150122213512_add_missing_unique_indices.acts_as_taggable_on_engine.rb +0 -20
- data/spec/dummy/db/migrate/20150122213513_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb +0 -15
- data/spec/dummy/db/migrate/20150122213514_add_missing_taggable_index.acts_as_taggable_on_engine.rb +0 -10
- data/spec/dummy/db/migrate/20150412103152_create_dummy_model.rb +0 -7
- data/spec/dummy/db/migrate/20150608204610_add_parent_element_id_to_alchemy_elements.rb +0 -1
- data/spec/dummy/db/migrate/20150729151825_add_link_text_to_alchemy_essence_files.rb +0 -1
- data/spec/dummy/db/migrate/20150906195818_add_locale_to_alchemy_languages.rb +0 -1
- data/spec/dummy/db/schema.rb +0 -326
- data/spec/dummy/db/seeds.rb +0 -1
- data/spec/dummy/lib/assets/.gitkeep +0 -0
- data/spec/dummy/public/404.html +0 -67
- data/spec/dummy/public/422.html +0 -67
- data/spec/dummy/public/500.html +0 -66
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/spec/javascripts +0 -1
- data/spec/factories.rb +0 -13
- data/spec/features/admin/admin_layout_spec.rb +0 -14
- data/spec/features/admin/dashboard_spec.rb +0 -81
- data/spec/features/admin/edit_elements_feature_spec.rb +0 -36
- data/spec/features/admin/language_tree_feature_spec.rb +0 -32
- data/spec/features/admin/languages_features_spec.rb +0 -65
- data/spec/features/admin/legacy_page_url_management_spec.rb +0 -62
- data/spec/features/admin/link_overlay_spec.rb +0 -53
- data/spec/features/admin/locale_select_feature_spec.rb +0 -25
- data/spec/features/admin/modules_integration_spec.rb +0 -23
- data/spec/features/admin/navigation_feature_spec.rb +0 -22
- data/spec/features/admin/page_creation_feature_spec.rb +0 -51
- data/spec/features/admin/page_editing_feature_spec.rb +0 -135
- data/spec/features/admin/picture_library_integration_spec.rb +0 -62
- data/spec/features/admin/resources_integration_spec.rb +0 -128
- data/spec/features/admin/site_select_feature_spec.rb +0 -31
- data/spec/features/admin/tinymce_feature_spec.rb +0 -33
- data/spec/features/navigation_spec.rb +0 -9
- data/spec/features/page_feature_spec.rb +0 -186
- data/spec/features/page_redirects_spec.rb +0 -358
- data/spec/features/picture_security_spec.rb +0 -29
- data/spec/features/security_spec.rb +0 -24
- data/spec/features/translation_integration_spec.rb +0 -51
- data/spec/fixtures/500x500.png +0 -0
- data/spec/fixtures/80x60.png +0 -0
- data/spec/fixtures/animated.gif +0 -0
- data/spec/fixtures/image with spaces.png +0 -0
- data/spec/fixtures/image.png +0 -0
- data/spec/fixtures/image2.PNG +0 -0
- data/spec/fixtures/image3.jpeg +0 -0
- data/spec/helpers/alchemy/admin/attachments_helper_spec.rb +0 -15
- data/spec/helpers/alchemy/admin/base_helper_spec.rb +0 -280
- data/spec/helpers/alchemy/admin/contents_helper_spec.rb +0 -46
- data/spec/helpers/alchemy/admin/elements_helper_spec.rb +0 -314
- data/spec/helpers/alchemy/admin/essences_helper_spec.rb +0 -201
- data/spec/helpers/alchemy/admin/navigation_helper_spec.rb +0 -294
- data/spec/helpers/alchemy/admin/pages_helper_spec.rb +0 -63
- data/spec/helpers/alchemy/admin/pictures_helper_spec.rb +0 -28
- data/spec/helpers/alchemy/admin/tags_helper_spec.rb +0 -111
- data/spec/helpers/alchemy/base_helper_spec.rb +0 -44
- data/spec/helpers/alchemy/elements_block_helper_spec.rb +0 -135
- data/spec/helpers/alchemy/elements_helper_spec.rb +0 -326
- data/spec/helpers/alchemy/essences_helper_spec.rb +0 -85
- data/spec/helpers/alchemy/pages_helper_spec.rb +0 -499
- data/spec/helpers/alchemy/picture_url_helpers_spec.rb +0 -78
- data/spec/helpers/alchemy/url_helper_spec.rb +0 -200
- data/spec/javascripts/alchemy/dialog_spec.coffee +0 -82
- data/spec/javascripts/alchemy/link_overlay_spec.coffee +0 -25
- data/spec/javascripts/alchemy_integration_spec.coffee +0 -3
- data/spec/javascripts/fixtures/select.html +0 -3
- data/spec/javascripts/helpers/mock-ajax.js +0 -199
- data/spec/javascripts/helpers/test_responses/test_responses.js +0 -1
- data/spec/javascripts/support/jasmine.yml +0 -29
- data/spec/libraries/auth_accessors_spec.rb +0 -40
- data/spec/libraries/config_spec.rb +0 -111
- data/spec/libraries/controller_actions_spec.rb +0 -133
- data/spec/libraries/i18n_spec.rb +0 -37
- data/spec/libraries/kaminari/scoped_pagination_url_helper_spec.rb +0 -30
- data/spec/libraries/modules_spec.rb +0 -67
- data/spec/libraries/mount_point_spec.rb +0 -77
- data/spec/libraries/page_layout_spec.rb +0 -150
- data/spec/libraries/paths_spec.rb +0 -15
- data/spec/libraries/permissions_spec.rb +0 -260
- data/spec/libraries/resource_spec.rb +0 -344
- data/spec/libraries/resources_helper_spec.rb +0 -193
- data/spec/libraries/shell_spec.rb +0 -121
- data/spec/libraries/template_tracker_spec.rb +0 -85
- data/spec/libraries/tinymce_spec.rb +0 -111
- data/spec/libraries/userstamp_spec.rb +0 -10
- data/spec/mailers/alchemy/messages_spec.rb +0 -21
- data/spec/models/alchemy/attachment_spec.rb +0 -250
- data/spec/models/alchemy/cell_spec.rb +0 -101
- data/spec/models/alchemy/content_spec.rb +0 -513
- data/spec/models/alchemy/element_spec.rb +0 -862
- data/spec/models/alchemy/element_to_page_spec.rb +0 -13
- data/spec/models/alchemy/essence_boolean_spec.rb +0 -10
- data/spec/models/alchemy/essence_date_spec.rb +0 -28
- data/spec/models/alchemy/essence_file_spec.rb +0 -40
- data/spec/models/alchemy/essence_html_spec.rb +0 -18
- data/spec/models/alchemy/essence_link_spec.rb +0 -10
- data/spec/models/alchemy/essence_picture_spec.rb +0 -255
- data/spec/models/alchemy/essence_richtext_spec.rb +0 -23
- data/spec/models/alchemy/essence_select_spec.rb +0 -10
- data/spec/models/alchemy/essence_text_spec.rb +0 -110
- data/spec/models/alchemy/language_spec.rb +0 -243
- data/spec/models/alchemy/legacy_page_url_spec.rb +0 -21
- data/spec/models/alchemy/message_spec.rb +0 -55
- data/spec/models/alchemy/page_spec.rb +0 -2108
- data/spec/models/alchemy/picture_spec.rb +0 -418
- data/spec/models/alchemy/site_spec.rb +0 -168
- data/spec/models/alchemy/tag_spec.rb +0 -29
- data/spec/models/dummy_model_spec.rb +0 -10
- data/spec/requests/alchemy/admin/resources_requests_spec.rb +0 -26
- data/spec/requests/alchemy/admin/site_requests_spec.rb +0 -19
- data/spec/requests/alchemy/site_requests_spec.rb +0 -18
- data/spec/requests/alchemy/sitemap_spec.rb +0 -56
- data/spec/routing/api_routing_spec.rb +0 -150
- data/spec/routing/routing_spec.rb +0 -340
- data/spec/spec_helper.rb +0 -90
- data/spec/support/ci/install_phantomjs +0 -7
- data/spec/support/hint_examples.rb +0 -28
- data/spec/support/test_tweaks.rb +0 -31
- data/spec/support/transformation_examples.rb +0 -179
- data/spec/tasks/helpers_spec.rb +0 -217
- data/spec/views/admin/pictures/show_spec.rb +0 -43
- data/spec/views/essences/essence_boolean_editor_spec.rb +0 -32
- data/spec/views/essences/essence_boolean_view_spec.rb +0 -23
- data/spec/views/essences/essence_date_view_spec.rb +0 -38
- data/spec/views/essences/essence_file_editor_spec.rb +0 -59
- data/spec/views/essences/essence_file_view_spec.rb +0 -77
- data/spec/views/essences/essence_html_view_spec.rb +0 -22
- data/spec/views/essences/essence_link_view_spec.rb +0 -41
- data/spec/views/essences/essence_picture_editor_spec.rb +0 -80
- data/spec/views/essences/essence_picture_view_spec.rb +0 -128
- data/spec/views/essences/essence_richtext_view_spec.rb +0 -32
- data/spec/views/essences/essence_select_view_spec.rb +0 -11
- data/spec/views/essences/essence_text_view_spec.rb +0 -51
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
module Alchemy
|
|
4
|
-
describe AttachmentsController do
|
|
5
|
-
let(:attachment) { build_stubbed(:alchemy_attachment) }
|
|
6
|
-
|
|
7
|
-
it "should raise ActiveRecord::RecordNotFound for requesting not existing attachments" do
|
|
8
|
-
expect { alchemy_get :download, id: 0 }.to raise_error(ActiveRecord::RecordNotFound)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
context 'with public attachment' do
|
|
12
|
-
before do
|
|
13
|
-
allow(Attachment).to receive(:find).and_return(attachment)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
it "sends download as attachment." do
|
|
17
|
-
alchemy_get :download, id: attachment.id
|
|
18
|
-
expect(response.status).to eq(200)
|
|
19
|
-
expect(response.headers['Content-Disposition']).to match(/attachment/)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it "sends download inline." do
|
|
23
|
-
alchemy_get :show, id: attachment.id
|
|
24
|
-
expect(response.status).to eq(200)
|
|
25
|
-
expect(response.headers['Content-Disposition']).to match(/inline/)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
context 'with restricted attachment' do
|
|
30
|
-
before do
|
|
31
|
-
allow(attachment).to receive(:restricted?).and_return(true)
|
|
32
|
-
allow(Attachment).to receive(:find).and_return(attachment)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
context 'as anonymous user' do
|
|
36
|
-
it "should not be possible to download attachments from restricted pages" do
|
|
37
|
-
alchemy_get :download, id: attachment.id
|
|
38
|
-
expect(response.status).to eq(302)
|
|
39
|
-
expect(response).to redirect_to(Alchemy.login_path)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
it "should not be possible to see attachments from restricted pages" do
|
|
43
|
-
alchemy_get :show, id: attachment.id
|
|
44
|
-
expect(response.status).to eq(302)
|
|
45
|
-
expect(response).to redirect_to(Alchemy.login_path)
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
context "as member user" do
|
|
50
|
-
before { authorize_user(build(:alchemy_dummy_user)) }
|
|
51
|
-
|
|
52
|
-
it "should be possible to download attachments from restricted pages" do
|
|
53
|
-
alchemy_get :download, id: attachment.id
|
|
54
|
-
expect(response.status).to eq(200)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
it "should be possible to see attachments from restricted pages" do
|
|
58
|
-
alchemy_get :show, id: attachment.id
|
|
59
|
-
expect(response.status).to eq(200)
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
module Alchemy
|
|
4
|
-
describe BaseController do
|
|
5
|
-
describe '#set_locale' do
|
|
6
|
-
context 'with Language.current set' do
|
|
7
|
-
let(:language) { create(:alchemy_language, :klingon) }
|
|
8
|
-
|
|
9
|
-
before { Alchemy::Language.current = language }
|
|
10
|
-
|
|
11
|
-
it "sets the ::I18n.locale to current language code" do
|
|
12
|
-
controller.send(:set_locale)
|
|
13
|
-
expect(::I18n.locale).to eq(language.code.to_sym)
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
context 'without Language.current set' do
|
|
18
|
-
before { Alchemy::Language.current = nil }
|
|
19
|
-
|
|
20
|
-
it "sets the ::I18n.locale to default language code" do
|
|
21
|
-
controller.send(:set_locale)
|
|
22
|
-
expect(::I18n.locale).to eq(Language.default.code.to_sym)
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
describe "#configuration" do
|
|
28
|
-
it "returns certain configuration options" do
|
|
29
|
-
allow(Config).to receive(:show).and_return({"some_option" => true})
|
|
30
|
-
expect(controller.configuration(:some_option)).to eq(true)
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
describe "#multi_language?" do
|
|
35
|
-
context "if more than one published language exists" do
|
|
36
|
-
it "returns true" do
|
|
37
|
-
allow(Alchemy::Language).to receive(:published).and_return double(count: 2)
|
|
38
|
-
expect(controller.multi_language?).to eq(true)
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
context "if less than two published languages exists" do
|
|
43
|
-
it "returns false" do
|
|
44
|
-
allow(Alchemy::Language).to receive(:published).and_return double(count: 1)
|
|
45
|
-
expect(controller.multi_language?).to eq(false)
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
describe "#prefix_locale?" do
|
|
51
|
-
subject(:prefix_locale?) { controller.prefix_locale? }
|
|
52
|
-
|
|
53
|
-
context "if multi_language? is true" do
|
|
54
|
-
before do
|
|
55
|
-
expect(controller).to receive(:multi_language?) { true }
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
context "and current language is not the default locale" do
|
|
59
|
-
before do
|
|
60
|
-
allow(Alchemy::Language).to receive(:current) { double(code: 'en') }
|
|
61
|
-
allow(::I18n).to receive(:default_locale) { :de }
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
it { expect(prefix_locale?).to be(true) }
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
context "and current language is the default locale" do
|
|
68
|
-
before do
|
|
69
|
-
allow(Alchemy::Language).to receive(:current) { double(code: 'de') }
|
|
70
|
-
allow(::I18n).to receive(:default_locale) { :de }
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
it { expect(prefix_locale?).to be(false) }
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
context "and passed in locale is not the default locale" do
|
|
77
|
-
subject(:prefix_locale?) { controller.prefix_locale?('en') }
|
|
78
|
-
|
|
79
|
-
before do
|
|
80
|
-
allow(::I18n).to receive(:default_locale) { :de }
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
it { expect(prefix_locale?).to be(true) }
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
context "and passed in locale is the default locale" do
|
|
87
|
-
subject(:prefix_locale?) { controller.prefix_locale?('de') }
|
|
88
|
-
|
|
89
|
-
before do
|
|
90
|
-
allow(::I18n).to receive(:default_locale) { :de }
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
it { expect(prefix_locale?).to be(false) }
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
context "if multi_language? is false" do
|
|
98
|
-
before do
|
|
99
|
-
expect(controller).to receive(:multi_language?) { false }
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
it { expect(prefix_locale?).to be(false) }
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
end
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
module Alchemy
|
|
4
|
-
describe ElementsController do
|
|
5
|
-
let(:public_page) { create(:alchemy_page, :public) }
|
|
6
|
-
let(:element) { create(:alchemy_element, page: public_page, name: 'download') }
|
|
7
|
-
let(:restricted_page) { create(:alchemy_page, :public, restricted: true) }
|
|
8
|
-
let(:restricted_element) { create(:alchemy_element, page: restricted_page, name: 'download') }
|
|
9
|
-
|
|
10
|
-
describe '#show' do
|
|
11
|
-
it "should render available elements" do
|
|
12
|
-
alchemy_get :show, id: element.id
|
|
13
|
-
expect(response.status).to eq(200)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
it "should raise ActiveRecord::RecordNotFound error for trashed elements" do
|
|
17
|
-
element.trash!
|
|
18
|
-
expect {
|
|
19
|
-
alchemy_get :show, id: element.id
|
|
20
|
-
}.to raise_error(ActiveRecord::RecordNotFound)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it "should raise ActiveRecord::RecordNotFound error for unpublished elements" do
|
|
24
|
-
element.update_attributes(public: false)
|
|
25
|
-
expect {
|
|
26
|
-
alchemy_get :show, id: element.id
|
|
27
|
-
}.to raise_error(ActiveRecord::RecordNotFound)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
context "for guest user" do
|
|
31
|
-
it "should raise ActiveRecord::RecordNotFound error for elements of restricted pages" do
|
|
32
|
-
expect {
|
|
33
|
-
alchemy_get :show, id: restricted_element.id
|
|
34
|
-
}.to raise_error(ActiveRecord::RecordNotFound)
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
context "for member user" do
|
|
39
|
-
before { authorize_user(build(:alchemy_dummy_user)) }
|
|
40
|
-
|
|
41
|
-
it "should render elements of restricted pages" do
|
|
42
|
-
alchemy_get :show, id: restricted_element.id
|
|
43
|
-
expect(response.status).to eq(200)
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
module Alchemy
|
|
4
|
-
describe MessagesController do
|
|
5
|
-
let(:page) { mock_model('Page') }
|
|
6
|
-
|
|
7
|
-
before do
|
|
8
|
-
controller.instance_variable_set(:@page, page)
|
|
9
|
-
allow(controller).to receive(:get_page).and_return(page)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
describe "#index" do
|
|
13
|
-
let(:page) { mock_model('Page', {urlname: 'contact', page_layout: 'contact'}) }
|
|
14
|
-
|
|
15
|
-
it "should redirect to @page" do
|
|
16
|
-
expect(alchemy_get(:index)).to redirect_to(show_page_path(urlname: page.urlname))
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
describe "#new" do
|
|
21
|
-
it "should render the alchemy/pages/show template" do
|
|
22
|
-
alchemy_get :new
|
|
23
|
-
expect(alchemy_get(:new)).to render_template('alchemy/pages/show')
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
describe "#create" do
|
|
28
|
-
before do
|
|
29
|
-
allow(controller).to receive(:params).and_return({message: {email: ''}})
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
let(:page) { mock_model('Page', get_language_root: mock_model('Page')) }
|
|
33
|
-
let(:element) { mock_model('Element', page: page, ingredient: '') }
|
|
34
|
-
let(:message) { Message.new }
|
|
35
|
-
|
|
36
|
-
it "should raise ActiveRecord::RecordNotFound if element of contactform could not be found" do
|
|
37
|
-
expect { alchemy_post :create }.to raise_error(ActiveRecord::RecordNotFound)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
context "if validation of message" do
|
|
41
|
-
before do
|
|
42
|
-
allow(Element).to receive(:find_by).and_return(element)
|
|
43
|
-
allow(element).to receive(:ingredient).with(:success_page).and_return('thank-you')
|
|
44
|
-
allow_any_instance_of(Message).to receive(:contact_form_id).and_return(1)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
context "failed" do
|
|
48
|
-
before do
|
|
49
|
-
allow_any_instance_of(Message).to receive(:valid?).and_return(false)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
it "should render 'alchemy/pages/show' template" do
|
|
53
|
-
expect(alchemy_post(:create)).to render_template('alchemy/pages/show')
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
context "succeeded" do
|
|
58
|
-
before do
|
|
59
|
-
allow_any_instance_of(Message).to receive(:valid?).and_return(true)
|
|
60
|
-
allow(Messages).to receive(:contact_form_mail).and_return double(deliver: true)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
it "Messages should call Messages#contact_form_mail to send the email" do
|
|
64
|
-
expect(Messages).to receive(:contact_form_mail)
|
|
65
|
-
alchemy_post :create
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
describe '#mail_to' do
|
|
69
|
-
context "with element having mail_to ingredient" do
|
|
70
|
-
before do
|
|
71
|
-
allow(element).to receive(:ingredient).with(:mail_to).and_return('peter@schroeder.de')
|
|
72
|
-
message
|
|
73
|
-
allow(Message).to receive(:new).and_return(message)
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
it "returns the ingredient" do
|
|
77
|
-
expect(Messages).to receive(:contact_form_mail).with(message, 'peter@schroeder.de', '', '')
|
|
78
|
-
alchemy_post :create
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
context "with element having no mail_to ingredient" do
|
|
83
|
-
before do
|
|
84
|
-
allow(element).to receive(:ingredient).with(:mail_to).and_return(nil)
|
|
85
|
-
message
|
|
86
|
-
allow(Message).to receive(:new).and_return(message)
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
it "returns the config value" do
|
|
90
|
-
expect(Messages).to receive(:contact_form_mail).with(message, 'your.mail@your-domain.com', '', '')
|
|
91
|
-
alchemy_post :create
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
describe '#mail_from' do
|
|
97
|
-
context "with element having mail_from ingredient" do
|
|
98
|
-
before do
|
|
99
|
-
allow(element).to receive(:ingredient).with(:mail_from).and_return('peter@schroeder.de')
|
|
100
|
-
message
|
|
101
|
-
allow(Message).to receive(:new).and_return(message)
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
it "returns the ingredient" do
|
|
105
|
-
expect(Messages).to receive(:contact_form_mail).with(message, '', 'peter@schroeder.de', '')
|
|
106
|
-
alchemy_post :create
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
context "with element having no mail_from ingredient" do
|
|
111
|
-
before do
|
|
112
|
-
allow(element).to receive(:ingredient).with(:mail_from).and_return(nil)
|
|
113
|
-
message
|
|
114
|
-
allow(Message).to receive(:new).and_return(message)
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
it "returns the config value" do
|
|
118
|
-
expect(Messages).to receive(:contact_form_mail).with(message, '', 'your.mail@your-domain.com', '')
|
|
119
|
-
alchemy_post :create
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
describe '#subject' do
|
|
125
|
-
context "with element having subject ingredient" do
|
|
126
|
-
before do
|
|
127
|
-
allow(element).to receive(:ingredient).with(:subject).and_return('A new message')
|
|
128
|
-
message
|
|
129
|
-
allow(Message).to receive(:new).and_return(message)
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
it "returns the ingredient" do
|
|
133
|
-
expect(Messages).to receive(:contact_form_mail).with(message, '', '', 'A new message')
|
|
134
|
-
alchemy_post :create
|
|
135
|
-
end
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
context "with element having no subject ingredient" do
|
|
139
|
-
before do
|
|
140
|
-
allow(element).to receive(:ingredient).with(:subject).and_return(nil)
|
|
141
|
-
message
|
|
142
|
-
allow(Message).to receive(:new).and_return(message)
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
it "returns the config value" do
|
|
146
|
-
expect(Messages).to receive(:contact_form_mail).with(message, '', '', 'A new contact form message')
|
|
147
|
-
alchemy_post :create
|
|
148
|
-
end
|
|
149
|
-
end
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
describe "#redirect_to_success_page" do
|
|
153
|
-
context "if 'success_page' ingredient of element is set with urlname" do
|
|
154
|
-
before do
|
|
155
|
-
allow(element).to receive(:ingredient).with(:success_page).and_return('success-page')
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
it "should redirect to the given urlname" do
|
|
159
|
-
expect(
|
|
160
|
-
alchemy_post(:create)
|
|
161
|
-
).to redirect_to(show_page_path(urlname: 'success-page'))
|
|
162
|
-
end
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
context "if 'success_page' ingredient of element is not set" do
|
|
166
|
-
before do
|
|
167
|
-
allow(element).to receive(:ingredient).with(:success_page).and_return(nil)
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
context "but mailer_config['forward_to_page'] is true and mailer_config['mail_success_page'] is set" do
|
|
171
|
-
before do
|
|
172
|
-
allow(controller).to receive(:mailer_config).and_return({'forward_to_page' => true, 'mail_success_page' => 'mailer-config-success-page'})
|
|
173
|
-
allow(Page).to receive(:find_by).and_return double(urlname: 'mailer-config-success-page')
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
it "redirect to the given success page" do
|
|
177
|
-
expect(
|
|
178
|
-
alchemy_post(:create)
|
|
179
|
-
).to redirect_to(show_page_path(urlname: 'mailer-config-success-page'))
|
|
180
|
-
end
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
context "and mailer_config has no instructions for success_page" do
|
|
184
|
-
let(:language) { mock_model('Language', code: 'en', locale: 'en', pages: double(find_by: build_stubbed(:alchemy_page))) }
|
|
185
|
-
|
|
186
|
-
before do
|
|
187
|
-
allow(controller).to receive(:mailer_config).and_return({})
|
|
188
|
-
allow(Language).to receive(:current_root_page).and_return double(urlname: 'lang-root')
|
|
189
|
-
end
|
|
190
|
-
|
|
191
|
-
it "should redirect to the language root page" do
|
|
192
|
-
allow(Language).to receive(:current).and_return(language)
|
|
193
|
-
expect(
|
|
194
|
-
alchemy_post(:create)
|
|
195
|
-
).to redirect_to(show_page_path(urlname: 'lang-root'))
|
|
196
|
-
end
|
|
197
|
-
end
|
|
198
|
-
end
|
|
199
|
-
end
|
|
200
|
-
end
|
|
201
|
-
end
|
|
202
|
-
end
|
|
203
|
-
end
|
|
204
|
-
end
|
|
@@ -1,330 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
RSpec.describe Alchemy::PagesController, 'OnPageLayout mixin', type: :controller do
|
|
4
|
-
before(:all) do
|
|
5
|
-
ApplicationController.send(:extend, Alchemy::OnPageLayout)
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
let(:page) { create(:alchemy_page, :public, page_layout: 'standard') }
|
|
9
|
-
|
|
10
|
-
describe '.on_page_layout' do
|
|
11
|
-
context 'with :all as argument for page_layout' do
|
|
12
|
-
before do
|
|
13
|
-
ApplicationController.class_eval do
|
|
14
|
-
on_page_layout(:all) do
|
|
15
|
-
@on_all_layouts = @page.page_layout
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
context "for show action" do
|
|
21
|
-
%w(standard news).each do |page_layout|
|
|
22
|
-
it "runs callback on #{page_layout} layout" do
|
|
23
|
-
page = create(:alchemy_page, :public, page_layout: page_layout)
|
|
24
|
-
alchemy_get :show, urlname: page.urlname
|
|
25
|
-
expect(assigns(:on_all_layouts)).to eq(page_layout)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
context "for index action" do
|
|
31
|
-
%w(standard news).each do |page_layout|
|
|
32
|
-
it "runs callback on #{page_layout} layout" do
|
|
33
|
-
create(:alchemy_page, :language_root, page_layout: page_layout)
|
|
34
|
-
|
|
35
|
-
alchemy_get :index
|
|
36
|
-
expect(assigns(:on_all_layouts)).to eq(page_layout)
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
context 'with :standard as argument for page_layout' do
|
|
43
|
-
before do
|
|
44
|
-
ApplicationController.class_eval do
|
|
45
|
-
on_page_layout(:standard) do
|
|
46
|
-
@successful_for_standard = true
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
context 'and page having standard layout' do
|
|
52
|
-
context "for show action" do
|
|
53
|
-
let(:page) { create(:alchemy_page, :public, page_layout: 'standard') }
|
|
54
|
-
|
|
55
|
-
it 'runs the callback' do
|
|
56
|
-
alchemy_get :show, urlname: page.urlname
|
|
57
|
-
expect(assigns(:successful_for_standard)).to eq(true)
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
context "for index action" do
|
|
62
|
-
let!(:page) { create(:alchemy_page, :language_root, page_layout: 'standard') }
|
|
63
|
-
|
|
64
|
-
it 'runs the callback' do
|
|
65
|
-
alchemy_get :index
|
|
66
|
-
expect(assigns(:successful_for_standard)).to eq(true)
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
context 'and page not having standard layout' do
|
|
72
|
-
let(:page) { create(:alchemy_page, :public, page_layout: 'news') }
|
|
73
|
-
|
|
74
|
-
context "for show action" do
|
|
75
|
-
it "doesn't run the callback" do
|
|
76
|
-
alchemy_get :show, urlname: page.urlname
|
|
77
|
-
expect(assigns(:successful_for_standard)).to eq(nil)
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
context "for index action" do
|
|
82
|
-
let!(:page) { create(:alchemy_page, :language_root, page_layout: 'news') }
|
|
83
|
-
|
|
84
|
-
it "doesn't run the callback" do
|
|
85
|
-
alchemy_get :index
|
|
86
|
-
expect(assigns(:successful_for_standard)).to eq(nil)
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
context 'when defining two callbacks for different page layouts' do
|
|
93
|
-
context "for show action" do
|
|
94
|
-
before do
|
|
95
|
-
ApplicationController.class_eval do
|
|
96
|
-
on_page_layout(:standard) do
|
|
97
|
-
@urlname = @page.urlname
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
on_page_layout(:news) do
|
|
101
|
-
@urlname = @page.urlname
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
%w(standard news).each do |page_layout|
|
|
107
|
-
it "runs both callbacks for #{page_layout} layout" do
|
|
108
|
-
page = create(:alchemy_page, :public, page_layout: page_layout)
|
|
109
|
-
|
|
110
|
-
alchemy_get :show, urlname: page.urlname
|
|
111
|
-
expect(assigns(:urlname)).to eq(page.urlname)
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
context "for index action" do
|
|
117
|
-
before do
|
|
118
|
-
ApplicationController.class_eval do
|
|
119
|
-
on_page_layout(:standard) do
|
|
120
|
-
@page_layout = @page.page_layout
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
on_page_layout(:news) do
|
|
124
|
-
@page_layout = @page.page_layout
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
%w(standard news).each do |page_layout|
|
|
130
|
-
it "runs both callbacks on #{page_layout} layout" do
|
|
131
|
-
create(:alchemy_page, :language_root, page_layout: page_layout)
|
|
132
|
-
|
|
133
|
-
alchemy_get :index
|
|
134
|
-
expect(assigns(:page_layout)).to eq(page_layout)
|
|
135
|
-
end
|
|
136
|
-
end
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
context 'when defining two callbacks for the same page_layout' do
|
|
141
|
-
before do
|
|
142
|
-
ApplicationController.class_eval do
|
|
143
|
-
on_page_layout(:standard) do
|
|
144
|
-
@successful_for_standard_first = true
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
on_page_layout(:standard) do
|
|
148
|
-
@successful_for_standard_second = true
|
|
149
|
-
end
|
|
150
|
-
end
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
context "for show action" do
|
|
154
|
-
it 'runs both callbacks' do
|
|
155
|
-
alchemy_get :show, urlname: page.urlname
|
|
156
|
-
expect(assigns(:successful_for_standard_first)).to eq(true)
|
|
157
|
-
expect(assigns(:successful_for_standard_second)).to eq(true)
|
|
158
|
-
end
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
context "for index action" do
|
|
162
|
-
let!(:page) { create(:alchemy_page, :language_root, page_layout: 'standard') }
|
|
163
|
-
|
|
164
|
-
it 'runs both callbacks' do
|
|
165
|
-
alchemy_get :index
|
|
166
|
-
expect(assigns(:successful_for_standard_first)).to eq(true)
|
|
167
|
-
expect(assigns(:successful_for_standard_second)).to eq(true)
|
|
168
|
-
end
|
|
169
|
-
end
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
context 'when block is given' do
|
|
173
|
-
before do
|
|
174
|
-
ApplicationController.class_eval do
|
|
175
|
-
on_page_layout :standard do
|
|
176
|
-
@successful_for_callback_method = true
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
context 'for show action' do
|
|
182
|
-
it 'evaluates the given block' do
|
|
183
|
-
alchemy_get :show, urlname: page.urlname
|
|
184
|
-
expect(assigns(:successful_for_callback_method)).to eq(true)
|
|
185
|
-
end
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
context 'for index action' do
|
|
189
|
-
let!(:page) { create(:alchemy_page, :language_root, page_layout: 'standard') }
|
|
190
|
-
|
|
191
|
-
it 'evaluates the given block' do
|
|
192
|
-
alchemy_get :index
|
|
193
|
-
expect(assigns(:successful_for_callback_method)).to eq(true)
|
|
194
|
-
end
|
|
195
|
-
end
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
context 'when callback method name is given' do
|
|
199
|
-
before do
|
|
200
|
-
ApplicationController.class_eval do
|
|
201
|
-
on_page_layout :standard, :run_method
|
|
202
|
-
|
|
203
|
-
def run_method
|
|
204
|
-
@successful_for_callback_method = true
|
|
205
|
-
end
|
|
206
|
-
end
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
context 'for show action' do
|
|
210
|
-
it 'runs the given callback method' do
|
|
211
|
-
alchemy_get :show, urlname: page.urlname
|
|
212
|
-
expect(assigns(:successful_for_callback_method)).to eq(true)
|
|
213
|
-
end
|
|
214
|
-
end
|
|
215
|
-
|
|
216
|
-
context 'for index action' do
|
|
217
|
-
let!(:page) { create(:alchemy_page, :language_root, page_layout: 'standard') }
|
|
218
|
-
|
|
219
|
-
it 'runs the given callback method' do
|
|
220
|
-
alchemy_get :index
|
|
221
|
-
expect(assigns(:successful_for_callback_method)).to eq(true)
|
|
222
|
-
end
|
|
223
|
-
end
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
context 'when neither callback method name nor block given' do
|
|
227
|
-
it 'raises an ArgumentError' do
|
|
228
|
-
expect do
|
|
229
|
-
ApplicationController.class_eval do
|
|
230
|
-
on_page_layout :standard
|
|
231
|
-
end
|
|
232
|
-
end.to raise_error(ArgumentError)
|
|
233
|
-
end
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
context 'when passing two page_layouts for a callback' do
|
|
237
|
-
before do
|
|
238
|
-
ApplicationController.class_eval do
|
|
239
|
-
on_page_layout([:standard, :news]) do
|
|
240
|
-
@successful = @page.page_layout
|
|
241
|
-
end
|
|
242
|
-
end
|
|
243
|
-
end
|
|
244
|
-
|
|
245
|
-
%w(standard news).each do |page_layout|
|
|
246
|
-
it 'evaluates the given callback on both page_layouts for show action' do
|
|
247
|
-
page = create(:alchemy_page, :public, page_layout: page_layout)
|
|
248
|
-
|
|
249
|
-
alchemy_get :show, urlname: page.urlname
|
|
250
|
-
expect(assigns(:successful)).to eq(page_layout)
|
|
251
|
-
end
|
|
252
|
-
end
|
|
253
|
-
|
|
254
|
-
%w(standard news).each do |page_layout|
|
|
255
|
-
it 'evaluates the given callback on both page_layouts for index action' do
|
|
256
|
-
create(:alchemy_page, :language_root, page_layout: page_layout)
|
|
257
|
-
|
|
258
|
-
alchemy_get :index
|
|
259
|
-
expect(assigns(:successful)).to eq(page_layout)
|
|
260
|
-
end
|
|
261
|
-
end
|
|
262
|
-
end
|
|
263
|
-
end
|
|
264
|
-
end
|
|
265
|
-
|
|
266
|
-
RSpec.describe ApplicationController, 'OnPageLayout mixin', type: :controller do
|
|
267
|
-
before(:all) do
|
|
268
|
-
ApplicationController.send(:extend, Alchemy::OnPageLayout)
|
|
269
|
-
end
|
|
270
|
-
|
|
271
|
-
controller do
|
|
272
|
-
def index
|
|
273
|
-
@another_controller = true
|
|
274
|
-
render nothing: true
|
|
275
|
-
end
|
|
276
|
-
end
|
|
277
|
-
|
|
278
|
-
context 'in another controller' do
|
|
279
|
-
before do
|
|
280
|
-
ApplicationController.class_eval do
|
|
281
|
-
on_page_layout(:standard) do
|
|
282
|
-
@successful_for_another_controller = true
|
|
283
|
-
end
|
|
284
|
-
end
|
|
285
|
-
end
|
|
286
|
-
|
|
287
|
-
it 'callback does not run' do
|
|
288
|
-
get :index
|
|
289
|
-
expect(assigns(:another_controller)).to eq(true)
|
|
290
|
-
expect(assigns(:successful_for_another_controller)).to eq(nil)
|
|
291
|
-
end
|
|
292
|
-
end
|
|
293
|
-
end
|
|
294
|
-
|
|
295
|
-
RSpec.describe Alchemy::Admin::PagesController, 'OnPageLayout mixin', type: :controller do
|
|
296
|
-
before(:all) do
|
|
297
|
-
ApplicationController.send(:extend, Alchemy::OnPageLayout)
|
|
298
|
-
end
|
|
299
|
-
|
|
300
|
-
context 'in admin/pages_controller' do
|
|
301
|
-
before do
|
|
302
|
-
ApplicationController.class_eval do
|
|
303
|
-
on_page_layout(:standard) do
|
|
304
|
-
@successful_for_alchemy_admin_pages_controller = true
|
|
305
|
-
end
|
|
306
|
-
end
|
|
307
|
-
authorize_user(:as_admin)
|
|
308
|
-
end
|
|
309
|
-
|
|
310
|
-
context "for show action" do
|
|
311
|
-
let(:page) { create(:alchemy_page, page_layout: 'standard') }
|
|
312
|
-
|
|
313
|
-
it 'callback also runs' do
|
|
314
|
-
alchemy_get :show, id: page.id
|
|
315
|
-
expect(assigns(:successful_for_alchemy_admin_pages_controller)).to be(true)
|
|
316
|
-
end
|
|
317
|
-
end
|
|
318
|
-
|
|
319
|
-
context "for index action" do
|
|
320
|
-
it 'does not run callback' do
|
|
321
|
-
alchemy_get :index
|
|
322
|
-
expect(assigns(:successful_for_alchemy_admin_pages_controller)).to be(nil)
|
|
323
|
-
end
|
|
324
|
-
end
|
|
325
|
-
end
|
|
326
|
-
|
|
327
|
-
after(:all) do
|
|
328
|
-
Alchemy::OnPageLayout.instance_variable_set(:@callbacks, nil)
|
|
329
|
-
end
|
|
330
|
-
end
|