qbrick 2.5.0.pre
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 +7 -0
- data/README.md +423 -0
- data/Rakefile +82 -0
- 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/application.js.coffee +7 -0
- data/app/assets/javascripts/kuhsaft/cms/application.js.coffee.erb +136 -0
- data/app/assets/javascripts/kuhsaft/views/read_more_view.js.coffee +17 -0
- data/app/assets/stylesheets/kuhsaft/application.css.sass +1 -0
- data/app/assets/stylesheets/kuhsaft/cms/application.css.sass +204 -0
- data/app/assets/stylesheets/kuhsaft/modules/_text_brick.css.sass +16 -0
- data/app/controllers/kuhsaft/api/pages_controller.rb +14 -0
- data/app/controllers/kuhsaft/cms/admin_controller.rb +18 -0
- data/app/controllers/kuhsaft/cms/assets_controller.rb +38 -0
- data/app/controllers/kuhsaft/cms/bricks_controller.rb +61 -0
- data/app/controllers/kuhsaft/cms/ckimages_controller.rb +26 -0
- data/app/controllers/kuhsaft/cms/pages_controller.rb +71 -0
- data/app/controllers/kuhsaft/pages_controller.rb +38 -0
- data/app/controllers/kuhsaft/sitemaps_controller.rb +12 -0
- data/app/helpers/cms_helper.rb +27 -0
- data/app/helpers/kuhsaft/admin_helper.rb +20 -0
- data/app/helpers/kuhsaft/cms/admin_helper.rb +21 -0
- data/app/helpers/kuhsaft/cms/pages_helper.rb +17 -0
- data/app/helpers/pages_helper.rb +49 -0
- data/app/helpers/sitemaps_helper.rb +12 -0
- data/app/models/kuhsaft/accordion_brick.rb +15 -0
- data/app/models/kuhsaft/accordion_item_brick.rb +21 -0
- data/app/models/kuhsaft/anchor_brick.rb +17 -0
- data/app/models/kuhsaft/asset.rb +29 -0
- data/app/models/kuhsaft/asset_brick.rb +26 -0
- data/app/models/kuhsaft/brick.rb +137 -0
- data/app/models/kuhsaft/brick_type.rb +7 -0
- data/app/models/kuhsaft/brick_type_filter.rb +18 -0
- data/app/models/kuhsaft/ckimage.rb +5 -0
- data/app/models/kuhsaft/cms.rb +7 -0
- data/app/models/kuhsaft/column_brick.rb +22 -0
- data/app/models/kuhsaft/image_brick.rb +16 -0
- data/app/models/kuhsaft/image_size.rb +51 -0
- data/app/models/kuhsaft/link_brick.rb +21 -0
- data/app/models/kuhsaft/page.rb +160 -0
- data/app/models/kuhsaft/page_type.rb +11 -0
- data/app/models/kuhsaft/partition.rb +18 -0
- data/app/models/kuhsaft/placeholder_brick.rb +23 -0
- data/app/models/kuhsaft/publish_state.rb +24 -0
- data/app/models/kuhsaft/slider_brick.rb +18 -0
- data/app/models/kuhsaft/text_brick.rb +23 -0
- data/app/models/kuhsaft/two_column_brick.rb +46 -0
- data/app/models/kuhsaft/video_brick.rb +22 -0
- data/app/uploaders/kuhsaft/asset_brick_asset_uploader.rb +43 -0
- data/app/uploaders/kuhsaft/asset_uploader.rb +50 -0
- data/app/uploaders/kuhsaft/ckimage_uploader.rb +16 -0
- data/app/uploaders/kuhsaft/image_brick_image_uploader.rb +35 -0
- data/app/views/kuhsaft/accordion_bricks/_accordion_brick.html.haml +3 -0
- data/app/views/kuhsaft/accordion_bricks/accordion_brick/_edit.html.haml +0 -0
- data/app/views/kuhsaft/accordion_item_bricks/_accordion_item_brick.html.haml +8 -0
- data/app/views/kuhsaft/accordion_item_bricks/accordion_item_brick/_edit.html.haml +1 -0
- data/app/views/kuhsaft/anchor_bricks/_anchor_brick.html.haml +1 -0
- data/app/views/kuhsaft/anchor_bricks/anchor_brick/_edit.html.haml +1 -0
- data/app/views/kuhsaft/asset_bricks/_asset_brick.html.haml +2 -0
- data/app/views/kuhsaft/asset_bricks/asset_brick/_edit.html.haml +8 -0
- data/app/views/kuhsaft/cms/admin/_brick_type_dropdown.html.haml +14 -0
- data/app/views/kuhsaft/cms/admin/_content_language_switch.html.haml +7 -0
- data/app/views/kuhsaft/cms/admin/_empty_state.html.haml +5 -0
- data/app/views/kuhsaft/cms/admin/_flash.html.haml +7 -0
- data/app/views/kuhsaft/cms/admin/_main_navigation.html.haml +6 -0
- data/app/views/kuhsaft/cms/assets/_form.html.haml +15 -0
- data/app/views/kuhsaft/cms/assets/_list.html.haml +11 -0
- data/app/views/kuhsaft/cms/assets/edit.html.haml +2 -0
- data/app/views/kuhsaft/cms/assets/index.html.haml +3 -0
- data/app/views/kuhsaft/cms/assets/new.html.haml +2 -0
- data/app/views/kuhsaft/cms/bricks/_brick_header.html.haml +43 -0
- data/app/views/kuhsaft/cms/bricks/_brick_item.html.haml +25 -0
- data/app/views/kuhsaft/cms/bricks/_brick_list.html.haml +4 -0
- data/app/views/kuhsaft/cms/bricks/_new.html.haml +41 -0
- data/app/views/kuhsaft/cms/bricks/_sort_form.html.haml +3 -0
- data/app/views/kuhsaft/cms/bricks/create.js.erb +11 -0
- data/app/views/kuhsaft/cms/bricks/destroy.js.erb +10 -0
- data/app/views/kuhsaft/cms/bricks/new.js.erb +14 -0
- data/app/views/kuhsaft/cms/bricks/update.js.erb +8 -0
- data/app/views/kuhsaft/cms/ckimages/create.html.haml +11 -0
- data/app/views/kuhsaft/cms/ckimages/destroy.js.erb +2 -0
- data/app/views/kuhsaft/cms/ckimages/index.html.haml +13 -0
- data/app/views/kuhsaft/cms/pages/_branch.html.haml +19 -0
- data/app/views/kuhsaft/cms/pages/_form.html.haml +45 -0
- data/app/views/kuhsaft/cms/pages/edit.html.haml +16 -0
- data/app/views/kuhsaft/cms/pages/index.html.haml +14 -0
- data/app/views/kuhsaft/cms/pages/new.html.haml +1 -0
- data/app/views/kuhsaft/cms/pages/show.html.haml +0 -0
- data/app/views/kuhsaft/cms/pages/sort.js.erb +0 -0
- data/app/views/kuhsaft/column_bricks/_column_brick.html.haml +3 -0
- data/app/views/kuhsaft/column_bricks/column_brick/_edit.html.haml +0 -0
- data/app/views/kuhsaft/image_bricks/_image_brick.html.haml +11 -0
- data/app/views/kuhsaft/image_bricks/image_brick/_edit.html.haml +13 -0
- data/app/views/kuhsaft/link_bricks/_link_brick.html.haml +2 -0
- data/app/views/kuhsaft/link_bricks/link_brick/_edit.html.haml +4 -0
- data/app/views/kuhsaft/pages/index.html.haml +7 -0
- data/app/views/kuhsaft/pages/show.html.haml +11 -0
- data/app/views/kuhsaft/placeholder_bricks/_placeholder_brick.html.haml +2 -0
- data/app/views/kuhsaft/placeholder_bricks/placeholder_brick/_edit.html.haml +1 -0
- data/app/views/kuhsaft/search/_form.html.haml +2 -0
- data/app/views/kuhsaft/search/_results.html.haml +8 -0
- data/app/views/kuhsaft/search/_results_entry.html.haml +13 -0
- data/app/views/kuhsaft/sitemaps/index.xml.haml +9 -0
- data/app/views/kuhsaft/slider_bricks/_slider_brick.html.haml +10 -0
- data/app/views/kuhsaft/slider_bricks/slider_brick/_edit.html.haml +0 -0
- data/app/views/kuhsaft/text_bricks/_text_brick.html.haml +11 -0
- data/app/views/kuhsaft/text_bricks/text_brick/_edit.html.haml +2 -0
- data/app/views/kuhsaft/two_column_bricks/_two_column_brick.html.haml +3 -0
- data/app/views/kuhsaft/two_column_bricks/two_column_brick/_childs.html.haml +5 -0
- data/app/views/kuhsaft/two_column_bricks/two_column_brick/_edit.html.haml +1 -0
- data/app/views/kuhsaft/video_bricks/_video_brick.html.haml +9 -0
- data/app/views/kuhsaft/video_bricks/video_brick/_edit.html.haml +8 -0
- data/app/views/layouts/kuhsaft/cms/application.html.haml +25 -0
- data/app/views/layouts/kuhsaft/cms/ckimages.html.haml +18 -0
- data/config/initializers/simple_form.rb +142 -0
- data/config/initializers/simple_form_bootstrap.rb +45 -0
- data/config/locales/de.yml +207 -0
- data/config/locales/en.yml +211 -0
- data/config/locales/models/kuhsaft/accordion_brick/de.yml +4 -0
- data/config/locales/models/kuhsaft/accordion_brick/en.yml +4 -0
- data/config/locales/models/kuhsaft/accordion_item_brick/de.yml +7 -0
- data/config/locales/models/kuhsaft/accordion_item_brick/en.yml +7 -0
- data/config/locales/models/kuhsaft/anchor_brick/de.yml +7 -0
- data/config/locales/models/kuhsaft/anchor_brick/en.yml +7 -0
- data/config/locales/models/kuhsaft/asset_brick/de.yml +9 -0
- data/config/locales/models/kuhsaft/asset_brick/en.yml +9 -0
- data/config/locales/models/kuhsaft/brick/de.yml +5 -0
- data/config/locales/models/kuhsaft/brick/en.yml +5 -0
- data/config/locales/models/kuhsaft/column_brick/de.yml +4 -0
- data/config/locales/models/kuhsaft/column_brick/en.yml +4 -0
- data/config/locales/models/kuhsaft/image_brick/de.yml +11 -0
- data/config/locales/models/kuhsaft/image_brick/en.yml +11 -0
- data/config/locales/models/kuhsaft/image_size/de.yml +13 -0
- data/config/locales/models/kuhsaft/image_size/en.yml +13 -0
- data/config/locales/models/kuhsaft/link_brick/de.yml +10 -0
- data/config/locales/models/kuhsaft/link_brick/en.yml +10 -0
- data/config/locales/models/kuhsaft/page/de.yml +19 -0
- data/config/locales/models/kuhsaft/page/en.yml +19 -0
- data/config/locales/models/kuhsaft/placeholder_brick/de.yml +8 -0
- data/config/locales/models/kuhsaft/placeholder_brick/en.yml +8 -0
- data/config/locales/models/kuhsaft/slider_brick/de.yml +4 -0
- data/config/locales/models/kuhsaft/slider_brick/en.yml +4 -0
- data/config/locales/models/kuhsaft/text_brick/de.yml +11 -0
- data/config/locales/models/kuhsaft/text_brick/en.yml +11 -0
- data/config/locales/models/kuhsaft/two_column_brick/de.yml +7 -0
- data/config/locales/models/kuhsaft/two_column_brick/en.yml +7 -0
- data/config/locales/models/kuhsaft/video_brick/de.yml +9 -0
- data/config/locales/models/kuhsaft/video_brick/en.yml +9 -0
- data/config/locales/simple_form.en.yml +26 -0
- data/config/locales/views/kuhsaft/cms/admin/de.yml +13 -0
- data/config/locales/views/kuhsaft/cms/admin/en.yml +12 -0
- data/config/locales/views/kuhsaft/cms/bricks/de.yml +18 -0
- data/config/locales/views/kuhsaft/cms/bricks/en.yml +18 -0
- data/config/locales/views/kuhsaft/cms/pages/de.yml +31 -0
- data/config/locales/views/kuhsaft/cms/pages/en.yml +31 -0
- data/config/locales/views/kuhsaft/image_brick/de.yml +6 -0
- data/config/locales/views/kuhsaft/image_brick/en.yml +6 -0
- data/config/locales/views/kuhsaft/search/de.yml +12 -0
- data/config/locales/views/kuhsaft/search/en.yml +12 -0
- data/config/locales/views/kuhsaft/text_brick/de.yml +6 -0
- data/config/locales/views/kuhsaft/text_brick/en.yml +6 -0
- data/config/locales/views/kuhsaft/video_brick/de.yml +7 -0
- data/config/locales/views/kuhsaft/video_brick/en.yml +7 -0
- data/config/routes.rb +30 -0
- data/db/migrate/01_create_kuhsaft_pages.rb +31 -0
- data/db/migrate/02_create_kuhsaft_bricks.rb +23 -0
- data/db/migrate/03_create_kuhsaft_brick_types.rb +12 -0
- data/db/migrate/04_create_kuhsaft_assets.rb +10 -0
- data/db/migrate/05_remove_cms_admin.rb +9 -0
- data/db/migrate/06_add_template_name_to_kuhsaft_bricks.rb +7 -0
- data/db/migrate/07_add_default_value_to_brick_type_enabled.rb +6 -0
- data/db/migrate/08_add_display_styles_to_bricks.rb +5 -0
- data/db/migrate/09_add_additional_fields_to_kuhsaft_bricks.rb +6 -0
- data/db/migrate/10_add_redirect_url_to_kuhsaft_pages.rb +7 -0
- data/db/migrate/11_update_url_and_redirect_url_value.rb +45 -0
- data/db/migrate/12_regenerate_fulltext.rb +12 -0
- data/db/migrate/13_add_page_title_to_pages.rb +7 -0
- data/db/migrate/14_move_kuhsaft_assets.rb +22 -0
- 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/db/migrate/18_add_identifier_to_kuhsaft_pages.rb +6 -0
- data/db/migrate/19_add_col_count_to_bricks.rb +5 -0
- data/db/migrate/20_create_kuhsaft_ckimages.rb +9 -0
- data/db/seeds.rb +20 -0
- data/lib/generators/kuhsaft/assets/install_generator.rb +25 -0
- data/lib/generators/kuhsaft/translations/add_generator.rb +41 -0
- data/lib/kuhsaft.rb +22 -0
- data/lib/kuhsaft/brick_list.rb +87 -0
- data/lib/kuhsaft/engine.rb +27 -0
- data/lib/kuhsaft/gridded.rb +20 -0
- data/lib/kuhsaft/image_uploader_mounting.rb +22 -0
- data/lib/kuhsaft/orderable.rb +71 -0
- data/lib/kuhsaft/page_tree.rb +14 -0
- data/lib/kuhsaft/partial_extractor.rb +21 -0
- data/lib/kuhsaft/searchable.rb +69 -0
- data/lib/kuhsaft/touch_placeholders.rb +31 -0
- data/lib/kuhsaft/translatable.rb +54 -0
- data/lib/kuhsaft/version.rb +3 -0
- data/lib/tasks/kuhsaft_tasks.rake +22 -0
- data/lib/templates/kuhsaft/assets/ck-config.js.coffee +48 -0
- data/lib/templates/kuhsaft/assets/customizations.css.sass +0 -0
- data/lib/templates/kuhsaft/assets/customizations.js.coffee +0 -0
- data/lib/templates/kuhsaft/translations/add_translation.erb +8 -0
- data/spec/controllers/kuhsaft/api/pages_controller_spec.rb +70 -0
- data/spec/controllers/kuhsaft/pages_controller_spec.rb +90 -0
- data/spec/controllers/kuhsaft/sitemaps_controller_spec.rb +13 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/images/spec-image.png +0 -0
- data/spec/dummy/app/assets/javascripts/application.js +15 -0
- data/spec/dummy/app/assets/javascripts/kuhsaft/cms/ck-config.js.coffee +48 -0
- data/spec/dummy/app/assets/javascripts/kuhsaft/cms/customizations.js.coffee +0 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/assets/stylesheets/kuhsaft/cms/customizations.css.sass +0 -0
- data/spec/dummy/app/controllers/application_controller.rb +4 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +26 -0
- data/spec/dummy/config/boot.rb +3 -0
- data/spec/dummy/config/database.yml +19 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +29 -0
- data/spec/dummy/config/environments/production.rb +81 -0
- data/spec/dummy/config/environments/test.rb +36 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/kuhsaft.rb +5 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +12 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +3 -0
- data/spec/dummy/db/.gitkeep +0 -0
- data/spec/dummy/lib/assets/.gitkeep +0 -0
- data/spec/dummy/log/.gitkeep +0 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/public/stylesheets/.gitkeep +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/factories.rb +26 -0
- data/spec/features/cms_pages_spec.rb +76 -0
- data/spec/features/search_spec.rb +78 -0
- data/spec/helpers/kuhsaft/cms/admin_helper_spec.rb +25 -0
- data/spec/helpers/kuhsaft/cms/pages_helper_spec.rb +46 -0
- data/spec/helpers/kuhsaft/pages_helper_spec.rb +21 -0
- data/spec/kuhsaft_spec.rb +7 -0
- data/spec/lib/brick_list_spec.rb +50 -0
- data/spec/lib/engine_spec.rb +25 -0
- data/spec/lib/gridded_spec.rb +24 -0
- data/spec/lib/image_uploader_mounting_spec.rb +14 -0
- data/spec/lib/page_tree_spec.rb +38 -0
- data/spec/lib/searchable_spec.rb +30 -0
- data/spec/lib/touch_placeholders_spec.rb +44 -0
- data/spec/lib/translatable_spec.rb +155 -0
- data/spec/models/accordion_brick_spec.rb +38 -0
- data/spec/models/accordion_item_brick_spec.rb +50 -0
- data/spec/models/anchor_brick_spec.rb +26 -0
- data/spec/models/asset_brick_spec.rb +45 -0
- data/spec/models/asset_spec.rb +41 -0
- data/spec/models/brick_spec.rb +134 -0
- data/spec/models/brick_type_filter_spec.rb +64 -0
- data/spec/models/column_brick_spec.rb +32 -0
- data/spec/models/image_brick_spec.rb +49 -0
- data/spec/models/image_size_spec.rb +36 -0
- data/spec/models/link_brick_spec.rb +51 -0
- data/spec/models/page_spec.rb +472 -0
- data/spec/models/placeholder_brick_spec.rb +46 -0
- data/spec/models/publish_state_spec.rb +33 -0
- data/spec/models/slider_brick_spec.rb +26 -0
- data/spec/models/text_brick_spec.rb +30 -0
- data/spec/models/two_column_brick_spec.rb +82 -0
- data/spec/models/video_brick_spec.rb +32 -0
- data/spec/spec_helper.rb +81 -0
- data/spec/support/kuhsaft_spec_helper.rb +8 -0
- data/spec/support/write_expectation.rb +57 -0
- data/spec/views/kuhsaft/sitemaps/index.xml.haml_spec.rb +67 -0
- data/vendor/assets/javascripts/bootstrap-modal-v2.js +376 -0
- data/vendor/assets/javascripts/bootstrap-modalmanager.js +423 -0
- data/vendor/assets/javascripts/jquery.nestable.js +485 -0
- data/vendor/assets/stylesheets/bootstrap_modal.css +214 -0
- data/vendor/assets/stylesheets/nestable.css +84 -0
- metadata +870 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Kuhsaft::Searchable do
|
|
4
|
+
|
|
5
|
+
context 'with missing includes' do
|
|
6
|
+
it 'raises exteption when class does not include Kuhsaft::Bricklist' do
|
|
7
|
+
expect do
|
|
8
|
+
class Foo
|
|
9
|
+
include Kuhsaft::Searchable
|
|
10
|
+
end
|
|
11
|
+
end.to raise_error(/needs Kuhsaft::BrickList to be included/)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
context 'with Bricklist included' do
|
|
16
|
+
class SearchableDemo < ActiveRecord::Base
|
|
17
|
+
include Kuhsaft::BrickList
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
context 'without postgresql' do
|
|
21
|
+
it 'initializes scope' do
|
|
22
|
+
expect(ActiveRecord::Base.connection.instance_values).not_to eq('postgresql')
|
|
23
|
+
SearchableDemo.should_receive :scope
|
|
24
|
+
SearchableDemo.class_eval do
|
|
25
|
+
include Kuhsaft::Searchable
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require_relative '../../lib/kuhsaft/touch_placeholders'
|
|
3
|
+
|
|
4
|
+
describe Kuhsaft::TouchPlaceholders do
|
|
5
|
+
|
|
6
|
+
before :all do
|
|
7
|
+
m = ActiveRecord::Migration.new
|
|
8
|
+
m.verbose = false
|
|
9
|
+
m.create_table :dummy_models do |t|
|
|
10
|
+
t.timestamps
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
class DummyModel < ActiveRecord::Base
|
|
14
|
+
include Kuhsaft::TouchPlaceholders
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
@page = FactoryGirl.create(:page)
|
|
18
|
+
@placeholder = FactoryGirl.create(:placeholder_brick, brick_list: @page, template_name: 'foo')
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
after :all do
|
|
22
|
+
m = ActiveRecord::Migration.new
|
|
23
|
+
m.verbose = false
|
|
24
|
+
m.drop_table :dummy_models
|
|
25
|
+
|
|
26
|
+
@page.destroy
|
|
27
|
+
@placeholder.destroy
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'placeholder_templates class method' do
|
|
31
|
+
it 'returns the attribute names defined with class macro' do
|
|
32
|
+
DummyModel.class_eval { placeholder_templates 'key_benefit_slider', 'key_benefit_grid' }
|
|
33
|
+
expect(DummyModel.placeholder_templates).to eq %w(key_benefit_slider key_benefit_grid)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe 'after_save_callback' do
|
|
38
|
+
it 'looks for the bricks with affected templates and touches them' do
|
|
39
|
+
DummyModel.class_eval { placeholder_templates 'foo' }
|
|
40
|
+
expect_any_instance_of(Kuhsaft::PlaceholderBrick).to receive(:touch)
|
|
41
|
+
DummyModel.create
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Kuhsaft::Translatable do
|
|
4
|
+
|
|
5
|
+
class Demo
|
|
6
|
+
include Kuhsaft::Translatable
|
|
7
|
+
translate :name
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
let :model do
|
|
11
|
+
Demo.new
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe 'normal locale' do
|
|
15
|
+
before do
|
|
16
|
+
I18n.locale = :en
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe '.translate' do
|
|
20
|
+
it 'defines a getter for each attribute' do
|
|
21
|
+
expect(model).to respond_to(:name)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'defines a setter for each attributes' do
|
|
25
|
+
expect(model).to respond_to(:name=)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
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
|
|
33
|
+
end
|
|
34
|
+
|
|
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
|
|
39
|
+
end
|
|
40
|
+
|
|
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
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
describe 'country specific locale' do
|
|
83
|
+
before do
|
|
84
|
+
I18n.available_locales = [:de, 'de-CH']
|
|
85
|
+
I18n.locale = 'de-CH'
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
after do
|
|
89
|
+
I18n.available_locales = [:en]
|
|
90
|
+
I18n.locale = :en
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
describe '.translate' do
|
|
94
|
+
it 'defines a getter for each attribute' do
|
|
95
|
+
expect(model).to respond_to(:name)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it 'defines a setter for each attributes' do
|
|
99
|
+
expect(model).to respond_to(:name=)
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
describe '.locale_attr' do
|
|
104
|
+
it 'returns a suffixed attribute name' do
|
|
105
|
+
expect(Demo.locale_attr('text')).to eq('text_de_ch')
|
|
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
|
|
114
|
+
|
|
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'
|
|
119
|
+
end
|
|
120
|
+
|
|
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
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Kuhsaft::AccordionBrick do
|
|
4
|
+
|
|
5
|
+
let :accordion_brick do
|
|
6
|
+
Kuhsaft::AccordionBrick.new
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe '#user_can_delete?' do
|
|
10
|
+
it 'returns true' do
|
|
11
|
+
accordion_brick.user_can_delete?.should be_true
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe '#renders_own_childs?' do
|
|
16
|
+
it 'returns false' do
|
|
17
|
+
accordion_brick.renders_own_childs?.should be_false
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe '#bricks' do
|
|
22
|
+
it 'can have childs' do
|
|
23
|
+
accordion_brick.should respond_to(:bricks)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe '#to_style_class' do
|
|
28
|
+
it 'includes the bootstrap classname' do
|
|
29
|
+
accordion_brick.to_style_class.should == 'kuhsaft-accordion-brick accordion'
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe '#allowed_brick_types' do
|
|
34
|
+
it 'only allows AccordionItems' do
|
|
35
|
+
accordion_brick.allowed_brick_types.should == %w(Kuhsaft::AccordionItemBrick)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Kuhsaft::AccordionItemBrick do
|
|
4
|
+
|
|
5
|
+
let :accordion_item_brick do
|
|
6
|
+
Kuhsaft::AccordionItemBrick.new
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe '#valid' do
|
|
10
|
+
before do
|
|
11
|
+
accordion_item_brick.valid?
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
context 'without a #caption' do
|
|
15
|
+
it 'has en error' do
|
|
16
|
+
accordion_item_brick.should have(1).error_on(:caption)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe '#user_can_delete?' do
|
|
22
|
+
it 'returns true' do
|
|
23
|
+
accordion_item_brick.user_can_delete?.should be_true
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe '#user_can_save' do
|
|
28
|
+
it 'returns true' do
|
|
29
|
+
accordion_item_brick.user_can_save?.should == true
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe '#renders_own_childs?' do
|
|
34
|
+
it 'returns false' do
|
|
35
|
+
accordion_item_brick.renders_own_childs?.should be_false
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
describe '#bricks' do
|
|
40
|
+
it 'can have childs' do
|
|
41
|
+
accordion_item_brick.should respond_to(:bricks)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
describe '#to_style_class' do
|
|
46
|
+
it 'includes the bootstrap classname' do
|
|
47
|
+
accordion_item_brick.to_style_class.should == 'kuhsaft-accordion-item-brick accordion-group'
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Kuhsaft::AnchorBrick do
|
|
4
|
+
|
|
5
|
+
let :anchor_brick do
|
|
6
|
+
Kuhsaft::AnchorBrick.new(caption: 'test-anchor')
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe '#bricks' do
|
|
10
|
+
it 'can not have childs' do
|
|
11
|
+
anchor_brick.should_not respond_to(:bricks)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe '#user_can_add_childs?' do
|
|
16
|
+
it 'returns false' do
|
|
17
|
+
anchor_brick.user_can_add_childs?.should be_false
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe '#to_id' do
|
|
22
|
+
it 'returns a parameterized id' do
|
|
23
|
+
anchor_brick.to_id.should == 'anchor-test-anchor'
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Kuhsaft::AssetBrick do
|
|
4
|
+
|
|
5
|
+
let :asset_brick do
|
|
6
|
+
Kuhsaft::AssetBrick.new
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe '#valid' do
|
|
10
|
+
before do
|
|
11
|
+
asset_brick.valid?
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
context 'without a #caption' do
|
|
15
|
+
it 'has an error' do
|
|
16
|
+
asset_brick.should have(1).error_on(:caption)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe '#bricks' do
|
|
22
|
+
it 'can not have childs' do
|
|
23
|
+
asset_brick.should_not respond_to(:bricks)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe '.styles' do
|
|
28
|
+
it 'returns the available link styles' do
|
|
29
|
+
Kuhsaft::AssetBrick.styles.should == %w(pdf word excel button)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe '#to_style_class' do
|
|
34
|
+
it 'includes the link style' do
|
|
35
|
+
asset_brick.stub(:link_style).and_return('pdf')
|
|
36
|
+
asset_brick.to_style_class.should == 'kuhsaft-asset-brick pdf'
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe '#user_can_add_childs?' do
|
|
41
|
+
it 'returns false' do
|
|
42
|
+
asset_brick.user_can_add_childs?.should be_false
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Kuhsaft::Asset do
|
|
4
|
+
|
|
5
|
+
let :asset do
|
|
6
|
+
create(:asset)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
let :uploader do
|
|
10
|
+
u = Kuhsaft::AssetUploader.new(asset, :file)
|
|
11
|
+
u.store!(File.open(File.join(Kuhsaft::Engine.root, 'spec', 'dummy', 'app', 'assets', 'images', 'spec-image.png')))
|
|
12
|
+
u
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
before do
|
|
16
|
+
Kuhsaft::AssetUploader.enable_processing = true
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
after do
|
|
20
|
+
Kuhsaft::AssetUploader.enable_processing = false
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'has a thumbnail' do
|
|
24
|
+
uploader.should respond_to(:thumb)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it 'makes the image readable only to the owner and not executable' do
|
|
28
|
+
pending 'how and where do we ensure permissions?'
|
|
29
|
+
uploader.should have_permissions(0600)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
describe '#file_type' do
|
|
33
|
+
it 'has a file_type' do
|
|
34
|
+
asset.should respond_to(:file_type)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it 'is symbolized' do
|
|
38
|
+
asset.file_type.should be_a(Symbol)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Kuhsaft::Brick do
|
|
4
|
+
let :brick do
|
|
5
|
+
Kuhsaft::Brick.new
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
describe '#valid?' do
|
|
9
|
+
it 'sets a default position' do
|
|
10
|
+
brick.should_receive(:set_position)
|
|
11
|
+
brick.valid?
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe '#set_position' do
|
|
16
|
+
context 'witout a position' do
|
|
17
|
+
it 'sets a default' do
|
|
18
|
+
brick.set_position
|
|
19
|
+
brick.position.should be(1)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
context 'with a position' do
|
|
24
|
+
it 'does not change' do
|
|
25
|
+
brick.position = 3
|
|
26
|
+
expect { brick.set_position }.to_not change(brick, :position)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
describe '#brick_list_type' do
|
|
32
|
+
it 'returns Kuhsaft::Brick' do
|
|
33
|
+
brick.brick_list_type.should == 'Kuhsaft::Brick'
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe '#parents' do
|
|
38
|
+
it 'returns the chain of parents' do
|
|
39
|
+
item1, item2, item3 = double, double, Kuhsaft::Brick.new
|
|
40
|
+
item2.stub(:brick_list).and_return(item1)
|
|
41
|
+
item3.stub(:brick_list).and_return(item2)
|
|
42
|
+
item3.parents.should == [item1, item2]
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
describe '#to_edit_partial_path' do
|
|
47
|
+
it 'returns the path to the form partial' do
|
|
48
|
+
Kuhsaft::TextBrick.new.to_edit_partial_path.should == 'kuhsaft/text_bricks/text_brick/edit'
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
describe '#has_siblings?' do
|
|
53
|
+
it 'returns false if the brick has no siblings' do
|
|
54
|
+
brick = Kuhsaft::Brick.new
|
|
55
|
+
brick.has_siblings?.should be_false
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it 'returns true if the brick has siblings' do
|
|
59
|
+
item1, item2, item3 = double, double, Kuhsaft::Brick.new
|
|
60
|
+
item1.stub(:bricks).and_return([item2, item3])
|
|
61
|
+
item2.stub(:brick_list).and_return(item1)
|
|
62
|
+
item3.stub(:brick_list).and_return(item1)
|
|
63
|
+
item3.has_siblings?.should be_true
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
describe '#to_edit_childs_partial_path' do
|
|
68
|
+
it 'returns the path to the form partial' do
|
|
69
|
+
Kuhsaft::TextBrick.new.to_edit_childs_partial_path.should == 'kuhsaft/text_bricks/text_brick/childs'
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
describe '#bricks' do
|
|
74
|
+
it 'can not have childs by default' do
|
|
75
|
+
brick.should_not respond_to(:bricks)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
describe '#to_style_class' do
|
|
80
|
+
it 'returns a css classname' do
|
|
81
|
+
Kuhsaft::TextBrick.new.to_style_class.should == 'kuhsaft-text-brick'
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
describe '#to_style_id' do
|
|
86
|
+
it 'returns a unique DOM id' do
|
|
87
|
+
brick = Kuhsaft::TextBrick.new
|
|
88
|
+
brick.stub(:id).and_return(104)
|
|
89
|
+
brick.to_style_id.should == 'kuhsaft-text-brick-104'
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
describe '#backend_label' do
|
|
94
|
+
it 'returns the name of the brick' do
|
|
95
|
+
brick = Kuhsaft::TextBrick.new
|
|
96
|
+
brick.backend_label.should == 'Text'
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
context 'with the parenthesis option given' do
|
|
100
|
+
brick = Kuhsaft::TextBrick.new
|
|
101
|
+
brick.backend_label(parenthesis: true).should == '(Text)'
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
describe '#uploader?' do
|
|
106
|
+
it 'returns false' do
|
|
107
|
+
brick.uploader?.should be_false
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
describe '#after_save' do
|
|
112
|
+
describe 'update_fulltext' do
|
|
113
|
+
let! :brick do
|
|
114
|
+
Kuhsaft::Brick.new.tap do |b|
|
|
115
|
+
b.type = Kuhsaft::BrickType.new
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
let! :brick_list do
|
|
120
|
+
p = create(:page)
|
|
121
|
+
p.bricks << brick
|
|
122
|
+
p.save
|
|
123
|
+
p
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
it 'updates fulltext on bricklist after saving a single brick' do
|
|
127
|
+
brick.brick_list.should_receive(:update_fulltext)
|
|
128
|
+
brick.brick_list.should_receive(:save!)
|
|
129
|
+
brick.text = 'foobar'
|
|
130
|
+
brick.save
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end
|