comfortable_mexican_sofa 1.12.11 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +4 -0
  3. data/.gitattributes +2 -0
  4. data/.github/issue_template.md +22 -0
  5. data/.github/pull_request_template.md +6 -0
  6. data/.gitignore +3 -0
  7. data/.rubocop.yml +5 -0
  8. data/.rubocop_todo.yml +974 -0
  9. data/.travis.yml +2 -10
  10. data/Gemfile +5 -7
  11. data/README.md +40 -39
  12. data/Rakefile +1 -31
  13. data/app/assets/javascripts/comfy/admin/cms/application.js.coffee +7 -4
  14. data/app/assets/javascripts/comfy/admin/cms/base.js.coffee +23 -33
  15. data/app/assets/javascripts/comfy/admin/cms/lib/diff/pretty_text_diff.js +76 -0
  16. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr.min.js +2 -0
  17. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/ar.js +52 -0
  18. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/bg.js +65 -0
  19. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/bn.js +65 -0
  20. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/cat.js +83 -0
  21. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/cs.js +70 -0
  22. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/cy.js +92 -0
  23. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/da.js +71 -0
  24. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/de.js +70 -0
  25. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/default.js +80 -0
  26. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/eo.js +73 -0
  27. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/es.js +69 -0
  28. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/et.js +73 -0
  29. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/fa.js +68 -0
  30. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/fi.js +69 -0
  31. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/fr.js +75 -0
  32. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/gr.js +74 -0
  33. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/he.js +57 -0
  34. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/hi.js +65 -0
  35. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/hr.js +66 -0
  36. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/hu.js +72 -0
  37. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/id.js +61 -0
  38. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/it.js +70 -0
  39. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/ja.js +57 -0
  40. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/ko.js +60 -0
  41. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/lt.js +72 -0
  42. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/lv.js +67 -0
  43. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/mk.js +69 -0
  44. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/mn.js +67 -0
  45. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/ms.js +68 -0
  46. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/my.js +69 -0
  47. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/nl.js +75 -0
  48. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/no.js +73 -0
  49. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/pa.js +65 -0
  50. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/pl.js +68 -0
  51. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/pt-BR.js +66 -0
  52. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/pt.js +66 -0
  53. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/ro.js +69 -0
  54. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/ru.js +66 -0
  55. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/si.js +65 -0
  56. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/sk.js +70 -0
  57. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/sl.js +70 -0
  58. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/sq.js +65 -0
  59. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/sr.js +69 -0
  60. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/sv.js +70 -0
  61. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/th.js +72 -0
  62. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/tr.js +66 -0
  63. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/uk.js +66 -0
  64. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/vn.js +66 -0
  65. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/zh-CN.js +61 -0
  66. data/app/assets/javascripts/comfy/admin/cms/lib/flatpickr/i18n/zh-TW.js +61 -0
  67. data/app/assets/javascripts/comfy/admin/cms/lib/redactor.js +9 -3
  68. data/app/assets/javascripts/comfy/admin/cms/uploader.js.coffee +9 -10
  69. data/app/assets/stylesheets/comfy/admin/cms/application.sass +4 -4
  70. data/app/assets/stylesheets/comfy/admin/cms/base.sass +215 -338
  71. data/app/assets/stylesheets/comfy/admin/cms/lib/flatpickr.min.css +13 -0
  72. data/app/assets/stylesheets/comfy/admin/cms/redactor_overrides.sass +2 -2
  73. data/app/controllers/comfy/admin/base_controller.rb +20 -0
  74. data/app/controllers/comfy/admin/cms/base_controller.rb +9 -22
  75. data/app/controllers/comfy/admin/cms/categories_controller.rb +2 -3
  76. data/app/controllers/comfy/admin/cms/files_controller.rb +50 -31
  77. data/app/controllers/comfy/admin/cms/layouts_controller.rb +12 -13
  78. data/app/controllers/comfy/admin/cms/pages_controller.rb +28 -28
  79. data/app/controllers/comfy/admin/cms/revisions_controller.rb +23 -14
  80. data/app/controllers/comfy/admin/cms/sites_controller.rb +9 -10
  81. data/app/controllers/comfy/admin/cms/snippets_controller.rb +11 -11
  82. data/app/controllers/comfy/admin/cms/translations_controller.rb +98 -0
  83. data/app/controllers/comfy/cms/assets_controller.rb +9 -10
  84. data/app/controllers/comfy/cms/base_controller.rb +0 -2
  85. data/app/controllers/comfy/cms/content_controller.rb +50 -31
  86. data/app/controllers/concerns/comfy/paginate.rb +2 -2
  87. data/app/helpers/comfy/admin/cms_helper.rb +29 -0
  88. data/app/helpers/comfy/cms_helper.rb +40 -60
  89. data/app/models/comfy/cms/categorization.rb +8 -11
  90. data/app/models/comfy/cms/category.rb +10 -14
  91. data/app/models/comfy/cms/file.rb +31 -47
  92. data/app/models/comfy/cms/fragment.rb +55 -0
  93. data/app/models/comfy/cms/layout.rb +45 -40
  94. data/app/models/comfy/cms/page.rb +47 -36
  95. data/app/models/comfy/cms/revision.rb +5 -8
  96. data/app/models/comfy/cms/site.rb +26 -51
  97. data/app/models/comfy/cms/snippet.rb +20 -24
  98. data/app/models/comfy/cms/translation.rb +37 -0
  99. data/app/models/concerns/comfy/cms/with_categories.rb +38 -0
  100. data/app/models/concerns/comfy/cms/with_fragments.rb +121 -0
  101. data/app/views/comfy/admin/cms/categories/_categories.html.haml +2 -1
  102. data/app/views/comfy/admin/cms/categories/_edit.html.haml +7 -6
  103. data/app/views/comfy/admin/cms/categories/_form.html.haml +8 -5
  104. data/app/views/comfy/admin/cms/categories/_index.html.haml +24 -20
  105. data/app/views/comfy/admin/cms/categories/_show.html.haml +10 -9
  106. data/app/views/comfy/admin/cms/categories/create.js.erb +2 -2
  107. data/app/views/comfy/admin/cms/categories/edit.js.erb +1 -1
  108. data/app/views/comfy/admin/cms/categories/update.js.erb +2 -2
  109. data/app/views/comfy/admin/cms/files/_file.html.haml +31 -25
  110. data/app/views/comfy/admin/cms/files/_form.html.haml +16 -12
  111. data/app/views/comfy/admin/cms/files/edit.html.haml +1 -1
  112. data/app/views/comfy/admin/cms/files/index.html.haml +17 -19
  113. data/app/views/comfy/admin/cms/files/new.html.haml +1 -1
  114. data/app/views/comfy/admin/cms/layouts/_form.html.haml +10 -10
  115. data/app/views/comfy/admin/cms/layouts/_index_branch.html.haml +21 -19
  116. data/app/views/comfy/admin/cms/layouts/edit.html.haml +5 -5
  117. data/app/views/comfy/admin/cms/layouts/index.html.haml +4 -7
  118. data/app/views/comfy/admin/cms/pages/_form.html.haml +15 -21
  119. data/app/views/comfy/admin/cms/pages/_form_fragments.html.haml +40 -0
  120. data/app/views/comfy/admin/cms/pages/_fragment_attachments.html.haml +10 -0
  121. data/app/views/comfy/admin/cms/pages/_index_branch.html.haml +34 -26
  122. data/app/views/comfy/admin/cms/pages/edit.html.haml +19 -5
  123. data/app/views/comfy/admin/cms/pages/form_fragments.js.erb +1 -0
  124. data/app/views/comfy/admin/cms/pages/index.html.haml +5 -8
  125. data/app/views/comfy/admin/cms/pages/new.html.haml +1 -1
  126. data/app/views/comfy/admin/cms/revisions/show.html.haml +29 -27
  127. data/app/views/comfy/admin/cms/sites/_form.html.haml +6 -8
  128. data/app/views/comfy/admin/cms/sites/edit.html.haml +1 -1
  129. data/app/views/comfy/admin/cms/sites/index.html.haml +23 -22
  130. data/app/views/comfy/admin/cms/sites/new.html.haml +1 -1
  131. data/app/views/comfy/admin/cms/snippets/_form.html.haml +9 -9
  132. data/app/views/comfy/admin/cms/snippets/edit.html.haml +6 -5
  133. data/app/views/comfy/admin/cms/snippets/index.html.haml +25 -25
  134. data/app/views/comfy/admin/cms/snippets/new.html.haml +1 -1
  135. data/app/views/comfy/admin/cms/translations/_form.html.haml +21 -0
  136. data/app/views/comfy/admin/cms/translations/edit.html.haml +9 -0
  137. data/app/views/comfy/admin/cms/translations/form_fragments.js.erb +1 -0
  138. data/app/views/comfy/admin/cms/translations/new.html.haml +5 -0
  139. data/app/views/kaminari/comfy/_first_page.html.haml +3 -2
  140. data/app/views/kaminari/comfy/_gap.html.haml +2 -2
  141. data/app/views/kaminari/comfy/_last_page.html.haml +3 -2
  142. data/app/views/kaminari/comfy/_next_page.html.haml +2 -2
  143. data/app/views/kaminari/comfy/_page.html.haml +2 -2
  144. data/app/views/kaminari/comfy/_prev_page.html.haml +1 -1
  145. data/app/views/layouts/comfy/admin/cms/_body.html.haml +13 -15
  146. data/app/views/layouts/comfy/admin/cms/_footer_js.html.haml +10 -3
  147. data/app/views/layouts/comfy/admin/cms/_head.html.haml +7 -10
  148. data/app/views/layouts/comfy/admin/cms/_left.html.haml +33 -15
  149. data/app/views/layouts/comfy/admin/cms/_right.html.haml +2 -2
  150. data/comfortable_mexican_sofa.gemspec +19 -19
  151. data/config/application.rb +14 -8
  152. data/config/boot.rb +2 -2
  153. data/config/cms_routes.rb +3 -3
  154. data/config/environments/development.rb +37 -4
  155. data/config/environments/test.rb +12 -14
  156. data/config/initializers/comfortable_mexican_sofa.rb +5 -12
  157. data/config/locales/cs.yml +33 -7
  158. data/config/locales/da.yml +33 -7
  159. data/config/locales/de.yml +32 -6
  160. data/config/locales/en.yml +33 -7
  161. data/config/locales/es.yml +33 -7
  162. data/config/locales/fr.yml +33 -7
  163. data/config/locales/it.yml +33 -7
  164. data/config/locales/ja.yml +33 -7
  165. data/config/locales/nb.yml +33 -7
  166. data/config/locales/nl.yml +33 -7
  167. data/config/locales/pl.yml +33 -7
  168. data/config/locales/pt-BR.yml +33 -7
  169. data/config/locales/ru.yml +33 -7
  170. data/config/locales/sk.yml +33 -7
  171. data/config/locales/sv.yml +33 -7
  172. data/config/locales/tr.yml +33 -7
  173. data/config/locales/uk.yml +33 -7
  174. data/config/locales/zh-CN.yml +33 -7
  175. data/config/locales/zh-TW.yml +33 -7
  176. data/config/storage.yml +35 -0
  177. data/db/cms_seeds/sample-site/files/_default.jpg.yml +5 -0
  178. data/db/{cms_fixtures/sample-site/files/sample.jpg → cms_seeds/sample-site/files/default.jpg} +0 -0
  179. data/db/cms_seeds/sample-site/layouts/default/content.html +16 -0
  180. data/db/cms_seeds/sample-site/layouts/default/nested/content.html +14 -0
  181. data/db/cms_seeds/sample-site/pages/index/child_a/content.html +7 -0
  182. data/db/cms_seeds/sample-site/pages/index/child_b/content.html +6 -0
  183. data/db/cms_seeds/sample-site/pages/index/content.es.html +6 -0
  184. data/db/cms_seeds/sample-site/pages/index/content.fr.html +6 -0
  185. data/db/cms_seeds/sample-site/pages/index/content.html +24 -0
  186. data/db/{cms_fixtures/sample-site/pages/index/child/thumbnail.png → cms_seeds/sample-site/pages/index/footer.png} +0 -0
  187. data/db/cms_seeds/sample-site/pages/index/header.png +0 -0
  188. data/db/cms_seeds/sample-site/snippets/default.html +8 -0
  189. data/db/migrate/00_create_active_storage_tables.active_storage.rb +26 -0
  190. data/db/migrate/01_create_cms.rb +113 -104
  191. data/doc/preview.jpg +0 -0
  192. data/lib/comfortable_mexican_sofa.rb +10 -14
  193. data/lib/comfortable_mexican_sofa/configuration.rb +9 -13
  194. data/lib/comfortable_mexican_sofa/content.rb +28 -0
  195. data/lib/comfortable_mexican_sofa/content/block.rb +11 -0
  196. data/lib/comfortable_mexican_sofa/content/params_parser.rb +80 -0
  197. data/lib/comfortable_mexican_sofa/content/renderer.rb +125 -0
  198. data/lib/comfortable_mexican_sofa/content/tag.rb +37 -0
  199. data/lib/comfortable_mexican_sofa/content/tags/asset.rb +56 -0
  200. data/lib/comfortable_mexican_sofa/content/tags/checkbox.rb +21 -0
  201. data/lib/comfortable_mexican_sofa/content/tags/date.rb +22 -0
  202. data/lib/comfortable_mexican_sofa/content/tags/datetime.rb +22 -0
  203. data/lib/comfortable_mexican_sofa/content/tags/file.rb +77 -0
  204. data/lib/comfortable_mexican_sofa/content/tags/file_link.rb +66 -0
  205. data/lib/comfortable_mexican_sofa/content/tags/files.rb +39 -0
  206. data/lib/comfortable_mexican_sofa/content/tags/fragment.rb +54 -0
  207. data/lib/comfortable_mexican_sofa/content/tags/helper.rb +52 -0
  208. data/lib/comfortable_mexican_sofa/content/tags/markdown.rb +21 -0
  209. data/lib/comfortable_mexican_sofa/content/tags/number.rb +17 -0
  210. data/lib/comfortable_mexican_sofa/content/tags/partial.rb +42 -0
  211. data/lib/comfortable_mexican_sofa/content/tags/snippet.rb +31 -0
  212. data/lib/comfortable_mexican_sofa/content/tags/template.rb +41 -0
  213. data/lib/comfortable_mexican_sofa/content/tags/text.rb +17 -0
  214. data/lib/comfortable_mexican_sofa/content/tags/textarea.rb +17 -0
  215. data/lib/comfortable_mexican_sofa/content/tags/wysiwyg.rb +18 -0
  216. data/lib/comfortable_mexican_sofa/engine.rb +3 -2
  217. data/lib/comfortable_mexican_sofa/extensions/acts_as_tree.rb +33 -30
  218. data/lib/comfortable_mexican_sofa/extensions/has_revisions.rb +27 -23
  219. data/lib/comfortable_mexican_sofa/form_builder.rb +32 -104
  220. data/lib/comfortable_mexican_sofa/render_methods.rb +24 -21
  221. data/lib/comfortable_mexican_sofa/routes/cms.rb +6 -14
  222. data/lib/comfortable_mexican_sofa/routes/cms_admin.rb +39 -29
  223. data/lib/comfortable_mexican_sofa/routing.rb +1 -1
  224. data/lib/comfortable_mexican_sofa/seeds.rb +102 -0
  225. data/lib/comfortable_mexican_sofa/seeds/file/exporter.rb +40 -0
  226. data/lib/comfortable_mexican_sofa/seeds/file/importer.rb +61 -0
  227. data/lib/comfortable_mexican_sofa/seeds/layout/exporter.rb +37 -0
  228. data/lib/comfortable_mexican_sofa/seeds/layout/importer.rb +59 -0
  229. data/lib/comfortable_mexican_sofa/seeds/page/exporter.rb +88 -0
  230. data/lib/comfortable_mexican_sofa/seeds/page/importer.rb +213 -0
  231. data/lib/comfortable_mexican_sofa/seeds/snippet/exporter.rb +31 -0
  232. data/lib/comfortable_mexican_sofa/seeds/snippet/importer.rb +48 -0
  233. data/lib/comfortable_mexican_sofa/version.rb +1 -1
  234. data/lib/comfortable_mexican_sofa/view_hooks.rb +0 -1
  235. data/lib/generators/comfy/cms/assets_generator.rb +0 -1
  236. data/lib/generators/comfy/cms/cms_generator.rb +15 -5
  237. data/lib/generators/comfy/scaffold/scaffold_generator.rb +26 -20
  238. data/lib/generators/comfy/scaffold/templates/{controller.rb → controller.rb.tt} +10 -10
  239. data/lib/generators/comfy/scaffold/templates/{migration.rb → migration.rb.tt} +2 -3
  240. data/lib/generators/comfy/scaffold/templates/{model.rb → model.rb.tt} +7 -7
  241. data/lib/generators/comfy/scaffold/templates/tests/{controller.rb → controller.rb.tt} +37 -24
  242. data/lib/generators/comfy/scaffold/templates/tests/{fixture.yml → fixture.yml.tt} +0 -0
  243. data/lib/generators/comfy/scaffold/templates/tests/{model.rb → model.rb.tt} +3 -4
  244. data/lib/generators/comfy/scaffold/templates/views/_form.haml.tt +7 -0
  245. data/lib/generators/comfy/scaffold/templates/views/{edit.haml → edit.haml.tt} +1 -1
  246. data/lib/generators/comfy/scaffold/templates/views/index.haml.tt +21 -0
  247. data/lib/generators/comfy/scaffold/templates/views/{new.haml → new.haml.tt} +1 -1
  248. data/lib/generators/comfy/scaffold/templates/views/{show.haml → show.haml.tt} +2 -2
  249. data/lib/tasks/cms_seeds.rake +37 -0
  250. data/test/controllers/comfy/admin/cms/base_controller_test.rb +5 -6
  251. data/test/controllers/comfy/admin/cms/categories_controller_test.rb +27 -24
  252. data/test/controllers/comfy/admin/cms/files_controller_test.rb +97 -97
  253. data/test/controllers/comfy/admin/cms/layouts_controller_test.rb +32 -31
  254. data/test/controllers/comfy/admin/cms/pages_controller_test.rb +317 -263
  255. data/test/controllers/comfy/admin/cms/revisions_controller_test.rb +175 -65
  256. data/test/controllers/comfy/admin/cms/sites_controller_test.rb +27 -29
  257. data/test/controllers/comfy/admin/cms/snippets_controller_test.rb +54 -51
  258. data/test/controllers/comfy/admin/cms/translations_controller_test.rb +181 -0
  259. data/test/controllers/comfy/cms/assets_controller_test.rb +24 -22
  260. data/test/controllers/comfy/cms/content_controller_test.rb +126 -140
  261. data/test/fixtures/active_storage/attachments.yml +9 -0
  262. data/test/fixtures/active_storage/blobs.yml +13 -0
  263. data/test/fixtures/comfy/cms/files.yml +2 -6
  264. data/test/fixtures/comfy/cms/fragments.yml +25 -0
  265. data/test/fixtures/comfy/cms/layouts.yml +7 -13
  266. data/test/fixtures/comfy/cms/pages.yml +2 -17
  267. data/test/fixtures/comfy/cms/revisions.yml +16 -8
  268. data/test/fixtures/comfy/cms/sites.yml +0 -1
  269. data/test/fixtures/comfy/cms/snippets.yml +1 -1
  270. data/test/fixtures/comfy/cms/translations.yml +7 -0
  271. data/test/fixtures/generators/cms/application.rb +7 -0
  272. data/test/fixtures/generators/cms/routes.rb +4 -7
  273. data/test/fixtures/generators/scaffold/controller.rb +10 -10
  274. data/test/fixtures/generators/scaffold/migration.rb +2 -3
  275. data/test/fixtures/generators/scaffold/model.rb +7 -7
  276. data/test/fixtures/generators/scaffold/routes.rb +1 -2
  277. data/test/fixtures/generators/scaffold/tests/controller.rb +37 -24
  278. data/test/fixtures/generators/scaffold/tests/model.rb +3 -4
  279. data/test/fixtures/generators/scaffold/views/_form.haml +3 -2
  280. data/test/fixtures/generators/scaffold/views/edit.haml +1 -1
  281. data/test/fixtures/generators/scaffold/views/index.haml +15 -13
  282. data/test/fixtures/generators/scaffold/views/new.haml +1 -1
  283. data/test/fixtures/generators/scaffold/views/show.haml +2 -2
  284. data/test/gemfiles/Gemfile.rails.5.2 +32 -0
  285. data/test/generators/cms_assets_generator_test.rb +1 -2
  286. data/test/generators/cms_generator_test.rb +3 -1
  287. data/test/generators/cms_views_generator_test.rb +1 -1
  288. data/test/generators/scaffold_generator_test.rb +2 -2
  289. data/test/helpers/cms_helper_test.rb +52 -73
  290. data/test/integration/access_control_test.rb +35 -28
  291. data/test/integration/js_variables_test.rb +1 -2
  292. data/test/integration/render_cms_test.rb +37 -37
  293. data/test/integration/routing_test.rb +4 -5
  294. data/test/integration/seeds_test.rb +76 -0
  295. data/test/integration/sites_test.rb +35 -49
  296. data/test/integration/view_hooks_test.rb +12 -13
  297. data/test/lib/configuration_test.rb +3 -4
  298. data/test/lib/content/block_test.rb +26 -0
  299. data/test/lib/content/params_parser_test.rb +125 -0
  300. data/test/lib/content/renderer_test.rb +240 -0
  301. data/test/lib/content/tag_test.rb +48 -0
  302. data/test/lib/content/tags/asset_test.rb +79 -0
  303. data/test/lib/content/tags/checkbox_test.rb +20 -0
  304. data/test/lib/content/tags/date_test.rb +20 -0
  305. data/test/lib/content/tags/datetime_test.rb +20 -0
  306. data/test/lib/content/tags/file_link_test.rb +78 -0
  307. data/test/lib/content/tags/file_test.rb +60 -0
  308. data/test/lib/content/tags/files_test.rb +49 -0
  309. data/test/lib/content/tags/fragment_test.rb +63 -0
  310. data/test/lib/content/tags/helper_test.rb +52 -0
  311. data/test/lib/content/tags/markdown_test.rb +33 -0
  312. data/test/lib/content/tags/number_test.rb +13 -0
  313. data/test/lib/content/tags/partial_test.rb +43 -0
  314. data/test/lib/content/tags/snippet_test.rb +36 -0
  315. data/test/lib/content/tags/template_test.rb +35 -0
  316. data/test/lib/content/tags/text_test.rb +13 -0
  317. data/test/lib/content/tags/textarea_test.rb +13 -0
  318. data/test/lib/content/tags/wysiwyg_test.rb +13 -0
  319. data/test/lib/revisions_test.rb +146 -111
  320. data/test/lib/seeds/files_test.rb +96 -0
  321. data/test/lib/seeds/layouts_test.rb +155 -0
  322. data/test/lib/seeds/pages_test.rb +227 -0
  323. data/test/lib/seeds/snippets_test.rb +98 -0
  324. data/test/lib/seeds_test.rb +50 -0
  325. data/test/models/categorization_test.rb +37 -38
  326. data/test/models/category_test.rb +14 -14
  327. data/test/models/file_test.rb +23 -96
  328. data/test/models/fragment_test.rb +131 -0
  329. data/test/models/layout_test.rb +105 -74
  330. data/test/models/page_test.rb +352 -97
  331. data/test/models/site_test.rb +101 -90
  332. data/test/models/snippet_test.rb +29 -23
  333. data/test/models/translation_test.rb +60 -0
  334. data/test/tasks/cms_seeds_test.rb +33 -0
  335. data/test/test_helper.rb +49 -32
  336. metadata +235 -210
  337. data/_config.yml +0 -1
  338. data/app/assets/images/comfy/admin/cms/arrow_bottom.gif +0 -0
  339. data/app/assets/images/comfy/admin/cms/arrow_right.gif +0 -0
  340. data/app/assets/images/comfy/admin/cms/checkerboard.gif +0 -0
  341. data/app/assets/images/comfy/admin/cms/icon_draft.gif +0 -0
  342. data/app/assets/images/comfy/admin/cms/icon_file.gif +0 -0
  343. data/app/assets/images/comfy/admin/cms/icon_layout.gif +0 -0
  344. data/app/assets/images/comfy/admin/cms/icon_move.gif +0 -0
  345. data/app/assets/images/comfy/admin/cms/icon_page.gif +0 -0
  346. data/app/assets/images/comfy/admin/cms/icon_site.gif +0 -0
  347. data/app/assets/images/comfy/admin/cms/icon_snippet.gif +0 -0
  348. data/app/assets/javascripts/comfy/admin/cms/lib/bootstrap-datetimepicker.js +0 -29
  349. data/app/assets/javascripts/comfy/admin/cms/lib/diff.js.coffee +0 -9
  350. data/app/assets/javascripts/comfy/admin/cms/lib/diff/pretty_text_diff.min.js +0 -5
  351. data/app/assets/stylesheets/comfy/admin/cms/bootstrap_overrides.sass +0 -32
  352. data/app/assets/stylesheets/comfy/admin/cms/lib/bootstrap-datetimepicker.css +0 -9
  353. data/app/models/comfy/cms/block.rb +0 -63
  354. data/app/views/comfy/admin/cms/files/_page_form.html.haml +0 -10
  355. data/app/views/comfy/admin/cms/pages/_form_blocks.html.haml +0 -32
  356. data/app/views/comfy/admin/cms/pages/form_blocks.js.erb +0 -1
  357. data/app/views/comfy/admin/cms/partials/_body_before.html.haml +0 -3
  358. data/app/views/comfy/admin/cms/partials/_file_form_after.html.haml +0 -3
  359. data/app/views/comfy/admin/cms/partials/_file_form_before.html.haml +0 -3
  360. data/app/views/comfy/admin/cms/partials/_files_after.html.haml +0 -3
  361. data/app/views/comfy/admin/cms/partials/_files_before.html.haml +0 -3
  362. data/app/views/comfy/admin/cms/partials/_html_footer.html.haml +0 -2
  363. data/app/views/comfy/admin/cms/partials/_html_head.html.haml +0 -2
  364. data/app/views/comfy/admin/cms/partials/_layout_form_after.html.haml +0 -3
  365. data/app/views/comfy/admin/cms/partials/_layout_form_before.html.haml +0 -3
  366. data/app/views/comfy/admin/cms/partials/_layouts_after.html.haml +0 -3
  367. data/app/views/comfy/admin/cms/partials/_layouts_before.html.haml +0 -3
  368. data/app/views/comfy/admin/cms/partials/_navigation_after.html.haml +0 -3
  369. data/app/views/comfy/admin/cms/partials/_navigation_before.html.haml +0 -3
  370. data/app/views/comfy/admin/cms/partials/_navigation_inner.html.haml +0 -3
  371. data/app/views/comfy/admin/cms/partials/_page_form_after.html.haml +0 -3
  372. data/app/views/comfy/admin/cms/partials/_page_form_before.html.haml +0 -3
  373. data/app/views/comfy/admin/cms/partials/_page_form_inner.html.haml +0 -3
  374. data/app/views/comfy/admin/cms/partials/_pages_after.html.haml +0 -3
  375. data/app/views/comfy/admin/cms/partials/_pages_before.html.haml +0 -3
  376. data/app/views/comfy/admin/cms/partials/_right_column_after.html.haml +0 -3
  377. data/app/views/comfy/admin/cms/partials/_right_column_before.html.haml +0 -3
  378. data/app/views/comfy/admin/cms/partials/_site_form_after.html.haml +0 -3
  379. data/app/views/comfy/admin/cms/partials/_site_form_before.html.haml +0 -3
  380. data/app/views/comfy/admin/cms/partials/_sites_after.html.haml +0 -3
  381. data/app/views/comfy/admin/cms/partials/_sites_before.html.haml +0 -3
  382. data/app/views/comfy/admin/cms/partials/_snippet_form_after.html.haml +0 -3
  383. data/app/views/comfy/admin/cms/partials/_snippet_form_before.html.haml +0 -3
  384. data/app/views/comfy/admin/cms/partials/_snippets_after.html.haml +0 -3
  385. data/app/views/comfy/admin/cms/partials/_snippets_before.html.haml +0 -3
  386. data/app/views/comfy/admin/cms/sites/_mirrors.html.haml +0 -18
  387. data/app/views/comfy/cms/content/render_sitemap.xml.builder +0 -14
  388. data/app/views/layouts/comfy/admin/cms/_footer.html.haml +0 -3
  389. data/config/initializers/paperclip.rb +0 -3
  390. data/config/initializers/secret_token.rb +0 -15
  391. data/db/cms_fixtures/sample-site/categories/files.yml +0 -1
  392. data/db/cms_fixtures/sample-site/categories/pages.yml +0 -1
  393. data/db/cms_fixtures/sample-site/categories/snippets.yml +0 -1
  394. data/db/cms_fixtures/sample-site/files/_sample.jpg.yml +0 -5
  395. data/db/cms_fixtures/sample-site/layouts/default/attributes.yml +0 -1
  396. data/db/cms_fixtures/sample-site/layouts/default/content.html +0 -5
  397. data/db/cms_fixtures/sample-site/layouts/default/javascript.js +0 -1
  398. data/db/cms_fixtures/sample-site/layouts/default/nested/attributes.yml +0 -2
  399. data/db/cms_fixtures/sample-site/layouts/default/nested/content.haml +0 -3
  400. data/db/cms_fixtures/sample-site/layouts/default/nested/javascript.js +0 -1
  401. data/db/cms_fixtures/sample-site/layouts/default/nested/stylesheet.css +0 -1
  402. data/db/cms_fixtures/sample-site/layouts/default/stylesheet.css +0 -1
  403. data/db/cms_fixtures/sample-site/pages/index/attributes.yml +0 -6
  404. data/db/cms_fixtures/sample-site/pages/index/child/attributes.yml +0 -3
  405. data/db/cms_fixtures/sample-site/pages/index/child/left.haml +0 -1
  406. data/db/cms_fixtures/sample-site/pages/index/child/right.html +0 -1
  407. data/db/cms_fixtures/sample-site/pages/index/content.html +0 -2
  408. data/db/cms_fixtures/sample-site/snippets/default/attributes.yml +0 -4
  409. data/db/cms_fixtures/sample-site/snippets/default/content.html +0 -1
  410. data/db/seeds.rb +0 -7
  411. data/db/upgrade_migrations/02_upgrade_to_1_1_0.rb +0 -19
  412. data/db/upgrade_migrations/03_upgrade_to_1_2_0.rb +0 -15
  413. data/db/upgrade_migrations/04_upgrade_to_1_3_0.rb +0 -23
  414. data/db/upgrade_migrations/05_upgrade_to_1_4_0.rb +0 -33
  415. data/db/upgrade_migrations/06_upgrade_to_1_5_0.rb +0 -21
  416. data/db/upgrade_migrations/07_upgrade_to_1_6_0.rb +0 -25
  417. data/db/upgrade_migrations/08_upgrade_to_1_12_0.rb +0 -83
  418. data/doc/preview.png +0 -0
  419. data/lib/comfortable_mexican_sofa/extensions/cms_manageable.rb +0 -106
  420. data/lib/comfortable_mexican_sofa/extensions/is_categorized.rb +0 -49
  421. data/lib/comfortable_mexican_sofa/extensions/is_mirrored.rb +0 -86
  422. data/lib/comfortable_mexican_sofa/extensions/rails.rb +0 -17
  423. data/lib/comfortable_mexican_sofa/fixture.rb +0 -82
  424. data/lib/comfortable_mexican_sofa/fixture/category.rb +0 -42
  425. data/lib/comfortable_mexican_sofa/fixture/file.rb +0 -85
  426. data/lib/comfortable_mexican_sofa/fixture/layout.rb +0 -95
  427. data/lib/comfortable_mexican_sofa/fixture/page.rb +0 -129
  428. data/lib/comfortable_mexican_sofa/fixture/snippet.rb +0 -75
  429. data/lib/comfortable_mexican_sofa/tag.rb +0 -154
  430. data/lib/comfortable_mexican_sofa/tags/asset.rb +0 -30
  431. data/lib/comfortable_mexican_sofa/tags/collection.rb +0 -64
  432. data/lib/comfortable_mexican_sofa/tags/field_boolean.rb +0 -17
  433. data/lib/comfortable_mexican_sofa/tags/field_datetime.rb +0 -17
  434. data/lib/comfortable_mexican_sofa/tags/field_integer.rb +0 -17
  435. data/lib/comfortable_mexican_sofa/tags/field_rich_text.rb +0 -17
  436. data/lib/comfortable_mexican_sofa/tags/field_string.rb +0 -17
  437. data/lib/comfortable_mexican_sofa/tags/field_text.rb +0 -17
  438. data/lib/comfortable_mexican_sofa/tags/file.rb +0 -29
  439. data/lib/comfortable_mexican_sofa/tags/helper.rb +0 -24
  440. data/lib/comfortable_mexican_sofa/tags/page_datetime.rb +0 -13
  441. data/lib/comfortable_mexican_sofa/tags/page_file.rb +0 -62
  442. data/lib/comfortable_mexican_sofa/tags/page_files.rb +0 -51
  443. data/lib/comfortable_mexican_sofa/tags/page_integer.rb +0 -13
  444. data/lib/comfortable_mexican_sofa/tags/page_markdown.rb +0 -16
  445. data/lib/comfortable_mexican_sofa/tags/page_rich_text.rb +0 -13
  446. data/lib/comfortable_mexican_sofa/tags/page_string.rb +0 -13
  447. data/lib/comfortable_mexican_sofa/tags/page_text.rb +0 -13
  448. data/lib/comfortable_mexican_sofa/tags/partial.rb +0 -23
  449. data/lib/comfortable_mexican_sofa/tags/snippet.rb +0 -19
  450. data/lib/comfortable_mexican_sofa/tags/template.rb +0 -22
  451. data/lib/generators/comfy/scaffold/templates/views/_form.haml +0 -6
  452. data/lib/generators/comfy/scaffold/templates/views/index.haml +0 -23
  453. data/lib/tasks/comfortable_mexican_sofa.rake +0 -37
  454. data/test/fixtures/comfy/cms/blocks.yml +0 -12
  455. data/test/gemfiles/Gemfile.rails.4.1 +0 -22
  456. data/test/gemfiles/Gemfile.rails.4.2 +0 -22
  457. data/test/gemfiles/Gemfile.rails.5.0 +0 -23
  458. data/test/gemfiles/Gemfile.rails.master +0 -23
  459. data/test/integration/fixtures_test.rb +0 -65
  460. data/test/integration/mirrors_test.rb +0 -72
  461. data/test/lib/fixtures/categories_test.rb +0 -36
  462. data/test/lib/fixtures/files_test.rb +0 -109
  463. data/test/lib/fixtures/layouts_test.rb +0 -135
  464. data/test/lib/fixtures/pages_test.rb +0 -168
  465. data/test/lib/fixtures/snippets_test.rb +0 -106
  466. data/test/lib/fixtures_test.rb +0 -43
  467. data/test/lib/mirrors_test.rb +0 -254
  468. data/test/lib/tag_test.rb +0 -309
  469. data/test/lib/tags/asset_test.rb +0 -95
  470. data/test/lib/tags/collection_test.rb +0 -117
  471. data/test/lib/tags/field_boolean_test.rb +0 -49
  472. data/test/lib/tags/field_datetime_test.rb +0 -50
  473. data/test/lib/tags/field_integer_test.rb +0 -49
  474. data/test/lib/tags/field_rich_text_test.rb +0 -49
  475. data/test/lib/tags/field_string_test.rb +0 -52
  476. data/test/lib/tags/field_text_test.rb +0 -48
  477. data/test/lib/tags/file_test.rb +0 -67
  478. data/test/lib/tags/helper_test.rb +0 -86
  479. data/test/lib/tags/page_datetime_test.rb +0 -50
  480. data/test/lib/tags/page_file_test.rb +0 -119
  481. data/test/lib/tags/page_files_test.rb +0 -117
  482. data/test/lib/tags/page_integer_test.rb +0 -49
  483. data/test/lib/tags/page_markdown_test.rb +0 -48
  484. data/test/lib/tags/page_rich_text_test.rb +0 -49
  485. data/test/lib/tags/page_string_test.rb +0 -49
  486. data/test/lib/tags/page_text_test.rb +0 -52
  487. data/test/lib/tags/partial_test.rb +0 -76
  488. data/test/lib/tags/snippet_test.rb +0 -45
  489. data/test/lib/tags/template_test.rb +0 -56
  490. data/test/models/block_test.rb +0 -233
@@ -1,7 +1,11 @@
1
- require_relative '../test_helper'
1
+ require_relative "../test_helper"
2
2
 
3
3
  class CmsSiteTest < ActiveSupport::TestCase
4
4
 
5
+ setup do
6
+ @site = comfy_cms_sites(:default)
7
+ end
8
+
5
9
  def test_fixtures_validity
6
10
  Comfy::Cms::Site.all.each do |site|
7
11
  assert site.valid?, site.errors.inspect
@@ -13,82 +17,90 @@ class CmsSiteTest < ActiveSupport::TestCase
13
17
  assert site.invalid?
14
18
  assert_has_errors_on site, [:identifier, :label, :hostname]
15
19
 
16
- site = Comfy::Cms::Site.new(:identifier => 'test', :hostname => 'http://site.host')
20
+ site = Comfy::Cms::Site.new(identifier: "test", hostname: "http://site.host")
17
21
  assert site.invalid?
18
22
  assert_has_errors_on site, :hostname
19
23
 
20
- site = Comfy::Cms::Site.new(:identifier => comfy_cms_sites(:default).identifier, :hostname => 'site.host')
24
+ site = Comfy::Cms::Site.new(identifier: @site.identifier, hostname: "site.host")
21
25
  assert site.invalid?
22
26
  assert_has_errors_on site, :identifier
23
27
 
24
- site = Comfy::Cms::Site.new(:identifier => 'test', :hostname => 'site.host')
28
+ site = Comfy::Cms::Site.new(identifier: "test", hostname: "site.host")
25
29
  assert site.valid?, site.errors.inspect
26
30
 
27
- site = Comfy::Cms::Site.new(:identifier => 'test', :hostname => 'localhost:3000')
31
+ site = Comfy::Cms::Site.new(identifier: "test", hostname: "localhost:3000")
28
32
  assert site.valid?, site.errors.inspect
29
33
  end
30
34
 
31
35
  def test_validation_path_uniqueness
32
- s1 = comfy_cms_sites(:default)
36
+ s1 = @site
33
37
  s2 = Comfy::Cms::Site.new(
34
- :identifier => 'test',
35
- :hostname => s1.hostname,
36
- :path => s1.path
38
+ identifier: "test",
39
+ hostname: s1.hostname,
40
+ path: s1.path
37
41
  )
38
42
  assert s2.invalid?
39
43
  assert_has_errors_on s2, :hostname
40
44
 
41
45
  s2 = Comfy::Cms::Site.new(
42
- :identifier => 'test',
43
- :hostname => s1.hostname,
44
- :path => '/en'
46
+ identifier: "test",
47
+ hostname: s1.hostname,
48
+ path: "/en"
45
49
  )
46
50
  assert s2.valid?
47
51
  end
48
52
 
49
53
  def test_identifier_assignment
50
- site = Comfy::Cms::Site.new(:hostname => 'my-site.host')
54
+ site = Comfy::Cms::Site.new(hostname: "my-site.host")
51
55
  assert site.valid?
52
- assert_equal 'my-site-host', site.identifier
56
+ assert_equal "my-site-host", site.identifier
53
57
  end
54
58
 
55
59
  def test_hostname_assignment
56
- site = Comfy::Cms::Site.new(:identifier => 'test-site')
60
+ site = Comfy::Cms::Site.new(identifier: "test-site")
57
61
  assert site.valid?
58
- assert_equal 'test-site', site.hostname
62
+ assert_equal "test-site", site.hostname
59
63
  end
60
64
 
61
65
  def test_label_assignment
62
- site = Comfy::Cms::Site.new(:identifier => 'test', :hostname => 'my-site.host')
66
+ site = Comfy::Cms::Site.new(identifier: "test", hostname: "my-site.host")
63
67
  assert site.valid?
64
- assert_equal 'Test', site.label
68
+ assert_equal "Test", site.label
65
69
  end
66
70
 
67
71
  def test_clean_path
68
- site = Comfy::Cms::Site.create!(:identifier => 'test_a', :hostname => 'test.host', :path => '/en///test//')
69
- assert_equal '/en/test', site.path
72
+ site = Comfy::Cms::Site.create!(
73
+ identifier: "test_a",
74
+ hostname: "test.host",
75
+ path: "/en///test//"
76
+ )
77
+ assert_equal "/en/test", site.path
70
78
 
71
- site = Comfy::Cms::Site.create!(:identifier => 'test_b', :hostname => 'my-site.host', :path => '/')
72
- assert_equal '', site.path
79
+ site = Comfy::Cms::Site.create!(
80
+ identifier: "test_b",
81
+ hostname: "my-site.host",
82
+ path: "/"
83
+ )
84
+ assert_nil site.path
73
85
  end
74
86
 
75
87
  def test_creation
76
- assert_difference 'Comfy::Cms::Site.count' do
88
+ assert_difference "Comfy::Cms::Site.count" do
77
89
  Comfy::Cms::Site.create!(
78
- :identifier => 'test',
79
- :label => 'Test Site',
80
- :hostname => 'test.test'
90
+ identifier: "test",
91
+ label: "Test Site",
92
+ hostname: "test.test"
81
93
  )
82
94
  end
83
95
  end
84
96
 
85
97
  def test_cascading_destroy
86
- assert_difference 'Comfy::Cms::Site.count', -1 do
87
- assert_difference 'Comfy::Cms::Layout.count', -3 do
88
- assert_difference 'Comfy::Cms::Page.count', -2 do
89
- assert_difference 'Comfy::Cms::Snippet.count', -1 do
90
- assert_difference 'Comfy::Cms::Category.count', -1 do
91
- comfy_cms_sites(:default).destroy
98
+ assert_difference "Comfy::Cms::Site.count", -1 do
99
+ assert_difference "Comfy::Cms::Layout.count", -3 do
100
+ assert_difference "Comfy::Cms::Page.count", -2 do
101
+ assert_difference "Comfy::Cms::Snippet.count", -1 do
102
+ assert_difference "Comfy::Cms::Category.count", -1 do
103
+ @site.destroy
92
104
  end
93
105
  end
94
106
  end
@@ -96,83 +108,82 @@ class CmsSiteTest < ActiveSupport::TestCase
96
108
  end
97
109
  end
98
110
 
99
- def test_scope_mirrored
100
- site = comfy_cms_sites(:default)
101
- assert !site.is_mirrored
102
- assert_equal 0, Comfy::Cms::Site.mirrored.count
103
- site.update_columns(:is_mirrored => true)
104
- assert_equal 1, Comfy::Cms::Site.mirrored.count
105
- end
106
-
107
111
  def test_find_site
108
- site_a = comfy_cms_sites(:default)
109
- assert_equal 'test.host', site_a.hostname
112
+ site_a = @site
113
+ assert_equal "test.host", site_a.hostname
110
114
  assert_nil site_a.path
111
115
 
112
- assert_equal site_a, Comfy::Cms::Site.find_site('test.host')
113
- assert_equal site_a, Comfy::Cms::Site.find_site('test.host', '/some/path')
114
- assert_equal site_a, Comfy::Cms::Site.find_site('test99.host', '/some/path')
116
+ assert_equal site_a, Comfy::Cms::Site.find_site("test.host")
117
+ assert_equal site_a, Comfy::Cms::Site.find_site("test.host", "/some/path")
118
+ assert_equal site_a, Comfy::Cms::Site.find_site("test99.host", "/some/path")
115
119
 
116
- site_b = Comfy::Cms::Site.create!(:identifier => 'test_a', :hostname => 'test2.host', :path => 'en')
117
- site_c = Comfy::Cms::Site.create!(:identifier => 'test_b', :hostname => 'test2.host', :path => 'fr')
120
+ site_b = Comfy::Cms::Site.create!(identifier: "test_a", hostname: "test2.host", path: "en")
121
+ site_c = Comfy::Cms::Site.create!(identifier: "test_b", hostname: "test2.host", path: "fr")
118
122
 
119
- assert_equal site_a, Comfy::Cms::Site.find_site('test.host')
120
- assert_equal site_a, Comfy::Cms::Site.find_site('test.host', '/some/path')
121
- assert_equal site_a, Comfy::Cms::Site.find_site('test.host', '/some/path')
122
- assert_nil Comfy::Cms::Site.find_site('test99.host', '/some/path')
123
+ assert_equal site_a, Comfy::Cms::Site.find_site("test.host")
124
+ assert_equal site_a, Comfy::Cms::Site.find_site("test.host", "/some/path")
125
+ assert_equal site_a, Comfy::Cms::Site.find_site("test.host", "/some/path")
126
+ assert_nil Comfy::Cms::Site.find_site("test99.host", "/some/path")
123
127
 
124
- assert_nil Comfy::Cms::Site.find_site('test2.host')
125
- assert_nil Comfy::Cms::Site.find_site('test2.host', '/some/path')
126
- assert_equal site_b, Comfy::Cms::Site.find_site('test2.host', '/en')
127
- assert_equal site_b, Comfy::Cms::Site.find_site('test2.host', '/en?a=b')
128
- assert_equal site_b, Comfy::Cms::Site.find_site('test2.host', '/en/some/path?a=b')
128
+ assert_nil Comfy::Cms::Site.find_site("test2.host")
129
+ assert_nil Comfy::Cms::Site.find_site("test2.host", "/some/path")
130
+ assert_equal site_b, Comfy::Cms::Site.find_site("test2.host", "/en")
131
+ assert_equal site_b, Comfy::Cms::Site.find_site("test2.host", "/en?a=b")
132
+ assert_equal site_b, Comfy::Cms::Site.find_site("test2.host", "/en/some/path?a=b")
129
133
 
130
- assert_nil Comfy::Cms::Site.find_site('test2.host', '/english/some/path')
134
+ assert_nil Comfy::Cms::Site.find_site("test2.host", "/english/some/path")
131
135
 
132
- assert_equal site_c, Comfy::Cms::Site.find_site('test2.host', '/fr')
133
- assert_equal site_c, Comfy::Cms::Site.find_site('test2.host', '/fr?a=b')
134
- assert_equal site_c, Comfy::Cms::Site.find_site('test2.host', '/fr/some/path')
135
- assert_equal site_c, Comfy::Cms::Site.find_site('test2.host', '/fr/some/path?a=b')
136
+ assert_equal site_c, Comfy::Cms::Site.find_site("test2.host", "/fr")
137
+ assert_equal site_c, Comfy::Cms::Site.find_site("test2.host", "/fr?a=b")
138
+ assert_equal site_c, Comfy::Cms::Site.find_site("test2.host", "/fr/some/path")
139
+ assert_equal site_c, Comfy::Cms::Site.find_site("test2.host", "/fr/some/path?a=b")
136
140
  end
137
141
 
138
- def find_site_with_base_path
139
- base_path = '/base_path'
140
- ComfortableMexicanSofa.configuration.public_cms_path = base_path
141
- site_d = Comfy::Cms::Site.create!(:identifier => 'test_d', :hostname => 'test3.host', :path => 'de')
142
- site_e = Comfy::Cms::Site.create!(:identifier => 'test_e', :hostname => 'test3.host', :path => 'sp')
143
-
144
- assert_equal site_d, Comfy::Cms::Site.find_site('test3.host', "#{base_path}/de")
145
- assert_equal site_d, Comfy::Cms::Site.find_site('test3.host', "#{base_path}/de/some/path")
146
- assert_nil Comfy::Cms::Site.find_site('test99.host', "#{base_path}/de/some/path")
147
-
148
- assert_nil Comfy::Cms::Site.find_site('test3.host')
149
- assert_equal site_e, Comfy::Cms::Site.find_site('test3.host', "#{base_path}/sp/some/path")
150
- assert_equal site_e, Comfy::Cms::Site.find_site('test3.host', "#{base_path}/sp")
151
- assert_equal site_e, Comfy::Cms::Site.find_site('test3.host', "#{base_path}/sp?a=b")
152
- assert_equal site_e, Comfy::Cms::Site.find_site('test3.host', "#{base_path}/sp/some/path?a=b")
142
+ def test_find_site_with_public_cms_path
143
+ ComfortableMexicanSofa.config.public_cms_path = '/custom'
144
+ assert_equal '//test.host/custom', comfy_cms_sites(:default).url
145
+
146
+ site_a = Comfy::Cms::Site.create!(identifier: 'test_a', hostname: 'test2.host', path: 'en')
147
+ site_b = Comfy::Cms::Site.create!(identifier: 'test_b', hostname: 'test2.host', path: 'fr')
148
+
149
+ assert_nil Comfy::Cms::Site.find_site('test2.host')
150
+ assert_nil Comfy::Cms::Site.find_site('test2.host', '/custom/some/path')
151
+ assert_equal site_a, Comfy::Cms::Site.find_site('test2.host', '/custom/en')
152
+ assert_equal site_a, Comfy::Cms::Site.find_site('test2.host', '/custom/en?a=b')
153
+ assert_equal site_a, Comfy::Cms::Site.find_site('test2.host', '/custom/en/some/path?a=b')
154
+
155
+ assert_nil Comfy::Cms::Site.find_site('test2.host', '/custom/english/some/path')
156
+
157
+ assert_equal site_b, Comfy::Cms::Site.find_site('test2.host', '/custom/fr')
158
+ assert_equal site_b, Comfy::Cms::Site.find_site('test2.host', '/custom/fr?a=b')
159
+ assert_equal site_b, Comfy::Cms::Site.find_site('test2.host', '/custom/fr/some/path')
160
+ assert_equal site_b, Comfy::Cms::Site.find_site('test2.host', '/custom/fr/some/path?a=b')
153
161
  end
154
162
 
155
163
  def test_find_site_with_site_alias
156
- site_a = comfy_cms_sites(:default)
157
- site_b = Comfy::Cms::Site.create!(:identifier => 'site_b', :hostname => 'test2.host')
164
+ site_a = @site
165
+ site_b = Comfy::Cms::Site.create!(identifier: "site_b", hostname: "test2.host")
158
166
 
159
167
  ComfortableMexicanSofa.config.hostname_aliases = {
160
- 'test.host' => 'alias_a.host',
161
- 'test2.host' => %w(alias_b.host alias_c.host)
168
+ "test.host" => "alias_a.host",
169
+ "test2.host" => %w(alias_b.host alias_c.host)
162
170
  }
163
171
 
164
- assert_equal site_a, Comfy::Cms::Site.find_site('alias_a.host')
165
- assert_equal site_b, Comfy::Cms::Site.find_site('alias_b.host')
166
- assert_equal site_b, Comfy::Cms::Site.find_site('alias_c.host')
172
+ assert_equal site_a, Comfy::Cms::Site.find_site("alias_a.host")
173
+ assert_equal site_b, Comfy::Cms::Site.find_site("alias_b.host")
174
+ assert_equal site_b, Comfy::Cms::Site.find_site("alias_c.host")
167
175
  end
168
176
 
169
177
  def test_url
170
- assert_equal '//test.host/', comfy_cms_sites(:default).url
171
- end
178
+ assert_equal "//test.host", @site.url
179
+ assert_nil @site.url(relative: true)
172
180
 
173
- def test_url_with_public_cms_path
174
- ComfortableMexicanSofa.config.public_cms_path = '/custom'
175
- assert_equal '//test.host/custom/', comfy_cms_sites(:default).url
176
- end
181
+ @site.update_column(:path, "/site-path")
182
+ assert_equal "//test.host/site-path", @site.url
177
183
 
178
- end
184
+ ComfortableMexicanSofa.config.public_cms_path = "cms"
185
+ assert_equal "//test.host/cms/site-path", @site.url
186
+
187
+ assert_equal "/cms/site-path", @site.url(relative: true)
188
+ end
189
+ end
@@ -1,49 +1,55 @@
1
- require_relative '../test_helper'
1
+ require_relative "../test_helper"
2
2
 
3
3
  class CmsSnippetTest < ActiveSupport::TestCase
4
-
4
+
5
+ setup do
6
+ @site = comfy_cms_sites(:default)
7
+ end
8
+
5
9
  def test_fixtures_validity
6
10
  Comfy::Cms::Snippet.all.each do |snippet|
7
11
  assert snippet.valid?, snippet.errors.full_messages.to_s
8
12
  end
9
13
  end
10
-
14
+
11
15
  def test_validations
12
16
  snippet = Comfy::Cms::Snippet.new
13
17
  snippet.save
14
18
  assert snippet.invalid?
15
- assert_has_errors_on snippet, :site_id, :label, :identifier
19
+ assert_has_errors_on snippet, :site, :label, :identifier
16
20
  end
17
-
21
+
18
22
  def test_label_assignment
19
- snippet = comfy_cms_sites(:default).snippets.new(
20
- :identifier => 'test'
23
+ snippet = @site.snippets.new(
24
+ identifier: "test"
21
25
  )
22
26
  assert snippet.valid?
23
- assert_equal 'Test', snippet.label
27
+ assert_equal "Test", snippet.label
24
28
  end
25
-
29
+
26
30
  def test_create
27
- assert_difference 'Comfy::Cms::Snippet.count' do
28
- snippet = comfy_cms_sites(:default).snippets.create(
29
- :label => 'Test Snippet',
30
- :identifier => 'test',
31
- :content => 'Test Content'
31
+ assert_difference "Comfy::Cms::Snippet.count" do
32
+ snippet = @site.snippets.create(
33
+ label: "Test Snippet",
34
+ identifier: "test",
35
+ content: "Test Content"
32
36
  )
33
- assert_equal 'Test Snippet', snippet.label
34
- assert_equal 'test', snippet.identifier
35
- assert_equal 'Test Content', snippet.content
37
+ assert_equal "Test Snippet", snippet.label
38
+ assert_equal "test", snippet.identifier
39
+ assert_equal "Test Content", snippet.content
36
40
  assert_equal 1, snippet.position
37
41
  end
38
42
  end
39
-
43
+
40
44
  def test_update_forces_page_content_reload
41
45
  snippet = comfy_cms_snippets(:default)
42
- page = comfy_cms_pages(:default)
43
- assert_match snippet.content, page.content_cache
44
- snippet.update_attributes(:content => 'new_snippet_content')
46
+ page = comfy_cms_pages(:default)
47
+ comfy_cms_fragments(:default).update_column(:content, "{{cms:snippet default}}")
48
+ page.clear_content_cache!
49
+
50
+ assert_equal "snippet content", page.content_cache
51
+ snippet.update_attributes(content: "new snippet content")
45
52
  page.reload
46
- assert_match /new_snippet_content/, page.content_cache
53
+ assert_equal "new snippet content", page.content_cache
47
54
  end
48
-
49
55
  end
@@ -0,0 +1,60 @@
1
+ require_relative '../test_helper'
2
+
3
+ class CmsPageTest < ActiveSupport::TestCase
4
+
5
+ setup do
6
+ @page = comfy_cms_pages(:default)
7
+ end
8
+
9
+ def test_fixtures_validity
10
+ Comfy::Cms::Translation.all.each do |translation|
11
+ assert translation.valid?, translation.errors.full_messages.to_s
12
+ end
13
+ end
14
+
15
+ def test_validations
16
+ translation = Comfy::Cms::Translation.new
17
+ translation.save
18
+ assert translation.invalid?
19
+ assert_has_errors_on translation, :page, :layout, :locale, :label
20
+ end
21
+
22
+ def test_validation_on_locale_uniqueness
23
+ translation = @page.translations.new(
24
+ label: "Test",
25
+ locale: comfy_cms_translations(:default).locale
26
+ )
27
+ assert translation.invalid?
28
+ assert_has_errors_on translation, :locale
29
+ end
30
+
31
+ def test_validation_on_locale_uniqueness_against_site
32
+ translation = @page.translations.new(
33
+ label: "Test",
34
+ locale: comfy_cms_sites(:default).locale
35
+ )
36
+ assert translation.invalid?
37
+ assert_has_errors_on translation, :locale
38
+ end
39
+
40
+ def test_creation
41
+ assert_count_difference [Comfy::Cms::Translation, Comfy::Cms::Fragment] do
42
+ translation = @page.translations.create(
43
+ locale: "test",
44
+ label: "Test Translation",
45
+ fragments_attributes: [
46
+ { identifier: "content",
47
+ tag: "text",
48
+ content: "test" }
49
+ ]
50
+ )
51
+ assert_equal @page.layout, translation.layout
52
+ end
53
+ end
54
+
55
+ def test_scope_published
56
+ assert_equal 1, Comfy::Cms::Translation.published.count
57
+ comfy_cms_translations(:default).update_columns(is_published: false)
58
+ assert_equal 0, Comfy::Cms::Translation.published.count
59
+ end
60
+ end
@@ -0,0 +1,33 @@
1
+ require_relative "../test_helper"
2
+ require "rake"
3
+
4
+ class CmsSeedsTaskTest < ActiveSupport::TestCase
5
+
6
+ setup do
7
+ @rake = Rake::Application.new
8
+ Rake.application = @rake
9
+ # We force rake file reload by passing empty array as the last parameter
10
+ Rake.application.rake_require("tasks/cms_seeds", $LOAD_PATH, [])
11
+ Rake::Task.define_task(:environment)
12
+ end
13
+
14
+ def test_import
15
+ importer = mock()
16
+ ComfortableMexicanSofa::Seeds::Importer.expects(:new).with("from_folder", "to_site").returns(importer)
17
+ importer.expects(:import!)
18
+
19
+ with_captured_stout do
20
+ @rake["comfy:cms_seeds:import"].invoke("from_folder", "to_site")
21
+ end
22
+ end
23
+
24
+ def test_export
25
+ exporter = mock()
26
+ ComfortableMexicanSofa::Seeds::Exporter.expects(:new).with("from_site", "to_folder").returns(exporter)
27
+ exporter.expects(:export!)
28
+
29
+ with_captured_stout do
30
+ @rake["comfy:cms_seeds:export"].invoke("from_site", "to_folder")
31
+ end
32
+ end
33
+ end
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  ENV['RAILS_ENV'] = 'test'
3
2
 
4
3
  require 'simplecov'
@@ -14,8 +13,8 @@ require 'rails/test_help'
14
13
  require 'rails/generators'
15
14
  require 'mocha/setup'
16
15
 
17
- # No need to add cache-busters in test environment
18
- Paperclip::Attachment.default_options[:use_timestamp] = false
16
+ Rails.backtrace_cleaner.remove_silencers!
17
+
19
18
 
20
19
  class ActiveSupport::TestCase
21
20
 
@@ -24,8 +23,7 @@ class ActiveSupport::TestCase
24
23
  fixtures :all
25
24
 
26
25
  setup :reset_config,
27
- :reset_locale,
28
- :stub_paperclip
26
+ :reset_locale
29
27
 
30
28
  # resetting default configuration
31
29
  def reset_config
@@ -36,17 +34,16 @@ class ActiveSupport::TestCase
36
34
  config.public_auth = 'ComfortableMexicanSofa::AccessControl::PublicAuthentication'
37
35
  config.public_authorization = 'ComfortableMexicanSofa::AccessControl::PublicAuthorization'
38
36
  config.admin_route_redirect = ''
39
- config.enable_fixtures = false
40
- config.fixtures_path = File.expand_path('db/cms_fixtures', Rails.root)
37
+ config.enable_seeds = false
38
+ config.seeds_path = File.expand_path('db/cms_seeds', Rails.root)
41
39
  config.revisions_limit = 25
42
40
  config.locales = {
43
41
  'en' => 'English',
44
42
  'es' => 'Español'
45
43
  }
46
44
  config.admin_locale = nil
47
- config.upload_file_options = { }
48
45
  config.admin_cache_sweeper = nil
49
- config.allow_irb = false
46
+ config.allow_erb = false
50
47
  config.allowed_helpers = nil
51
48
  config.allowed_partials = nil
52
49
  config.allowed_templates = nil
@@ -93,31 +90,35 @@ class ActiveSupport::TestCase
93
90
  end
94
91
 
95
92
  def assert_no_select(selector, value = nil)
96
- assert_select(selector, :text => value, :count => 0)
93
+ assert_select(selector, text: value, count: 0)
97
94
  end
98
95
 
99
- # Small method that allows for better formatting in tests
100
- def rendered_content_formatter(string)
101
- string.gsub(/^[ ]+/, '')
96
+ def assert_count_difference(models, number = 1, &block)
97
+ counts = [models].flatten.map{|m| "#{m}.count"}
98
+ assert_difference counts, number do
99
+ yield
100
+ end
102
101
  end
103
102
 
104
- def stub_paperclip
105
- Comfy::Cms::Block.any_instance.stubs(:save_attached_files).returns(true)
106
- Comfy::Cms::Block.any_instance.stubs(:delete_attached_files).returns(true)
107
- Paperclip::Attachment.any_instance.stubs(:post_process).returns(true)
103
+ def assert_count_no_difference(*models, &block)
104
+ counts = [models].flatten.map{|m| "#{m}.count"}
105
+ assert_no_difference counts do
106
+ yield
107
+ end
108
108
  end
109
109
 
110
- end
111
-
112
- class ActionController::TestCase
113
-
114
- setup :setup_auth
115
-
116
- def setup_auth
117
- @request.env['HTTP_AUTHORIZATION'] = "Basic #{Base64.encode64('username:password')}"
110
+ # Capturing STDOUT into a string
111
+ def with_captured_stout
112
+ old = $stdout
113
+ $stdout = StringIO.new
114
+ yield
115
+ $stdout.string
116
+ ensure
117
+ $stdout = old
118
118
  end
119
119
  end
120
120
 
121
+
121
122
  class ActionDispatch::IntegrationTest
122
123
 
123
124
  setup :setup_host
@@ -127,16 +128,21 @@ class ActionDispatch::IntegrationTest
127
128
  end
128
129
 
129
130
  # Attaching http_auth stuff with request. Example use:
130
- # http_auth :get, '/cms-admin/pages'
131
- def http_auth(method, path, options = {}, username = 'username', password = 'password')
132
- send(method, path, options, {'HTTP_AUTHORIZATION' => "Basic #{Base64.encode64(username + ':' + password)}"})
131
+ # r :get, '/cms-admin/pages'
132
+ def r(method, path, options = {})
133
+ headers = options[:headers] || {}
134
+ headers['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials(
135
+ ComfortableMexicanSofa::AccessControl::AdminAuthentication.username,
136
+ ComfortableMexicanSofa::AccessControl::AdminAuthentication.password
137
+ )
138
+ options.merge!(headers: headers)
139
+ send(method, path, options)
133
140
  end
134
141
 
135
- # Overriding helper method as it doesn't really work for integration tests by default
136
142
  def with_routing(&block)
137
143
  yield ComfortableMexicanSofa::Application.routes
138
144
  ensure
139
- load File.expand_path('../config/cms_routes.rb', File.dirname(__FILE__))
145
+ ComfortableMexicanSofa::Application.routes_reloader.reload!
140
146
  end
141
147
  end
142
148
 
@@ -150,10 +156,22 @@ class Rails::Generators::TestCase
150
156
  def prepare_files
151
157
  config_path = File.join(self.destination_root, 'config')
152
158
  routes_path = File.join(config_path, 'routes.rb')
159
+ app_path = File.join(config_path, 'application.rb')
153
160
  FileUtils.mkdir_p(config_path)
154
161
  FileUtils.touch(routes_path)
155
162
  File.open(routes_path, 'w') do |f|
156
- f.write("Test::Application.routes.draw do\n\nend")
163
+ f.write <<-RUBY.strip_heredoc
164
+ Test::Application.routes.draw do
165
+ end
166
+ RUBY
167
+ end
168
+ File.open(app_path, 'w') do |f|
169
+ f.write <<-RUBY.strip_heredoc
170
+ module TestApp
171
+ class Application < Rails::Application
172
+ end
173
+ end
174
+ RUBY
157
175
  end
158
176
  end
159
177
 
@@ -165,5 +183,4 @@ class Rails::Generators::TestCase
165
183
  )
166
184
  )
167
185
  end
168
-
169
186
  end