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
@@ -11,15 +11,14 @@ class FooTest < ActiveSupport::TestCase
11
11
  def test_validation
12
12
  foo = Foo.new
13
13
  assert foo.invalid?
14
- assert_errors_on foo, :bar
14
+ assert_equal [:bar], foo.errors.keys
15
15
  end
16
16
 
17
17
  def test_creation
18
18
  assert_difference 'Foo.count' do
19
19
  Foo.create(
20
- :bar => 'test bar',
20
+ bar: 'test bar',
21
21
  )
22
22
  end
23
23
  end
24
-
25
- end
24
+ end
@@ -1,4 +1,5 @@
1
1
  = form.text_field :bar
2
2
 
3
- = form.form_group :class => 'form-actions' do
4
- = form.submit :class => 'btn btn-primary'
3
+ = form.form_actions do
4
+ = form.submit class: "btn btn-primary"
5
+ = link_to 'Cancel', admin_foos_path, class: "btn btn-link"
@@ -2,4 +2,4 @@
2
2
  %h2 Edit Foo
3
3
 
4
4
  = comfy_form_for [:admin, @foo] do |form|
5
- = render form
5
+ = render form
@@ -1,19 +1,21 @@
1
1
  .page-header
2
- = link_to 'New Foo', new_admin_foo_path, :class => 'btn btn-default pull-right'
2
+ = link_to 'New Foo', new_admin_foo_path, class: 'btn btn-secondary pull-right'
3
3
  %h2= 'Foos'
4
4
 
5
- = paginate @foos, :theme => 'comfy'
5
+ = paginate @foos, theme: 'comfy'
6
6
 
7
- %table.table.table-hover.table-bordered
8
- %tr
9
- %th.main Bar
10
- %th
7
+ %ul.list
11
8
  - @foos.each do |foo|
12
- %tr
13
- %td.main= foo.bar
14
- %td
15
- .btn-group.btn-group-sm
16
- = link_to 'Edit', edit_admin_foo_path(foo), :class => 'btn btn-default'
17
- = link_to 'Delete', admin_foo_path(foo), :method => :delete, :data => { :confirm => 'Are you sure?' }, :class => 'btn btn-danger'
9
+ %li
10
+ .row
11
+ .col-md-8.item
12
+ .item-content
13
+ .item-title
14
+ = foo.bar
18
15
 
19
- = paginate @foos, :theme => 'comfy'
16
+ .col-md-4.d-flex.align-items-center.justify-content-md-end
17
+ .btn-group.btn-group-sm
18
+ = link_to 'Edit', edit_admin_foo_path(foo), class: 'btn btn-outline-secondary'
19
+ = link_to 'Delete', admin_foo_path(foo), method: :delete, data: {confirm: 'Are you sure?'}, class: 'btn btn-danger'
20
+
21
+ = paginate @foos, theme: 'comfy'
@@ -2,4 +2,4 @@
2
2
  %h2 New Foo
3
3
 
4
4
  = comfy_form_for [:admin, @foo] do |form|
5
- = render form
5
+ = render form
@@ -1,4 +1,4 @@
1
1
  .page-header
2
2
  %h2 Foo
3
-
4
- = debug @foo
3
+
4
+ = debug @foo
@@ -0,0 +1,32 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem "rails", ">= 5.2.0.beta1"
4
+
5
+ gem "bootstrap_form",
6
+ github: "bootstrap-ruby/rails-bootstrap-forms",
7
+ branch: "bootstrap-v4"
8
+
9
+ gem 'kaminari', '>= 0.14.0'
10
+
11
+ gem "bootstrap", ">= 4.0.0.beta2.1"
12
+ gem "mini_magick", ">= 4.8.0"
13
+ gem "mimemagic", ">= 0.3.2"
14
+ gem "jquery-rails", ">= 4.3.1"
15
+ gem "jquery-ui-rails", ">= 6.0.1"
16
+ gem "codemirror-rails", ">= 5.16.0"
17
+ gem "font-awesome-rails", ">= 4.7.0"
18
+ gem "rails-i18n", ">= 5.0.0"
19
+ gem "active_link_to", ">= 1.0.0"
20
+ gem "haml-rails", ">= 1.0.0"
21
+
22
+ gem 'kramdown', '>= 1.0.0'
23
+ gem 'sass-rails', '>= 4.0.3'
24
+ gem 'coffee-rails', '>= 3.1.0'
25
+ gem 'plupload-rails', '>= 1.2.1'
26
+
27
+ group :test do
28
+ gem 'sqlite3'
29
+ gem 'coveralls', require: false
30
+ gem 'mocha', require: false
31
+ gem 'rails-controller-testing'
32
+ end
@@ -6,8 +6,7 @@ class CmsAssetsGeneratorTest < Rails::Generators::TestCase
6
6
 
7
7
  def test_generator
8
8
  run_generator
9
- assert_directory 'app/assets/images/comfy/admin/cms'
10
9
  assert_directory 'app/assets/javascripts/comfy/admin/cms'
11
10
  assert_directory 'app/assets/stylesheets/comfy/admin/cms'
12
11
  end
13
- end
12
+ end
@@ -13,7 +13,9 @@ class CmsGeneratorTest < Rails::Generators::TestCase
13
13
 
14
14
  assert_file 'config/routes.rb', read_file('cms/routes.rb')
15
15
 
16
- assert_directory 'db/cms_fixtures'
16
+ assert_file 'config/application.rb', read_file('cms/application.rb')
17
+
18
+ assert_directory 'db/cms_seeds'
17
19
 
18
20
  assert_file 'app/assets/javascripts/comfy/admin/cms/custom.js.coffee'
19
21
 
@@ -9,4 +9,4 @@ class CmsViewsGeneratorTest < Rails::Generators::TestCase
9
9
  assert_directory 'app/views/comfy'
10
10
  assert_file 'app/views/comfy/admin/cms/pages/index.html.haml'
11
11
  end
12
- end
12
+ end
@@ -24,7 +24,7 @@ class ScaffoldGeneratorTest < Rails::Generators::TestCase
24
24
  assert_file 'config/routes.rb', read_file('scaffold/routes.rb')
25
25
 
26
26
  assert_file 'app/views/comfy/admin/cms/partials/_navigation_inner.html.haml' do |file|
27
- assert_match "%li= active_link_to 'Foos', admin_foos_path", file
27
+ assert_match "%li.nav-item\n = active_link_to 'Foos', admin_foos_path, class: 'nav-link'", file
28
28
  end
29
29
  end
30
- end
30
+ end
@@ -11,114 +11,93 @@ class ViewMethodsTest < ActionView::TestCase
11
11
  end
12
12
  ActionView::Base.send :include, TestViewHelpers
13
13
 
14
- def setup
14
+ setup do
15
+ # we're simulating instance variables that are present on the view/controller
15
16
  @cms_site = comfy_cms_sites(:default)
16
17
  @cms_page = comfy_cms_pages(:default)
17
- comfy_cms_blocks(:default_page_text).update_column(:content, 'default_page_text_content')
18
18
  end
19
19
 
20
- def test_cms_block_content
21
- assert_equal 'default_page_text_content', cms_block_content(:default_page_text)
22
- assert_equal 'default_page_text_content', cms_block_content(:default_page_text, @cms_page)
23
- assert_equal 'default_field_text_content', cms_block_content(:default_field_text)
20
+ def test_cms_fragment_content
21
+ assert_equal "content", cms_fragment_content(:content)
22
+ assert_equal "content", cms_fragment_content(:content, @cms_page)
23
+ assert_equal "", cms_fragment_content(:invalid)
24
24
  end
25
25
 
26
- def test_cms_block_content_render
27
- assert_equal 'default_field_text_content', cms_block_content_render(:default_field_text)
26
+ def test_cms_fragment_content_with_datetime
27
+ frag = comfy_cms_fragments(:datetime)
28
+ assert_equal "datetime", frag.tag
29
+ assert_equal "1981-10-04 12:34:56 UTC", cms_fragment_content(frag.identifier).to_s
28
30
  end
29
31
 
30
- def test_cms_block_render
31
- assert_equal 'default_page_text_content', cms_block_render(:default_page_text)
32
- assert_equal '', cms_block_render(:default_field_text)
32
+ def test_cms_fragment_content_with_date
33
+ frag = comfy_cms_fragments(:datetime)
34
+ frag.update_columns(tag: "date", datetime: "2017-01-01")
35
+ assert_equal "2017-01-01 00:00:00 UTC", cms_fragment_content(frag.identifier).to_s
33
36
  end
34
37
 
35
- def test_cms_block_with_erb
36
- comfy_cms_blocks(:default_page_text).update_column(:content, '<%= 1 + 1 %>')
37
- assert_equal '<%= 1 + 1 %>', cms_block_content(:default_page_text)
38
- assert_equal '&lt;%= 1 + 1 %&gt;', cms_block_render(:default_page_text)
38
+ def test_cms_fragment_content_with_boolean
39
+ frag = comfy_cms_fragments(:boolean)
40
+ assert_equal true, cms_fragment_content(frag.identifier)
39
41
  end
40
42
 
41
- def test_cms_block_with_tags
42
- comfy_cms_blocks(:default_page_text).update_column(:content, '{{ cms:helper:hello }}')
43
- assert_equal '{{ cms:helper:hello }}', cms_block_content(:default_page_text)
44
- assert_equal 'hello', cms_block_render(:default_page_text)
43
+ def test_cms_fragment_content_with_files
44
+ frag = comfy_cms_fragments(:file)
45
+ assert_equal frag.attachments.to_a, cms_fragment_content(frag.identifier).to_a
45
46
  end
46
47
 
47
- def test_cms_block_missing
48
- assert_equal '', cms_block_content(:invalid)
49
- assert_equal '', cms_block_content(:invalid, @cms_page)
50
- assert_equal '', cms_block_content(:invalid)
51
- assert_equal '', cms_block_content(:default_page_text, @invalid)
52
-
53
- assert_equal '', cms_block_render(:invalid)
48
+ def test_cms_fragment_render
49
+ assert_equal "content", cms_fragment_render(:content)
50
+ assert_equal "", cms_fragment_render(:invalid)
54
51
  end
55
52
 
56
- def test_cms_block_with_files
57
- @cms_page.layout.update_column(:content, '{{cms:page_files:files}}')
58
- @cms_page.update_attributes!(
59
- :blocks_attributes => [
60
- {
61
- :identifier => 'files',
62
- :content => [
63
- fixture_file_upload('files/image.jpg', "image/jpeg"),
64
- fixture_file_upload('files/image.gif', "image/gif")
65
- ]
66
- }
67
- ]
68
- )
53
+ def test_cms_fragment_render_with_tags
54
+ comfy_cms_fragments(:default).update_column(:content, "a {{cms:helper hello }} b")
55
+ assert_equal "a hello b", cms_fragment_render(:content)
56
+ end
69
57
 
70
- block = @cms_page.blocks.find_by(:identifier => 'files')
71
- assert_equal block.files, cms_block_content(:files)
72
- assert_equal 2, block.files.count
58
+ def test_cms_fragment_render_with_erb
59
+ comfy_cms_fragments(:default).update_column(:content, "<%= 1 + 1 %>")
60
+ assert_equal "&lt;%= 1 + 1 %&gt;", cms_fragment_render(:content)
61
+ end
73
62
 
74
- assert_equal block.files.collect{|file| file.file.url}.join(', '), cms_block_render(:files)
63
+ def test_cms_fragment_render_with_datetime
64
+ comfy_cms_layouts(:default).update_column(:content, "{{cms:datetime datetime}}")
65
+ assert_equal "1981-10-04 12:34:56 UTC", cms_fragment_render(:datetime)
75
66
  end
76
67
 
77
- def test_cms_snippet_content
78
- assert_equal 'default_snippet_content', cms_snippet_content(:default)
79
- assert_equal 'default_snippet_content', cms_snippet_content(:default, @cms_site)
68
+ def test_cms_fragment_render_with_boolean
69
+ comfy_cms_layouts(:default).update_column(:content, "{{cms:checkbox boolean}}")
70
+ assert_equal "true", cms_fragment_render(:boolean)
80
71
  end
81
72
 
82
- def test_cms_snippet_content_with_site_loading
83
- @cms_site = nil
84
- assert_equal 'default_snippet_content', cms_snippet_content(:default)
73
+ def test_cms_fragment_render_with_files
74
+ frag = comfy_cms_fragments(:file)
75
+ comfy_cms_layouts(:default).update_column(:content, "{{cms:file file}}")
76
+ assert_equal url_for(frag.attachments.first), cms_fragment_render(:file)
85
77
  end
86
78
 
87
- def test_cms_snippet_missing
88
- assert_equal '', cms_snippet_content(:invalid)
89
- assert_equal '', cms_snippet_render(:invalid)
79
+ def test_cms_snippet_content
80
+ assert_equal "snippet content", cms_snippet_content(:default)
81
+ assert_equal "snippet content", cms_snippet_content(:default, @cms_site)
82
+ assert_equal "", cms_snippet_content(:invalid)
90
83
  end
91
84
 
92
- def test_cms_snippet_render_with_no_site
85
+ def test_cms_snippet_content_with_site_loading
93
86
  @cms_site = nil
94
- assert_equal '', cms_snippet_render(:default)
87
+ assert_equal "snippet content", cms_snippet_content(:default)
95
88
  end
96
89
 
97
90
  def test_cms_snippet_render
98
- assert_equal 'default_snippet_content', cms_snippet_render(:default)
91
+ assert_equal "snippet content", cms_snippet_render(:default)
99
92
  end
100
93
 
101
94
  def test_cms_snippet_with_erb
102
- comfy_cms_snippets(:default).update_column(:content, '<%= 1 + 1 %>')
103
- assert_equal '<%= 1 + 1 %>', cms_snippet_content(:default)
104
- assert_equal '&lt;%= 1 + 1 %&gt;', cms_snippet_render(:default)
95
+ comfy_cms_snippets(:default).update_column(:content, "<%= 1 + 1 %>")
96
+ assert_equal "&lt;%= 1 + 1 %&gt;", cms_snippet_render(:default)
105
97
  end
106
98
 
107
99
  def test_cms_snippet_render_with_tags
108
- comfy_cms_snippets(:default).update_column(:content, '{{ cms:helper:hello }}')
109
- assert_equal 'hello', cms_snippet_render(:default)
110
- end
111
-
112
- def test_cms_snippet_content_with_block
113
- assert_difference 'Comfy::Cms::Snippet.count' do
114
- content = cms_snippet_content(:new_snippet) do
115
- 'new content'
116
- end
117
- assert_equal 'new content', content
118
- snippet = Comfy::Cms::Snippet.last
119
- assert_equal 'new content', snippet.content
120
- assert_equal @cms_site, snippet.site
121
- end
100
+ comfy_cms_snippets(:default).update_column(:content, "a {{cms:helper hello}} b")
101
+ assert_equal "a hello b", cms_snippet_render(:default)
122
102
  end
123
-
124
103
  end
@@ -5,7 +5,7 @@ class AccessControlTest < ActionDispatch::IntegrationTest
5
5
  module TestAuthentication
6
6
  module Authenticate
7
7
  def authenticate
8
- render :plain => 'Test Login Denied', :status => :unauthorized
8
+ render plain: "Test Login Denied", status: :unauthorized
9
9
  end
10
10
  end
11
11
 
@@ -19,31 +19,32 @@ class AccessControlTest < ActionDispatch::IntegrationTest
19
19
  module Authorize
20
20
  def authorize
21
21
  @authorization_vars = self.instance_variables
22
- render :plain => 'Test Access Denied', :status => :forbidden
22
+ render plain: "Test Access Denied", status: :forbidden
23
23
  end
24
24
  end
25
25
 
26
26
  # faking ComfortableMexicanSofa.config.admin_authorization = 'AccessControlTest::TestAuthorization'
27
27
  # faking ComfortableMexicanSofa.config.public_authorization = 'AccessControlTest::TestAuthorization'
28
- class SitesController < Comfy::Admin::Cms::SitesController; include Authorize; end
29
- class LayoutsController < Comfy::Admin::Cms::LayoutsController; include Authorize; end
30
- class PagesController < Comfy::Admin::Cms::PagesController; include Authorize; end
31
- class SnippetsController < Comfy::Admin::Cms::SnippetsController; include Authorize; end
32
- class FilesController < Comfy::Admin::Cms::FilesController; include Authorize; end
33
- class CategoriesController < Comfy::Admin::Cms::CategoriesController; include Authorize; end
34
- class RevisionsController < Comfy::Admin::Cms::RevisionsController; include Authorize; end
35
- class ContentController < Comfy::Cms::ContentController; include Authorize; end
28
+ class SitesController < Comfy::Admin::Cms::SitesController; include Authorize; end
29
+ class LayoutsController < Comfy::Admin::Cms::LayoutsController; include Authorize; end
30
+ class PagesController < Comfy::Admin::Cms::PagesController; include Authorize; end
31
+ class SnippetsController < Comfy::Admin::Cms::SnippetsController; include Authorize; end
32
+ class FilesController < Comfy::Admin::Cms::FilesController; include Authorize; end
33
+ class CategoriesController < Comfy::Admin::Cms::CategoriesController; include Authorize; end
34
+ class RevisionsController < Comfy::Admin::Cms::RevisionsController; include Authorize; end
35
+ class TranslationsController < Comfy::Admin::Cms::TranslationsController; include Authorize; end
36
+ class ContentController < Comfy::Cms::ContentController; include Authorize; end
36
37
  end
37
38
 
38
-
39
+ # -- Tests -------------------------------------------------------------------
39
40
  def test_admin_authentication_default
40
41
  assert_equal 'ComfortableMexicanSofa::AccessControl::AdminAuthentication',
41
42
  ComfortableMexicanSofa.config.admin_auth
42
43
 
43
- get '/admin/sites'
44
+ get comfy_admin_cms_sites_path
44
45
  assert_response :unauthorized
45
46
 
46
- http_auth :get, '/admin/sites'
47
+ r :get, comfy_admin_cms_sites_path
47
48
  assert_response :success
48
49
  end
49
50
 
@@ -64,7 +65,7 @@ class AccessControlTest < ActionDispatch::IntegrationTest
64
65
  ComfortableMexicanSofa.config.admin_authorization
65
66
 
66
67
  Comfy::Admin::Cms::BaseController.send(:include, ComfortableMexicanSofa::AccessControl::AdminAuthorization)
67
- http_auth :get, "/admin/sites/#{comfy_cms_sites(:default).to_param}/edit"
68
+ r :get, "/admin/sites/#{comfy_cms_sites(:default).to_param}/edit"
68
69
  assert_response :success, response.body
69
70
  end
70
71
 
@@ -74,48 +75,54 @@ class AccessControlTest < ActionDispatch::IntegrationTest
74
75
  routes.draw do
75
76
  s = '/admin/sites'
76
77
  ns = 'access_control_test/test_authorization'
77
- get "#{s}/:id/edit" => "#{ns}/sites#edit"
78
- get "#{s}/:site_id/layouts/:id/edit" => "#{ns}/layouts#edit"
79
- get "#{s}/:site_id/layouts/:layout_id/revisions/:id" => "#{ns}/revisions#show"
80
- get "#{s}/:site_id/pages/:id/edit" => "#{ns}/pages#edit"
81
- get "#{s}/:site_id/snippets/:id/edit" => "#{ns}/snippets#edit"
82
- get "#{s}/:site_id/files/:id/edit" => "#{ns}/files#edit"
83
- get "#{s}/:site_id/categories/:id/edit" => "#{ns}/categories#edit"
78
+ get "#{s}/:id/edit" => "#{ns}/sites#edit"
79
+ get "#{s}/:site_id/layouts/:id/edit" => "#{ns}/layouts#edit"
80
+ get "#{s}/:site_id/layouts/:layout_id/revisions/:id" => "#{ns}/revisions#show"
81
+ get "#{s}/:site_id/pages/:id/edit" => "#{ns}/pages#edit"
82
+ get "#{s}/:site_id/pages/:page_id/translations/:id/edit" => "#{ns}/pages#edit"
83
+ get "#{s}/:site_id/snippets/:id/edit" => "#{ns}/snippets#edit"
84
+ get "#{s}/:site_id/files/:id/edit" => "#{ns}/files#edit"
85
+ get "#{s}/:site_id/categories/:id/edit" => "#{ns}/categories#edit"
84
86
  end
85
87
 
86
- http_auth :get, "/admin/sites/#{site.id}/edit"
88
+ r :get, "/admin/sites/#{site.id}/edit"
87
89
  assert_response :forbidden
88
90
  assert_equal 'Test Access Denied', response.body
89
91
  assert assigns(:authorization_vars)
90
92
  assert assigns(:authorization_vars).member?(:@site)
91
93
 
92
94
  layout = comfy_cms_layouts(:default)
93
- http_auth :get, "/admin/sites/#{site.id}/layouts/#{layout.id}/edit"
95
+ r :get, "/admin/sites/#{site.id}/layouts/#{layout.id}/edit"
94
96
  assert assigns(:authorization_vars).member?(:@site)
95
97
  assert assigns(:authorization_vars).member?(:@layout)
96
98
 
97
99
  revision = comfy_cms_revisions(:layout)
98
- http_auth :get, "/admin/sites/#{site.id}/layouts/#{layout.id}/revisions/#{revision.id}"
100
+ r :get, "/admin/sites/#{site.id}/layouts/#{layout.id}/revisions/#{revision.id}"
99
101
  assert assigns(:authorization_vars).member?(:@site)
100
102
  assert assigns(:authorization_vars).member?(:@record)
101
103
 
102
104
  page = comfy_cms_pages(:default)
103
- http_auth :get, "/admin/sites/#{site.id}/pages/#{page.id}/edit"
105
+ r :get, "/admin/sites/#{site.id}/pages/#{page.id}/edit"
106
+ assert assigns(:authorization_vars).member?(:@site)
107
+ assert assigns(:authorization_vars).member?(:@page)
108
+
109
+ translation = comfy_cms_translations(:default)
110
+ r :get, "/admin/sites/#{site.id}/pages/#{page.id}/translations/#{translation.id}/edit"
104
111
  assert assigns(:authorization_vars).member?(:@site)
105
112
  assert assigns(:authorization_vars).member?(:@page)
106
113
 
107
114
  snippet = comfy_cms_snippets(:default)
108
- http_auth :get, "/admin/sites/#{site.id}/snippets/#{snippet.id}/edit"
115
+ r :get, "/admin/sites/#{site.id}/snippets/#{snippet.id}/edit"
109
116
  assert assigns(:authorization_vars).member?(:@site)
110
117
  assert assigns(:authorization_vars).member?(:@snippet)
111
118
 
112
119
  file = comfy_cms_files(:default)
113
- http_auth :get, "/admin/sites/#{site.id}/files/#{file.id}/edit"
120
+ r :get, "/admin/sites/#{site.id}/files/#{file.id}/edit"
114
121
  assert assigns(:authorization_vars).member?(:@site)
115
122
  assert assigns(:authorization_vars).member?(:@file)
116
123
 
117
124
  category = comfy_cms_categories(:default)
118
- http_auth :get, "/admin/sites/#{site.id}/categories/#{category.id}/edit"
125
+ r :get, "/admin/sites/#{site.id}/categories/#{category.id}/edit"
119
126
  assert assigns(:authorization_vars).member?(:@site)
120
127
  assert assigns(:authorization_vars).member?(:@category)
121
128
  end