comfortable_mexican_sofa 1.12.11 → 2.0.0

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 (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