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,52 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ class ContentTagsHelperTest < ActiveSupport::TestCase
4
+
5
+ def test_init
6
+ tag = ComfortableMexicanSofa::Content::Tag::Helper.new(@page, "helper_method")
7
+ assert_equal "helper_method", tag.method_name
8
+ assert_equal [], tag.params
9
+ end
10
+
11
+ def test_init_with_params
12
+ tag = ComfortableMexicanSofa::Content::Tag::Helper.new(@page, "helper_method, param, key: val")
13
+ assert_equal "helper_method", tag.method_name
14
+ assert_equal ["param", {"key" => "val"}], tag.params
15
+ end
16
+
17
+ def test_init_without_method_name
18
+ message = "Missing method name for helper tag"
19
+ assert_exception_raised ComfortableMexicanSofa::Content::Tag::Error, message do
20
+ ComfortableMexicanSofa::Content::Tag::Helper.new(@page, "")
21
+ end
22
+ end
23
+
24
+ def test_content
25
+ tag = ComfortableMexicanSofa::Content::Tag::Helper.new(@page, "method_name, param, key: val")
26
+ assert_equal "<%= method_name(\"param\",{\"key\"=>\"val\"}) %>", tag.content
27
+ end
28
+
29
+ def test_render
30
+ tag = ComfortableMexicanSofa::Content::Tag::Helper.new(@page, "method_name, param, key: val")
31
+ assert_equal "<%= method_name(\"param\",{\"key\"=>\"val\"}) %>", tag.render
32
+ end
33
+
34
+ def test_render_with_whitelist
35
+ ComfortableMexicanSofa.config.allowed_helpers = [:tester, :eval]
36
+ tag = ComfortableMexicanSofa::Content::Tag::Helper.new(@page, "tester")
37
+ assert_equal "<%= tester() %>", tag.render
38
+
39
+ tag = ComfortableMexicanSofa::Content::Tag::Helper.new(@page, "eval")
40
+ assert_equal "<%= eval() %>", tag.render
41
+
42
+ tag = ComfortableMexicanSofa::Content::Tag::Helper.new(@page, "not_whitelisted")
43
+ assert_nil tag.render
44
+ end
45
+
46
+ def test_render_with_blacklist
47
+ ComfortableMexicanSofa::Content::Tag::Helper::BLACKLIST.each do |method|
48
+ tag = ComfortableMexicanSofa::Content::Tag::Helper.new(@page, method)
49
+ assert_nil tag.render
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,33 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ class ContentTagsMarkdownTest < ActiveSupport::TestCase
4
+
5
+ setup do
6
+ @page = comfy_cms_pages(:default)
7
+ end
8
+
9
+ def test_init
10
+ tag = ComfortableMexicanSofa::Content::Tag::Markdown.new(@page, "test")
11
+ assert_equal "test", tag.identifier
12
+ end
13
+
14
+ def test_content
15
+ frag = comfy_cms_fragments(:default)
16
+ tag = ComfortableMexicanSofa::Content::Tag::Markdown.new(@page, frag.identifier)
17
+ assert_equal frag, tag.fragment
18
+ assert_equal frag.content, tag.content
19
+ end
20
+
21
+ def test_render
22
+ frag = comfy_cms_fragments(:default)
23
+ frag.update_column(:content, "**test**")
24
+ tag = ComfortableMexicanSofa::Content::Tag::Markdown.new(@page, frag.identifier)
25
+ assert_equal "<p><strong>test</strong></p>\n", tag.render
26
+ end
27
+
28
+ def test_render_unrenderable
29
+ frag = comfy_cms_fragments(:default)
30
+ tag = ComfortableMexicanSofa::Content::Tag::Markdown.new(@page, "#{frag.identifier}, render: false")
31
+ assert_equal "", tag.render
32
+ end
33
+ end
@@ -0,0 +1,13 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ class ContentTagsNumberTest < ActiveSupport::TestCase
4
+
5
+ setup do
6
+ @page = comfy_cms_pages(:default)
7
+ end
8
+
9
+ def test_init
10
+ tag = ComfortableMexicanSofa::Content::Tag::Number.new(@page, "test")
11
+ assert_equal "test", tag.identifier
12
+ end
13
+ end
@@ -0,0 +1,43 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ class ContentTagsPartialTest < ActiveSupport::TestCase
4
+
5
+ def test_init
6
+ tag = ComfortableMexicanSofa::Content::Tag::Partial.new(@page, "path/to/partial")
7
+ assert_equal "path/to/partial", tag.path
8
+ assert_equal ({}), tag.locals
9
+ end
10
+
11
+ def test_init_with_locals
12
+ tag = ComfortableMexicanSofa::Content::Tag::Partial.new(@page, "path/to/partial, key: val")
13
+ assert_equal "path/to/partial", tag.path
14
+ assert_equal ({"key" => "val"}), tag.locals
15
+ end
16
+
17
+ def test_init_without_path
18
+ message = "Missing path for partial tag"
19
+ assert_exception_raised ComfortableMexicanSofa::Content::Tag::Error, message do
20
+ ComfortableMexicanSofa::Content::Tag::Partial.new(@page, "key: val")
21
+ end
22
+ end
23
+
24
+ def test_content
25
+ tag = ComfortableMexicanSofa::Content::Tag::Partial.new(@page, "path/to/partial, key: val")
26
+ assert_equal "<%= render partial: '@path', locals: {\"key\"=>\"val\"} %>", tag.content
27
+ end
28
+
29
+ def test_render
30
+ tag = ComfortableMexicanSofa::Content::Tag::Partial.new(@page, "path/to/partial, key: val")
31
+ assert_equal "<%= render partial: '@path', locals: {\"key\"=>\"val\"} %>", tag.render
32
+ end
33
+
34
+ def test_render_with_whitelist
35
+ ComfortableMexicanSofa.config.allowed_partials = ['safe/path']
36
+
37
+ tag = ComfortableMexicanSofa::Content::Tag::Partial.new(@page, "path/to/partial")
38
+ assert_equal "", tag.render
39
+
40
+ tag = ComfortableMexicanSofa::Content::Tag::Partial.new(@page, "safe/path")
41
+ assert_equal "<%= render partial: '@path', locals: {} %>", tag.render
42
+ end
43
+ end
@@ -0,0 +1,36 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ class ContentTagsSnippetTest < ActiveSupport::TestCase
4
+
5
+ setup do
6
+ @page = comfy_cms_pages(:default)
7
+ end
8
+
9
+ def test_init
10
+ tag = ComfortableMexicanSofa::Content::Tag::Snippet.new(@page, "default")
11
+ assert_equal "default", tag.identifier
12
+ assert_equal comfy_cms_snippets(:default), tag.snippet
13
+ end
14
+
15
+ def test_init_without_identifier
16
+ message = "Missing identifier for snippet tag"
17
+ assert_exception_raised ComfortableMexicanSofa::Content::Tag::Error, message do
18
+ ComfortableMexicanSofa::Content::Tag::Snippet.new(@page, "")
19
+ end
20
+ end
21
+
22
+ def test_snippet_new_record
23
+ tag = ComfortableMexicanSofa::Content::Tag::Snippet.new(@page, "new")
24
+ assert tag.snippet.new_record?
25
+ end
26
+
27
+ def test_content
28
+ tag = ComfortableMexicanSofa::Content::Tag::Snippet.new(@page, "default")
29
+ assert_equal "snippet content", tag.content
30
+ end
31
+
32
+ def test_content_new_record
33
+ tag = ComfortableMexicanSofa::Content::Tag::Snippet.new(@page, "new")
34
+ assert_nil tag.content
35
+ end
36
+ end
@@ -0,0 +1,35 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ class ContentTagsTemplateTest < ActiveSupport::TestCase
4
+
5
+ def test_init
6
+ tag = ComfortableMexicanSofa::Content::Tag::Template.new(@page, "path/to/template")
7
+ assert_equal "path/to/template", tag.path
8
+ end
9
+
10
+ def test_init_without_path
11
+ message = "Missing template path for template tag"
12
+ assert_exception_raised ComfortableMexicanSofa::Content::Tag::Error, message do
13
+ ComfortableMexicanSofa::Content::Tag::Template.new(@page, "")
14
+ end
15
+ end
16
+
17
+ def test_content
18
+ tag = ComfortableMexicanSofa::Content::Tag::Template.new(@page, "path/to/template")
19
+ assert_equal "<%= render template: \"path/to/template\" %>", tag.content
20
+ end
21
+
22
+ def test_render
23
+ tag = ComfortableMexicanSofa::Content::Tag::Template.new(@page, "path/to/template")
24
+ assert_equal "<%= render template: \"path/to/template\" %>", tag.render
25
+ end
26
+
27
+ def test_render_with_whitelist
28
+ ComfortableMexicanSofa.config.allowed_templates = ["allowed/path"]
29
+ tag = ComfortableMexicanSofa::Content::Tag::Template.new(@page, "allowed/path")
30
+ assert_equal "<%= render template: \"allowed/path\" %>", tag.render
31
+
32
+ tag = ComfortableMexicanSofa::Content::Tag::Template.new(@page, "not_allowed/path")
33
+ assert_equal "", tag.render
34
+ end
35
+ end
@@ -0,0 +1,13 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ class ContentTagsTextTest < ActiveSupport::TestCase
4
+
5
+ setup do
6
+ @page = comfy_cms_pages(:default)
7
+ end
8
+
9
+ def test_init
10
+ tag = ComfortableMexicanSofa::Content::Tag::Text.new(@page, "test")
11
+ assert_equal "test", tag.identifier
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ class ContentTagsTextAreaTest < ActiveSupport::TestCase
4
+
5
+ setup do
6
+ @page = comfy_cms_pages(:default)
7
+ end
8
+
9
+ def test_init
10
+ tag = ComfortableMexicanSofa::Content::Tag::TextArea.new(@page, "test")
11
+ assert_equal "test", tag.identifier
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ class ContentTagsWysiwygTest < ActiveSupport::TestCase
4
+
5
+ setup do
6
+ @page = comfy_cms_pages(:default)
7
+ end
8
+
9
+ def test_init
10
+ tag = ComfortableMexicanSofa::Content::Tag::Wysiwyg.new(@page, "test")
11
+ assert_equal "test", tag.identifier
12
+ end
13
+ end
@@ -1,185 +1,220 @@
1
1
  require_relative '../test_helper'
2
2
 
3
3
  class RevisionsTest < ActiveSupport::TestCase
4
-
4
+
5
+ setup do
6
+ @site = comfy_cms_sites(:default)
7
+ @layout = comfy_cms_layouts(:default)
8
+ @page = comfy_cms_pages(:default)
9
+ @snippet = comfy_cms_snippets(:default)
10
+ end
11
+
5
12
  def test_fixtures_validity
6
13
  assert_equal ({
7
- 'content' => 'revision {{cms:page:default_page_text}}',
14
+ 'content' => 'revision {{cms:fragment content}}',
8
15
  'css' => 'revision css',
9
16
  'js' => 'revision js' }), comfy_cms_revisions(:layout).data
10
-
11
- assert_equal ({'blocks_attributes' => [
12
- { 'identifier' => 'default_page_text', 'content' => 'revision page content' },
13
- { 'identifier' => 'default_field_text', 'content' => 'revision field content' }
17
+
18
+ assert_equal ({'fragments_attributes' => [
19
+ {'identifier' => 'content', 'content' => 'old content'},
20
+ {'identifier' => 'title', 'content' => 'old title'}
14
21
  ]}), comfy_cms_revisions(:page).data
15
-
22
+
16
23
  assert_equal ({
17
24
  'content' => 'revision content'
18
25
  }), comfy_cms_revisions(:snippet).data
19
26
  end
20
-
27
+
21
28
  def test_init_for_layouts
22
- assert_equal ['content', 'css', 'js'], comfy_cms_layouts(:default).revision_fields
29
+ assert_equal ['content', 'css', 'js'], @layout.revision_fields
23
30
  end
24
-
31
+
25
32
  def test_init_for_pages
26
- assert_equal ['blocks_attributes'], comfy_cms_pages(:default).revision_fields
33
+ assert_equal ['fragments_attributes'], @page.revision_fields
27
34
  end
28
-
35
+
29
36
  def test_init_for_snippets
30
- assert_equal ['content'], comfy_cms_snippets(:default).revision_fields
37
+ assert_equal ['content'], @snippet.revision_fields
31
38
  end
32
-
39
+
33
40
  def test_creation_for_layout
34
- layout = comfy_cms_layouts(:default)
35
- old_attributes = layout.attributes.slice('content', 'css', 'js')
36
-
37
- assert_difference 'layout.revisions.count' do
38
- layout.update_attributes!(
39
- :content => 'new {{cms:page:content}}',
40
- :js => 'new js'
41
+ old_attributes = @layout.attributes.slice('content', 'css', 'js')
42
+
43
+ assert_difference -> {@layout.revisions.count} do
44
+ @layout.update_attributes!(
45
+ content: 'new {{cms:fragment content}}',
46
+ js: 'new js'
41
47
  )
42
- layout.reload
43
- assert_equal 2, layout.revisions.count
44
- revision = layout.revisions.first
48
+ @layout.reload
49
+ assert_equal 2, @layout.revisions.count
50
+ revision = @layout.revisions.last
45
51
  assert_equal old_attributes, revision.data
46
52
  end
47
53
  end
48
-
54
+
49
55
  def test_creation_for_layout_ignore
50
- layout = comfy_cms_layouts(:default)
51
- assert_no_difference 'layout.revisions.count' do
52
- layout.update_attributes(:label => 'new label')
56
+ assert_no_difference -> {@layout.revisions.count} do
57
+ @layout.update_attributes(label: "new label")
53
58
  end
54
59
  end
55
-
60
+
56
61
  def test_creation_for_page
57
- page = comfy_cms_pages(:default)
58
-
59
- assert_difference 'page.revisions.count' do
60
- page.update_attributes!(
61
- :blocks_attributes => [
62
- { :identifier => 'default_page_text',
63
- :content => 'new content' }
62
+ assert_difference -> {@page.revisions.count} do
63
+ @page.update_attributes!(
64
+ fragments_attributes: [
65
+ { identifier: 'content',
66
+ content: 'new content' }
64
67
  ]
65
68
  )
66
- page.reload
67
- assert_equal 2, page.revisions.count
68
- revision = page.revisions.first
69
+ @page.reload
70
+ assert_equal 2, @page.revisions.count
71
+ revision = @page.revisions.last
72
+
69
73
  assert_equal ({
70
- 'blocks_attributes' => [
71
- { :identifier => 'default_field_text',
72
- :content => 'default_field_text_content' },
73
- { :identifier => 'default_page_text',
74
- :content => "default_page_text_content_a\n{{cms:snippet:default}}\ndefault_page_text_content_b" }]
74
+ "fragments_attributes" => [
75
+ { identifier: "boolean",
76
+ tag: "checkbox",
77
+ content: nil,
78
+ datetime: nil,
79
+ boolean: true },
80
+ { identifier: "file",
81
+ tag: "file",
82
+ content: nil,
83
+ datetime: nil,
84
+ boolean: false },
85
+ { identifier: "datetime",
86
+ tag: "datetime",
87
+ content: nil,
88
+ datetime: comfy_cms_fragments(:datetime).datetime,
89
+ boolean: false },
90
+ { identifier: "content",
91
+ tag: "text",
92
+ content: "content",
93
+ datetime: nil,
94
+ boolean: false }]
75
95
  }), revision.data
76
96
  end
77
97
  end
78
-
98
+
79
99
  def test_creation_for_page_ignore
80
- page = comfy_cms_pages(:default)
81
- assert_no_difference 'page.revisions.count' do
82
- page.update_attributes(:label => 'new label')
100
+ assert_no_difference -> {@page.revisions.count} do
101
+ @page.update_attributes(label: "new label")
83
102
  end
84
103
  end
85
-
104
+
86
105
  def test_creation_for_snippet
87
- snippet = comfy_cms_snippets(:default)
88
- old_attributes = snippet.attributes.slice('content')
89
-
90
- assert_difference 'snippet.revisions.count' do
91
- snippet.update_attributes(:content => 'new content')
92
- snippet.reload
93
- assert_equal 2, snippet.revisions.count
94
- revision = snippet.revisions.first
106
+ old_attributes = @snippet.attributes.slice('content')
107
+
108
+ assert_difference -> {@snippet.revisions.count} do
109
+ @snippet.update_attributes(content: "new content")
110
+ @snippet.reload
111
+ assert_equal 2, @snippet.revisions.count
112
+ revision = @snippet.revisions.last
95
113
  assert_equal old_attributes, revision.data
96
114
  end
97
115
  end
98
-
116
+
99
117
  def test_creation_for_snippet_ignore
100
- snippet = comfy_cms_snippets(:default)
101
- assert_no_difference 'snippet.revisions.count' do
102
- snippet.update_attributes(:label => 'new label')
118
+ assert_no_difference -> {@snippet.revisions.count} do
119
+ @snippet.update_attributes(label: "new label")
103
120
  end
104
121
  end
105
-
122
+
106
123
  def test_creation_for_new_record
107
124
  assert_difference 'Comfy::Cms::Snippet.count' do
108
125
  assert_no_difference 'Comfy::Cms::Revision.count' do
109
- snippet = comfy_cms_sites(:default).snippets.create!(
110
- :label => 'test snippet',
111
- :identifier => 'test_snippet',
112
- :content => 'test content'
126
+ snippet = @site.snippets.create!(
127
+ label: 'test snippet',
128
+ identifier: 'test_snippet',
129
+ content: 'test content'
113
130
  )
114
131
  assert_equal 0, snippet.revisions.count
115
132
  end
116
133
  end
117
134
  end
118
-
135
+
119
136
  def test_restore_from_revision_for_layout
120
- layout = comfy_cms_layouts(:default)
121
137
  revision = comfy_cms_revisions(:layout)
122
-
123
- assert_difference 'layout.revisions.count' do
124
- layout.restore_from_revision(revision)
125
- layout.reload
126
- assert_equal 'revision {{cms:page:default_page_text}}', layout.content
127
- assert_equal 'revision css', layout.css
128
- assert_equal 'revision js', layout.js
138
+
139
+ assert_difference -> {@layout.revisions.count} do
140
+ @layout.restore_from_revision(revision)
141
+ @layout.reload
142
+ assert_equal 'revision {{cms:fragment content}}', @layout.content
143
+ assert_equal 'revision css', @layout.css
144
+ assert_equal 'revision js', @layout.js
129
145
  end
130
146
  end
131
-
147
+
132
148
  def test_restore_from_revision_for_page
133
- page = comfy_cms_pages(:default)
134
149
  revision = comfy_cms_revisions(:page)
135
-
136
- assert_difference 'page.revisions.count' do
137
- page.restore_from_revision(revision)
138
- page.reload
150
+
151
+ assert_difference -> {@page.revisions.count} do
152
+ @page.restore_from_revision(revision)
153
+ @page.reload
154
+
139
155
  assert_equal [
140
- { :identifier => 'default_field_text', :content => 'revision field content' },
141
- { :identifier => 'default_page_text', :content => 'revision page content' }
142
- ], page.blocks_attributes
156
+ { identifier: "boolean",
157
+ tag: "checkbox",
158
+ content: nil,
159
+ datetime: nil,
160
+ boolean:true },
161
+ { identifier: "file",
162
+ tag: "file",
163
+ content: nil,
164
+ datetime: nil,
165
+ boolean: false },
166
+ { identifier: "datetime",
167
+ tag: "datetime",
168
+ content: nil,
169
+ datetime: comfy_cms_fragments(:datetime).datetime,
170
+ boolean: false },
171
+ { identifier: "content",
172
+ tag: "text",
173
+ content: "old content",
174
+ datetime: nil,
175
+ boolean: false },
176
+ { identifier: "title",
177
+ tag: "text",
178
+ content: "old title",
179
+ datetime: nil,
180
+ boolean: false }
181
+ ], @page.fragments_attributes
143
182
  end
144
183
  end
145
-
184
+
146
185
  def test_restore_from_revision_for_snippet
147
- snippet = comfy_cms_snippets(:default)
148
186
  revision = comfy_cms_revisions(:snippet)
149
-
150
- assert_difference 'snippet.revisions.count' do
151
- snippet.restore_from_revision(revision)
152
- snippet.reload
153
- assert_equal 'revision content', snippet.content
187
+
188
+ assert_difference -> {@snippet.revisions.count} do
189
+ @snippet.restore_from_revision(revision)
190
+ @snippet.reload
191
+ assert_equal 'revision content', @snippet.content
154
192
  end
155
193
  end
156
-
194
+
157
195
  def test_restore_from_revision_with_wrong_revision_type
158
- snippet = comfy_cms_snippets(:default)
159
196
  revision = comfy_cms_revisions(:layout)
160
-
161
- assert_no_difference 'snippet.revisions.count' do
162
- snippet.restore_from_revision(revision)
163
- snippet.reload
164
- assert_equal 'default_snippet_content', snippet.content
197
+
198
+ assert_no_difference -> {@snippet.revisions.count} do
199
+ @snippet.restore_from_revision(revision)
200
+ @snippet.reload
201
+ assert_equal "snippet content", @snippet.content
165
202
  end
166
203
  end
167
-
204
+
168
205
  def test_creation_with_limit
169
206
  ComfortableMexicanSofa.config.revisions_limit = 1
170
- snippet = comfy_cms_snippets(:default)
171
207
  revision = comfy_cms_revisions(:snippet)
172
-
173
- assert_equal 1, snippet.revisions.count
174
-
175
- assert_no_difference 'snippet.revisions.count' do
176
- snippet.update_attributes(:content => 'new content')
208
+
209
+ assert_equal 1, @snippet.revisions.count
210
+
211
+ assert_no_difference -> {@snippet.revisions.count} do
212
+ @snippet.update_attributes(content: 'new content')
177
213
  assert_nil Comfy::Cms::Revision.find_by_id(revision.id)
178
-
179
- snippet.reload
180
- revision = snippet.revisions.first
181
- assert_equal ({ 'content' => 'default_snippet_content' }), revision.data
214
+
215
+ @snippet.reload
216
+ revision = @snippet.revisions.last
217
+ assert_equal ({"content" => "snippet content"}), revision.data
182
218
  end
183
219
  end
184
-
185
- end
220
+ end