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.
Files changed (297) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +423 -0
  3. data/Rakefile +82 -0
  4. data/app/assets/javascripts/ckeditor/plugins/adv_link/LICENSE.txt +674 -0
  5. data/app/assets/javascripts/ckeditor/plugins/adv_link/README.md +62 -0
  6. data/app/assets/javascripts/ckeditor/plugins/adv_link/dialogs/anchor.js.coffee +81 -0
  7. data/app/assets/javascripts/ckeditor/plugins/adv_link/dialogs/link.js.coffee +1353 -0
  8. data/app/assets/javascripts/ckeditor/plugins/adv_link/images/anchor.png +0 -0
  9. data/app/assets/javascripts/ckeditor/plugins/adv_link/images/hidpi/anchor.png +0 -0
  10. data/app/assets/javascripts/ckeditor/plugins/adv_link/lang/de.js +68 -0
  11. data/app/assets/javascripts/ckeditor/plugins/adv_link/lang/en.js +68 -0
  12. data/app/assets/javascripts/ckeditor/plugins/adv_link/plugin.js.coffee +282 -0
  13. data/app/assets/javascripts/kuhsaft/application.js.coffee +7 -0
  14. data/app/assets/javascripts/kuhsaft/cms/application.js.coffee.erb +136 -0
  15. data/app/assets/javascripts/kuhsaft/views/read_more_view.js.coffee +17 -0
  16. data/app/assets/stylesheets/kuhsaft/application.css.sass +1 -0
  17. data/app/assets/stylesheets/kuhsaft/cms/application.css.sass +204 -0
  18. data/app/assets/stylesheets/kuhsaft/modules/_text_brick.css.sass +16 -0
  19. data/app/controllers/kuhsaft/api/pages_controller.rb +14 -0
  20. data/app/controllers/kuhsaft/cms/admin_controller.rb +18 -0
  21. data/app/controllers/kuhsaft/cms/assets_controller.rb +38 -0
  22. data/app/controllers/kuhsaft/cms/bricks_controller.rb +61 -0
  23. data/app/controllers/kuhsaft/cms/ckimages_controller.rb +26 -0
  24. data/app/controllers/kuhsaft/cms/pages_controller.rb +71 -0
  25. data/app/controllers/kuhsaft/pages_controller.rb +38 -0
  26. data/app/controllers/kuhsaft/sitemaps_controller.rb +12 -0
  27. data/app/helpers/cms_helper.rb +27 -0
  28. data/app/helpers/kuhsaft/admin_helper.rb +20 -0
  29. data/app/helpers/kuhsaft/cms/admin_helper.rb +21 -0
  30. data/app/helpers/kuhsaft/cms/pages_helper.rb +17 -0
  31. data/app/helpers/pages_helper.rb +49 -0
  32. data/app/helpers/sitemaps_helper.rb +12 -0
  33. data/app/models/kuhsaft/accordion_brick.rb +15 -0
  34. data/app/models/kuhsaft/accordion_item_brick.rb +21 -0
  35. data/app/models/kuhsaft/anchor_brick.rb +17 -0
  36. data/app/models/kuhsaft/asset.rb +29 -0
  37. data/app/models/kuhsaft/asset_brick.rb +26 -0
  38. data/app/models/kuhsaft/brick.rb +137 -0
  39. data/app/models/kuhsaft/brick_type.rb +7 -0
  40. data/app/models/kuhsaft/brick_type_filter.rb +18 -0
  41. data/app/models/kuhsaft/ckimage.rb +5 -0
  42. data/app/models/kuhsaft/cms.rb +7 -0
  43. data/app/models/kuhsaft/column_brick.rb +22 -0
  44. data/app/models/kuhsaft/image_brick.rb +16 -0
  45. data/app/models/kuhsaft/image_size.rb +51 -0
  46. data/app/models/kuhsaft/link_brick.rb +21 -0
  47. data/app/models/kuhsaft/page.rb +160 -0
  48. data/app/models/kuhsaft/page_type.rb +11 -0
  49. data/app/models/kuhsaft/partition.rb +18 -0
  50. data/app/models/kuhsaft/placeholder_brick.rb +23 -0
  51. data/app/models/kuhsaft/publish_state.rb +24 -0
  52. data/app/models/kuhsaft/slider_brick.rb +18 -0
  53. data/app/models/kuhsaft/text_brick.rb +23 -0
  54. data/app/models/kuhsaft/two_column_brick.rb +46 -0
  55. data/app/models/kuhsaft/video_brick.rb +22 -0
  56. data/app/uploaders/kuhsaft/asset_brick_asset_uploader.rb +43 -0
  57. data/app/uploaders/kuhsaft/asset_uploader.rb +50 -0
  58. data/app/uploaders/kuhsaft/ckimage_uploader.rb +16 -0
  59. data/app/uploaders/kuhsaft/image_brick_image_uploader.rb +35 -0
  60. data/app/views/kuhsaft/accordion_bricks/_accordion_brick.html.haml +3 -0
  61. data/app/views/kuhsaft/accordion_bricks/accordion_brick/_edit.html.haml +0 -0
  62. data/app/views/kuhsaft/accordion_item_bricks/_accordion_item_brick.html.haml +8 -0
  63. data/app/views/kuhsaft/accordion_item_bricks/accordion_item_brick/_edit.html.haml +1 -0
  64. data/app/views/kuhsaft/anchor_bricks/_anchor_brick.html.haml +1 -0
  65. data/app/views/kuhsaft/anchor_bricks/anchor_brick/_edit.html.haml +1 -0
  66. data/app/views/kuhsaft/asset_bricks/_asset_brick.html.haml +2 -0
  67. data/app/views/kuhsaft/asset_bricks/asset_brick/_edit.html.haml +8 -0
  68. data/app/views/kuhsaft/cms/admin/_brick_type_dropdown.html.haml +14 -0
  69. data/app/views/kuhsaft/cms/admin/_content_language_switch.html.haml +7 -0
  70. data/app/views/kuhsaft/cms/admin/_empty_state.html.haml +5 -0
  71. data/app/views/kuhsaft/cms/admin/_flash.html.haml +7 -0
  72. data/app/views/kuhsaft/cms/admin/_main_navigation.html.haml +6 -0
  73. data/app/views/kuhsaft/cms/assets/_form.html.haml +15 -0
  74. data/app/views/kuhsaft/cms/assets/_list.html.haml +11 -0
  75. data/app/views/kuhsaft/cms/assets/edit.html.haml +2 -0
  76. data/app/views/kuhsaft/cms/assets/index.html.haml +3 -0
  77. data/app/views/kuhsaft/cms/assets/new.html.haml +2 -0
  78. data/app/views/kuhsaft/cms/bricks/_brick_header.html.haml +43 -0
  79. data/app/views/kuhsaft/cms/bricks/_brick_item.html.haml +25 -0
  80. data/app/views/kuhsaft/cms/bricks/_brick_list.html.haml +4 -0
  81. data/app/views/kuhsaft/cms/bricks/_new.html.haml +41 -0
  82. data/app/views/kuhsaft/cms/bricks/_sort_form.html.haml +3 -0
  83. data/app/views/kuhsaft/cms/bricks/create.js.erb +11 -0
  84. data/app/views/kuhsaft/cms/bricks/destroy.js.erb +10 -0
  85. data/app/views/kuhsaft/cms/bricks/new.js.erb +14 -0
  86. data/app/views/kuhsaft/cms/bricks/update.js.erb +8 -0
  87. data/app/views/kuhsaft/cms/ckimages/create.html.haml +11 -0
  88. data/app/views/kuhsaft/cms/ckimages/destroy.js.erb +2 -0
  89. data/app/views/kuhsaft/cms/ckimages/index.html.haml +13 -0
  90. data/app/views/kuhsaft/cms/pages/_branch.html.haml +19 -0
  91. data/app/views/kuhsaft/cms/pages/_form.html.haml +45 -0
  92. data/app/views/kuhsaft/cms/pages/edit.html.haml +16 -0
  93. data/app/views/kuhsaft/cms/pages/index.html.haml +14 -0
  94. data/app/views/kuhsaft/cms/pages/new.html.haml +1 -0
  95. data/app/views/kuhsaft/cms/pages/show.html.haml +0 -0
  96. data/app/views/kuhsaft/cms/pages/sort.js.erb +0 -0
  97. data/app/views/kuhsaft/column_bricks/_column_brick.html.haml +3 -0
  98. data/app/views/kuhsaft/column_bricks/column_brick/_edit.html.haml +0 -0
  99. data/app/views/kuhsaft/image_bricks/_image_brick.html.haml +11 -0
  100. data/app/views/kuhsaft/image_bricks/image_brick/_edit.html.haml +13 -0
  101. data/app/views/kuhsaft/link_bricks/_link_brick.html.haml +2 -0
  102. data/app/views/kuhsaft/link_bricks/link_brick/_edit.html.haml +4 -0
  103. data/app/views/kuhsaft/pages/index.html.haml +7 -0
  104. data/app/views/kuhsaft/pages/show.html.haml +11 -0
  105. data/app/views/kuhsaft/placeholder_bricks/_placeholder_brick.html.haml +2 -0
  106. data/app/views/kuhsaft/placeholder_bricks/placeholder_brick/_edit.html.haml +1 -0
  107. data/app/views/kuhsaft/search/_form.html.haml +2 -0
  108. data/app/views/kuhsaft/search/_results.html.haml +8 -0
  109. data/app/views/kuhsaft/search/_results_entry.html.haml +13 -0
  110. data/app/views/kuhsaft/sitemaps/index.xml.haml +9 -0
  111. data/app/views/kuhsaft/slider_bricks/_slider_brick.html.haml +10 -0
  112. data/app/views/kuhsaft/slider_bricks/slider_brick/_edit.html.haml +0 -0
  113. data/app/views/kuhsaft/text_bricks/_text_brick.html.haml +11 -0
  114. data/app/views/kuhsaft/text_bricks/text_brick/_edit.html.haml +2 -0
  115. data/app/views/kuhsaft/two_column_bricks/_two_column_brick.html.haml +3 -0
  116. data/app/views/kuhsaft/two_column_bricks/two_column_brick/_childs.html.haml +5 -0
  117. data/app/views/kuhsaft/two_column_bricks/two_column_brick/_edit.html.haml +1 -0
  118. data/app/views/kuhsaft/video_bricks/_video_brick.html.haml +9 -0
  119. data/app/views/kuhsaft/video_bricks/video_brick/_edit.html.haml +8 -0
  120. data/app/views/layouts/kuhsaft/cms/application.html.haml +25 -0
  121. data/app/views/layouts/kuhsaft/cms/ckimages.html.haml +18 -0
  122. data/config/initializers/simple_form.rb +142 -0
  123. data/config/initializers/simple_form_bootstrap.rb +45 -0
  124. data/config/locales/de.yml +207 -0
  125. data/config/locales/en.yml +211 -0
  126. data/config/locales/models/kuhsaft/accordion_brick/de.yml +4 -0
  127. data/config/locales/models/kuhsaft/accordion_brick/en.yml +4 -0
  128. data/config/locales/models/kuhsaft/accordion_item_brick/de.yml +7 -0
  129. data/config/locales/models/kuhsaft/accordion_item_brick/en.yml +7 -0
  130. data/config/locales/models/kuhsaft/anchor_brick/de.yml +7 -0
  131. data/config/locales/models/kuhsaft/anchor_brick/en.yml +7 -0
  132. data/config/locales/models/kuhsaft/asset_brick/de.yml +9 -0
  133. data/config/locales/models/kuhsaft/asset_brick/en.yml +9 -0
  134. data/config/locales/models/kuhsaft/brick/de.yml +5 -0
  135. data/config/locales/models/kuhsaft/brick/en.yml +5 -0
  136. data/config/locales/models/kuhsaft/column_brick/de.yml +4 -0
  137. data/config/locales/models/kuhsaft/column_brick/en.yml +4 -0
  138. data/config/locales/models/kuhsaft/image_brick/de.yml +11 -0
  139. data/config/locales/models/kuhsaft/image_brick/en.yml +11 -0
  140. data/config/locales/models/kuhsaft/image_size/de.yml +13 -0
  141. data/config/locales/models/kuhsaft/image_size/en.yml +13 -0
  142. data/config/locales/models/kuhsaft/link_brick/de.yml +10 -0
  143. data/config/locales/models/kuhsaft/link_brick/en.yml +10 -0
  144. data/config/locales/models/kuhsaft/page/de.yml +19 -0
  145. data/config/locales/models/kuhsaft/page/en.yml +19 -0
  146. data/config/locales/models/kuhsaft/placeholder_brick/de.yml +8 -0
  147. data/config/locales/models/kuhsaft/placeholder_brick/en.yml +8 -0
  148. data/config/locales/models/kuhsaft/slider_brick/de.yml +4 -0
  149. data/config/locales/models/kuhsaft/slider_brick/en.yml +4 -0
  150. data/config/locales/models/kuhsaft/text_brick/de.yml +11 -0
  151. data/config/locales/models/kuhsaft/text_brick/en.yml +11 -0
  152. data/config/locales/models/kuhsaft/two_column_brick/de.yml +7 -0
  153. data/config/locales/models/kuhsaft/two_column_brick/en.yml +7 -0
  154. data/config/locales/models/kuhsaft/video_brick/de.yml +9 -0
  155. data/config/locales/models/kuhsaft/video_brick/en.yml +9 -0
  156. data/config/locales/simple_form.en.yml +26 -0
  157. data/config/locales/views/kuhsaft/cms/admin/de.yml +13 -0
  158. data/config/locales/views/kuhsaft/cms/admin/en.yml +12 -0
  159. data/config/locales/views/kuhsaft/cms/bricks/de.yml +18 -0
  160. data/config/locales/views/kuhsaft/cms/bricks/en.yml +18 -0
  161. data/config/locales/views/kuhsaft/cms/pages/de.yml +31 -0
  162. data/config/locales/views/kuhsaft/cms/pages/en.yml +31 -0
  163. data/config/locales/views/kuhsaft/image_brick/de.yml +6 -0
  164. data/config/locales/views/kuhsaft/image_brick/en.yml +6 -0
  165. data/config/locales/views/kuhsaft/search/de.yml +12 -0
  166. data/config/locales/views/kuhsaft/search/en.yml +12 -0
  167. data/config/locales/views/kuhsaft/text_brick/de.yml +6 -0
  168. data/config/locales/views/kuhsaft/text_brick/en.yml +6 -0
  169. data/config/locales/views/kuhsaft/video_brick/de.yml +7 -0
  170. data/config/locales/views/kuhsaft/video_brick/en.yml +7 -0
  171. data/config/routes.rb +30 -0
  172. data/db/migrate/01_create_kuhsaft_pages.rb +31 -0
  173. data/db/migrate/02_create_kuhsaft_bricks.rb +23 -0
  174. data/db/migrate/03_create_kuhsaft_brick_types.rb +12 -0
  175. data/db/migrate/04_create_kuhsaft_assets.rb +10 -0
  176. data/db/migrate/05_remove_cms_admin.rb +9 -0
  177. data/db/migrate/06_add_template_name_to_kuhsaft_bricks.rb +7 -0
  178. data/db/migrate/07_add_default_value_to_brick_type_enabled.rb +6 -0
  179. data/db/migrate/08_add_display_styles_to_bricks.rb +5 -0
  180. data/db/migrate/09_add_additional_fields_to_kuhsaft_bricks.rb +6 -0
  181. data/db/migrate/10_add_redirect_url_to_kuhsaft_pages.rb +7 -0
  182. data/db/migrate/11_update_url_and_redirect_url_value.rb +45 -0
  183. data/db/migrate/12_regenerate_fulltext.rb +12 -0
  184. data/db/migrate/13_add_page_title_to_pages.rb +7 -0
  185. data/db/migrate/14_move_kuhsaft_assets.rb +22 -0
  186. data/db/migrate/15_add_alt_text_to_bricks.rb +5 -0
  187. data/db/migrate/16_update_default_value_for_page_type.rb +9 -0
  188. data/db/migrate/17_set_page_type_to_content_for_empty_fields.rb +7 -0
  189. data/db/migrate/18_add_identifier_to_kuhsaft_pages.rb +6 -0
  190. data/db/migrate/19_add_col_count_to_bricks.rb +5 -0
  191. data/db/migrate/20_create_kuhsaft_ckimages.rb +9 -0
  192. data/db/seeds.rb +20 -0
  193. data/lib/generators/kuhsaft/assets/install_generator.rb +25 -0
  194. data/lib/generators/kuhsaft/translations/add_generator.rb +41 -0
  195. data/lib/kuhsaft.rb +22 -0
  196. data/lib/kuhsaft/brick_list.rb +87 -0
  197. data/lib/kuhsaft/engine.rb +27 -0
  198. data/lib/kuhsaft/gridded.rb +20 -0
  199. data/lib/kuhsaft/image_uploader_mounting.rb +22 -0
  200. data/lib/kuhsaft/orderable.rb +71 -0
  201. data/lib/kuhsaft/page_tree.rb +14 -0
  202. data/lib/kuhsaft/partial_extractor.rb +21 -0
  203. data/lib/kuhsaft/searchable.rb +69 -0
  204. data/lib/kuhsaft/touch_placeholders.rb +31 -0
  205. data/lib/kuhsaft/translatable.rb +54 -0
  206. data/lib/kuhsaft/version.rb +3 -0
  207. data/lib/tasks/kuhsaft_tasks.rake +22 -0
  208. data/lib/templates/kuhsaft/assets/ck-config.js.coffee +48 -0
  209. data/lib/templates/kuhsaft/assets/customizations.css.sass +0 -0
  210. data/lib/templates/kuhsaft/assets/customizations.js.coffee +0 -0
  211. data/lib/templates/kuhsaft/translations/add_translation.erb +8 -0
  212. data/spec/controllers/kuhsaft/api/pages_controller_spec.rb +70 -0
  213. data/spec/controllers/kuhsaft/pages_controller_spec.rb +90 -0
  214. data/spec/controllers/kuhsaft/sitemaps_controller_spec.rb +13 -0
  215. data/spec/dummy/Rakefile +7 -0
  216. data/spec/dummy/app/assets/images/spec-image.png +0 -0
  217. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  218. data/spec/dummy/app/assets/javascripts/kuhsaft/cms/ck-config.js.coffee +48 -0
  219. data/spec/dummy/app/assets/javascripts/kuhsaft/cms/customizations.js.coffee +0 -0
  220. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  221. data/spec/dummy/app/assets/stylesheets/kuhsaft/cms/customizations.css.sass +0 -0
  222. data/spec/dummy/app/controllers/application_controller.rb +4 -0
  223. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  224. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  225. data/spec/dummy/bin/bundle +3 -0
  226. data/spec/dummy/bin/rails +4 -0
  227. data/spec/dummy/bin/rake +4 -0
  228. data/spec/dummy/config.ru +4 -0
  229. data/spec/dummy/config/application.rb +26 -0
  230. data/spec/dummy/config/boot.rb +3 -0
  231. data/spec/dummy/config/database.yml +19 -0
  232. data/spec/dummy/config/environment.rb +5 -0
  233. data/spec/dummy/config/environments/development.rb +29 -0
  234. data/spec/dummy/config/environments/production.rb +81 -0
  235. data/spec/dummy/config/environments/test.rb +36 -0
  236. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  237. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  238. data/spec/dummy/config/initializers/inflections.rb +16 -0
  239. data/spec/dummy/config/initializers/kuhsaft.rb +5 -0
  240. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  241. data/spec/dummy/config/initializers/secret_token.rb +12 -0
  242. data/spec/dummy/config/initializers/session_store.rb +3 -0
  243. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  244. data/spec/dummy/config/locales/en.yml +23 -0
  245. data/spec/dummy/config/routes.rb +3 -0
  246. data/spec/dummy/db/.gitkeep +0 -0
  247. data/spec/dummy/lib/assets/.gitkeep +0 -0
  248. data/spec/dummy/log/.gitkeep +0 -0
  249. data/spec/dummy/public/404.html +26 -0
  250. data/spec/dummy/public/422.html +26 -0
  251. data/spec/dummy/public/500.html +25 -0
  252. data/spec/dummy/public/favicon.ico +0 -0
  253. data/spec/dummy/public/stylesheets/.gitkeep +0 -0
  254. data/spec/dummy/script/rails +6 -0
  255. data/spec/factories.rb +26 -0
  256. data/spec/features/cms_pages_spec.rb +76 -0
  257. data/spec/features/search_spec.rb +78 -0
  258. data/spec/helpers/kuhsaft/cms/admin_helper_spec.rb +25 -0
  259. data/spec/helpers/kuhsaft/cms/pages_helper_spec.rb +46 -0
  260. data/spec/helpers/kuhsaft/pages_helper_spec.rb +21 -0
  261. data/spec/kuhsaft_spec.rb +7 -0
  262. data/spec/lib/brick_list_spec.rb +50 -0
  263. data/spec/lib/engine_spec.rb +25 -0
  264. data/spec/lib/gridded_spec.rb +24 -0
  265. data/spec/lib/image_uploader_mounting_spec.rb +14 -0
  266. data/spec/lib/page_tree_spec.rb +38 -0
  267. data/spec/lib/searchable_spec.rb +30 -0
  268. data/spec/lib/touch_placeholders_spec.rb +44 -0
  269. data/spec/lib/translatable_spec.rb +155 -0
  270. data/spec/models/accordion_brick_spec.rb +38 -0
  271. data/spec/models/accordion_item_brick_spec.rb +50 -0
  272. data/spec/models/anchor_brick_spec.rb +26 -0
  273. data/spec/models/asset_brick_spec.rb +45 -0
  274. data/spec/models/asset_spec.rb +41 -0
  275. data/spec/models/brick_spec.rb +134 -0
  276. data/spec/models/brick_type_filter_spec.rb +64 -0
  277. data/spec/models/column_brick_spec.rb +32 -0
  278. data/spec/models/image_brick_spec.rb +49 -0
  279. data/spec/models/image_size_spec.rb +36 -0
  280. data/spec/models/link_brick_spec.rb +51 -0
  281. data/spec/models/page_spec.rb +472 -0
  282. data/spec/models/placeholder_brick_spec.rb +46 -0
  283. data/spec/models/publish_state_spec.rb +33 -0
  284. data/spec/models/slider_brick_spec.rb +26 -0
  285. data/spec/models/text_brick_spec.rb +30 -0
  286. data/spec/models/two_column_brick_spec.rb +82 -0
  287. data/spec/models/video_brick_spec.rb +32 -0
  288. data/spec/spec_helper.rb +81 -0
  289. data/spec/support/kuhsaft_spec_helper.rb +8 -0
  290. data/spec/support/write_expectation.rb +57 -0
  291. data/spec/views/kuhsaft/sitemaps/index.xml.haml_spec.rb +67 -0
  292. data/vendor/assets/javascripts/bootstrap-modal-v2.js +376 -0
  293. data/vendor/assets/javascripts/bootstrap-modalmanager.js +423 -0
  294. data/vendor/assets/javascripts/jquery.nestable.js +485 -0
  295. data/vendor/assets/stylesheets/bootstrap_modal.css +214 -0
  296. data/vendor/assets/stylesheets/nestable.css +84 -0
  297. metadata +870 -0
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+ require 'fileutils'
3
+
4
+ describe Kuhsaft::PlaceholderBrick do
5
+
6
+ let :placeholder_brick do
7
+ Kuhsaft::PlaceholderBrick.new
8
+ end
9
+
10
+ before do
11
+ FileUtils.mkdir_p("#{Rails.root}/app/views/kuhsaft/placeholder_bricks/partials")
12
+ FileUtils.touch("#{Rails.root}/app/views/kuhsaft/placeholder_bricks/partials/_valid_partial.html.haml")
13
+ FileUtils.touch("#{Rails.root}/app/views/kuhsaft/placeholder_bricks/partials/not_a_partial.html.haml")
14
+ FileUtils.touch("#{Rails.root}/app/views/kuhsaft/placeholder_bricks/partials/_not_a_haml_file.txt")
15
+ end
16
+
17
+ after do
18
+ FileUtils.rm_rf(Dir.glob("#{Rails.root}/app/views/kuhsaft"))
19
+ end
20
+
21
+ describe 'available partials' do
22
+ it 'returns haml files' do
23
+ Kuhsaft::PlaceholderBrick.available_partials.flatten.should include('valid_partial')
24
+ end
25
+
26
+ it 'returns only partials' do
27
+ Kuhsaft::PlaceholderBrick.available_partials.flatten.should_not include('not_a_partial')
28
+ end
29
+
30
+ it 'does not return other files' do
31
+ Kuhsaft::PlaceholderBrick.available_partials.flatten.should_not include('not_a_haml_file')
32
+ end
33
+ end
34
+
35
+ describe '#bricks' do
36
+ it 'can not have childs' do
37
+ placeholder_brick.should_not respond_to(:bricks)
38
+ end
39
+ end
40
+
41
+ describe '#user_can_add_childs?' do
42
+ it 'returns false' do
43
+ placeholder_brick.user_can_add_childs?.should be_false
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe Kuhsaft::PublishState do
4
+ context 'unpublished' do
5
+ before do
6
+ @publish_state = Kuhsaft::PublishState.new(name: 'unpublished', value: Kuhsaft::PublishState::UNPUBLISHED)
7
+ end
8
+
9
+ it 'should be UNPUBLISHED' do
10
+ @publish_state.value.should be(Kuhsaft::PublishState::UNPUBLISHED)
11
+ end
12
+ end
13
+
14
+ context 'published' do
15
+ before do
16
+ @publish_state = Kuhsaft::PublishState.new(name: 'published', value: Kuhsaft::PublishState::PUBLISHED)
17
+ end
18
+
19
+ it 'should be PUBLISHED' do
20
+ @publish_state.value.should be(Kuhsaft::PublishState::PUBLISHED)
21
+ end
22
+ end
23
+
24
+ context 'published_at' do
25
+ before do
26
+ @publish_state = Kuhsaft::PublishState.new(name: 'published_at', value: Kuhsaft::PublishState::PUBLISHED_AT)
27
+ end
28
+
29
+ it 'should be PUBLISHED_AT' do
30
+ @publish_state.value.should be(Kuhsaft::PublishState::PUBLISHED_AT)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe Kuhsaft::SliderBrick do
4
+
5
+ let :slider_brick do
6
+ Kuhsaft::SliderBrick.new
7
+ end
8
+
9
+ describe '#bricks' do
10
+ it 'can have childs' do
11
+ slider_brick.should respond_to(:bricks)
12
+ end
13
+ end
14
+
15
+ describe '#to_style_class' do
16
+ it 'includes the bootstrap styles' do
17
+ slider_brick.to_style_class.should == 'kuhsaft-slider-brick carousel slide'
18
+ end
19
+ end
20
+
21
+ describe '#allowed_brick_types' do
22
+ it 'only allows ImageBricks and VideoBricks' do
23
+ slider_brick.allowed_brick_types.should == %w(Kuhsaft::ImageBrick Kuhsaft::VideoBrick)
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe Kuhsaft::TextBrick do
4
+ let :text_brick do
5
+ Kuhsaft::TextBrick.new
6
+ end
7
+
8
+ describe '#bricks' do
9
+ it 'can not have childs' do
10
+ text_brick.should_not respond_to(:bricks)
11
+ end
12
+ end
13
+
14
+ describe '#user_can_add_childs?' do
15
+ it 'returns false' do
16
+ text_brick.user_can_add_childs?.should be_false
17
+ end
18
+ end
19
+
20
+ describe '#collect_fulltext' do
21
+ before do
22
+ text_brick.text = '<div><b>foo</b> <b>bar</b></div>'
23
+ text_brick.read_more_text = '<div><span>foo</span><span>bar</span></div>'
24
+ end
25
+
26
+ it 'sanitizes text and read_more_text' do
27
+ text_brick.collect_fulltext.should == 'foo bar foobar'
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,82 @@
1
+ require 'spec_helper'
2
+
3
+ describe Kuhsaft::TwoColumnBrick do
4
+
5
+ let :two_column_brick do
6
+ Kuhsaft::TwoColumnBrick.new
7
+ end
8
+
9
+ describe '#user_can_add_childs?' do
10
+ it 'returns false' do
11
+ two_column_brick.user_can_add_childs?.should be_false
12
+ end
13
+ end
14
+
15
+ describe '#user_can_delete?' do
16
+ it 'returns true' do
17
+ two_column_brick.user_can_delete?.should be_true
18
+ end
19
+ end
20
+
21
+ describe '#user_can_save?' do
22
+ it 'returns true' do
23
+ two_column_brick.user_can_save?.should be_true
24
+ end
25
+ end
26
+
27
+ describe '#renders_own_childs?' do
28
+ it 'returns true' do
29
+ two_column_brick.renders_own_childs?.should be_true
30
+ end
31
+ end
32
+
33
+ describe '#partitioning' do
34
+ context 'when no partition is set' do
35
+ it 'returns 0 (50/50)' do
36
+ two_column_brick.partitioning.should be(0)
37
+ end
38
+ end
39
+
40
+ context 'when the partition is set' do
41
+ it 'returns the value' do
42
+ two_column_brick.partitioning = 1
43
+ two_column_brick.partitioning.should be(1)
44
+ end
45
+ end
46
+ end
47
+
48
+ describe '.partitionings' do
49
+ it 'returns the 3 default partitions' do
50
+ Kuhsaft::TwoColumnBrick.partitionings.should have(3).items
51
+ end
52
+ end
53
+
54
+ describe '#create' do
55
+ it 'creates two single columns as childs' do
56
+ two_column_brick.save
57
+ two_column_brick.bricks.should be_all { |brick| brick.should be_a(Kuhsaft::ColumnBrick) }
58
+ end
59
+ end
60
+
61
+ describe '#bricks' do
62
+ it 'can have childs' do
63
+ two_column_brick.should respond_to(:bricks)
64
+ end
65
+ end
66
+
67
+ describe '#to_style_class' do
68
+ it 'adds the row class to the default styles' do
69
+ Kuhsaft::TwoColumnBrick.new.to_style_class.should == 'kuhsaft-two-column-brick row-fluid'
70
+ end
71
+ end
72
+
73
+ describe '#add_columns' do
74
+ it 'sets the position of the first column brick to 1' do
75
+ Kuhsaft::TwoColumnBrick.new.send(:add_columns).to_a.first.position.should == 1
76
+ end
77
+
78
+ it 'sets the position of the second column brick to 2' do
79
+ Kuhsaft::TwoColumnBrick.new.send(:add_columns).to_a.second.position.should == 2
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe Kuhsaft::VideoBrick do
4
+
5
+ let :video_brick do
6
+ Kuhsaft::VideoBrick.new
7
+ end
8
+
9
+ describe '#valid' do
10
+ before do
11
+ video_brick.valid?
12
+ end
13
+
14
+ context 'without any video source' do
15
+ it 'has en error' do
16
+ video_brick.should have(1).error_on(:any_source)
17
+ end
18
+ end
19
+ end
20
+
21
+ describe '#bricks' do
22
+ it 'can not have childs' do
23
+ video_brick.should_not respond_to(:bricks)
24
+ end
25
+ end
26
+
27
+ describe '#user_can_add_childs?' do
28
+ it 'returns false' do
29
+ video_brick.user_can_add_childs?.should be_false
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,81 @@
1
+ # This file is copied to spec/ when you run 'rails generate rspec:install'
2
+ ENV['RAILS_ENV'] = 'test'
3
+ require_relative File.expand_path('../dummy/config/environment.rb', __FILE__)
4
+ require 'rspec/rails'
5
+ require 'rspec/autorun'
6
+
7
+ [
8
+ 'factory_girl',
9
+ 'capybara/rails',
10
+ 'pry-debugger',
11
+ 'database_cleaner'
12
+ ].each { |lib| require lib }
13
+
14
+ FactoryGirl.find_definitions
15
+
16
+ ActionMailer::Base.delivery_method = :test
17
+ ActionMailer::Base.perform_deliveries = true
18
+ ActionMailer::Base.default_url_options[:host] = 'test.com'
19
+
20
+ # Requires supporting ruby files with custom matchers and macros, etc,
21
+ # in spec/support/ and its subdirectories.
22
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require_relative f }
23
+
24
+ # Checks for pending migrations before tests are run.
25
+ # If you are not using ActiveRecord, you can remove this line.
26
+ ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
27
+
28
+ RSpec.configure do |config|
29
+
30
+ # Remove this line if you don't want RSpec's should and should_not
31
+ # methods or matchers
32
+ require 'rspec/expectations'
33
+ require 'carrierwave/test/matchers'
34
+ require 'rails/generators'
35
+
36
+ config.include RSpec::Matchers
37
+ config.include CarrierWave::Test::Matchers
38
+ config.include KuhsaftSpecHelper
39
+ config.include FactoryGirl::Syntax::Methods
40
+
41
+ config.before :suite do
42
+ DatabaseCleaner.strategy = :transaction
43
+ DatabaseCleaner.clean_with :truncation
44
+ end
45
+
46
+ config.before do
47
+ DatabaseCleaner.start
48
+ I18n.available_locales = [:en, :de]
49
+ end
50
+
51
+ config.after do
52
+ DatabaseCleaner.clean
53
+ end
54
+
55
+ # ## Mock Framework
56
+ #
57
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
58
+ #
59
+ # config.mock_with :mocha
60
+ # config.mock_with :flexmock
61
+ # config.mock_with :rr
62
+
63
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
64
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
65
+
66
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
67
+ # examples within a transaction, remove the following line or assign false
68
+ # instead of true.
69
+ config.use_transactional_fixtures = true
70
+
71
+ # If true, the base class of anonymous controllers will be inferred
72
+ # automatically. This will be the default behavior in future versions of
73
+ # rspec-rails.
74
+ config.infer_base_class_for_anonymous_controllers = false
75
+
76
+ # Run specs in random order to surface order dependencies. If you find an
77
+ # order dependency and want to debug it, you can fix the order by providing
78
+ # the seed, which is printed after each run.
79
+ # --seed 1234
80
+ config.order = 'random'
81
+ end
@@ -0,0 +1,8 @@
1
+ module KuhsaftSpecHelper
2
+ def create_page_tree
3
+ page1 = create(:page)
4
+ page2 = create(:page, parent: page1)
5
+ page3 = create(:page, parent: page2)
6
+ [page1, page2, page3]
7
+ end
8
+ end
@@ -0,0 +1,57 @@
1
+ RSpec::Matchers.define :write do |message|
2
+ chain(:to) do |io|
3
+ @io = io
4
+ end
5
+
6
+ match do |block|
7
+ output =
8
+ case io
9
+ when :output then fake_stdout(&block)
10
+ when :error then fake_stderr(&block)
11
+ else raise("Allowed values for `to` are :output and :error, got `#{io.inspect}`")
12
+ end
13
+ output.include? message
14
+ end
15
+
16
+ description do
17
+ "write \"#{message}\" #{io_name}"
18
+ end
19
+
20
+ failure_message_for_should do
21
+ "expected to #{description}"
22
+ end
23
+
24
+ failure_message_for_should_not do
25
+ "expected to not #{description}"
26
+ end
27
+
28
+ # Fake STDERR and return a string written to it.
29
+ def fake_stderr
30
+ original_stderr = $stderr
31
+ $stderr = StringIO.new
32
+ yield
33
+ $stderr.string
34
+ ensure
35
+ $stderr = original_stderr
36
+ end
37
+
38
+ # Fake STDOUT and return a string written to it.
39
+ def fake_stdout
40
+ original_stdout = $stdout
41
+ $stdout = StringIO.new
42
+ yield
43
+ $stdout.string
44
+ ensure
45
+ $stdout = original_stdout
46
+ end
47
+
48
+ # default IO is standard output
49
+ def io
50
+ @io ||= :output
51
+ end
52
+
53
+ # IO name is used for description message
54
+ def io_name
55
+ { output: 'standard output', error: 'standard error' }[io]
56
+ end
57
+ end
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+ include SitemapsHelper
3
+
4
+ describe 'kuhsaft/sitemaps/index.xml.haml' do
5
+ describe 'structure' do
6
+ before :each do
7
+ @page = create(:page)
8
+ @pages = [@page]
9
+ render
10
+ end
11
+
12
+ it 'renders valid xml' do
13
+ expect { Hash.from_xml(rendered) }.not_to raise_error
14
+ end
15
+
16
+ it 'renders the XML template' do
17
+ expect(rendered).to include "<?xml version='1.0' encoding='utf-8' ?>"
18
+ end
19
+
20
+ it 'includes the loc tag content' do
21
+ expect(rendered).to include "<loc>http://#{@request.host}/#{@page.url}</loc>"
22
+ end
23
+
24
+ it 'includes the lastmod tag content' do
25
+ expect(rendered).to include "<lastmod>#{@page.created_at.utc}</lastmod>"
26
+ end
27
+
28
+ it 'includes the changefreq tag content' do
29
+ expect(rendered).to include '<changefreq>monthly</changefreq>'
30
+ end
31
+
32
+ it 'includes the priority tag content' do
33
+ expect(rendered).to include '<priority>0.5</priority>'
34
+ end
35
+ end
36
+
37
+ describe 'count of records'do
38
+ before do
39
+ I18n.stub(:available_locales).and_return([:de, :en])
40
+
41
+ I18n.with_locale(:de) do
42
+ @page = create(:page, title: 'Dummy Page 1 DE')
43
+ @page_de = create(:page, title: 'German Page')
44
+ end
45
+
46
+ I18n.with_locale(:en) do
47
+ @page.update_attributes(title: 'Dummy Page 1 EN')
48
+ @page_en = create(:page, title: 'English Page')
49
+ end
50
+
51
+ @pages = [@page, @page_de, @page_en]
52
+ render
53
+ end
54
+
55
+ it 'has the same count of entry as pages are there' do
56
+ response.body.should have_xpath('//url', count: 4)
57
+ end
58
+
59
+ it 'has a record for the german url' do
60
+ expect(rendered).to include "<loc>http://#{@request.host}/de/dummy-page-1-de</loc>"
61
+ end
62
+
63
+ it 'has a record for the english url' do
64
+ expect(rendered).to include "<loc>http://#{@request.host}/en/dummy-page-1-en</loc>"
65
+ end
66
+ end
67
+ end