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
@@ -0,0 +1,181 @@
1
+ require_relative '../../../../test_helper'
2
+
3
+ class Comfy::Admin::Cms::TranslationsControllerTest < ActionDispatch::IntegrationTest
4
+
5
+ setup do
6
+ @site = comfy_cms_sites(:default)
7
+ @layout = comfy_cms_layouts(:default)
8
+ @page = comfy_cms_pages(:default)
9
+ @translation = comfy_cms_translations(:default)
10
+ end
11
+
12
+ def test_get_new
13
+ r :get, new_comfy_admin_cms_site_page_translation_path(@site, @page)
14
+ assert_response :success
15
+ assert assigns(:translation)
16
+ assert_template :new
17
+ assert_select "form[action='/admin/sites/#{@site.id}/pages/#{@page.id}/translations']"
18
+ end
19
+
20
+ def test_get_new_with_field_wysiwyg
21
+ @layout.update_column(:content, "{{cms:wysiwyg test}}")
22
+ r :get, new_comfy_admin_cms_site_page_translation_path(@site, @page)
23
+ assert_response :success
24
+ assert_select "textarea[name='translation[fragments_attributes][0][content]'][data-cms-rich-text]"
25
+ assert_select "input[type='hidden'][name='translation[fragments_attributes][0][identifier]'][value='test']"
26
+ assert_select "input[type='hidden'][name='translation[fragments_attributes][0][tag]'][value='wysiwyg']"
27
+ end
28
+
29
+ def test_get_edit
30
+ r :get, edit_comfy_admin_cms_site_page_translation_path(@site, @page, @translation)
31
+ assert_response :success
32
+ assert assigns(:translation)
33
+ assert_template :edit
34
+ assert_select "form[action='/admin/sites/#{@site.id}/pages/#{@page.id}/translations/#{@translation.id}']"
35
+ end
36
+
37
+ def test_get_edit_failure
38
+ r :get, edit_comfy_admin_cms_site_page_translation_path(@site, @page, "invalid")
39
+ assert_response :redirect
40
+ assert_redirected_to edit_comfy_admin_cms_site_page_path(@site, @page)
41
+ assert_equal "Translation not found", flash[:danger]
42
+ end
43
+
44
+ def test_create
45
+ assert_count_difference [Comfy::Cms::Translation] do
46
+ path = comfy_admin_cms_site_page_translations_path(@site, @page)
47
+ r :post, path, params: {translation: {
48
+ locale: "es",
49
+ label: "Test Translation"
50
+ }}
51
+ assert_response :redirect
52
+ translation = Comfy::Cms::Translation.last
53
+ assert_equal @page, translation.page
54
+ assert_redirected_to action: :edit, id: translation
55
+ assert_equal "Translation created", flash[:success]
56
+ end
57
+ end
58
+
59
+ def test_creation_failure
60
+ assert_count_no_difference [Comfy::Cms::Translation] do
61
+ path = comfy_admin_cms_site_page_translations_path(@site, @page)
62
+ r :post, path, params: {translation: { }}
63
+ assert_response :success
64
+ assert_template :new
65
+ assert_equal "Failed to create translation", flash[:danger]
66
+ end
67
+ end
68
+
69
+ def test_update
70
+ path = comfy_admin_cms_site_page_translation_path(@site, @page, @translation)
71
+ r :put, path, params: {translation: {
72
+ label: "Updated Translation"
73
+ }}
74
+ assert_response :redirect
75
+ assert_redirected_to action: :edit, site_id: @site, page_id: @page, id: @translation
76
+ assert_equal "Translation updated", flash[:success]
77
+ @translation.reload
78
+ assert_equal "Updated Translation", @translation.label
79
+ end
80
+
81
+ def test_update_failure
82
+ path = comfy_admin_cms_site_page_translation_path(@site, @page, @translation)
83
+ r :put, path, params: {translation: {
84
+ locale: ""
85
+ }}
86
+ assert_response :success
87
+ assert_template :edit
88
+ @translation.reload
89
+ assert_not_equal "", @translation.locale
90
+ assert_equal "Failed to update translation", flash[:danger]
91
+ end
92
+
93
+ def test_destroy
94
+ assert_count_difference [Comfy::Cms::Translation], -1 do
95
+ r :delete, comfy_admin_cms_site_page_translation_path(@site, @page, @translation)
96
+ assert_response :redirect
97
+ assert_redirected_to edit_comfy_admin_cms_site_page_path(@site, @page)
98
+ assert_equal "Translation deleted", flash[:success]
99
+ end
100
+ end
101
+
102
+ def test_get_form_fragments
103
+ path = form_fragments_comfy_admin_cms_site_page_translation_path(@site, @page, @translation)
104
+ r :get, path, xhr: true, params: {
105
+ layout_id: comfy_cms_layouts(:nested).id
106
+ }
107
+ assert_response :success
108
+ assert assigns(:translation)
109
+ assert_equal 2, assigns(:translation).fragment_nodes.size
110
+ assert_template :form_fragments
111
+
112
+ r :get, path, xhr: true, params: {
113
+ layout_id: @layout.id
114
+ }
115
+ assert_response :success
116
+ assert assigns(:translation)
117
+ assert_equal 1, assigns(:translation).fragment_nodes.size
118
+ assert_template :form_fragments
119
+ end
120
+
121
+ def test_get_form_fragments_for_new_translation
122
+ path = form_fragments_comfy_admin_cms_site_page_translation_path(@site, @page, 0)
123
+ r :get, path, xhr: true, params: {
124
+ layout_id: @layout.id
125
+ }
126
+ assert_response :success
127
+ assert assigns(:translation)
128
+ assert_equal 1, assigns(:translation).fragment_nodes.size
129
+ assert_template :form_fragments
130
+ end
131
+
132
+ def test_creation_preview
133
+ assert_count_no_difference [Comfy::Cms::Translation] do
134
+ r :post, comfy_admin_cms_site_page_translations_path(@site, @page), params: {
135
+ preview: 'Preview',
136
+ translation: {
137
+ label: "Test Page",
138
+ layout_id: @layout.id,
139
+ locale: "fr",
140
+ fragments_attributes: [
141
+ { identifier: 'content',
142
+ content: 'preview content' }
143
+ ]
144
+ }
145
+ }
146
+ assert_response :success
147
+ assert_match /preview content/, response.body
148
+ assert_equal 'text/html', response.content_type
149
+
150
+ assert_equal @site, assigns(:cms_site)
151
+ assert_equal @layout, assigns(:cms_layout)
152
+ assert assigns(:cms_page)
153
+ assert assigns(:translation).new_record?
154
+
155
+ assert_equal :fr, I18n.locale
156
+ end
157
+ end
158
+
159
+ def test_update_preview
160
+ assert_count_no_difference [Comfy::Cms::Page] do
161
+ r :put, comfy_admin_cms_site_page_translation_path(@site, @page, @translation), params: {
162
+ preview: 'Preview',
163
+ translation: {
164
+ label: 'Updated Label',
165
+ fragments_attributes: [
166
+ { identifier: 'content',
167
+ content: 'preview content' }
168
+ ]
169
+ }
170
+ }
171
+ assert_response :success
172
+ assert_match /preview content/, response.body
173
+ @translation.reload
174
+ assert_not_equal 'Updated Label', @page.label
175
+
176
+ assert_equal @page.site, assigns(:cms_site)
177
+ assert_equal @page.layout, assigns(:cms_layout)
178
+ assert_equal @page, assigns(:cms_page)
179
+ end
180
+ end
181
+ end
@@ -1,58 +1,60 @@
1
1
  require_relative '../../../test_helper'
2
2
 
3
- class Comfy::Cms::AssetsControllerTest < ActionController::TestCase
3
+ class Comfy::Cms::AssetsControllerTest < ActionDispatch::IntegrationTest
4
+
5
+ def setup
6
+ @site = comfy_cms_sites(:default)
7
+ @layout = comfy_cms_layouts(:default)
8
+ end
4
9
 
5
10
  def test_render_css_with_site_with_path
6
- site = comfy_cms_sites(:default)
7
- site.update_column(:path, 'some/path')
8
- get :render_css, :site_id => site, :identifier => comfy_cms_layouts(:default).identifier
11
+ @site.update_column(:path, 'some/path')
12
+
13
+ get comfy_cms_render_css_path(site_id: @site, identifier: @layout.identifier)
9
14
  assert_response :success
10
15
  assert_match 'text/css', response.content_type
11
- assert_equal comfy_cms_layouts(:default).css, response.body
16
+ assert_equal @layout.css, response.body
12
17
  end
13
18
 
14
19
  def test_render_css_without_cache_buster
15
- get :render_css, :site_id => comfy_cms_sites(:default), :identifier => comfy_cms_layouts(:default).identifier
20
+ get comfy_cms_render_css_path(site_id: @site, identifier: @layout.identifier)
16
21
  assert_response :success
17
22
  assert_match 'text/css', response.content_type
18
- assert_nil response.headers['Cache-Control']
19
- assert_equal comfy_cms_layouts(:default).css, response.body
23
+ assert_equal 'max-age=0, private, must-revalidate', response.headers['Cache-Control']
24
+ assert_equal @layout.css, response.body
20
25
  end
21
26
 
22
27
  def test_render_css_with_cache_buster
23
- layout = comfy_cms_layouts(:default)
24
- get :render_css, :site_id => comfy_cms_sites(:default), :identifier => layout.identifier, :cache_buster => layout.cache_buster
28
+ get comfy_cms_render_css_path(site_id: @site, identifier: @layout.identifier, cache_buster: @layout.cache_buster)
25
29
  assert_response :success
26
30
  assert_match 'text/css', response.content_type
27
- assert_equal 'public, max-age=31557600', response.headers['Cache-Control']
28
- assert_equal comfy_cms_layouts(:default).css, response.body
31
+ assert_equal 'max-age=31556952, public', response.headers['Cache-Control']
32
+ assert_equal @layout.css, response.body
29
33
  end
30
34
 
31
35
  def test_render_css_not_found
32
- get :render_css, :site_id => comfy_cms_sites(:default).id, :identifier => 'bogus'
36
+ get comfy_cms_render_css_path(site_id: @site, identifier: 'invalid')
33
37
  assert_response 404
34
38
  end
35
39
 
36
40
  def test_render_js_without_cache_buster
37
- xhr :get, :render_js, :site_id => comfy_cms_sites(:default).id, :identifier => comfy_cms_layouts(:default).identifier
41
+ get comfy_cms_render_js_path(site_id: @site, identifier: @layout.identifier)
38
42
  assert_response :success
39
43
  assert_equal 'application/javascript', response.content_type
40
- assert_nil response.headers['Cache-Control']
41
- assert_equal comfy_cms_layouts(:default).js, response.body
44
+ assert_equal 'max-age=0, private, must-revalidate', response.headers['Cache-Control']
45
+ assert_equal @layout.js, response.body
42
46
  end
43
47
 
44
48
  def test_render_js_with_cache_buster
45
- layout = comfy_cms_layouts(:default)
46
- xhr :get, :render_js, :site_id => comfy_cms_sites(:default).id, :identifier => layout.identifier, :cache_buster => layout.cache_buster
49
+ get comfy_cms_render_js_path(site_id: @site, identifier: @layout.identifier, cache_buster: @layout.cache_buster)
47
50
  assert_response :success
48
51
  assert_equal 'application/javascript', response.content_type
49
- assert_equal 'public, max-age=31557600', response.headers['Cache-Control']
50
- assert_equal comfy_cms_layouts(:default).js, response.body
52
+ assert_equal 'max-age=31556952, public', response.headers['Cache-Control']
53
+ assert_equal @layout.js, response.body
51
54
  end
52
55
 
53
56
  def test_render_js_not_found
54
- xhr :get, :render_js, :site_id => comfy_cms_sites(:default).id, :identifier => 'bogus'
57
+ get comfy_cms_render_js_path(site_id: @site, identifier: 'bogus')
55
58
  assert_response 404
56
59
  end
57
-
58
60
  end
@@ -1,112 +1,99 @@
1
- require_relative '../../../test_helper'
1
+ require_relative "../../../test_helper"
2
2
 
3
- class Comfy::Cms::ContentControllerTest < ActionController::TestCase
3
+ class Comfy::Cms::ContentControllerTest < ActionDispatch::IntegrationTest
4
4
 
5
- def test_show
6
- get :show, :cms_path => ''
7
- assert_equal comfy_cms_sites(:default), assigns(:cms_site)
8
- assert_equal comfy_cms_layouts(:default), assigns(:cms_layout)
9
- assert_equal comfy_cms_pages(:default), assigns(:cms_page)
10
-
11
- assert_response :success
12
- assert_equal rendered_content_formatter(
13
- '
14
- layout_content_a
15
- default_page_text_content_a
16
- default_snippet_content
17
- default_page_text_content_b
18
- layout_content_b
19
- default_snippet_content
20
- layout_content_c'
21
- ), response.body
22
- assert_equal 'text/html', response.content_type
23
-
24
- assert_equal :en, assigns(:locale)
25
- assert_equal :en, I18n.locale
5
+ setup do
6
+ @site = comfy_cms_sites(:default)
7
+ @layout = comfy_cms_layouts(:default)
8
+ @page = comfy_cms_pages(:default)
9
+ @translation = comfy_cms_translations(:default)
26
10
  end
27
11
 
28
- def test_show_with_locale
29
- comfy_cms_sites(:default).update_column(:locale, 'fr')
30
- get :show, :cms_path => ''
12
+ def test_show
13
+ get comfy_cms_render_page_path(cms_path: "")
14
+ assert_equal @site, assigns(:cms_site)
15
+ assert_equal @layout, assigns(:cms_layout)
16
+ assert_equal @page, assigns(:cms_page)
17
+
31
18
  assert_response :success
19
+ assert_equal "content", response.body
20
+ assert_equal "text/html", response.content_type
32
21
 
33
- assert_equal :fr, assigns(:locale)
34
- assert_equal :fr, I18n.locale
22
+ assert_equal :en, I18n.locale
35
23
  end
36
24
 
37
25
  def test_show_default_html
38
- request.headers["Accept"] = "*/*"
39
- get :show, :cms_path => ''
26
+ get comfy_cms_render_page_path(cms_path: ""), headers: {"Accept" => "*/*"}
40
27
  assert_response :success
41
- assert_equal 'text/html', response.content_type
28
+ assert_equal "text/html", response.content_type
42
29
  end
43
30
 
44
31
  def test_show_as_json
45
- get :show, :cms_path => '', :format => 'json'
32
+ get comfy_cms_render_page_path(cms_path: ""), as: :json
46
33
  assert_response :success
47
- assert_equal 'application/json', response.content_type
48
-
49
- content = rendered_content_formatter(
50
- '
51
- layout_content_a
52
- default_page_text_content_a
53
- default_snippet_content
54
- default_page_text_content_b
55
- layout_content_b
56
- default_snippet_content
57
- layout_content_c'
58
- )
59
- page = comfy_cms_pages(:default)
34
+ assert_equal "application/json", response.content_type
35
+
60
36
  json_response = JSON.parse(response.body)
61
- assert_equal page.id, json_response['id']
62
- assert_equal page.site.id, json_response['site_id']
63
- assert_equal page.layout.id, json_response['layout_id']
37
+ assert_equal @page.id, json_response['id']
38
+ assert_equal @page.site.id, json_response['site_id']
39
+ assert_equal @page.layout.id, json_response['layout_id']
64
40
  assert_nil json_response['parent_id']
65
41
  assert_nil json_response['target_page_id']
66
42
  assert_equal 'Default Page', json_response['label']
67
43
  assert_nil json_response['slug']
68
44
  assert_equal '/', json_response['full_path']
69
- assert_equal content, json_response['content_cache']
45
+ assert_equal "content", json_response['content']
70
46
  assert_equal 0, json_response['position']
71
47
  assert_equal 1, json_response['children_count']
72
48
  assert_equal true, json_response['is_published']
73
49
  end
74
50
 
51
+ def test_show_as_json_with_erb
52
+ @page.update_attributes(fragments_attributes: [
53
+ {identifier: 'content', content: '{{ cms:helper pluralize, 2, monkey }}'}
54
+ ])
55
+ get comfy_cms_render_page_path(cms_path: ""), as: :json
56
+ assert_response :success
57
+
58
+ json_response = JSON.parse(response.body)
59
+ assert_equal "2 monkeys", json_response['content']
60
+ end
61
+
75
62
  def test_show_with_custom_mimetype
76
- layout = comfy_cms_sites(:default).layouts.create!(
77
- :label => 'RSS Layout',
78
- :identifier => 'rss-layout',
79
- :content => '{{cms:field:mime_type}}{{cms:page:content}}',
63
+ layout = @site.layouts.create!(
64
+ label: 'RSS Layout',
65
+ identifier: 'rss-layout',
66
+ content: '{{cms:text mime_type, render: false}}{{cms:textarea content}}',
80
67
  )
81
- page = comfy_cms_sites(:default).pages.create!(
82
- :label => 'rss',
83
- :slug => 'rss',
84
- :parent_id => comfy_cms_pages(:default).id,
85
- :layout_id => layout.id,
86
- :is_published => true,
87
- :blocks_attributes => [
88
- { :identifier => 'content',
89
- :content => 'content' },
90
- { :identifier => 'mime_type',
91
- :content => 'application/rss+xml' }
68
+ page = @site.pages.create!(
69
+ label: 'rss',
70
+ slug: 'rss',
71
+ parent_id: comfy_cms_pages(:default).id,
72
+ layout_id: layout.id,
73
+ is_published: true,
74
+ fragments_attributes: [
75
+ { identifier: 'content',
76
+ content: 'content' },
77
+ { identifier: 'mime_type',
78
+ content: 'application/rss+xml' }
92
79
  ]
93
80
  )
94
- get :show, :cms_path => 'rss'
81
+ get comfy_cms_render_page_path(cms_path: "rss")
95
82
  assert_response :success
96
- assert_equal 'application/rss+xml', response.content_type
83
+ assert_equal "application/rss+xml", response.content_type
97
84
  end
98
85
 
99
86
  def test_show_with_app_layout
100
- comfy_cms_layouts(:default).update_columns(:app_layout => 'comfy/admin/cms')
101
- get :show, :cms_path => ''
87
+ @layout.update_columns(app_layout: 'comfy/admin/cms')
88
+ get comfy_cms_render_page_path(cms_path: '')
102
89
  assert_response :success
103
90
  assert assigns(:cms_page)
104
91
  assert_select "body.c-comfy-cms-content.a-show"
105
92
  end
106
93
 
107
94
  def test_show_with_xhr
108
- comfy_cms_layouts(:default).update_columns(:app_layout => 'cms_admin')
109
- xhr :get, :show, :cms_path => ''
95
+ @layout.update_columns(app_layout: 'cms_admin')
96
+ get comfy_cms_render_page_path(cms_path: ""), xhr: true
110
97
  assert_response :success
111
98
  assert assigns(:cms_page)
112
99
  assert_no_select "body.c-comfy-cms-content.a-show"
@@ -114,26 +101,26 @@ class Comfy::Cms::ContentControllerTest < ActionController::TestCase
114
101
 
115
102
  def test_show_not_found
116
103
  assert_exception_raised ActionController::RoutingError, 'Page Not Found at: "doesnotexist"' do
117
- get :show, :cms_path => 'doesnotexist'
104
+ get comfy_cms_render_page_path(cms_path: 'doesnotexist')
118
105
  end
119
106
  end
120
107
 
121
108
  def test_show_not_found_with_custom_404
122
- page = comfy_cms_sites(:default).pages.create!(
123
- :label => '404',
124
- :slug => '404',
125
- :parent_id => comfy_cms_pages(:default).id,
126
- :layout_id => comfy_cms_layouts(:default).id,
127
- :is_published => '1',
128
- :blocks_attributes => [
129
- { :identifier => 'default_page_text',
130
- :content => 'custom 404 page content' }
109
+ page = @site.pages.create!(
110
+ label: '404',
111
+ slug: '404',
112
+ parent_id: @page.id,
113
+ layout_id: @layout.id,
114
+ is_published: '1',
115
+ fragments_attributes: [
116
+ { identifier: 'content',
117
+ content: 'custom 404 page content' }
131
118
  ]
132
119
  )
133
120
  assert_equal '/404', page.full_path
134
121
  assert page.is_published?
135
- get :show, :cms_path => 'doesnotexist'
136
- assert_response 404
122
+ get comfy_cms_render_page_path(cms_path: 'doesnotexist')
123
+ assert_response :not_found
137
124
  assert assigns(:cms_page)
138
125
  assert_match /custom 404 page content/, response.body
139
126
  end
@@ -142,105 +129,104 @@ class Comfy::Cms::ContentControllerTest < ActionController::TestCase
142
129
  Comfy::Cms::Site.destroy_all
143
130
 
144
131
  assert_exception_raised ActionController::RoutingError, 'Site Not Found' do
145
- get :show, :cms_path => ''
132
+ get comfy_cms_render_page_path(cms_path: "")
146
133
  end
147
134
  end
148
135
 
149
136
  def test_show_with_no_layout
150
137
  Comfy::Cms::Layout.destroy_all
151
138
 
152
- get :show, :cms_path => ''
153
- assert_response 404
154
- assert_equal 'Layout Not Found', response.body
139
+ get comfy_cms_render_page_path(cms_path: "")
140
+ assert_response :ok
141
+ assert_equal "", response.body
155
142
  end
156
143
 
157
144
  def test_show_with_redirect
158
- comfy_cms_pages(:child).update_columns(:target_page_id => comfy_cms_pages(:default).id)
159
- assert_equal comfy_cms_pages(:default), comfy_cms_pages(:child).target_page
160
- get :show, :cms_path => 'child-page'
145
+ comfy_cms_pages(:child).update_columns(target_page_id: @page.id)
146
+ assert_equal @page, comfy_cms_pages(:child).target_page
147
+ get comfy_cms_render_page_path(cms_path: 'child-page')
161
148
  assert_response :redirect
162
- assert_redirected_to comfy_cms_pages(:default).full_path
149
+ assert_redirected_to @page.full_path
163
150
  end
164
151
 
165
152
  def test_show_with_redirect_and_site_path
166
- comfy_cms_sites(:default).update_column(:path, '/test-site-path')
167
- comfy_cms_pages(:child).update_columns(:target_page_id => comfy_cms_pages(:default).id)
168
- assert_equal comfy_cms_pages(:default), comfy_cms_pages(:child).target_page
169
- get :show, :cms_path => '/test-site-path/child-page'
153
+ @site.update_column(:path, 'test-site-path')
154
+ comfy_cms_pages(:child).update_columns(target_page_id: @page.id)
155
+ assert_equal @page, comfy_cms_pages(:child).target_page
156
+ get comfy_cms_render_page_path(cms_path: '/test-site-path/child-page')
170
157
  assert_response :redirect
171
- assert_redirected_to "/test-site-path#{comfy_cms_pages(:default).full_path}"
158
+ assert_redirected_to "/test-site-path#{@page.full_path}"
172
159
  end
173
160
 
174
161
  def test_show_unpublished
175
- page = comfy_cms_pages(:default)
176
- page.update_columns(:is_published => false)
162
+ @page.update_columns(is_published: false)
177
163
 
178
164
  assert_exception_raised ActionController::RoutingError, 'Page Not Found at: ""' do
179
- get :show, :cms_path => ''
165
+ get comfy_cms_render_page_path(cms_path: '')
180
166
  end
181
167
  end
182
168
 
183
- def test_show_with_irb_disabled
184
- assert_equal false, ComfortableMexicanSofa.config.allow_irb
169
+ def test_show_with_erb_disabled
170
+ assert_equal false, ComfortableMexicanSofa.config.allow_erb
185
171
 
186
- irb_page = comfy_cms_sites(:default).pages.create!(
187
- :label => 'irb',
188
- :slug => 'irb',
189
- :parent_id => comfy_cms_pages(:default).id,
190
- :layout_id => comfy_cms_layouts(:default).id,
191
- :is_published => '1',
192
- :blocks_attributes => [
193
- { :identifier => 'default_page_text',
194
- :content => 'text <%= 2 + 2 %> text' }
172
+ irb_page = @site.pages.create!(
173
+ label: 'erb',
174
+ slug: 'erb',
175
+ parent_id: @page.id,
176
+ layout_id: @layout.id,
177
+ is_published: '1',
178
+ fragments_attributes: [
179
+ { identifier: 'content',
180
+ content: 'text <%= 2 + 2 %> text' }
195
181
  ]
196
182
  )
197
- get :show, :cms_path => 'irb'
183
+ get comfy_cms_render_page_path(cms_path: 'erb')
198
184
  assert_response :success
199
185
  assert_match "text &lt;%= 2 + 2 %&gt; text", response.body
200
186
  end
201
187
 
202
188
  def test_show_with_irb_enabled
203
- ComfortableMexicanSofa.config.allow_irb = true
204
-
205
- irb_page = comfy_cms_sites(:default).pages.create!(
206
- :label => 'irb',
207
- :slug => 'irb',
208
- :parent_id => comfy_cms_pages(:default).id,
209
- :layout_id => comfy_cms_layouts(:default).id,
210
- :is_published => '1',
211
- :blocks_attributes => [
212
- { :identifier => 'default_page_text',
213
- :content => 'text <%= 2 + 2 %> text' }
189
+ ComfortableMexicanSofa.config.allow_erb = true
190
+
191
+ irb_page = @site.pages.create!(
192
+ label: 'erb',
193
+ slug: 'erb',
194
+ parent_id: @page.id,
195
+ layout_id: @layout.id,
196
+ is_published: '1',
197
+ fragments_attributes: [
198
+ { identifier: 'content',
199
+ content: 'text <%= 2 + 2 %> text' }
214
200
  ]
215
201
  )
216
- get :show, :cms_path => 'irb'
202
+ get comfy_cms_render_page_path(cms_path: 'erb')
217
203
  assert_response :success
218
204
  assert_match "text 4 text", response.body
219
205
  end
220
206
 
221
- def test_render_sitemap
222
- get :render_sitemap, :format => :xml
223
- assert_response :success
224
- assert_match '<loc>http://test.host/child-page</loc>', response.body
225
- end
207
+ def test_show_with_translation
208
+ @translation.update_column(:content_cache, "translation content")
209
+ I18n.locale = @translation.locale
226
210
 
227
- def test_render_sitemap_with_path
228
- site = comfy_cms_sites(:default)
229
- site.update_columns(:path => 'en')
211
+ assert_no_difference -> {@page.fragments.count} do
212
+ get comfy_cms_render_page_path(cms_path: "")
213
+ assert_equal "translation content", response.body
214
+ end
215
+ end
230
216
 
231
- get :render_sitemap, :cms_path => site.path, :format => :xml
232
- assert_response :success
233
- assert_equal comfy_cms_sites(:default), assigns(:cms_site)
234
- assert_match '<loc>http://test.host/en/child-page</loc>', response.body
217
+ def test_show_with_translation_not_found
218
+ I18n.locale = :ja
219
+ assert_exception_raised ActionController::RoutingError, 'Page Not Found at: ""' do
220
+ get comfy_cms_render_page_path(cms_path: "")
221
+ end
235
222
  end
236
223
 
237
- def test_render_sitemap_with_path_invalid_with_single_site
238
- site = comfy_cms_sites(:default)
239
- site.update_columns(:path => 'en')
224
+ def test_show_with_translation_unpublished
225
+ @translation.update_column(:is_published, false)
226
+ I18n.locale = @translation.locale
240
227
 
241
- assert_exception_raised ActionController::RoutingError, 'Site Not Found' do
242
- get :render_sitemap, :cms_path => 'fr', :format => :xml
228
+ assert_exception_raised ActionController::RoutingError, 'Page Not Found at: ""' do
229
+ get comfy_cms_render_page_path(cms_path: "")
243
230
  end
244
231
  end
245
-
246
232
  end