comfortable_mexican_sofa 2.0.9 → 2.0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (192) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/comfy/vendor/bootstrap.min.js +3 -3
  3. data/app/assets/stylesheets/comfy/admin/cms/application.sass +1 -2
  4. data/app/assets/stylesheets/comfy/admin/cms/base.sass +12 -13
  5. data/app/assets/stylesheets/comfy/vendor/bootstrap/_alert.scss +3 -1
  6. data/app/assets/stylesheets/comfy/vendor/bootstrap/_button-group.scss +31 -72
  7. data/app/assets/stylesheets/comfy/vendor/bootstrap/_buttons.scss +26 -19
  8. data/app/assets/stylesheets/comfy/vendor/bootstrap/_card.scss +23 -12
  9. data/app/assets/stylesheets/comfy/vendor/bootstrap/_carousel.scss +2 -2
  10. data/app/assets/stylesheets/comfy/vendor/bootstrap/_close.scss +6 -1
  11. data/app/assets/stylesheets/comfy/vendor/bootstrap/_code.scss +4 -12
  12. data/app/assets/stylesheets/comfy/vendor/bootstrap/_custom-forms.scss +124 -84
  13. data/app/assets/stylesheets/comfy/vendor/bootstrap/_dropdown.scss +30 -2
  14. data/app/assets/stylesheets/comfy/vendor/bootstrap/_forms.scss +46 -71
  15. data/app/assets/stylesheets/comfy/vendor/bootstrap/_functions.scss +4 -4
  16. data/app/assets/stylesheets/comfy/vendor/bootstrap/_images.scss +0 -1
  17. data/app/assets/stylesheets/comfy/vendor/bootstrap/_input-group.scss +99 -126
  18. data/app/assets/stylesheets/comfy/vendor/bootstrap/_list-group.scss +2 -1
  19. data/app/assets/stylesheets/comfy/vendor/bootstrap/_modal.scss +24 -9
  20. data/app/assets/stylesheets/comfy/vendor/bootstrap/_nav.scss +2 -2
  21. data/app/assets/stylesheets/comfy/vendor/bootstrap/_navbar.scss +8 -3
  22. data/app/assets/stylesheets/comfy/vendor/bootstrap/_pagination.scss +32 -19
  23. data/app/assets/stylesheets/comfy/vendor/bootstrap/_popover.scss +106 -117
  24. data/app/assets/stylesheets/comfy/vendor/bootstrap/_print.scss +17 -3
  25. data/app/assets/stylesheets/comfy/vendor/bootstrap/_progress.scss +4 -1
  26. data/app/assets/stylesheets/comfy/vendor/bootstrap/_reboot.scss +3 -25
  27. data/app/assets/stylesheets/comfy/vendor/bootstrap/_tables.scss +1 -1
  28. data/app/assets/stylesheets/comfy/vendor/bootstrap/_tooltip.scss +65 -57
  29. data/app/assets/stylesheets/comfy/vendor/bootstrap/_type.scss +2 -2
  30. data/app/assets/stylesheets/comfy/vendor/bootstrap/_variables.scss +174 -108
  31. data/app/assets/stylesheets/comfy/vendor/bootstrap/bootstrap-grid.scss +32 -0
  32. data/app/assets/stylesheets/comfy/vendor/bootstrap/bootstrap-reboot.scss +12 -0
  33. data/app/assets/stylesheets/comfy/vendor/bootstrap/bootstrap.scss +42 -0
  34. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_background-variant.scss +2 -1
  35. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_breakpoints.scss +11 -7
  36. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_buttons.scss +37 -22
  37. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_caret.scss +30 -0
  38. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_forms.scss +48 -19
  39. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_grid-framework.scss +5 -7
  40. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_hover.scss +24 -46
  41. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_list-group.scss +10 -13
  42. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_screen-reader.scss +1 -1
  43. data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_text-hide.scss +1 -0
  44. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_borders.scss +6 -1
  45. data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_display.scss +10 -28
  46. data/app/controllers/comfy/admin/cms/files_controller.rb +6 -7
  47. data/app/helpers/comfy/admin/cms_helper.rb +5 -4
  48. data/app/models/concerns/comfy/cms/with_categories.rb +20 -9
  49. data/app/views/comfy/admin/cms/categories/_edit.html.haml +3 -3
  50. data/app/views/comfy/admin/cms/categories/_form.html.haml +3 -9
  51. data/app/views/comfy/admin/cms/categories/_index.html.haml +2 -2
  52. data/app/views/comfy/admin/cms/categories/_show.html.haml +4 -3
  53. data/app/views/comfy/admin/cms/categories/create.js.erb +1 -1
  54. data/app/views/comfy/admin/cms/files/_form.html.haml +11 -12
  55. data/app/views/comfy/admin/cms/files/edit.html.haml +2 -2
  56. data/app/views/comfy/admin/cms/files/new.html.haml +2 -2
  57. data/app/views/comfy/admin/cms/fragments/_form_fragment_attachments.html.haml +7 -5
  58. data/app/views/comfy/admin/cms/fragments/_form_fragments.html.haml +1 -1
  59. data/app/views/comfy/admin/cms/layouts/_form.html.haml +3 -2
  60. data/app/views/comfy/admin/cms/layouts/edit.html.haml +1 -1
  61. data/app/views/comfy/admin/cms/layouts/new.html.haml +2 -2
  62. data/app/views/comfy/admin/cms/pages/_form.html.haml +3 -5
  63. data/app/views/comfy/admin/cms/pages/edit.html.haml +1 -1
  64. data/app/views/comfy/admin/cms/pages/new.html.haml +1 -1
  65. data/app/views/comfy/admin/cms/revisions/show.html.haml +2 -2
  66. data/app/views/comfy/admin/cms/sites/_form.html.haml +4 -4
  67. data/app/views/comfy/admin/cms/sites/edit.html.haml +1 -1
  68. data/app/views/comfy/admin/cms/sites/new.html.haml +2 -2
  69. data/app/views/comfy/admin/cms/snippets/_form.html.haml +2 -2
  70. data/app/views/comfy/admin/cms/snippets/edit.html.haml +1 -1
  71. data/app/views/comfy/admin/cms/snippets/new.html.haml +2 -2
  72. data/app/views/comfy/admin/cms/translations/_form.html.haml +5 -7
  73. data/app/views/comfy/admin/cms/translations/edit.html.haml +1 -1
  74. data/app/views/comfy/admin/cms/translations/new.html.haml +2 -2
  75. data/comfortable_mexican_sofa.gemspec +6 -3
  76. data/config/locales/fr.yml +33 -33
  77. data/lib/comfortable_mexican_sofa/content/tags/file.rb +1 -1
  78. data/lib/comfortable_mexican_sofa/content/tags/files.rb +1 -1
  79. data/lib/comfortable_mexican_sofa/form_builder.rb +10 -15
  80. data/lib/comfortable_mexican_sofa/seeds.rb +2 -5
  81. data/lib/comfortable_mexican_sofa/version.rb +1 -1
  82. metadata +9 -116
  83. data/app/assets/stylesheets/comfy/vendor/_bootstrap.scss +0 -42
  84. data/doc/preview.jpg +0 -0
  85. data/test/controllers/comfy/admin/cms/base_controller_test.rb +0 -18
  86. data/test/controllers/comfy/admin/cms/categories_controller_test.rb +0 -74
  87. data/test/controllers/comfy/admin/cms/files_controller_test.rb +0 -242
  88. data/test/controllers/comfy/admin/cms/layouts_controller_test.rb +0 -137
  89. data/test/controllers/comfy/admin/cms/pages_controller_test.rb +0 -580
  90. data/test/controllers/comfy/admin/cms/revisions/layout_controller_test.rb +0 -62
  91. data/test/controllers/comfy/admin/cms/revisions/page_controller_test.rb +0 -87
  92. data/test/controllers/comfy/admin/cms/revisions/snippet_controller_test.rb +0 -60
  93. data/test/controllers/comfy/admin/cms/revisions/translation_controller_test.rb +0 -68
  94. data/test/controllers/comfy/admin/cms/sites_controller_test.rb +0 -106
  95. data/test/controllers/comfy/admin/cms/snippets_controller_test.rb +0 -156
  96. data/test/controllers/comfy/admin/cms/translations_controller_test.rb +0 -182
  97. data/test/controllers/comfy/cms/assets_controller_test.rb +0 -61
  98. data/test/controllers/comfy/cms/content_controller_test.rb +0 -249
  99. data/test/fixtures/active_storage/attachments.yml +0 -9
  100. data/test/fixtures/active_storage/blobs.yml +0 -13
  101. data/test/fixtures/comfy/cms/categories.yml +0 -4
  102. data/test/fixtures/comfy/cms/categorizations.yml +0 -3
  103. data/test/fixtures/comfy/cms/files.yml +0 -5
  104. data/test/fixtures/comfy/cms/fragments.yml +0 -25
  105. data/test/fixtures/comfy/cms/layouts.yml +0 -34
  106. data/test/fixtures/comfy/cms/pages.yml +0 -24
  107. data/test/fixtures/comfy/cms/revisions.yml +0 -29
  108. data/test/fixtures/comfy/cms/sites.yml +0 -5
  109. data/test/fixtures/comfy/cms/snippets.yml +0 -6
  110. data/test/fixtures/comfy/cms/translations.yml +0 -7
  111. data/test/fixtures/files/data.zip +0 -0
  112. data/test/fixtures/files/document.pdf +0 -0
  113. data/test/fixtures/files/image.gif +0 -0
  114. data/test/fixtures/files/image.jpg +0 -0
  115. data/test/fixtures/generators/cms/application.rb +0 -7
  116. data/test/fixtures/generators/cms/routes.rb +0 -5
  117. data/test/fixtures/generators/scaffold/controller.rb +0 -62
  118. data/test/fixtures/generators/scaffold/migration.rb +0 -9
  119. data/test/fixtures/generators/scaffold/model.rb +0 -21
  120. data/test/fixtures/generators/scaffold/routes.rb +0 -6
  121. data/test/fixtures/generators/scaffold/tests/controller.rb +0 -111
  122. data/test/fixtures/generators/scaffold/tests/fixture +0 -2
  123. data/test/fixtures/generators/scaffold/tests/model.rb +0 -24
  124. data/test/fixtures/generators/scaffold/views/_form.haml +0 -5
  125. data/test/fixtures/generators/scaffold/views/edit.haml +0 -5
  126. data/test/fixtures/generators/scaffold/views/index.haml +0 -21
  127. data/test/fixtures/generators/scaffold/views/new.haml +0 -5
  128. data/test/fixtures/generators/scaffold/views/show.haml +0 -4
  129. data/test/fixtures/views/_nav_hook.html.erb +0 -1
  130. data/test/fixtures/views/_nav_hook_2.html.erb +0 -1
  131. data/test/fixtures/views/render_test/_test.html.erb +0 -1
  132. data/test/fixtures/views/render_test/new.html.erb +0 -1
  133. data/test/fixtures/views/render_test/render_layout.html.erb +0 -1
  134. data/test/gemfiles/5.2.gemfile +0 -19
  135. data/test/generators/cms_assets_generator_test.rb +0 -14
  136. data/test/generators/cms_controllers_generator_test.rb +0 -14
  137. data/test/generators/cms_generator_test.rb +0 -26
  138. data/test/generators/cms_models_generator_test.rb +0 -14
  139. data/test/generators/cms_views_generator_test.rb +0 -14
  140. data/test/generators/scaffold_generator_test.rb +0 -32
  141. data/test/helpers/cms_helper_test.rb +0 -106
  142. data/test/integration/access_control_test.rb +0 -179
  143. data/test/integration/i18n_test.rb +0 -38
  144. data/test/integration/meta_variables_test.rb +0 -27
  145. data/test/integration/render_cms_test.rb +0 -255
  146. data/test/integration/routing_test.rb +0 -19
  147. data/test/integration/seeds_test.rb +0 -75
  148. data/test/integration/sites_test.rb +0 -107
  149. data/test/integration/view_hooks_test.rb +0 -47
  150. data/test/lib/configuration_test.rb +0 -38
  151. data/test/lib/content/block_test.rb +0 -26
  152. data/test/lib/content/params_parser_test.rb +0 -126
  153. data/test/lib/content/renderer_test.rb +0 -276
  154. data/test/lib/content/tag_test.rb +0 -58
  155. data/test/lib/content/tags/asset_test.rb +0 -104
  156. data/test/lib/content/tags/checkbox_test.rb +0 -21
  157. data/test/lib/content/tags/date_test.rb +0 -21
  158. data/test/lib/content/tags/datetime_test.rb +0 -21
  159. data/test/lib/content/tags/file_link_test.rb +0 -91
  160. data/test/lib/content/tags/file_test.rb +0 -69
  161. data/test/lib/content/tags/files_test.rb +0 -52
  162. data/test/lib/content/tags/fragment_test.rb +0 -68
  163. data/test/lib/content/tags/helper_test.rb +0 -62
  164. data/test/lib/content/tags/markdown_test.rb +0 -37
  165. data/test/lib/content/tags/number_test.rb +0 -14
  166. data/test/lib/content/tags/partial_test.rb +0 -65
  167. data/test/lib/content/tags/snippet_test.rb +0 -37
  168. data/test/lib/content/tags/template_test.rb +0 -51
  169. data/test/lib/content/tags/text_test.rb +0 -14
  170. data/test/lib/content/tags/textarea_test.rb +0 -14
  171. data/test/lib/content/tags/wysiwyg_test.rb +0 -14
  172. data/test/lib/revisions_test.rb +0 -222
  173. data/test/lib/seeds/files_test.rb +0 -97
  174. data/test/lib/seeds/layouts_test.rb +0 -156
  175. data/test/lib/seeds/pages_test.rb +0 -230
  176. data/test/lib/seeds/snippets_test.rb +0 -99
  177. data/test/lib/seeds_test.rb +0 -51
  178. data/test/models/categorization_test.rb +0 -76
  179. data/test/models/category_test.rb +0 -39
  180. data/test/models/file_test.rb +0 -43
  181. data/test/models/fragment_test.rb +0 -132
  182. data/test/models/layout_test.rb +0 -194
  183. data/test/models/page_test.rb +0 -575
  184. data/test/models/site_test.rb +0 -190
  185. data/test/models/snippet_test.rb +0 -56
  186. data/test/models/translation_test.rb +0 -67
  187. data/test/system/layouts_frontend_test.rb +0 -15
  188. data/test/system/pages_frontend_test.rb +0 -15
  189. data/test/system/sites_frontend_test.rb +0 -11
  190. data/test/system/snippets_frontend_test.rb +0 -15
  191. data/test/tasks/cms_seeds_test.rb +0 -34
  192. data/test/test_helper.rb +0 -201
@@ -1,580 +0,0 @@
1
- require_relative "../../../../test_helper"
2
-
3
- class Comfy::Admin::Cms::PagesControllerTest < ActionDispatch::IntegrationTest
4
-
5
- def setup
6
- @site = comfy_cms_sites(:default)
7
- @layout = comfy_cms_layouts(:default)
8
- @page = comfy_cms_pages(:default)
9
- end
10
-
11
- def test_get_index
12
- r :get, comfy_admin_cms_site_pages_path(site_id: @site)
13
- assert_response :success
14
- assert assigns(:pages)
15
- assert_template :index
16
- end
17
-
18
- def test_get_index_with_no_pages
19
- Comfy::Cms::Page.delete_all
20
- r :get, comfy_admin_cms_site_pages_path(site_id: @site)
21
- assert_response :redirect
22
- assert_redirected_to action: :new
23
- end
24
-
25
- def test_get_index_with_category
26
- category = @site.categories.create!(
27
- label: "Test Category",
28
- categorized_type: "Comfy::Cms::Page"
29
- )
30
- category.categorizations.create!(categorized: comfy_cms_pages(:child))
31
-
32
- r :get, comfy_admin_cms_site_pages_path(site_id: @site), params: { categories: category.label }
33
- assert_response :success
34
- assert assigns(:pages)
35
- assert_equal 1, assigns(:pages).count
36
- assert assigns(:pages).first.categories.member? category
37
- end
38
-
39
- def test_get_index_with_category_invalid
40
- r :get, comfy_admin_cms_site_pages_path(site_id: @site), params: { categories: "invalid" }
41
- assert_response :success
42
- assert assigns(:pages)
43
- assert_equal 0, assigns(:pages).count
44
- end
45
-
46
- def test_get_index_with_toggle
47
- @site.pages.create!(
48
- label: "test",
49
- slug: "test",
50
- parent: comfy_cms_pages(:child),
51
- layout: comfy_cms_layouts(:default)
52
- )
53
- r :get, comfy_admin_cms_site_pages_path(site_id: @site)
54
- assert_response :success
55
- end
56
-
57
- def test_get_links_with_redactor
58
- r :get, comfy_admin_cms_site_pages_path(site_id: @site), params: { source: "redactor" }
59
- assert_response :success
60
-
61
- assert_equal [
62
- { "name" => "Select page...", "url" => false },
63
- { "name" => "Default Page", "url" => "/" },
64
- { "name" => ". . Child Page", "url" => "/child-page" }
65
- ], JSON.parse(response.body)
66
- end
67
-
68
- def test_get_new
69
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
70
- assert_response :success
71
- assert assigns(:page)
72
- assert_equal @layout, assigns(:page).layout
73
- assert_template :new
74
- assert_select "form[action='/admin/sites/#{@site.id}/pages']"
75
- assert_select "select[data-url='/admin/sites/#{@site.id}/pages/0/form_fragments']"
76
- end
77
-
78
- def test_get_new_with_field_wysiwyg
79
- @layout.update_column(:content, "{{cms:wysiwyg test}}")
80
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
81
- assert_response :success
82
- assert_select "textarea[name='page[fragments_attributes][0][content]'][data-cms-rich-text]"
83
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
84
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='wysiwyg']"
85
- end
86
-
87
- def test_get_new_with_field_text
88
- @layout.update_column(:content, "{{cms:text test}}")
89
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
90
- assert_response :success
91
- assert_select "input[type='text'][name='page[fragments_attributes][0][content]']"
92
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
93
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='text']"
94
- end
95
-
96
- def test_get_new_with_field_textarea
97
- @layout.update_column(:content, "{{cms:textarea test}}")
98
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
99
- assert_response :success
100
- assert_select "textarea[name='page[fragments_attributes][0][content]'][data-cms-cm-mode='text/html']"
101
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
102
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='text_area']"
103
- end
104
-
105
- def test_get_new_with_field_markdown
106
- @layout.update_column(:content, "{{cms:markdown test}}")
107
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
108
- assert_response :success
109
- assert_select "textarea[name='page[fragments_attributes][0][content]'][data-cms-cm-mode='text/x-markdown']"
110
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
111
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='markdown']"
112
- end
113
-
114
- def test_get_new_with_field_datetime
115
- @layout.update_column(:content, "{{cms:datetime test}}")
116
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
117
- assert_response :success
118
- assert_select "input[type='text'][name='page[fragments_attributes][0][datetime]'][data-cms-datetime]"
119
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
120
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='datetime']"
121
- end
122
-
123
- def test_get_new_with_field_date
124
- @layout.update_column(:content, "{{cms:date test}}")
125
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
126
- assert_response :success
127
- assert_select "input[type='text'][name='page[fragments_attributes][0][datetime]'][data-cms-date]"
128
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
129
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='date']"
130
- end
131
-
132
- def test_get_new_with_field_number
133
- @layout.update_column(:content, "{{cms:number test}}")
134
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
135
- assert_response :success
136
- assert_select "input[type='number'][name='page[fragments_attributes][0][content]']"
137
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
138
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='number']"
139
- end
140
-
141
- def test_get_new_with_field_checkbox
142
- @layout.update_column(:content, "{{cms:checkbox test}}")
143
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
144
- assert_response :success
145
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][boolean]'][value='0']"
146
- assert_select "input[type='checkbox'][name='page[fragments_attributes][0][boolean]'][value='1']"
147
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
148
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='checkbox']"
149
- end
150
-
151
- def test_get_new_with_field_file
152
- @layout.update_column(:content, "{{cms:file test}}")
153
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
154
- assert_response :success
155
- assert_select "input[type='file'][name='page[fragments_attributes][0][files]']"
156
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
157
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='file']"
158
- end
159
-
160
- def test_get_new_with_field_files
161
- @layout.update_column(:content, "{{cms:files test}}")
162
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
163
- assert_response :success
164
- assert_select "input[type='file'][name='page[fragments_attributes][0][files][]'][multiple=multiple]"
165
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
166
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='files']"
167
- end
168
-
169
- def test_get_new_with_several_fields
170
- @layout.update_column(:content, "{{cms:wysiwyg a}}{{cms:markdown b}}")
171
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
172
- assert_response :success
173
- assert_select "textarea[name='page[fragments_attributes][0][content]']"
174
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='a']"
175
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][tag]'][value='wysiwyg']"
176
- assert_select "textarea[name='page[fragments_attributes][1][content]']"
177
- assert_select "input[type='hidden'][name='page[fragments_attributes][1][identifier]'][value='b']"
178
- assert_select "input[type='hidden'][name='page[fragments_attributes][1][tag]'][value='markdown']"
179
- end
180
-
181
- def test_get_new_with_non_renderable_fragment
182
- @layout.update_column(:content, "{{cms:text a}}{{cms:text b, render: false}}")
183
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
184
- assert_response :success
185
- assert_select "label.renderable-true", "A"
186
- assert_select "label.renderable-false", "B"
187
- end
188
-
189
- def test_get_new_with_invalid_tag
190
- @layout.update_column(:content, "{{cms:invalid}}")
191
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
192
- assert_response :success
193
- assert_select "div.alert-danger", "Unrecognized tag: {{cms:invalid}}"
194
- end
195
-
196
- def test_get_new_with_invalid_fragment_tag
197
- @layout.update_column(:content, "a {{cms:markdown}} b")
198
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
199
- assert_response :success
200
- assert_select "div.alert-danger", "Missing identifier for fragment tag: {{cms:markdown}}"
201
- end
202
-
203
- def test_get_new_with_repeated_tag
204
- @layout.update_column(:content, "{{cms:text test}}{{cms:text test}}")
205
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
206
- assert_response :success
207
- assert_select "input[name='page[fragments_attributes][0][content]']"
208
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='test']"
209
- assert_select "input[name='page[fragments_attributes][1][content]']", 0
210
- assert_select "input[type='hidden'][name='page[fragments_attributes][1][identifier]'][value='test']", 0
211
- end
212
-
213
- def test_get_new_with_namespaced_tags
214
- @layout.update_column(:content, "{{cms:text a, namespace: a}}{{cms:text b, namespace: b}}")
215
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
216
- assert_response :success
217
- assert_select "a[data-toggle='tab'][href='#ns-a']", "A"
218
- assert_select "a[data-toggle='tab'][href='#ns-b']", "B"
219
- assert_select "input[name='page[fragments_attributes][0][content]']"
220
- assert_select "input[type='hidden'][name='page[fragments_attributes][0][identifier]'][value='a']"
221
- assert_select "input[name='page[fragments_attributes][1][content]']"
222
- assert_select "input[type='hidden'][name='page[fragments_attributes][1][identifier]'][value='b']"
223
- end
224
-
225
- def test_get_new_with_localized_names
226
- I18n.backend.store_translations(:en, comfy: { cms: { content:
227
- { tag: { localized_a: "Localized Fragment" },
228
- namespace: { localized_a: "Localized Namespace" } }
229
- } })
230
- @layout.update_column(
231
- :content,
232
- "{{cms:text localized_a, namespace: localized_a}}{{cms:text b, namespace: b}}"
233
- )
234
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
235
- assert_response :success
236
-
237
- assert_select "a[data-toggle='tab'][href='#ns-localized_a']", "Localized Namespace"
238
- assert_select "label", "Localized Fragment"
239
- ensure
240
- I18n.backend.store_translations(:en, comfy: { cms: { content:
241
- { tag: nil, namespace: nil }
242
- } })
243
- end
244
-
245
- def test_get_new_as_child_page
246
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site), params: { parent_id: @page }
247
- assert_response :success
248
- assert assigns(:page)
249
- assert_equal comfy_cms_pages(:default), assigns(:page).parent
250
- assert_template :new
251
- end
252
-
253
- def test_get_edit
254
- r :get, edit_comfy_admin_cms_site_page_path(site_id: @site, id: @page)
255
- assert_response :success
256
- assert assigns(:page)
257
- assert_template :edit
258
- assert_select "form[action='/admin/sites/#{@site.id}/pages/#{@page.id}']"
259
- assert_select "select[data-url='/admin/sites/#{@site.id}/pages/#{@page.id}/form_fragments']"
260
- end
261
-
262
- def test_get_edit_failure
263
- r :get, edit_comfy_admin_cms_site_page_path(site_id: @site, id: "not_found")
264
- assert_response :redirect
265
- assert_redirected_to action: :index
266
- assert_equal "Page not found", flash[:danger]
267
- end
268
-
269
- def test_get_edit_with_blank_layout
270
- @page.update_column(:layout_id, nil)
271
- r :get, edit_comfy_admin_cms_site_page_path(site_id: @site, id: @page)
272
- assert_response :success
273
- assert assigns(:page)
274
- end
275
-
276
- def test_get_edit_with_non_english_locale
277
- @site.update_column(:locale, "es")
278
- r :get, edit_comfy_admin_cms_site_page_path(site_id: @site, id: @page)
279
- assert_response :success
280
- end
281
-
282
- def test_get_edit_with_layout_and_no_tags
283
- @page.layout.update_column(:content, "")
284
- r :get, edit_comfy_admin_cms_site_page_path(site_id: @site, id: @page)
285
- assert_response :success
286
- end
287
-
288
- def test_creation
289
- assert_difference "Comfy::Cms::Page.count" do
290
- assert_difference "Comfy::Cms::Fragment.count", 2 do
291
- r :post, comfy_admin_cms_site_pages_path(site_id: @site), params: {
292
- page: {
293
- label: "Test Page",
294
- slug: "test-page",
295
- parent_id: @page.id,
296
- layout_id: @layout.id,
297
- fragments_attributes: [
298
- { identifier: "default_page_text",
299
- content: "content content" },
300
- { identifier: "default_field_text",
301
- content: "title content" }
302
- ]
303
- },
304
- commit: "Create Page"
305
- }
306
- assert_response :redirect
307
- page = Comfy::Cms::Page.last
308
- assert_equal @site, page.site
309
- assert_redirected_to action: :edit, id: page
310
- assert_equal "Page created", flash[:success]
311
- end
312
- end
313
- end
314
-
315
- def test_creation_with_files
316
- assert_difference "Comfy::Cms::Page.count" do
317
- assert_difference "Comfy::Cms::Fragment.count", 3 do
318
- assert_difference "ActiveStorage::Attachment.count", 3 do
319
- r :post, comfy_admin_cms_site_pages_path(site_id: @site), params: {
320
- page: {
321
- label: "Test Page",
322
- slug: "test-page",
323
- parent_id: @page.id,
324
- layout_id: @layout.id,
325
- fragments_attributes: [
326
- { identifier: "image",
327
- tag: "file",
328
- files: fixture_file_upload("files/image.jpg", "image/jpeg")
329
- },
330
- { identifier: "files_multiple",
331
- tag: "files",
332
- files: [
333
- fixture_file_upload("files/image.jpg", "image/jpeg"),
334
- fixture_file_upload("files/document.pdf", "application/pdf")
335
- ]
336
- },
337
- { identifier: "unpopulated",
338
- tag: "file",
339
- content: nil
340
- }
341
- ]
342
- },
343
- commit: "Create Page"
344
- }
345
- assert_response :redirect
346
- page = Comfy::Cms::Page.last
347
- assert_equal @site, page.site
348
- assert_redirected_to action: :edit, id: page
349
- assert_equal "Page created", flash[:success]
350
- end
351
- end
352
- end
353
- end
354
-
355
- def test_creation_failure
356
- assert_no_difference ["Comfy::Cms::Page.count", "Comfy::Cms::Fragment.count"] do
357
- r :post, comfy_admin_cms_site_pages_path(site_id: @site), params: { page: {
358
- layout_id: @layout.id,
359
- fragments_attributes: [
360
- { identifier: "content",
361
- content: "content content" },
362
- { identifier: "title",
363
- content: "title content" }
364
- ]
365
- } }
366
- assert_response :success
367
- page = assigns(:page)
368
-
369
- assert_equal 2, page.fragments.size
370
- assert_equal ["content content", "title content"], page.fragments.collect(&:content)
371
- assert_template :new
372
- assert_equal "Failed to create page", flash[:danger]
373
- end
374
- end
375
-
376
- def test_update
377
- assert_no_difference "Comfy::Cms::Fragment.count" do
378
- r :put, comfy_admin_cms_site_page_path(site_id: @site, id: @page), params: { page: {
379
- label: "Updated Label"
380
- } }
381
- @page.reload
382
- assert_response :redirect
383
- assert_redirected_to action: :edit, id: @page
384
- assert_equal "Page updated", flash[:success]
385
- assert_equal "Updated Label", @page.label
386
- end
387
- end
388
-
389
- def test_update_with_layout_change
390
- assert_difference "Comfy::Cms::Fragment.count" do
391
- r :put, comfy_admin_cms_site_page_path(site_id: @site, id: @page), params: { page: {
392
- label: "Updated Label",
393
- layout_id: comfy_cms_layouts(:nested).id,
394
- fragments_attributes: [
395
- { identifier: "content",
396
- content: "new_page_text_content" },
397
- { identifier: "header",
398
- content: "new_page_string_content" }
399
- ]
400
- } }
401
- @page.reload
402
- assert_response :redirect
403
- assert_redirected_to action: :edit, id: @page
404
- assert_equal "Page updated", flash[:success]
405
- assert_equal "Updated Label", @page.label
406
- identifiers = @page.fragments.collect(&:identifier)
407
- assert_equal %w[boolean content datetime file header], identifiers.sort
408
- end
409
- end
410
-
411
- def test_update_failure
412
- r :put, comfy_admin_cms_site_page_path(site_id: @site, id: @page), params: { page: {
413
- label: ""
414
- } }
415
- assert_response :success
416
- assert_template :edit
417
- assert assigns(:page)
418
- assert_equal "Failed to update page", flash[:danger]
419
- end
420
-
421
- def test_destroy
422
- assert_difference "Comfy::Cms::Page.count", -2 do
423
- assert_difference "Comfy::Cms::Fragment.count", -4 do
424
- r :delete, comfy_admin_cms_site_page_path(site_id: @site, id: @page)
425
- assert_response :redirect
426
- assert_redirected_to action: :index
427
- assert_equal "Page deleted", flash[:success]
428
- end
429
- end
430
- end
431
-
432
- def test_get_form_fragments
433
- r :get, form_fragments_comfy_admin_cms_site_page_path(site_id: @site, id: @page), xhr: true, params: {
434
- layout_id: comfy_cms_layouts(:nested).id
435
- }
436
- assert_response :success
437
- assert assigns(:page)
438
- assert_equal 2, assigns(:page).fragment_nodes.size
439
- assert_template :form_fragments
440
-
441
- r :get, form_fragments_comfy_admin_cms_site_page_path(site_id: @site, id: @page), xhr: true, params: {
442
- layout_id: @layout.id
443
- }
444
- assert_response :success
445
- assert assigns(:page)
446
- assert_equal 1, assigns(:page).fragment_nodes.size
447
- assert_template :form_fragments
448
- end
449
-
450
- def test_get_form_fragments_for_new_page
451
- r :get, form_fragments_comfy_admin_cms_site_page_path(site_id: @site, id: 0), xhr: true, params: {
452
- layout_id: @layout.id
453
- }
454
- assert_response :success
455
- assert assigns(:page)
456
- assert_equal 1, assigns(:page).fragment_nodes.size
457
- assert_template :form_fragments
458
- end
459
-
460
- def test_creation_preview
461
- assert_no_difference "Comfy::Cms::Page.count" do
462
- r :post, comfy_admin_cms_site_pages_path(site_id: @site), params: {
463
- preview: "Preview",
464
- page: {
465
- label: "Test Page",
466
- slug: "test-page",
467
- parent_id: @page.id,
468
- layout_id: @layout.id,
469
- fragments_attributes: [
470
- { identifier: "content",
471
- content: "preview content" }
472
- ]
473
- }
474
- }
475
- assert_response :success
476
- assert_match %r{preview content}, response.body
477
- assert_equal "text/html", response.content_type
478
-
479
- assert_equal @site, assigns(:cms_site)
480
- assert_equal @layout, assigns(:cms_layout)
481
- assert assigns(:cms_page)
482
- assert assigns(:cms_page).new_record?
483
- end
484
- end
485
-
486
- def test_update_preview
487
- assert_no_difference "Comfy::Cms::Page.count" do
488
- r :put, comfy_admin_cms_site_page_path(site_id: @site, id: @page), params: {
489
- preview: "Preview",
490
- page: {
491
- label: "Updated Label",
492
- fragments_attributes: [
493
- { identifier: "content",
494
- content: "preview content" }
495
- ]
496
- }
497
- }
498
- assert_response :success
499
- assert_match %r{preview content}, response.body
500
- @page.reload
501
- assert_not_equal "Updated Label", @page.label
502
-
503
- assert_equal @page.site, assigns(:cms_site)
504
- assert_equal @page.layout, assigns(:cms_layout)
505
- assert_equal @page, assigns(:cms_page)
506
- end
507
- end
508
-
509
- def test_preview_language
510
- @site.update_column(:locale, "de")
511
-
512
- assert_equal :en, I18n.locale
513
-
514
- r :post, comfy_admin_cms_site_pages_path(site_id: @site), params: {
515
- preview: "Preview",
516
- page: {
517
- label: "Test Page",
518
- slug: "test-page",
519
- parent_id: @page.id,
520
- layout_id: @layout.id,
521
- fragments_attributes: [
522
- { identifier: "content",
523
- content: "preview content" }
524
- ]
525
- }
526
- }
527
-
528
- assert_response :success
529
- assert_equal :de, I18n.locale
530
- end
531
-
532
- def test_get_new_with_no_layout
533
- Comfy::Cms::Layout.destroy_all
534
- r :get, new_comfy_admin_cms_site_page_path(site_id: @site)
535
- assert_response :redirect
536
- assert_redirected_to new_comfy_admin_cms_site_layout_path(@site)
537
- assert_equal "No Layouts found. Please create one.", flash[:danger]
538
- end
539
-
540
- def test_get_edit_with_no_layout
541
- Comfy::Cms::Layout.destroy_all
542
- r :get, edit_comfy_admin_cms_site_page_path(site_id: @site, id: @page)
543
- assert_response :redirect
544
- assert_redirected_to new_comfy_admin_cms_site_layout_path(@site)
545
- assert_equal "No Layouts found. Please create one.", flash[:danger]
546
- end
547
-
548
- def test_get_toggle_branch
549
- r :get, toggle_branch_comfy_admin_cms_site_page_path(site_id: @site, id: @page), xhr: true, params: { format: :js }
550
- assert_response :success
551
- assert_equal [@page.id.to_s], session[:cms_page_tree]
552
-
553
- r :get, toggle_branch_comfy_admin_cms_site_page_path(site_id: @site, id: @page), xhr: true, params: { format: :js }
554
- assert_response :success
555
- assert_equal [], session[:cms_page_tree]
556
- end
557
-
558
- def test_reorder
559
- page_one = comfy_cms_pages(:child)
560
- page_two = @site.pages.create!(
561
- parent: @page,
562
- layout: @layout,
563
- label: "test",
564
- slug: "test"
565
- )
566
- assert_equal 0, page_one.position
567
- assert_equal 1, page_two.position
568
-
569
- r :put, reorder_comfy_admin_cms_site_pages_path(site_id: @site), params: {
570
- order: [page_two.id, page_one.id]
571
- }
572
- assert_response :success
573
- page_one.reload
574
- page_two.reload
575
-
576
- assert_equal 1, page_one.position
577
- assert_equal 0, page_two.position
578
- end
579
-
580
- end