comfortable_mexican_sofa 1.12.11 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (490) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +4 -0
  3. data/.gitattributes +2 -0
  4. data/.github/issue_template.md +22 -0
  5. data/.github/pull_request_template.md +6 -0
  6. data/.gitignore +3 -0
  7. data/.rubocop.yml +5 -0
  8. data/.rubocop_todo.yml +974 -0
  9. data/.travis.yml +2 -10
  10. data/Gemfile +5 -7
  11. data/README.md +40 -39
  12. data/Rakefile +1 -31
  13. data/app/assets/javascripts/comfy/admin/cms/application.js.coffee +7 -4
  14. data/app/assets/javascripts/comfy/admin/cms/base.js.coffee +23 -33
  15. data/app/assets/javascripts/comfy/admin/cms/lib/diff/pretty_text_diff.js +76 -0
  16. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr.min.js +2 -0
  17. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/ar.js +52 -0
  18. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/bg.js +65 -0
  19. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/bn.js +65 -0
  20. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/cat.js +83 -0
  21. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/cs.js +70 -0
  22. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/cy.js +92 -0
  23. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/da.js +71 -0
  24. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/de.js +70 -0
  25. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/default.js +80 -0
  26. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/eo.js +73 -0
  27. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/es.js +69 -0
  28. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/et.js +73 -0
  29. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/fa.js +68 -0
  30. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/fi.js +69 -0
  31. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/fr.js +75 -0
  32. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/gr.js +74 -0
  33. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/he.js +57 -0
  34. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/hi.js +65 -0
  35. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/hr.js +66 -0
  36. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/hu.js +72 -0
  37. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/id.js +61 -0
  38. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/it.js +70 -0
  39. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/ja.js +57 -0
  40. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/ko.js +60 -0
  41. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/lt.js +72 -0
  42. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/lv.js +67 -0
  43. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/mk.js +69 -0
  44. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/mn.js +67 -0
  45. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/ms.js +68 -0
  46. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/my.js +69 -0
  47. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/nl.js +75 -0
  48. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/no.js +73 -0
  49. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/pa.js +65 -0
  50. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/pl.js +68 -0
  51. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/pt-BR.js +66 -0
  52. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/pt.js +66 -0
  53. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/ro.js +69 -0
  54. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/ru.js +66 -0
  55. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/si.js +65 -0
  56. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/sk.js +70 -0
  57. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/sl.js +70 -0
  58. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/sq.js +65 -0
  59. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/sr.js +69 -0
  60. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/sv.js +70 -0
  61. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/th.js +72 -0
  62. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/tr.js +66 -0
  63. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/uk.js +66 -0
  64. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/vn.js +66 -0
  65. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/zh-CN.js +61 -0
  66. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/zh-TW.js +61 -0
  67. data/app/assets/javascripts/comfy/admin/cms/lib/redactor.js +9 -3
  68. data/app/assets/javascripts/comfy/admin/cms/uploader.js.coffee +9 -10
  69. data/app/assets/stylesheets/comfy/admin/cms/application.sass +4 -4
  70. data/app/assets/stylesheets/comfy/admin/cms/base.sass +215 -338
  71. data/app/assets/stylesheets/comfy/admin/cms/lib/flatpickr.min.css +13 -0
  72. data/app/assets/stylesheets/comfy/admin/cms/redactor_overrides.sass +2 -2
  73. data/app/controllers/comfy/admin/base_controller.rb +20 -0
  74. data/app/controllers/comfy/admin/cms/base_controller.rb +9 -22
  75. data/app/controllers/comfy/admin/cms/categories_controller.rb +2 -3
  76. data/app/controllers/comfy/admin/cms/files_controller.rb +50 -31
  77. data/app/controllers/comfy/admin/cms/layouts_controller.rb +12 -13
  78. data/app/controllers/comfy/admin/cms/pages_controller.rb +28 -28
  79. data/app/controllers/comfy/admin/cms/revisions_controller.rb +23 -14
  80. data/app/controllers/comfy/admin/cms/sites_controller.rb +9 -10
  81. data/app/controllers/comfy/admin/cms/snippets_controller.rb +11 -11
  82. data/app/controllers/comfy/admin/cms/translations_controller.rb +98 -0
  83. data/app/controllers/comfy/cms/assets_controller.rb +9 -10
  84. data/app/controllers/comfy/cms/base_controller.rb +0 -2
  85. data/app/controllers/comfy/cms/content_controller.rb +50 -31
  86. data/app/controllers/concerns/comfy/paginate.rb +2 -2
  87. data/app/helpers/comfy/admin/cms_helper.rb +29 -0
  88. data/app/helpers/comfy/cms_helper.rb +40 -60
  89. data/app/models/comfy/cms/categorization.rb +8 -11
  90. data/app/models/comfy/cms/category.rb +10 -14
  91. data/app/models/comfy/cms/file.rb +31 -47
  92. data/app/models/comfy/cms/fragment.rb +55 -0
  93. data/app/models/comfy/cms/layout.rb +45 -40
  94. data/app/models/comfy/cms/page.rb +47 -36
  95. data/app/models/comfy/cms/revision.rb +5 -8
  96. data/app/models/comfy/cms/site.rb +26 -51
  97. data/app/models/comfy/cms/snippet.rb +20 -24
  98. data/app/models/comfy/cms/translation.rb +37 -0
  99. data/app/models/concerns/comfy/cms/with_categories.rb +38 -0
  100. data/app/models/concerns/comfy/cms/with_fragments.rb +121 -0
  101. data/app/views/comfy/admin/cms/categories/_categories.html.haml +2 -1
  102. data/app/views/comfy/admin/cms/categories/_edit.html.haml +7 -6
  103. data/app/views/comfy/admin/cms/categories/_form.html.haml +8 -5
  104. data/app/views/comfy/admin/cms/categories/_index.html.haml +24 -20
  105. data/app/views/comfy/admin/cms/categories/_show.html.haml +10 -9
  106. data/app/views/comfy/admin/cms/categories/create.js.erb +2 -2
  107. data/app/views/comfy/admin/cms/categories/edit.js.erb +1 -1
  108. data/app/views/comfy/admin/cms/categories/update.js.erb +2 -2
  109. data/app/views/comfy/admin/cms/files/_file.html.haml +31 -25
  110. data/app/views/comfy/admin/cms/files/_form.html.haml +16 -12
  111. data/app/views/comfy/admin/cms/files/edit.html.haml +1 -1
  112. data/app/views/comfy/admin/cms/files/index.html.haml +17 -19
  113. data/app/views/comfy/admin/cms/files/new.html.haml +1 -1
  114. data/app/views/comfy/admin/cms/layouts/_form.html.haml +10 -10
  115. data/app/views/comfy/admin/cms/layouts/_index_branch.html.haml +21 -19
  116. data/app/views/comfy/admin/cms/layouts/edit.html.haml +5 -5
  117. data/app/views/comfy/admin/cms/layouts/index.html.haml +4 -7
  118. data/app/views/comfy/admin/cms/pages/_form.html.haml +15 -21
  119. data/app/views/comfy/admin/cms/pages/_form_fragments.html.haml +40 -0
  120. data/app/views/comfy/admin/cms/pages/_fragment_attachments.html.haml +10 -0
  121. data/app/views/comfy/admin/cms/pages/_index_branch.html.haml +34 -26
  122. data/app/views/comfy/admin/cms/pages/edit.html.haml +19 -5
  123. data/app/views/comfy/admin/cms/pages/form_fragments.js.erb +1 -0
  124. data/app/views/comfy/admin/cms/pages/index.html.haml +5 -8
  125. data/app/views/comfy/admin/cms/pages/new.html.haml +1 -1
  126. data/app/views/comfy/admin/cms/revisions/show.html.haml +29 -27
  127. data/app/views/comfy/admin/cms/sites/_form.html.haml +6 -8
  128. data/app/views/comfy/admin/cms/sites/edit.html.haml +1 -1
  129. data/app/views/comfy/admin/cms/sites/index.html.haml +23 -22
  130. data/app/views/comfy/admin/cms/sites/new.html.haml +1 -1
  131. data/app/views/comfy/admin/cms/snippets/_form.html.haml +9 -9
  132. data/app/views/comfy/admin/cms/snippets/edit.html.haml +6 -5
  133. data/app/views/comfy/admin/cms/snippets/index.html.haml +25 -25
  134. data/app/views/comfy/admin/cms/snippets/new.html.haml +1 -1
  135. data/app/views/comfy/admin/cms/translations/_form.html.haml +21 -0
  136. data/app/views/comfy/admin/cms/translations/edit.html.haml +9 -0
  137. data/app/views/comfy/admin/cms/translations/form_fragments.js.erb +1 -0
  138. data/app/views/comfy/admin/cms/translations/new.html.haml +5 -0
  139. data/app/views/kaminari/comfy/_first_page.html.haml +3 -2
  140. data/app/views/kaminari/comfy/_gap.html.haml +2 -2
  141. data/app/views/kaminari/comfy/_last_page.html.haml +3 -2
  142. data/app/views/kaminari/comfy/_next_page.html.haml +2 -2
  143. data/app/views/kaminari/comfy/_page.html.haml +2 -2
  144. data/app/views/kaminari/comfy/_prev_page.html.haml +1 -1
  145. data/app/views/layouts/comfy/admin/cms/_body.html.haml +13 -15
  146. data/app/views/layouts/comfy/admin/cms/_footer_js.html.haml +10 -3
  147. data/app/views/layouts/comfy/admin/cms/_head.html.haml +7 -10
  148. data/app/views/layouts/comfy/admin/cms/_left.html.haml +33 -15
  149. data/app/views/layouts/comfy/admin/cms/_right.html.haml +2 -2
  150. data/comfortable_mexican_sofa.gemspec +19 -19
  151. data/config/application.rb +14 -8
  152. data/config/boot.rb +2 -2
  153. data/config/cms_routes.rb +3 -3
  154. data/config/environments/development.rb +37 -4
  155. data/config/environments/test.rb +12 -14
  156. data/config/initializers/comfortable_mexican_sofa.rb +5 -12
  157. data/config/locales/cs.yml +33 -7
  158. data/config/locales/da.yml +33 -7
  159. data/config/locales/de.yml +32 -6
  160. data/config/locales/en.yml +33 -7
  161. data/config/locales/es.yml +33 -7
  162. data/config/locales/fr.yml +33 -7
  163. data/config/locales/it.yml +33 -7
  164. data/config/locales/ja.yml +33 -7
  165. data/config/locales/nb.yml +33 -7
  166. data/config/locales/nl.yml +33 -7
  167. data/config/locales/pl.yml +33 -7
  168. data/config/locales/pt-BR.yml +33 -7
  169. data/config/locales/ru.yml +33 -7
  170. data/config/locales/sk.yml +33 -7
  171. data/config/locales/sv.yml +33 -7
  172. data/config/locales/tr.yml +33 -7
  173. data/config/locales/uk.yml +33 -7
  174. data/config/locales/zh-CN.yml +33 -7
  175. data/config/locales/zh-TW.yml +33 -7
  176. data/config/storage.yml +35 -0
  177. data/db/cms_seeds/sample-site/files/_default.jpg.yml +5 -0
  178. data/db/{cms_fixtures/sample-site/files/sample.jpg → cms_seeds/sample-site/files/default.jpg} +0 -0
  179. data/db/cms_seeds/sample-site/layouts/default/content.html +16 -0
  180. data/db/cms_seeds/sample-site/layouts/default/nested/content.html +14 -0
  181. data/db/cms_seeds/sample-site/pages/index/child_a/content.html +7 -0
  182. data/db/cms_seeds/sample-site/pages/index/child_b/content.html +6 -0
  183. data/db/cms_seeds/sample-site/pages/index/content.es.html +6 -0
  184. data/db/cms_seeds/sample-site/pages/index/content.fr.html +6 -0
  185. data/db/cms_seeds/sample-site/pages/index/content.html +24 -0
  186. data/db/{cms_fixtures/sample-site/pages/index/child/thumbnail.png → cms_seeds/sample-site/pages/index/footer.png} +0 -0
  187. data/db/cms_seeds/sample-site/pages/index/header.png +0 -0
  188. data/db/cms_seeds/sample-site/snippets/default.html +8 -0
  189. data/db/migrate/00_create_active_storage_tables.active_storage.rb +26 -0
  190. data/db/migrate/01_create_cms.rb +113 -104
  191. data/doc/preview.jpg +0 -0
  192. data/lib/comfortable_mexican_sofa.rb +10 -14
  193. data/lib/comfortable_mexican_sofa/configuration.rb +9 -13
  194. data/lib/comfortable_mexican_sofa/content.rb +28 -0
  195. data/lib/comfortable_mexican_sofa/content/block.rb +11 -0
  196. data/lib/comfortable_mexican_sofa/content/params_parser.rb +80 -0
  197. data/lib/comfortable_mexican_sofa/content/renderer.rb +125 -0
  198. data/lib/comfortable_mexican_sofa/content/tag.rb +37 -0
  199. data/lib/comfortable_mexican_sofa/content/tags/asset.rb +56 -0
  200. data/lib/comfortable_mexican_sofa/content/tags/checkbox.rb +21 -0
  201. data/lib/comfortable_mexican_sofa/content/tags/date.rb +22 -0
  202. data/lib/comfortable_mexican_sofa/content/tags/datetime.rb +22 -0
  203. data/lib/comfortable_mexican_sofa/content/tags/file.rb +77 -0
  204. data/lib/comfortable_mexican_sofa/content/tags/file_link.rb +66 -0
  205. data/lib/comfortable_mexican_sofa/content/tags/files.rb +39 -0
  206. data/lib/comfortable_mexican_sofa/content/tags/fragment.rb +54 -0
  207. data/lib/comfortable_mexican_sofa/content/tags/helper.rb +52 -0
  208. data/lib/comfortable_mexican_sofa/content/tags/markdown.rb +21 -0
  209. data/lib/comfortable_mexican_sofa/content/tags/number.rb +17 -0
  210. data/lib/comfortable_mexican_sofa/content/tags/partial.rb +42 -0
  211. data/lib/comfortable_mexican_sofa/content/tags/snippet.rb +31 -0
  212. data/lib/comfortable_mexican_sofa/content/tags/template.rb +41 -0
  213. data/lib/comfortable_mexican_sofa/content/tags/text.rb +17 -0
  214. data/lib/comfortable_mexican_sofa/content/tags/textarea.rb +17 -0
  215. data/lib/comfortable_mexican_sofa/content/tags/wysiwyg.rb +18 -0
  216. data/lib/comfortable_mexican_sofa/engine.rb +3 -2
  217. data/lib/comfortable_mexican_sofa/extensions/acts_as_tree.rb +33 -30
  218. data/lib/comfortable_mexican_sofa/extensions/has_revisions.rb +27 -23
  219. data/lib/comfortable_mexican_sofa/form_builder.rb +32 -104
  220. data/lib/comfortable_mexican_sofa/render_methods.rb +24 -21
  221. data/lib/comfortable_mexican_sofa/routes/cms.rb +6 -14
  222. data/lib/comfortable_mexican_sofa/routes/cms_admin.rb +39 -29
  223. data/lib/comfortable_mexican_sofa/routing.rb +1 -1
  224. data/lib/comfortable_mexican_sofa/seeds.rb +102 -0
  225. data/lib/comfortable_mexican_sofa/seeds/file/exporter.rb +40 -0
  226. data/lib/comfortable_mexican_sofa/seeds/file/importer.rb +61 -0
  227. data/lib/comfortable_mexican_sofa/seeds/layout/exporter.rb +37 -0
  228. data/lib/comfortable_mexican_sofa/seeds/layout/importer.rb +59 -0
  229. data/lib/comfortable_mexican_sofa/seeds/page/exporter.rb +88 -0
  230. data/lib/comfortable_mexican_sofa/seeds/page/importer.rb +213 -0
  231. data/lib/comfortable_mexican_sofa/seeds/snippet/exporter.rb +31 -0
  232. data/lib/comfortable_mexican_sofa/seeds/snippet/importer.rb +48 -0
  233. data/lib/comfortable_mexican_sofa/version.rb +1 -1
  234. data/lib/comfortable_mexican_sofa/view_hooks.rb +0 -1
  235. data/lib/generators/comfy/cms/assets_generator.rb +0 -1
  236. data/lib/generators/comfy/cms/cms_generator.rb +15 -5
  237. data/lib/generators/comfy/scaffold/scaffold_generator.rb +26 -20
  238. data/lib/generators/comfy/scaffold/templates/{controller.rb → controller.rb.tt} +10 -10
  239. data/lib/generators/comfy/scaffold/templates/{migration.rb → migration.rb.tt} +2 -3
  240. data/lib/generators/comfy/scaffold/templates/{model.rb → model.rb.tt} +7 -7
  241. data/lib/generators/comfy/scaffold/templates/tests/{controller.rb → controller.rb.tt} +37 -24
  242. data/lib/generators/comfy/scaffold/templates/tests/{fixture.yml → fixture.yml.tt} +0 -0
  243. data/lib/generators/comfy/scaffold/templates/tests/{model.rb → model.rb.tt} +3 -4
  244. data/lib/generators/comfy/scaffold/templates/views/_form.haml.tt +7 -0
  245. data/lib/generators/comfy/scaffold/templates/views/{edit.haml → edit.haml.tt} +1 -1
  246. data/lib/generators/comfy/scaffold/templates/views/index.haml.tt +21 -0
  247. data/lib/generators/comfy/scaffold/templates/views/{new.haml → new.haml.tt} +1 -1
  248. data/lib/generators/comfy/scaffold/templates/views/{show.haml → show.haml.tt} +2 -2
  249. data/lib/tasks/cms_seeds.rake +37 -0
  250. data/test/controllers/comfy/admin/cms/base_controller_test.rb +5 -6
  251. data/test/controllers/comfy/admin/cms/categories_controller_test.rb +27 -24
  252. data/test/controllers/comfy/admin/cms/files_controller_test.rb +97 -97
  253. data/test/controllers/comfy/admin/cms/layouts_controller_test.rb +32 -31
  254. data/test/controllers/comfy/admin/cms/pages_controller_test.rb +317 -263
  255. data/test/controllers/comfy/admin/cms/revisions_controller_test.rb +175 -65
  256. data/test/controllers/comfy/admin/cms/sites_controller_test.rb +27 -29
  257. data/test/controllers/comfy/admin/cms/snippets_controller_test.rb +54 -51
  258. data/test/controllers/comfy/admin/cms/translations_controller_test.rb +181 -0
  259. data/test/controllers/comfy/cms/assets_controller_test.rb +24 -22
  260. data/test/controllers/comfy/cms/content_controller_test.rb +126 -140
  261. data/test/fixtures/active_storage/attachments.yml +9 -0
  262. data/test/fixtures/active_storage/blobs.yml +13 -0
  263. data/test/fixtures/comfy/cms/files.yml +2 -6
  264. data/test/fixtures/comfy/cms/fragments.yml +25 -0
  265. data/test/fixtures/comfy/cms/layouts.yml +7 -13
  266. data/test/fixtures/comfy/cms/pages.yml +2 -17
  267. data/test/fixtures/comfy/cms/revisions.yml +16 -8
  268. data/test/fixtures/comfy/cms/sites.yml +0 -1
  269. data/test/fixtures/comfy/cms/snippets.yml +1 -1
  270. data/test/fixtures/comfy/cms/translations.yml +7 -0
  271. data/test/fixtures/generators/cms/application.rb +7 -0
  272. data/test/fixtures/generators/cms/routes.rb +4 -7
  273. data/test/fixtures/generators/scaffold/controller.rb +10 -10
  274. data/test/fixtures/generators/scaffold/migration.rb +2 -3
  275. data/test/fixtures/generators/scaffold/model.rb +7 -7
  276. data/test/fixtures/generators/scaffold/routes.rb +1 -2
  277. data/test/fixtures/generators/scaffold/tests/controller.rb +37 -24
  278. data/test/fixtures/generators/scaffold/tests/model.rb +3 -4
  279. data/test/fixtures/generators/scaffold/views/_form.haml +3 -2
  280. data/test/fixtures/generators/scaffold/views/edit.haml +1 -1
  281. data/test/fixtures/generators/scaffold/views/index.haml +15 -13
  282. data/test/fixtures/generators/scaffold/views/new.haml +1 -1
  283. data/test/fixtures/generators/scaffold/views/show.haml +2 -2
  284. data/test/gemfiles/Gemfile.rails.5.2 +32 -0
  285. data/test/generators/cms_assets_generator_test.rb +1 -2
  286. data/test/generators/cms_generator_test.rb +3 -1
  287. data/test/generators/cms_views_generator_test.rb +1 -1
  288. data/test/generators/scaffold_generator_test.rb +2 -2
  289. data/test/helpers/cms_helper_test.rb +52 -73
  290. data/test/integration/access_control_test.rb +35 -28
  291. data/test/integration/js_variables_test.rb +1 -2
  292. data/test/integration/render_cms_test.rb +37 -37
  293. data/test/integration/routing_test.rb +4 -5
  294. data/test/integration/seeds_test.rb +76 -0
  295. data/test/integration/sites_test.rb +35 -49
  296. data/test/integration/view_hooks_test.rb +12 -13
  297. data/test/lib/configuration_test.rb +3 -4
  298. data/test/lib/content/block_test.rb +26 -0
  299. data/test/lib/content/params_parser_test.rb +125 -0
  300. data/test/lib/content/renderer_test.rb +240 -0
  301. data/test/lib/content/tag_test.rb +48 -0
  302. data/test/lib/content/tags/asset_test.rb +79 -0
  303. data/test/lib/content/tags/checkbox_test.rb +20 -0
  304. data/test/lib/content/tags/date_test.rb +20 -0
  305. data/test/lib/content/tags/datetime_test.rb +20 -0
  306. data/test/lib/content/tags/file_link_test.rb +78 -0
  307. data/test/lib/content/tags/file_test.rb +60 -0
  308. data/test/lib/content/tags/files_test.rb +49 -0
  309. data/test/lib/content/tags/fragment_test.rb +63 -0
  310. data/test/lib/content/tags/helper_test.rb +52 -0
  311. data/test/lib/content/tags/markdown_test.rb +33 -0
  312. data/test/lib/content/tags/number_test.rb +13 -0
  313. data/test/lib/content/tags/partial_test.rb +43 -0
  314. data/test/lib/content/tags/snippet_test.rb +36 -0
  315. data/test/lib/content/tags/template_test.rb +35 -0
  316. data/test/lib/content/tags/text_test.rb +13 -0
  317. data/test/lib/content/tags/textarea_test.rb +13 -0
  318. data/test/lib/content/tags/wysiwyg_test.rb +13 -0
  319. data/test/lib/revisions_test.rb +146 -111
  320. data/test/lib/seeds/files_test.rb +96 -0
  321. data/test/lib/seeds/layouts_test.rb +155 -0
  322. data/test/lib/seeds/pages_test.rb +227 -0
  323. data/test/lib/seeds/snippets_test.rb +98 -0
  324. data/test/lib/seeds_test.rb +50 -0
  325. data/test/models/categorization_test.rb +37 -38
  326. data/test/models/category_test.rb +14 -14
  327. data/test/models/file_test.rb +23 -96
  328. data/test/models/fragment_test.rb +131 -0
  329. data/test/models/layout_test.rb +105 -74
  330. data/test/models/page_test.rb +352 -97
  331. data/test/models/site_test.rb +101 -90
  332. data/test/models/snippet_test.rb +29 -23
  333. data/test/models/translation_test.rb +60 -0
  334. data/test/tasks/cms_seeds_test.rb +33 -0
  335. data/test/test_helper.rb +49 -32
  336. metadata +235 -210
  337. data/_config.yml +0 -1
  338. data/app/assets/images/comfy/admin/cms/arrow_bottom.gif +0 -0
  339. data/app/assets/images/comfy/admin/cms/arrow_right.gif +0 -0
  340. data/app/assets/images/comfy/admin/cms/checkerboard.gif +0 -0
  341. data/app/assets/images/comfy/admin/cms/icon_draft.gif +0 -0
  342. data/app/assets/images/comfy/admin/cms/icon_file.gif +0 -0
  343. data/app/assets/images/comfy/admin/cms/icon_layout.gif +0 -0
  344. data/app/assets/images/comfy/admin/cms/icon_move.gif +0 -0
  345. data/app/assets/images/comfy/admin/cms/icon_page.gif +0 -0
  346. data/app/assets/images/comfy/admin/cms/icon_site.gif +0 -0
  347. data/app/assets/images/comfy/admin/cms/icon_snippet.gif +0 -0
  348. data/app/assets/javascripts/comfy/admin/cms/lib/bootstrap-datetimepicker.js +0 -29
  349. data/app/assets/javascripts/comfy/admin/cms/lib/diff.js.coffee +0 -9
  350. data/app/assets/javascripts/comfy/admin/cms/lib/diff/pretty_text_diff.min.js +0 -5
  351. data/app/assets/stylesheets/comfy/admin/cms/bootstrap_overrides.sass +0 -32
  352. data/app/assets/stylesheets/comfy/admin/cms/lib/bootstrap-datetimepicker.css +0 -9
  353. data/app/models/comfy/cms/block.rb +0 -63
  354. data/app/views/comfy/admin/cms/files/_page_form.html.haml +0 -10
  355. data/app/views/comfy/admin/cms/pages/_form_blocks.html.haml +0 -32
  356. data/app/views/comfy/admin/cms/pages/form_blocks.js.erb +0 -1
  357. data/app/views/comfy/admin/cms/partials/_body_before.html.haml +0 -3
  358. data/app/views/comfy/admin/cms/partials/_file_form_after.html.haml +0 -3
  359. data/app/views/comfy/admin/cms/partials/_file_form_before.html.haml +0 -3
  360. data/app/views/comfy/admin/cms/partials/_files_after.html.haml +0 -3
  361. data/app/views/comfy/admin/cms/partials/_files_before.html.haml +0 -3
  362. data/app/views/comfy/admin/cms/partials/_html_footer.html.haml +0 -2
  363. data/app/views/comfy/admin/cms/partials/_html_head.html.haml +0 -2
  364. data/app/views/comfy/admin/cms/partials/_layout_form_after.html.haml +0 -3
  365. data/app/views/comfy/admin/cms/partials/_layout_form_before.html.haml +0 -3
  366. data/app/views/comfy/admin/cms/partials/_layouts_after.html.haml +0 -3
  367. data/app/views/comfy/admin/cms/partials/_layouts_before.html.haml +0 -3
  368. data/app/views/comfy/admin/cms/partials/_navigation_after.html.haml +0 -3
  369. data/app/views/comfy/admin/cms/partials/_navigation_before.html.haml +0 -3
  370. data/app/views/comfy/admin/cms/partials/_navigation_inner.html.haml +0 -3
  371. data/app/views/comfy/admin/cms/partials/_page_form_after.html.haml +0 -3
  372. data/app/views/comfy/admin/cms/partials/_page_form_before.html.haml +0 -3
  373. data/app/views/comfy/admin/cms/partials/_page_form_inner.html.haml +0 -3
  374. data/app/views/comfy/admin/cms/partials/_pages_after.html.haml +0 -3
  375. data/app/views/comfy/admin/cms/partials/_pages_before.html.haml +0 -3
  376. data/app/views/comfy/admin/cms/partials/_right_column_after.html.haml +0 -3
  377. data/app/views/comfy/admin/cms/partials/_right_column_before.html.haml +0 -3
  378. data/app/views/comfy/admin/cms/partials/_site_form_after.html.haml +0 -3
  379. data/app/views/comfy/admin/cms/partials/_site_form_before.html.haml +0 -3
  380. data/app/views/comfy/admin/cms/partials/_sites_after.html.haml +0 -3
  381. data/app/views/comfy/admin/cms/partials/_sites_before.html.haml +0 -3
  382. data/app/views/comfy/admin/cms/partials/_snippet_form_after.html.haml +0 -3
  383. data/app/views/comfy/admin/cms/partials/_snippet_form_before.html.haml +0 -3
  384. data/app/views/comfy/admin/cms/partials/_snippets_after.html.haml +0 -3
  385. data/app/views/comfy/admin/cms/partials/_snippets_before.html.haml +0 -3
  386. data/app/views/comfy/admin/cms/sites/_mirrors.html.haml +0 -18
  387. data/app/views/comfy/cms/content/render_sitemap.xml.builder +0 -14
  388. data/app/views/layouts/comfy/admin/cms/_footer.html.haml +0 -3
  389. data/config/initializers/paperclip.rb +0 -3
  390. data/config/initializers/secret_token.rb +0 -15
  391. data/db/cms_fixtures/sample-site/categories/files.yml +0 -1
  392. data/db/cms_fixtures/sample-site/categories/pages.yml +0 -1
  393. data/db/cms_fixtures/sample-site/categories/snippets.yml +0 -1
  394. data/db/cms_fixtures/sample-site/files/_sample.jpg.yml +0 -5
  395. data/db/cms_fixtures/sample-site/layouts/default/attributes.yml +0 -1
  396. data/db/cms_fixtures/sample-site/layouts/default/content.html +0 -5
  397. data/db/cms_fixtures/sample-site/layouts/default/javascript.js +0 -1
  398. data/db/cms_fixtures/sample-site/layouts/default/nested/attributes.yml +0 -2
  399. data/db/cms_fixtures/sample-site/layouts/default/nested/content.haml +0 -3
  400. data/db/cms_fixtures/sample-site/layouts/default/nested/javascript.js +0 -1
  401. data/db/cms_fixtures/sample-site/layouts/default/nested/stylesheet.css +0 -1
  402. data/db/cms_fixtures/sample-site/layouts/default/stylesheet.css +0 -1
  403. data/db/cms_fixtures/sample-site/pages/index/attributes.yml +0 -6
  404. data/db/cms_fixtures/sample-site/pages/index/child/attributes.yml +0 -3
  405. data/db/cms_fixtures/sample-site/pages/index/child/left.haml +0 -1
  406. data/db/cms_fixtures/sample-site/pages/index/child/right.html +0 -1
  407. data/db/cms_fixtures/sample-site/pages/index/content.html +0 -2
  408. data/db/cms_fixtures/sample-site/snippets/default/attributes.yml +0 -4
  409. data/db/cms_fixtures/sample-site/snippets/default/content.html +0 -1
  410. data/db/seeds.rb +0 -7
  411. data/db/upgrade_migrations/02_upgrade_to_1_1_0.rb +0 -19
  412. data/db/upgrade_migrations/03_upgrade_to_1_2_0.rb +0 -15
  413. data/db/upgrade_migrations/04_upgrade_to_1_3_0.rb +0 -23
  414. data/db/upgrade_migrations/05_upgrade_to_1_4_0.rb +0 -33
  415. data/db/upgrade_migrations/06_upgrade_to_1_5_0.rb +0 -21
  416. data/db/upgrade_migrations/07_upgrade_to_1_6_0.rb +0 -25
  417. data/db/upgrade_migrations/08_upgrade_to_1_12_0.rb +0 -83
  418. data/doc/preview.png +0 -0
  419. data/lib/comfortable_mexican_sofa/extensions/cms_manageable.rb +0 -106
  420. data/lib/comfortable_mexican_sofa/extensions/is_categorized.rb +0 -49
  421. data/lib/comfortable_mexican_sofa/extensions/is_mirrored.rb +0 -86
  422. data/lib/comfortable_mexican_sofa/extensions/rails.rb +0 -17
  423. data/lib/comfortable_mexican_sofa/fixture.rb +0 -82
  424. data/lib/comfortable_mexican_sofa/fixture/category.rb +0 -42
  425. data/lib/comfortable_mexican_sofa/fixture/file.rb +0 -85
  426. data/lib/comfortable_mexican_sofa/fixture/layout.rb +0 -95
  427. data/lib/comfortable_mexican_sofa/fixture/page.rb +0 -129
  428. data/lib/comfortable_mexican_sofa/fixture/snippet.rb +0 -75
  429. data/lib/comfortable_mexican_sofa/tag.rb +0 -154
  430. data/lib/comfortable_mexican_sofa/tags/asset.rb +0 -30
  431. data/lib/comfortable_mexican_sofa/tags/collection.rb +0 -64
  432. data/lib/comfortable_mexican_sofa/tags/field_boolean.rb +0 -17
  433. data/lib/comfortable_mexican_sofa/tags/field_datetime.rb +0 -17
  434. data/lib/comfortable_mexican_sofa/tags/field_integer.rb +0 -17
  435. data/lib/comfortable_mexican_sofa/tags/field_rich_text.rb +0 -17
  436. data/lib/comfortable_mexican_sofa/tags/field_string.rb +0 -17
  437. data/lib/comfortable_mexican_sofa/tags/field_text.rb +0 -17
  438. data/lib/comfortable_mexican_sofa/tags/file.rb +0 -29
  439. data/lib/comfortable_mexican_sofa/tags/helper.rb +0 -24
  440. data/lib/comfortable_mexican_sofa/tags/page_datetime.rb +0 -13
  441. data/lib/comfortable_mexican_sofa/tags/page_file.rb +0 -62
  442. data/lib/comfortable_mexican_sofa/tags/page_files.rb +0 -51
  443. data/lib/comfortable_mexican_sofa/tags/page_integer.rb +0 -13
  444. data/lib/comfortable_mexican_sofa/tags/page_markdown.rb +0 -16
  445. data/lib/comfortable_mexican_sofa/tags/page_rich_text.rb +0 -13
  446. data/lib/comfortable_mexican_sofa/tags/page_string.rb +0 -13
  447. data/lib/comfortable_mexican_sofa/tags/page_text.rb +0 -13
  448. data/lib/comfortable_mexican_sofa/tags/partial.rb +0 -23
  449. data/lib/comfortable_mexican_sofa/tags/snippet.rb +0 -19
  450. data/lib/comfortable_mexican_sofa/tags/template.rb +0 -22
  451. data/lib/generators/comfy/scaffold/templates/views/_form.haml +0 -6
  452. data/lib/generators/comfy/scaffold/templates/views/index.haml +0 -23
  453. data/lib/tasks/comfortable_mexican_sofa.rake +0 -37
  454. data/test/fixtures/comfy/cms/blocks.yml +0 -12
  455. data/test/gemfiles/Gemfile.rails.4.1 +0 -22
  456. data/test/gemfiles/Gemfile.rails.4.2 +0 -22
  457. data/test/gemfiles/Gemfile.rails.5.0 +0 -23
  458. data/test/gemfiles/Gemfile.rails.master +0 -23
  459. data/test/integration/fixtures_test.rb +0 -65
  460. data/test/integration/mirrors_test.rb +0 -72
  461. data/test/lib/fixtures/categories_test.rb +0 -36
  462. data/test/lib/fixtures/files_test.rb +0 -109
  463. data/test/lib/fixtures/layouts_test.rb +0 -135
  464. data/test/lib/fixtures/pages_test.rb +0 -168
  465. data/test/lib/fixtures/snippets_test.rb +0 -106
  466. data/test/lib/fixtures_test.rb +0 -43
  467. data/test/lib/mirrors_test.rb +0 -254
  468. data/test/lib/tag_test.rb +0 -309
  469. data/test/lib/tags/asset_test.rb +0 -95
  470. data/test/lib/tags/collection_test.rb +0 -117
  471. data/test/lib/tags/field_boolean_test.rb +0 -49
  472. data/test/lib/tags/field_datetime_test.rb +0 -50
  473. data/test/lib/tags/field_integer_test.rb +0 -49
  474. data/test/lib/tags/field_rich_text_test.rb +0 -49
  475. data/test/lib/tags/field_string_test.rb +0 -52
  476. data/test/lib/tags/field_text_test.rb +0 -48
  477. data/test/lib/tags/file_test.rb +0 -67
  478. data/test/lib/tags/helper_test.rb +0 -86
  479. data/test/lib/tags/page_datetime_test.rb +0 -50
  480. data/test/lib/tags/page_file_test.rb +0 -119
  481. data/test/lib/tags/page_files_test.rb +0 -117
  482. data/test/lib/tags/page_integer_test.rb +0 -49
  483. data/test/lib/tags/page_markdown_test.rb +0 -48
  484. data/test/lib/tags/page_rich_text_test.rb +0 -49
  485. data/test/lib/tags/page_string_test.rb +0 -49
  486. data/test/lib/tags/page_text_test.rb +0 -52
  487. data/test/lib/tags/partial_test.rb +0 -76
  488. data/test/lib/tags/snippet_test.rb +0 -45
  489. data/test/lib/tags/template_test.rb +0 -56
  490. data/test/models/block_test.rb +0 -233
@@ -1,9 +1,9 @@
1
1
  require_relative '../../../../test_helper'
2
2
 
3
- class Comfy::Admin::Cms::LayoutsControllerTest < ActionController::TestCase
3
+ class Comfy::Admin::Cms::LayoutsControllerTest < ActionDispatch::IntegrationTest
4
4
 
5
5
  def test_get_index
6
- get :index, :site_id => comfy_cms_sites(:default)
6
+ r :get, comfy_admin_cms_site_layouts_path(site_id: comfy_cms_sites(:default))
7
7
  assert_response :success
8
8
  assert assigns(:layouts)
9
9
  assert_template :index
@@ -11,17 +11,17 @@ class Comfy::Admin::Cms::LayoutsControllerTest < ActionController::TestCase
11
11
 
12
12
  def test_get_index_with_no_layouts
13
13
  Comfy::Cms::Layout.delete_all
14
- get :index, :site_id => comfy_cms_sites(:default)
14
+ r :get, comfy_admin_cms_site_layouts_path(site_id: comfy_cms_sites(:default))
15
15
  assert_response :redirect
16
- assert_redirected_to :action => :new
16
+ assert_redirected_to action: :new
17
17
  end
18
18
 
19
19
  def test_get_new
20
20
  site = comfy_cms_sites(:default)
21
- get :new, :site_id => site
21
+ r :get, new_comfy_admin_cms_site_layout_path(site_id: site)
22
22
  assert_response :success
23
23
  assert assigns(:layout)
24
- assert_equal '{{ cms:page:content:rich_text }}', assigns(:layout).content
24
+ assert_equal '{{ cms:wysiwyg content }}', assigns(:layout).content
25
25
  assert_template :new
26
26
  assert_select "form[action='/admin/sites/#{site.id}/layouts']"
27
27
  end
@@ -30,14 +30,14 @@ class Comfy::Admin::Cms::LayoutsControllerTest < ActionController::TestCase
30
30
  site = comfy_cms_sites(:default)
31
31
  layout = comfy_cms_layouts(:default)
32
32
  layout.update_column(:app_layout, 'application')
33
- get :new, :site_id => site, :parent_id => layout
33
+ r :get, new_comfy_admin_cms_site_layout_path(site_id: site), params: {parent_id: layout.id}
34
34
  assert_response :success
35
35
  assert_equal layout.app_layout, assigns(:layout).app_layout
36
36
  end
37
37
 
38
38
  def test_get_edit
39
39
  layout = comfy_cms_layouts(:default)
40
- get :edit, :site_id => comfy_cms_sites(:default), :id => layout
40
+ r :get, edit_comfy_admin_cms_site_layout_path(site_id: comfy_cms_sites(:default), id: layout)
41
41
  assert_response :success
42
42
  assert assigns(:layout)
43
43
  assert_template :edit
@@ -45,30 +45,30 @@ class Comfy::Admin::Cms::LayoutsControllerTest < ActionController::TestCase
45
45
  end
46
46
 
47
47
  def test_get_edit_failure
48
- get :edit, :site_id => comfy_cms_sites(:default), :id => 'not_found'
48
+ r :get, edit_comfy_admin_cms_site_layout_path(site_id: comfy_cms_sites(:default), id: 'invalid')
49
49
  assert_response :redirect
50
- assert_redirected_to :action => :index
50
+ assert_redirected_to action: :index
51
51
  assert_equal 'Layout not found', flash[:danger]
52
52
  end
53
53
 
54
54
  def test_creation
55
55
  assert_difference 'Comfy::Cms::Layout.count' do
56
- post :create, :site_id => comfy_cms_sites(:default), :layout => {
57
- :label => 'Test Layout',
58
- :identifier => 'test',
59
- :content => 'Test {{cms:page:content}}'
60
- }
56
+ r :post, comfy_admin_cms_site_layouts_path(site_id: comfy_cms_sites(:default)), params: {layout: {
57
+ label: 'Test Layout',
58
+ identifier: 'test',
59
+ content: 'Test {{cms:page:content}}'
60
+ }}
61
61
  assert_response :redirect
62
62
  layout = Comfy::Cms::Layout.last
63
63
  assert_equal comfy_cms_sites(:default), layout.site
64
- assert_redirected_to :action => :edit, :site_id => layout.site, :id => layout
64
+ assert_redirected_to action: :edit, site_id: layout.site, id: layout
65
65
  assert_equal 'Layout created', flash[:success]
66
66
  end
67
67
  end
68
68
 
69
69
  def test_creation_failure
70
70
  assert_no_difference 'Comfy::Cms::Layout.count' do
71
- post :create, :site_id => comfy_cms_sites(:default), :layout => { }
71
+ r :post, comfy_admin_cms_site_layouts_path(site_id: comfy_cms_sites(:default)), params: {layout: {}}
72
72
  assert_response :success
73
73
  assert_template :new
74
74
  assert_equal 'Failed to create layout', flash[:danger]
@@ -77,12 +77,12 @@ class Comfy::Admin::Cms::LayoutsControllerTest < ActionController::TestCase
77
77
 
78
78
  def test_update
79
79
  layout = comfy_cms_layouts(:default)
80
- put :update, :site_id => comfy_cms_sites(:default), :id => layout, :layout => {
81
- :label => 'New Label',
82
- :content => 'New {{cms:page:content}}'
83
- }
80
+ r :put, comfy_admin_cms_site_layout_path(site_id: comfy_cms_sites(:default), id: layout), params: {layout: {
81
+ label: 'New Label',
82
+ content: 'New {{cms:page:content}}'
83
+ }}
84
84
  assert_response :redirect
85
- assert_redirected_to :action => :edit, :site_id => layout.site, :id => layout
85
+ assert_redirected_to action: :edit, site_id: layout.site, id: layout
86
86
  assert_equal 'Layout updated', flash[:success]
87
87
  layout.reload
88
88
  assert_equal 'New Label', layout.label
@@ -91,9 +91,9 @@ class Comfy::Admin::Cms::LayoutsControllerTest < ActionController::TestCase
91
91
 
92
92
  def test_update_failure
93
93
  layout = comfy_cms_layouts(:default)
94
- put :update, :site_id => comfy_cms_sites(:default), :id => layout, :layout => {
95
- :identifier => ''
96
- }
94
+ r :put, comfy_admin_cms_site_layout_path(site_id: comfy_cms_sites(:default), id: layout), params: {layout: {
95
+ identifier: ''
96
+ }}
97
97
  assert_response :success
98
98
  assert_template :edit
99
99
  layout.reload
@@ -103,9 +103,9 @@ class Comfy::Admin::Cms::LayoutsControllerTest < ActionController::TestCase
103
103
 
104
104
  def test_destroy
105
105
  assert_difference 'Comfy::Cms::Layout.count', -1 do
106
- delete :destroy, :site_id => comfy_cms_sites(:default), :id => comfy_cms_layouts(:default)
106
+ r :delete, comfy_admin_cms_site_layout_path(site_id: comfy_cms_sites(:default), id: comfy_cms_layouts(:default))
107
107
  assert_response :redirect
108
- assert_redirected_to :action => :index
108
+ assert_redirected_to action: :index
109
109
  assert_equal 'Layout deleted', flash[:success]
110
110
  end
111
111
  end
@@ -113,13 +113,15 @@ class Comfy::Admin::Cms::LayoutsControllerTest < ActionController::TestCase
113
113
  def test_reorder
114
114
  layout_one = comfy_cms_layouts(:default)
115
115
  layout_two = comfy_cms_sites(:default).layouts.create!(
116
- :label => 'test',
117
- :identifier => 'test'
116
+ label: 'test',
117
+ identifier: 'test'
118
118
  )
119
119
  assert_equal 0, layout_one.position
120
120
  assert_equal 1, layout_two.position
121
121
 
122
- put :reorder, :site_id => comfy_cms_sites(:default), :comfy_cms_layout => [layout_two.id, layout_one.id]
122
+ r :put, reorder_comfy_admin_cms_site_layouts_path(site_id: comfy_cms_sites(:default)), params: {
123
+ comfy_cms_layout: [layout_two.id, layout_one.id]
124
+ }
123
125
  assert_response :success
124
126
  layout_one.reload
125
127
  layout_two.reload
@@ -127,5 +129,4 @@ class Comfy::Admin::Cms::LayoutsControllerTest < ActionController::TestCase
127
129
  assert_equal 1, layout_one.position
128
130
  assert_equal 0, layout_two.position
129
131
  end
130
-
131
132
  end
@@ -1,13 +1,15 @@
1
1
  require_relative '../../../../test_helper'
2
2
 
3
- class Comfy::Admin::Cms::PagesControllerTest < ActionController::TestCase
3
+ class Comfy::Admin::Cms::PagesControllerTest < ActionDispatch::IntegrationTest
4
4
 
5
5
  def setup
6
- @site = comfy_cms_sites(:default)
6
+ @site = comfy_cms_sites(:default)
7
+ @layout = comfy_cms_layouts(:default)
8
+ @page = comfy_cms_pages(:default)
7
9
  end
8
10
 
9
11
  def test_get_index
10
- get :index, :site_id => @site
12
+ r :get, comfy_admin_cms_site_pages_path(site_id: @site)
11
13
  assert_response :success
12
14
  assert assigns(:pages)
13
15
  assert_template :index
@@ -15,19 +17,19 @@ class Comfy::Admin::Cms::PagesControllerTest < ActionController::TestCase
15
17
 
16
18
  def test_get_index_with_no_pages
17
19
  Comfy::Cms::Page.delete_all
18
- get :index, :site_id => @site
20
+ r :get, comfy_admin_cms_site_pages_path(site_id: @site)
19
21
  assert_response :redirect
20
- assert_redirected_to :action => :new
22
+ assert_redirected_to action: :new
21
23
  end
22
24
 
23
25
  def test_get_index_with_category
24
26
  category = @site.categories.create!(
25
- :label => 'Test Category',
26
- :categorized_type => 'Comfy::Cms::Page'
27
+ label: 'Test Category',
28
+ categorized_type: 'Comfy::Cms::Page'
27
29
  )
28
- category.categorizations.create!(:categorized => comfy_cms_pages(:child))
30
+ category.categorizations.create!(categorized: comfy_cms_pages(:child))
29
31
 
30
- get :index, :site_id => @site, :category => category.label
32
+ r :get, comfy_admin_cms_site_pages_path(site_id: @site), params: {categories: category.label}
31
33
  assert_response :success
32
34
  assert assigns(:pages)
33
35
  assert_equal 1, assigns(:pages).count
@@ -35,7 +37,7 @@ class Comfy::Admin::Cms::PagesControllerTest < ActionController::TestCase
35
37
  end
36
38
 
37
39
  def test_get_index_with_category_invalid
38
- get :index, :site_id => @site, :category => 'invalid'
40
+ r :get, comfy_admin_cms_site_pages_path(site_id: @site), params: {categories: "invalid"}
39
41
  assert_response :success
40
42
  assert assigns(:pages)
41
43
  assert_equal 0, assigns(:pages).count
@@ -43,17 +45,17 @@ class Comfy::Admin::Cms::PagesControllerTest < ActionController::TestCase
43
45
 
44
46
  def test_get_index_with_toggle
45
47
  @site.pages.create!(
46
- :label => 'test',
47
- :slug => 'test',
48
- :parent => comfy_cms_pages(:child),
49
- :layout => comfy_cms_layouts(:default)
48
+ label: 'test',
49
+ slug: 'test',
50
+ parent: comfy_cms_pages(:child),
51
+ layout: comfy_cms_layouts(:default)
50
52
  )
51
- get :index, :site_id => @site
53
+ r :get, comfy_admin_cms_site_pages_path(site_id: @site)
52
54
  assert_response :success
53
55
  end
54
56
 
55
57
  def test_get_links_with_redactor
56
- get :index, :site_id => @site, :source => 'redactor'
58
+ r :get, comfy_admin_cms_site_pages_path(site_id: @site), params: {source: 'redactor'}
57
59
  assert_response :success
58
60
 
59
61
  assert_equal [
@@ -64,173 +66,181 @@ class Comfy::Admin::Cms::PagesControllerTest < ActionController::TestCase
64
66
  end
65
67
 
66
68
  def test_get_new
67
- get :new, :site_id => @site
69
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
68
70
  assert_response :success
69
71
  assert assigns(:page)
70
- assert_equal comfy_cms_layouts(:default), assigns(:page).layout
72
+ assert_equal @layout, assigns(:page).layout
71
73
  assert_template :new
72
74
  assert_select "form[action='/admin/sites/#{@site.id}/pages']"
73
- assert_select "select[data-url='/admin/sites/#{@site.id}/pages/0/form_blocks']"
75
+ assert_select "select[data-url='/admin/sites/#{@site.id}/pages/0/form_fragments']"
74
76
  end
75
77
 
76
- def test_get_new_with_field_datetime
77
- comfy_cms_layouts(:default).update_columns(:content =>'{{cms:field:test_label:datetime}}')
78
- get :new, :site_id => @site
79
- assert_response :success
80
- assert_select "input[type='text'][name='page[blocks_attributes][0][content]'][data-cms-datetime]"
81
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][identifier]'][value='test_label']"
82
- end
83
-
84
- def test_get_new_with_field_integer
85
- comfy_cms_layouts(:default).update_columns(:content => '{{cms:field:test_label:integer}}')
86
- get :new, :site_id => @site
78
+ def test_get_new_with_field_wysiwyg
79
+ @layout.update_column(:content, "{{cms:wysiwyg test}}")
80
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
87
81
  assert_response :success
88
- assert_select "input[type='number'][name='page[blocks_attributes][0][content]']"
89
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][identifier]'][value='test_label']"
90
- end
91
-
92
- def test_get_new_with_field_string
93
- comfy_cms_layouts(:default).update_columns(:content => '{{cms:field:test_label:string}}')
94
- get :new, :site_id => @site
95
- assert_response :success
96
- assert_select "input[type='text'][name='page[blocks_attributes][0][content]']"
97
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][identifier]'][value='test_label']"
82
+ assert_select "textarea[name='page[fragments_attributes][0][content]'][data-cms-rich-text]"
83
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
84
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='wysiwyg']"
98
85
  end
99
86
 
100
87
  def test_get_new_with_field_text
101
- comfy_cms_layouts(:default).update_columns(:content => '{{cms:field:test_label:text}}')
102
- get :new, :site_id => @site
88
+ @layout.update_column(:content, "{{cms:text test}}")
89
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
103
90
  assert_response :success
104
- assert_select "textarea[name='page[blocks_attributes][0][content]'][data-cms-cm-mode='text/html']"
105
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][identifier]'][value='test_label']"
91
+ assert_select "input[type='text'][name='page[fragments_attributes][0][content]']"
92
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
93
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='text']"
106
94
  end
107
95
 
108
- def test_get_new_with_field_rich_text
109
- comfy_cms_layouts(:default).update_columns(:content => '{{cms:field:test_label:rich_text}}')
110
- get :new, :site_id => @site
96
+ def test_get_new_with_field_textarea
97
+ @layout.update_column(:content, "{{cms:textarea test}}")
98
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
111
99
  assert_response :success
112
- assert_select "textarea[name='page[blocks_attributes][0][content]'][data-cms-rich-text]"
113
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][identifier]'][value='test_label']"
100
+ assert_select "textarea[name='page[fragments_attributes][0][content]'][data-cms-cm-mode='text/html']"
101
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
102
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='text_area']"
114
103
  end
115
104
 
116
- def test_get_new_with_page_datetime
117
- comfy_cms_layouts(:default).update_columns(:content => '{{cms:page:test_label:datetime}}')
118
- get :new, :site_id => @site
105
+ def test_get_new_with_field_markdown
106
+ @layout.update_column(:content, "{{cms:markdown test}}")
107
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
119
108
  assert_response :success
120
- assert_select "input[type='text'][name='page[blocks_attributes][0][content]'][data-cms-datetime]"
121
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][identifier]'][value='test_label']"
109
+ assert_select "textarea[name='page[fragments_attributes][0][content]'][data-cms-cm-mode='text/x-markdown']"
110
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
111
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='markdown']"
122
112
  end
123
113
 
124
- def test_get_new_with_page_integer
125
- comfy_cms_layouts(:default).update_columns(:content => '{{cms:page:test_label:integer}}')
126
- get :new, :site_id => @site
127
- assert_response :success
128
- assert_select "input[type='number'][name='page[blocks_attributes][0][content]']"
129
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][identifier]'][value='test_label']"
130
- end
131
-
132
- def test_get_new_with_page_string
133
- comfy_cms_layouts(:default).update_columns(:content => '{{cms:page:test_label:string}}')
134
- get :new, :site_id => @site
135
- assert_response :success
136
- assert_select "input[type='text'][name='page[blocks_attributes][0][content]']"
137
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][identifier]'][value='test_label']"
138
- end
139
-
140
- def test_get_new_with_page_text
141
- comfy_cms_layouts(:default).update_columns(:content => '{{cms:page:test_label}}')
142
- get :new, :site_id => @site
114
+ def test_get_new_with_field_datetime
115
+ @layout.update_column(:content, "{{cms:datetime test}}")
116
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
143
117
  assert_response :success
144
- assert_select "textarea[name='page[blocks_attributes][0][content]'][data-cms-cm-mode='text/html']"
145
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][identifier]'][value='test_label']"
118
+ assert_select "input[type='text'][name='page[fragments_attributes][0][datetime]'][data-cms-datetime]"
119
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
120
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='datetime']"
146
121
  end
147
122
 
148
- def test_get_new_with_page_file
149
- comfy_cms_layouts(:default).update_columns(:content => '{{cms:page_file:test_label}}')
150
- get :new, :site_id => @site
123
+ def test_get_new_with_field_date
124
+ @layout.update_column(:content, "{{cms:date test}}")
125
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
151
126
  assert_response :success
152
- assert_select "input[type='file'][name='page[blocks_attributes][0][content]']"
153
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][identifier]'][value='test_label']"
127
+ assert_select "input[type='text'][name='page[fragments_attributes][0][datetime]'][data-cms-date]"
128
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
129
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='date']"
154
130
  end
155
131
 
156
- def test_get_new_with_page_files
157
- comfy_cms_layouts(:default).update_columns(:content => '{{cms:page_files:test_label}}')
158
- get :new, :site_id => @site
132
+ def test_get_new_with_field_number
133
+ @layout.update_column(:content, "{{cms:number test}}")
134
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
159
135
  assert_response :success
160
- assert_select "input[type='file'][name='page[blocks_attributes][0][content][]'][multiple=multiple]"
161
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][identifier]'][value='test_label']"
136
+ assert_select "input[type='number'][name='page[fragments_attributes][0][content]']"
137
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
138
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='number']"
162
139
  end
163
140
 
164
- def test_get_new_with_collection
165
- snippet = comfy_cms_snippets(:default)
166
- comfy_cms_layouts(:default).update_columns(:content => '{{cms:collection:snippet:comfy/cms/snippet}}')
167
- get :new, :site_id => @site
141
+ def test_get_new_with_field_checkbox
142
+ @layout.update_column(:content, "{{cms:checkbox test}}")
143
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
168
144
  assert_response :success
169
- assert_select "select[name='page[blocks_attributes][0][content]']" do
170
- assert_select "option[value='']", :html => '---- Select Comfy/Cms/Snippet ----'
171
- assert_select "option[value='#{snippet.id}']", :html => snippet.label
172
- end
173
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][identifier]'][value='snippet']"
145
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][boolean]'][value='0']"
146
+ assert_select "input[type='checkbox'][name='page[fragments_attributes][0][boolean]'][value='1']"
147
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
148
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='checkbox']"
174
149
  end
175
150
 
176
- def test_get_new_with_page_rich_text
177
- comfy_cms_layouts(:default).update_columns(:content => '{{cms:page:test_label:rich_text}}')
178
- get :new, :site_id => @site
151
+ def test_get_new_with_field_file
152
+ @layout.update_column(:content, "{{cms:file test}}")
153
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
179
154
  assert_response :success
180
- assert_select "textarea[name='page[blocks_attributes][0][content]'][data-cms-rich-text]"
181
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][identifier]'][value='test_label']"
155
+ assert_select "input[type='file'][name='page[fragments_attributes][0][files]']"
156
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
157
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='file']"
182
158
  end
183
159
 
184
- def test_get_new_with_page_markdown
185
- comfy_cms_layouts(:default).update_columns(:content => '{{cms:page:test_label:markdown}}')
186
- get :new, :site_id => @site
160
+ def test_get_new_with_field_files
161
+ @layout.update_column(:content, "{{cms:files test}}")
162
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
187
163
  assert_response :success
188
- assert_select "textarea[name='page[blocks_attributes][0][content]'][data-cms-cm-mode='text/x-markdown']"
189
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][identifier]'][value='test_label']"
164
+ assert_select "input[type='file'][name='page[fragments_attributes][0][files][]'][multiple=multiple]"
165
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
166
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='files']"
190
167
  end
191
168
 
192
- def test_get_new_with_boolean_field
193
- comfy_cms_layouts(:default).update_columns(:content => '{{cms:field:test_label:boolean}}')
194
- get :new, :site_id => @site
169
+ def test_get_new_with_several_fields
170
+ @layout.update_column(:content, "{{cms:wysiwyg a}}{{cms:markdown b}}")
171
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
195
172
  assert_response :success
196
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][identifier]'][value='test_label']"
197
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][content]'][value='']"
198
- assert_select "input[type='checkbox'][name='page[blocks_attributes][0][content]'][value='1']"
173
+ assert_select "textarea[name='page[fragments_attributes][0][content]']"
174
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='a']"
175
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='wysiwyg']"
176
+ assert_select "textarea[name='page[fragments_attributes][1][content]']"
177
+ assert_select "input[type='hidden'][name='page[fragments_attributes][1][identifier]'][value='b']"
178
+ assert_select "input[type='hidden'][name='page[fragments_attributes][1][tag]'][value='markdown']"
199
179
  end
200
180
 
201
- def test_get_new_with_several_tag_fields
202
- comfy_cms_layouts(:default).update_columns(:content => '{{cms:page:label_a}}{{cms:page:label_b}}')
203
- get :new, :site_id => @site
181
+ def test_get_new_with_non_renderable_fragment
182
+ @layout.update_column(:content, "{{cms:text a}}{{cms:text b, render: false}}")
183
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
204
184
  assert_response :success
205
- assert_select "textarea[name='page[blocks_attributes][0][content]']"
206
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][identifier]'][value='label_a']"
207
- assert_select "textarea[name='page[blocks_attributes][1][content]']"
208
- assert_select "input[type='hidden'][name='page[blocks_attributes][1][identifier]'][value='label_b']"
185
+ assert_select "label.renderable-true", "A"
186
+ assert_select "label.renderable-false", "B"
209
187
  end
210
188
 
211
189
  def test_get_new_with_crashy_tag
212
- comfy_cms_layouts(:default).update_columns(:content => '{{cms:collection:label:invalid}}')
190
+ @layout.update_column(:content, "{{cms:invalid}}")
213
191
  assert_exception_raised do
214
- get :new, :site_id => @site
192
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
215
193
  end
216
194
 
217
- Rails.stubs(:env => ActiveSupport::StringInquirer.new('production'))
218
- get :new, :site_id => @site
195
+ Rails.stubs(env: ActiveSupport::StringInquirer.new("production"))
196
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
219
197
  assert_response :success
220
198
  end
221
199
 
222
200
  def test_get_new_with_repeated_tag
223
- comfy_cms_layouts(:default).update_columns(:content => '{{cms:page:test_label}}{{cms:page:test_label}}')
224
- get :new, :site_id => @site
201
+ @layout.update_column(:content, "{{cms:text test}}{{cms:text test}}")
202
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
203
+ assert_response :success
204
+ assert_select "input[name='page[fragments_attributes][0][content]']"
205
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
206
+ assert_select "input[name='page[fragments_attributes][1][content]']", 0
207
+ assert_select "input[type='hidden'][name='page[fragments_attributes][1][identifier]'][value='test']", 0
208
+ end
209
+
210
+ def test_get_new_with_namespaced_tags
211
+ @layout.update_column(:content, "{{cms:text a, namespace: a}}{{cms:text b, namespace: b}}")
212
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
213
+ assert_response :success
214
+ assert_select "a[data-toggle='tab'][href='#ns-a']", "A"
215
+ assert_select "a[data-toggle='tab'][href='#ns-b']", "B"
216
+ assert_select "input[name='page[fragments_attributes][0][content]']"
217
+ assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='a']"
218
+ assert_select "input[name='page[fragments_attributes][1][content]']"
219
+ assert_select "input[type='hidden'][name='page[fragments_attributes][1][identifier]'][value='b']"
220
+ end
221
+
222
+ def test_get_new_with_localized_names
223
+ I18n.backend.store_translations(:en, {comfy: {cms: {content: {
224
+ tag: {localized_a: "Localized Fragment"},
225
+ namespace: {localized_a: "Localized Namespace"}
226
+ }}}})
227
+ @layout.update_column(:content,
228
+ "{{cms:text localized_a, namespace: localized_a}}{{cms:text b, namespace: b}}"
229
+ )
230
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
225
231
  assert_response :success
226
- assert_select "textarea[name='page[blocks_attributes][0][content]']"
227
- assert_select "input[type='hidden'][name='page[blocks_attributes][0][identifier]'][value='test_label']"
228
- assert_select "textarea[name='page[blocks_attributes][1][content]']", 0
229
- assert_select "input[type='hidden'][name='page[blocks_attributes][1][identifier]'][value='test_label']", 0
232
+
233
+ assert_select "a[data-toggle='tab'][href='#ns-localized_a']", "Localized Namespace"
234
+ assert_select "label", "Localized Fragment"
235
+
236
+ ensure
237
+ I18n.backend.store_translations(:en, {comfy: {cms: {content: {
238
+ tag: nil, namespace: nil
239
+ }}}})
230
240
  end
231
241
 
232
242
  def test_get_new_as_child_page
233
- get :new, :site_id => @site, :parent_id => comfy_cms_pages(:default)
243
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site), params: {parent_id: @page}
234
244
  assert_response :success
235
245
  assert assigns(:page)
236
246
  assert_equal comfy_cms_pages(:default), assigns(:page).parent
@@ -238,130 +248,167 @@ class Comfy::Admin::Cms::PagesControllerTest < ActionController::TestCase
238
248
  end
239
249
 
240
250
  def test_get_edit
241
- page = comfy_cms_pages(:default)
242
- get :edit, :site_id => page.site, :id => page
251
+ r :get, edit_comfy_admin_cms_site_page_path(site_id: @site, id: @page)
243
252
  assert_response :success
244
253
  assert assigns(:page)
245
254
  assert_template :edit
246
- assert_select "form[action='/admin/sites/#{page.site.id}/pages/#{page.id}']"
247
- assert_select "select[data-url='/admin/sites/#{page.site.id}/pages/#{page.id}/form_blocks']"
255
+ assert_select "form[action='/admin/sites/#{@site.id}/pages/#{@page.id}']"
256
+ assert_select "select[data-url='/admin/sites/#{@site.id}/pages/#{@page.id}/form_fragments']"
248
257
  end
249
258
 
250
259
  def test_get_edit_failure
251
- get :edit, :site_id => @site, :id => 'not_found'
260
+ r :get, edit_comfy_admin_cms_site_page_path(site_id: @site, id: 'not_found')
252
261
  assert_response :redirect
253
- assert_redirected_to :action => :index
262
+ assert_redirected_to action: :index
254
263
  assert_equal 'Page not found', flash[:danger]
255
264
  end
256
265
 
257
266
  def test_get_edit_with_blank_layout
258
- page = comfy_cms_pages(:default)
259
- page.update_columns(:layout_id => nil)
260
- get :edit, :site_id => page.site, :id => page
267
+ @page.update_column(:layout_id, nil)
268
+ r :get, edit_comfy_admin_cms_site_page_path(site_id: @site, id: @page)
261
269
  assert_response :success
262
270
  assert assigns(:page)
263
- assert assigns(:page).layout
264
271
  end
265
272
 
266
273
  def test_get_edit_with_non_english_locale
267
- site = @site
268
- site.update_columns(:locale => 'es')
269
- get :edit, :site_id => site, :id => comfy_cms_pages(:default)
274
+ @site.update_column(:locale, "es")
275
+ r :get, edit_comfy_admin_cms_site_page_path(site_id: @site, id: @page)
270
276
  assert_response :success
271
277
  end
272
278
 
273
279
  def test_get_edit_with_layout_and_no_tags
274
- page = comfy_cms_pages(:default)
275
- page.layout.update_column(:content, '')
276
- get :edit, :site_id => page.site, :id => page
280
+ @page.layout.update_column(:content, "")
281
+ r :get, edit_comfy_admin_cms_site_page_path(site_id: @site, id: @page)
277
282
  assert_response :success
278
283
  end
279
284
 
280
285
  def test_creation
281
286
  assert_difference 'Comfy::Cms::Page.count' do
282
- assert_difference 'Comfy::Cms::Block.count', 2 do
283
- post :create, :site_id => @site, :page => {
284
- :label => 'Test Page',
285
- :slug => 'test-page',
286
- :parent_id => comfy_cms_pages(:default).id,
287
- :layout_id => comfy_cms_layouts(:default).id,
288
- :blocks_attributes => [
289
- { :identifier => 'default_page_text',
290
- :content => 'content content' },
291
- { :identifier => 'default_field_text',
292
- :content => 'title content' }
293
- ]
294
- }, :commit => 'Create Page'
287
+ assert_difference 'Comfy::Cms::Fragment.count', 2 do
288
+ r :post, comfy_admin_cms_site_pages_path(site_id: @site), params: {
289
+ page: {
290
+ label: 'Test Page',
291
+ slug: 'test-page',
292
+ parent_id: @page.id,
293
+ layout_id: @layout.id,
294
+ fragments_attributes: [
295
+ { identifier: 'default_page_text',
296
+ content: 'content content' },
297
+ { identifier: 'default_field_text',
298
+ content: 'title content' }
299
+ ]
300
+ },
301
+ commit: 'Create Page'
302
+ }
295
303
  assert_response :redirect
296
304
  page = Comfy::Cms::Page.last
297
305
  assert_equal @site, page.site
298
- assert_redirected_to :action => :edit, :id => page
306
+ assert_redirected_to action: :edit, id: page
299
307
  assert_equal 'Page created', flash[:success]
300
308
  end
301
309
  end
302
310
  end
303
311
 
312
+ def test_creation_with_files
313
+ assert_difference 'Comfy::Cms::Page.count' do
314
+ assert_difference "Comfy::Cms::Fragment.count", 3 do
315
+ assert_difference "ActiveStorage::Attachment.count", 3 do
316
+ r :post, comfy_admin_cms_site_pages_path(site_id: @site), params: {
317
+ page: {
318
+ label: "Test Page",
319
+ slug: "test-page",
320
+ parent_id: @page.id,
321
+ layout_id: @layout.id,
322
+ fragments_attributes: [
323
+ { identifier: "image",
324
+ tag: "file",
325
+ files: fixture_file_upload("files/image.jpg", "image/jpeg")
326
+ },
327
+ { identifier: "files_multiple",
328
+ tag: "files",
329
+ files: [
330
+ fixture_file_upload("files/image.jpg", "image/jpeg"),
331
+ fixture_file_upload("files/document.pdf", "application/pdf")
332
+ ]
333
+ },
334
+ { identifier: "unpopulated",
335
+ tag: "file",
336
+ content: nil
337
+ },
338
+ ]
339
+ },
340
+ commit: 'Create Page'
341
+ }
342
+ assert_response :redirect
343
+ page = Comfy::Cms::Page.last
344
+ assert_equal @site, page.site
345
+ assert_redirected_to action: :edit, id: page
346
+ assert_equal 'Page created', flash[:success]
347
+ end
348
+ end
349
+ end
350
+ end
351
+
304
352
  def test_creation_failure
305
- assert_no_difference ['Comfy::Cms::Page.count', 'Comfy::Cms::Block.count'] do
306
- post :create, :site_id => @site, :page => {
307
- :layout_id => comfy_cms_layouts(:default).id,
308
- :blocks_attributes => [
309
- { :identifier => 'default_page_text',
310
- :content => 'content content' },
311
- { :identifier => 'default_field_text',
312
- :content => 'title content' }
353
+ assert_no_difference ['Comfy::Cms::Page.count', 'Comfy::Cms::Fragment.count'] do
354
+ r :post, comfy_admin_cms_site_pages_path(site_id: @site), params: {page: {
355
+ layout_id: @layout.id,
356
+ fragments_attributes: [
357
+ { identifier: 'content',
358
+ content: 'content content' },
359
+ { identifier: 'title',
360
+ content: 'title content' }
313
361
  ]
314
- }
362
+ }}
315
363
  assert_response :success
316
364
  page = assigns(:page)
317
- assert_equal 2, page.blocks.size
318
- assert_equal ['content content', 'title content'], page.blocks.collect{|b| b.content}
365
+
366
+ assert_equal 2, page.fragments.size
367
+ assert_equal ['content content', 'title content'], page.fragments.collect{|b| b.content}
319
368
  assert_template :new
320
369
  assert_equal 'Failed to create page', flash[:danger]
321
370
  end
322
371
  end
323
372
 
324
373
  def test_update
325
- page = comfy_cms_pages(:default)
326
- assert_no_difference 'Comfy::Cms::Block.count' do
327
- put :update, :site_id => page.site, :id => page, :page => {
328
- :label => 'Updated Label'
329
- }
330
- page.reload
374
+ assert_no_difference 'Comfy::Cms::Fragment.count' do
375
+ r :put, comfy_admin_cms_site_page_path(site_id: @site, id: @page), params: {page: {
376
+ label: 'Updated Label'
377
+ }}
378
+ @page.reload
331
379
  assert_response :redirect
332
- assert_redirected_to :action => :edit, :id => page
380
+ assert_redirected_to action: :edit, id: @page
333
381
  assert_equal 'Page updated', flash[:success]
334
- assert_equal 'Updated Label', page.label
382
+ assert_equal 'Updated Label', @page.label
335
383
  end
336
384
  end
337
385
 
338
386
  def test_update_with_layout_change
339
- page = comfy_cms_pages(:default)
340
- assert_difference 'Comfy::Cms::Block.count', 2 do
341
- put :update, :site_id => page.site, :id => page, :page => {
342
- :label => 'Updated Label',
343
- :layout_id => comfy_cms_layouts(:nested).id,
344
- :blocks_attributes => [
345
- { :identifier => 'content',
346
- :content => 'new_page_text_content' },
347
- { :identifier => 'header',
348
- :content => 'new_page_string_content' }
387
+ assert_difference 'Comfy::Cms::Fragment.count' do
388
+ r :put, comfy_admin_cms_site_page_path(site_id: @site, id: @page), params: {page: {
389
+ label: 'Updated Label',
390
+ layout_id: comfy_cms_layouts(:nested).id,
391
+ fragments_attributes: [
392
+ { identifier: 'content',
393
+ content: 'new_page_text_content' },
394
+ { identifier: 'header',
395
+ content: 'new_page_string_content' }
349
396
  ]
350
- }
351
- page.reload
397
+ }}
398
+ @page.reload
352
399
  assert_response :redirect
353
- assert_redirected_to :action => :edit, :id => page
400
+ assert_redirected_to action: :edit, id: @page
354
401
  assert_equal 'Page updated', flash[:success]
355
- assert_equal 'Updated Label', page.label
356
- identifiers = page.blocks.collect {|b| b.identifier}
357
- assert_equal ['content', 'default_field_text', 'default_page_text', 'header'], identifiers.sort
402
+ assert_equal 'Updated Label', @page.label
403
+ identifiers = @page.fragments.collect {|b| b.identifier}
404
+ assert_equal ["boolean", "content", "datetime", "file", "header"], identifiers.sort
358
405
  end
359
406
  end
360
407
 
361
408
  def test_update_failure
362
- put :update, :site_id => @site, :id => comfy_cms_pages(:default), :page => {
363
- :label => ''
364
- }
409
+ r :put, comfy_admin_cms_site_page_path(site_id: @site, id: @page), params: {page: {
410
+ label: ""
411
+ }}
365
412
  assert_response :success
366
413
  assert_template :edit
367
414
  assert assigns(:page)
@@ -370,101 +417,109 @@ class Comfy::Admin::Cms::PagesControllerTest < ActionController::TestCase
370
417
 
371
418
  def test_destroy
372
419
  assert_difference 'Comfy::Cms::Page.count', -2 do
373
- assert_difference 'Comfy::Cms::Block.count', -2 do
374
- delete :destroy, :site_id => @site, :id => comfy_cms_pages(:default)
420
+ assert_difference 'Comfy::Cms::Fragment.count', -4 do
421
+ r :delete, comfy_admin_cms_site_page_path(site_id: @site, id: @page)
375
422
  assert_response :redirect
376
- assert_redirected_to :action => :index
423
+ assert_redirected_to action: :index
377
424
  assert_equal 'Page deleted', flash[:success]
378
425
  end
379
426
  end
380
427
  end
381
428
 
382
- def test_get_form_blocks
383
- site = @site
384
- xhr :get, :form_blocks, :site_id => site, :id => comfy_cms_pages(:default), :layout_id => comfy_cms_layouts(:nested).id
429
+ def test_get_form_fragments
430
+ r :get, form_fragments_comfy_admin_cms_site_page_path(site_id: @site, id: @page), xhr: true, params: {
431
+ layout_id: comfy_cms_layouts(:nested).id
432
+ }
385
433
  assert_response :success
386
434
  assert assigns(:page)
387
- assert_equal 2, assigns(:page).tags.size
388
- assert_template :form_blocks
435
+ assert_equal 2, assigns(:page).fragment_nodes.size
436
+ assert_template :form_fragments
389
437
 
390
- xhr :get, :form_blocks, :site_id => site, :id => comfy_cms_pages(:default), :layout_id => comfy_cms_layouts(:default).id
438
+ r :get, form_fragments_comfy_admin_cms_site_page_path(site_id: @site, id: @page), xhr: true, params: {
439
+ layout_id: @layout.id
440
+ }
391
441
  assert_response :success
392
442
  assert assigns(:page)
393
- assert_equal 4, assigns(:page).tags.size
394
- assert_template :form_blocks
443
+ assert_equal 1, assigns(:page).fragment_nodes.size
444
+ assert_template :form_fragments
395
445
  end
396
446
 
397
- def test_get_form_blocks_for_new_page
398
- xhr :get, :form_blocks, :site_id => @site, :id => 0, :layout_id => comfy_cms_layouts(:default).id
447
+ def test_get_form_fragments_for_new_page
448
+ r :get, form_fragments_comfy_admin_cms_site_page_path(site_id: @site, id: 0), xhr: true, params: {
449
+ layout_id: @layout.id
450
+ }
399
451
  assert_response :success
400
452
  assert assigns(:page)
401
- assert_equal 3, assigns(:page).tags.size
402
- assert_template :form_blocks
453
+ assert_equal 1, assigns(:page).fragment_nodes.size
454
+ assert_template :form_fragments
403
455
  end
404
456
 
405
457
  def test_creation_preview
406
- site = @site
407
- layout = comfy_cms_layouts(:default)
408
-
409
458
  assert_no_difference 'Comfy::Cms::Page.count' do
410
- post :create, :site_id => site, :preview => 'Preview', :page => {
411
- :label => 'Test Page',
412
- :slug => 'test-page',
413
- :parent_id => comfy_cms_pages(:default).id,
414
- :layout_id => layout.id,
415
- :blocks_attributes => [
416
- { :identifier => 'default_page_text',
417
- :content => 'preview content' }
418
- ]
459
+ r :post, comfy_admin_cms_site_pages_path(site_id: @site), params: {
460
+ preview: 'Preview',
461
+ page: {
462
+ label: 'Test Page',
463
+ slug: 'test-page',
464
+ parent_id: @page.id,
465
+ layout_id: @layout.id,
466
+ fragments_attributes: [
467
+ { identifier: 'content',
468
+ content: 'preview content' }
469
+ ]
470
+ }
419
471
  }
420
472
  assert_response :success
421
473
  assert_match /preview content/, response.body
422
474
  assert_equal 'text/html', response.content_type
423
475
 
424
- assert_equal site, assigns(:cms_site)
425
- assert_equal layout, assigns(:cms_layout)
476
+ assert_equal @site, assigns(:cms_site)
477
+ assert_equal @layout, assigns(:cms_layout)
426
478
  assert assigns(:cms_page)
427
479
  assert assigns(:cms_page).new_record?
428
480
  end
429
481
  end
430
482
 
431
483
  def test_update_preview
432
- page = comfy_cms_pages(:default)
433
484
  assert_no_difference 'Comfy::Cms::Page.count' do
434
- put :update, :site_id => page.site, :preview => 'Preview', :id => page, :page => {
435
- :label => 'Updated Label',
436
- :blocks_attributes => [
437
- { :identifier => 'default_page_text',
438
- :content => 'preview content' }
439
- ]
485
+ r :put, comfy_admin_cms_site_page_path(site_id: @site, id: @page), params: {
486
+ preview: 'Preview',
487
+ page: {
488
+ label: 'Updated Label',
489
+ fragments_attributes: [
490
+ { identifier: 'content',
491
+ content: 'preview content' }
492
+ ]
493
+ }
440
494
  }
441
495
  assert_response :success
442
496
  assert_match /preview content/, response.body
443
- page.reload
444
- assert_not_equal 'Updated Label', page.label
497
+ @page.reload
498
+ assert_not_equal 'Updated Label', @page.label
445
499
 
446
- assert_equal page.site, assigns(:cms_site)
447
- assert_equal page.layout, assigns(:cms_layout)
448
- assert_equal page, assigns(:cms_page)
500
+ assert_equal @page.site, assigns(:cms_site)
501
+ assert_equal @page.layout, assigns(:cms_layout)
502
+ assert_equal @page, assigns(:cms_page)
449
503
  end
450
504
  end
451
505
 
452
506
  def test_preview_language
453
- site = @site
454
- site.update_columns(:locale => 'de')
455
- layout = comfy_cms_layouts(:default)
507
+ @site.update_column(:locale, 'de')
456
508
 
457
509
  assert_equal :en, I18n.locale
458
510
 
459
- post :create, :site_id => site, :preview => 'Preview', :page => {
460
- :label => 'Test Page',
461
- :slug => 'test-page',
462
- :parent_id => comfy_cms_pages(:default).id,
463
- :layout_id => layout.id,
464
- :blocks_attributes => [
465
- { :identifier => 'default_page_text',
466
- :content => 'preview content' }
467
- ]
511
+ r :post, comfy_admin_cms_site_pages_path(site_id: @site), params: {
512
+ preview: 'Preview',
513
+ page: {
514
+ label: 'Test Page',
515
+ slug: 'test-page',
516
+ parent_id: @page.id,
517
+ layout_id: @layout.id,
518
+ fragments_attributes: [
519
+ { identifier: 'content',
520
+ content: 'preview content' }
521
+ ]
522
+ }
468
523
  }
469
524
 
470
525
  assert_response :success
@@ -473,7 +528,7 @@ class Comfy::Admin::Cms::PagesControllerTest < ActionController::TestCase
473
528
 
474
529
  def test_get_new_with_no_layout
475
530
  Comfy::Cms::Layout.destroy_all
476
- get :new, :site_id => @site
531
+ r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
477
532
  assert_response :redirect
478
533
  assert_redirected_to new_comfy_admin_cms_site_layout_path(@site)
479
534
  assert_equal 'No Layouts found. Please create one.', flash[:danger]
@@ -481,20 +536,18 @@ class Comfy::Admin::Cms::PagesControllerTest < ActionController::TestCase
481
536
 
482
537
  def test_get_edit_with_no_layout
483
538
  Comfy::Cms::Layout.destroy_all
484
- page = comfy_cms_pages(:default)
485
- get :edit, :site_id => page.site, :id => page
539
+ r :get, edit_comfy_admin_cms_site_page_path(site_id: @site, id: @page)
486
540
  assert_response :redirect
487
- assert_redirected_to new_comfy_admin_cms_site_layout_path(page.site)
541
+ assert_redirected_to new_comfy_admin_cms_site_layout_path(@site)
488
542
  assert_equal 'No Layouts found. Please create one.', flash[:danger]
489
543
  end
490
544
 
491
545
  def test_get_toggle_branch
492
- page = comfy_cms_pages(:default)
493
- xhr :get, :toggle_branch, :site_id => page.site, :id => page, :format => :js
546
+ r :get, toggle_branch_comfy_admin_cms_site_page_path(site_id: @site, id: @page), xhr: true, params: {format: :js}
494
547
  assert_response :success
495
- assert_equal [page.id.to_s], session[:cms_page_tree]
548
+ assert_equal [@page.id.to_s], session[:cms_page_tree]
496
549
 
497
- xhr :get, :toggle_branch, :site_id => page.site, :id => page, :format => :js
550
+ r :get, toggle_branch_comfy_admin_cms_site_page_path(site_id: @site, id: @page), xhr: true, params: {format: :js}
498
551
  assert_response :success
499
552
  assert_equal [], session[:cms_page_tree]
500
553
  end
@@ -502,15 +555,17 @@ class Comfy::Admin::Cms::PagesControllerTest < ActionController::TestCase
502
555
  def test_reorder
503
556
  page_one = comfy_cms_pages(:child)
504
557
  page_two = @site.pages.create!(
505
- :parent => comfy_cms_pages(:default),
506
- :layout => comfy_cms_layouts(:default),
507
- :label => 'test',
508
- :slug => 'test'
558
+ parent: @page,
559
+ layout: @layout,
560
+ label: 'test',
561
+ slug: 'test'
509
562
  )
510
563
  assert_equal 0, page_one.position
511
564
  assert_equal 1, page_two.position
512
565
 
513
- put :reorder, :site_id => @site, :comfy_cms_page => [page_two.id, page_one.id]
566
+ r :put, reorder_comfy_admin_cms_site_pages_path(site_id: @site), params: {
567
+ comfy_cms_page: [page_two.id, page_one.id]
568
+ }
514
569
  assert_response :success
515
570
  page_one.reload
516
571
  page_two.reload
@@ -518,5 +573,4 @@ class Comfy::Admin::Cms::PagesControllerTest < ActionController::TestCase
518
573
  assert_equal 1, page_one.position
519
574
  assert_equal 0, page_two.position
520
575
  end
521
-
522
576
  end