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,99 +0,0 @@
1
- require_relative "../../test_helper"
2
-
3
- class SeedsSnippetsTest < ActiveSupport::TestCase
4
-
5
- setup do
6
- @site = comfy_cms_sites(:default)
7
- @snippet = comfy_cms_snippets(:default)
8
- end
9
-
10
- def test_creation
11
- Comfy::Cms::Snippet.delete_all
12
-
13
- assert_count_difference [Comfy::Cms::Snippet] do
14
- ComfortableMexicanSofa::Seeds::Snippet::Importer.new("sample-site", "default-site").import!
15
- end
16
-
17
- snippet = Comfy::Cms::Snippet.last
18
-
19
- assert_equal "default", snippet.identifier
20
- assert_equal "Default Seed Snippet", snippet.label
21
- assert_equal "Default Seed Snippet Content\n", snippet.content
22
-
23
- assert_equal %w[category_a category_b], snippet.categories.map(&:label)
24
- end
25
-
26
- def test_update
27
- @snippet.update_column(:updated_at, 10.years.ago)
28
- assert_equal "default", @snippet.identifier
29
- assert_equal "Default Snippet", @snippet.label
30
- assert_equal "snippet content", @snippet.content
31
-
32
- assert_count_no_difference [Comfy::Cms::Snippet] do
33
- ComfortableMexicanSofa::Seeds::Snippet::Importer.new("sample-site", "default-site").import!
34
- end
35
-
36
- @snippet.reload
37
- assert_equal "default", @snippet.identifier
38
- assert_equal "Default Seed Snippet", @snippet.label
39
- assert_equal "Default Seed Snippet Content\n", @snippet.content
40
- end
41
-
42
- def test_delete
43
- old_snippet = @snippet
44
- old_snippet.update_column(:identifier, "old")
45
-
46
- assert_count_no_difference [Comfy::Cms::Snippet] do
47
- ComfortableMexicanSofa::Seeds::Snippet::Importer.new("sample-site", "default-site").import!
48
- end
49
-
50
- assert snippet = Comfy::Cms::Snippet.last
51
- assert_equal "default", snippet.identifier
52
- assert_equal "Default Seed Snippet", snippet.label
53
- assert_equal "Default Seed Snippet Content\n", snippet.content
54
-
55
- assert_nil Comfy::Cms::Snippet.where(id: old_snippet.id).first
56
- end
57
-
58
- def test_update_ignoring
59
- snippet_path = File.join(ComfortableMexicanSofa.config.seeds_path, "sample-site", "snippets")
60
- content_path = File.join(snippet_path, "default.html")
61
-
62
- assert @snippet.updated_at >= File.mtime(content_path)
63
-
64
- ComfortableMexicanSofa::Seeds::Snippet::Importer.new("sample-site", "default-site").import!
65
- @snippet.reload
66
- assert_equal "default", @snippet.identifier
67
- assert_equal "Default Snippet", @snippet.label
68
- assert_equal "snippet content", @snippet.content
69
- end
70
-
71
- def test_export
72
- comfy_cms_categories(:default).categorizations.create!(
73
- categorized: @snippet
74
- )
75
-
76
- host_path = File.join(ComfortableMexicanSofa.config.seeds_path, "test-site")
77
- content_path = File.join(host_path, "snippets/default.html")
78
-
79
- ComfortableMexicanSofa::Seeds::Snippet::Exporter.new("default-site", "test-site").export!
80
-
81
- assert File.exist?(content_path)
82
- out = <<-TEXT.strip_heredoc
83
- [attributes]
84
- ---
85
- label: Default Snippet
86
- categories:
87
- - Default
88
- position: 0
89
-
90
- [content]
91
- snippet content
92
- TEXT
93
- assert_equal out, IO.read(content_path)
94
-
95
- ensure
96
- FileUtils.rm_rf(host_path)
97
- end
98
-
99
- end
@@ -1,51 +0,0 @@
1
- require_relative "../test_helper"
2
-
3
- class SeedsTest < ActiveSupport::TestCase
4
-
5
- def test_import_all
6
- Comfy::Cms::Page.destroy_all
7
- Comfy::Cms::Layout.destroy_all
8
- Comfy::Cms::Snippet.destroy_all
9
-
10
- assert_count_difference [Comfy::Cms::Layout], 2 do
11
- assert_count_difference [Comfy::Cms::Page], 3 do
12
- assert_count_difference [Comfy::Cms::Snippet], 1 do
13
- ComfortableMexicanSofa::Seeds::Importer.new("sample-site", "default-site").import!
14
- end
15
- end
16
- end
17
- end
18
-
19
- def test_import_all_with_no_site
20
- comfy_cms_sites(:default).destroy
21
-
22
- assert_exception_raised ActiveRecord::RecordNotFound do
23
- ComfortableMexicanSofa::Seeds::Importer.new("sample-site", "default-site").import!
24
- end
25
- end
26
-
27
- def test_import_all_with_no_folder
28
- assert_exception_raised ComfortableMexicanSofa::Seeds::Error do
29
- ComfortableMexicanSofa::Seeds::Importer.new("invalid", "default-site").import!
30
- end
31
- end
32
-
33
- def test_export_all
34
- ActiveStorage::Blob.any_instance.stubs(:download).returns(
35
- File.read(File.join(Rails.root, "db/cms_seeds/sample-site/files/default.jpg"))
36
- )
37
-
38
- host_path = File.join(ComfortableMexicanSofa.config.seeds_path, "test-site")
39
- ComfortableMexicanSofa::Seeds::Exporter.new("default-site", "test-site").export!
40
- FileUtils.rm_rf(host_path)
41
- end
42
-
43
- def test_export_all_with_no_site
44
- comfy_cms_sites(:default).destroy
45
-
46
- assert_exception_raised ActiveRecord::RecordNotFound do
47
- ComfortableMexicanSofa::Seeds::Exporter.new("sample-site", "default-site").export!
48
- end
49
- end
50
-
51
- end
@@ -1,76 +0,0 @@
1
- require_relative "../test_helper"
2
-
3
- class CmsCategorizationTest < ActiveSupport::TestCase
4
-
5
- def test_fixtures_validity
6
- Comfy::Cms::Categorization.all.each do |categorization|
7
- assert categorization.valid?, categorization.errors.full_messages.to_s
8
- end
9
- end
10
-
11
- def test_validation
12
- category = Comfy::Cms::Categorization.new
13
- assert category.invalid?
14
- assert_has_errors_on category, :category, :categorized
15
- end
16
-
17
- def test_creation
18
- assert_difference "Comfy::Cms::Categorization.count" do
19
- comfy_cms_categories(:default).categorizations.create!(
20
- categorized: comfy_cms_pages(:default)
21
- )
22
- end
23
- end
24
-
25
- def test_categorized_relationship
26
- file = comfy_cms_files(:default)
27
- assert file.respond_to?(:category_ids)
28
- assert_equal 1, file.categories.count
29
- assert_equal comfy_cms_categories(:default), file.categories.first
30
-
31
- assert comfy_cms_pages(:default).respond_to?(:category_ids)
32
- assert_equal 0, comfy_cms_pages(:default).categories.count
33
- end
34
-
35
- def test_categorized_destruction
36
- assert_count_difference [Comfy::Cms::File, Comfy::Cms::Categorization], -1 do
37
- comfy_cms_files(:default).destroy
38
- end
39
- end
40
-
41
- def test_categorized_syncing
42
- page = comfy_cms_pages(:default)
43
- assert_equal 0, page.categories.count
44
-
45
- page.update_attributes(category_ids:
46
- { comfy_cms_categories(:default).id => 1,
47
- "invalid" => 1 })
48
-
49
- page.reload
50
- assert_equal 1, page.categories.count
51
-
52
- page.update_attributes(category_ids:
53
- { comfy_cms_categories(:default).id => 0,
54
- "invalid" => 0 })
55
- page.reload
56
- assert_equal 0, page.categories.count
57
- end
58
-
59
- def test_scope_for_category
60
- category = comfy_cms_categories(:default)
61
- assert_equal 1, Comfy::Cms::File.for_category(category.label).count
62
- assert_equal 0, Comfy::Cms::File.for_category("invalid").count
63
- assert_equal 1, Comfy::Cms::File.for_category(category.label, "invalid").count
64
- assert_equal 1, Comfy::Cms::File.for_category(nil).count
65
-
66
- new_category = comfy_cms_sites(:default).categories.create!(
67
- label: "Test Category",
68
- categorized_type: "Comfy::Cms::File"
69
- )
70
- new_category.categorizations.create!(categorized: comfy_cms_pages(:default))
71
- assert_equal 1, Comfy::Cms::File.for_category(category.label, new_category.label).to_a.size
72
- assert_equal 1,
73
- Comfy::Cms::File.for_category(category.label, new_category.label).distinct.count("comfy_cms_files.id")
74
- end
75
-
76
- end
@@ -1,39 +0,0 @@
1
- require_relative "../test_helper"
2
-
3
- class CmsCategoryTest < ActiveSupport::TestCase
4
-
5
- def test_fixtures_validity
6
- Comfy::Cms::Category.all.each do |category|
7
- assert category.valid?, category.errors.full_messages.to_s
8
- end
9
- end
10
-
11
- def test_validation
12
- category = Comfy::Cms::Category.new
13
- assert category.invalid?
14
- assert_has_errors_on category, :site, :label, :categorized_type
15
- end
16
-
17
- def test_creation
18
- assert_difference "Comfy::Cms::Category.count" do
19
- comfy_cms_sites(:default).categories.create(
20
- label: "Test Category",
21
- categorized_type: "Comfy::Cms::Snippet"
22
- )
23
- end
24
- end
25
-
26
- def test_destruction
27
- category = comfy_cms_categories(:default)
28
- assert_equal 1, category.categorizations.count
29
- assert_difference ["Comfy::Cms::Category.count", "Comfy::Cms::Categorization.count"], -1 do
30
- category.destroy
31
- end
32
- end
33
-
34
- def test_scope_of_type
35
- assert_equal 1, Comfy::Cms::Category.of_type("Comfy::Cms::File").count
36
- assert_equal 0, Comfy::Cms::Category.of_type("Invalid").count
37
- end
38
-
39
- end
@@ -1,43 +0,0 @@
1
- require_relative "../test_helper"
2
-
3
- class CmsFileTest < ActiveSupport::TestCase
4
-
5
- def test_fixtures_validity
6
- Comfy::Cms::File.all.each do |file|
7
- assert file.valid?, file.errors.full_messages.to_s
8
- assert file.attachment
9
- assert file.attachment.blob
10
- end
11
- end
12
-
13
- def test_validations
14
- file = Comfy::Cms::File.new
15
- assert file.invalid?
16
- assert_has_errors_on file, :site, :file
17
- end
18
-
19
- def test_creation
20
- assert_difference ["Comfy::Cms::File.count", "ActiveStorage::Attachment.count"] do
21
- file = comfy_cms_sites(:default).files.create(
22
- label: "test",
23
- description: "test file",
24
- file: fixture_file_upload("files/image.jpg", "image/jpeg")
25
- )
26
- assert_equal 1, file.position
27
- end
28
- end
29
-
30
- def test_scope_with_images
31
- assert_equal 1, Comfy::Cms::File.with_attached_attachment.with_images.count
32
- active_storage_blobs(:default).update_column(:content_type, "application/pdf")
33
- assert_equal 0, Comfy::Cms::File.with_attached_attachment.with_images.count
34
- end
35
-
36
- def test_label
37
- file = comfy_cms_files(:default)
38
- assert_equal "default file", file.label
39
- file.update_column(:label, "")
40
- assert_equal "default.jpg", file.label
41
- end
42
-
43
- end
@@ -1,132 +0,0 @@
1
- require_relative "../test_helper"
2
-
3
- class CmsFragmentTest < ActiveSupport::TestCase
4
-
5
- setup do
6
- @site = comfy_cms_sites(:default)
7
- @layout = comfy_cms_layouts(:default)
8
- @page = comfy_cms_pages(:default)
9
-
10
- @upload_doc = fixture_file_upload("files/document.pdf", "application/pdf")
11
- @upload_img = fixture_file_upload("files/image.jpg", "image/jpeg")
12
- end
13
-
14
- def page_params(frag_params = [])
15
- {
16
- layout: @layout,
17
- label: "test page",
18
- slug: "test_page",
19
- parent_id: @page.id,
20
- fragments_attributes: frag_params
21
- }
22
- end
23
-
24
- # -- Tests -------------------------------------------------------------------
25
-
26
- def test_initialization
27
- frag = Comfy::Cms::Fragment.new
28
- assert_equal "text", frag.tag
29
- end
30
-
31
- def test_fixtures_validity
32
- Comfy::Cms::Fragment.all.each do |frag|
33
- assert frag.valid?, frag.errors.full_messages.to_s
34
- end
35
- end
36
-
37
- def test_validation
38
- frag = Comfy::Cms::Fragment.new
39
- refute frag.valid?
40
- assert_has_errors_on frag, :identifier, :record
41
- end
42
-
43
- def test_content_serialization
44
- fragment = Comfy::Cms::Fragment.new
45
-
46
- fragment.content = "test"
47
- assert_equal "test", fragment.content
48
-
49
- fragment.content = 123
50
- assert_equal 123, fragment.content
51
-
52
- fragment.content = [1, 2, 3]
53
- assert_equal [1, 2, 3], fragment.content
54
- end
55
-
56
- def test_creation
57
- assert_difference "Comfy::Cms::Fragment.count" do
58
- @page.fragments.create!(
59
- identifier: "test",
60
- content: "test content"
61
- )
62
- end
63
- end
64
-
65
- def test_creation_with_files
66
- assert_count_difference [Comfy::Cms::Fragment] do
67
- assert_count_difference [ActiveStorage::Attachment], 2 do
68
- frag = @page.fragments.create!(
69
- identifier: "test",
70
- tag: "files",
71
- files: [@upload_doc, @upload_img]
72
- )
73
- assert_equal 2, frag.attachments.count
74
- end
75
- end
76
- end
77
-
78
- def test_creation_with_file
79
- assert_count_difference [Comfy::Cms::Fragment, ActiveStorage::Attachment] do
80
- frag = @page.fragments.create!(
81
- identifier: "test",
82
- tag: "file",
83
- files: [@upload_doc, @upload_img]
84
- )
85
- assert_equal 1, frag.attachments.count
86
- end
87
- end
88
-
89
- def test_update_with_files
90
- frag = comfy_cms_fragments(:file)
91
- assert_equal 1, frag.attachments.count
92
- assert_equal "fragment.jpg", frag.attachments.first.filename.to_s
93
- assert_difference -> { frag.attachments.count } do
94
- frag.update_attributes(
95
- tag: "files",
96
- files: [@upload_doc]
97
- )
98
- end
99
- end
100
-
101
- def test_update_with_file
102
- frag = comfy_cms_fragments(:file)
103
- assert_equal 1, frag.attachments.count
104
- assert_equal "fragment.jpg", frag.attachments.first.filename.to_s
105
- assert_no_difference -> { frag.attachments.count } do
106
- frag.update_attributes(
107
- tag: "file",
108
- files: [@upload_doc]
109
- )
110
- end
111
- frag.reload
112
- assert_equal "document.pdf", frag.attachments.first.filename.to_s
113
- end
114
-
115
- def test_update_with_file_removal
116
- frag = comfy_cms_fragments(:file)
117
- assert_difference -> { frag.attachments.count }, -1 do
118
- frag.update_attributes(
119
- file_ids_destroy: frag.attachments.pluck(:id)
120
- )
121
- end
122
- end
123
-
124
- def test_touch
125
- timestamp = 2.days.ago
126
- @page.update_column(:updated_at, timestamp)
127
- comfy_cms_fragments(:default).update_attributes(content: "updated")
128
- @page.reload
129
- refute_equal timestamp, @page.updated_at
130
- end
131
-
132
- end
@@ -1,194 +0,0 @@
1
- require_relative "../test_helper"
2
-
3
- class CmsLayoutTest < ActiveSupport::TestCase
4
-
5
- setup do
6
- @site = comfy_cms_sites(:default)
7
- @layout = comfy_cms_layouts(:default)
8
- @page = comfy_cms_pages(:default)
9
- end
10
-
11
- def test_fixtures_validity
12
- Comfy::Cms::Layout.all.each do |layout|
13
- assert layout.valid?, layout.errors.full_messages.to_s
14
- end
15
- end
16
-
17
- def test_validations
18
- layout = @site.layouts.create
19
- assert layout.errors.present?
20
- assert_has_errors_on layout, :label, :identifier
21
- end
22
-
23
- def test_content_tokens
24
- layout = Comfy::Cms::Layout.new(content: "a {{cms:text content}} b")
25
- expected = [
26
- "a ",
27
- { tag_class: "text", tag_params: "content", source: "{{cms:text content}}" },
28
- " b"
29
- ]
30
- assert_equal expected, layout.content_tokens
31
- end
32
-
33
- def test_content_tokens_nested
34
- layout_a = Comfy::Cms::Layout.new(content: "a {{cms:text content}} {{cms:text footer}} b")
35
- layout_b = Comfy::Cms::Layout.new(content: "c {{cms:text content}} d")
36
- layout_b.parent = layout_a
37
- expected = [
38
- "a ",
39
- "c ",
40
- { tag_class: "text", tag_params: "content", source: "{{cms:text content}}" },
41
- " d",
42
- " ",
43
- { tag_class: "text", tag_params: "footer", source: "{{cms:text footer}}" },
44
- " b"
45
- ]
46
- assert_equal expected, layout_b.content_tokens
47
- end
48
-
49
- def test_content_tokens_nested_with_fragment_subclass_tag
50
- layout_a = Comfy::Cms::Layout.new(content: "a {{cms:markdown content}} b")
51
- layout_b = Comfy::Cms::Layout.new(content: "c {{cms:text content}} d")
52
- layout_b.parent = layout_a
53
- expected = [
54
- "a ",
55
- "c ",
56
- { tag_class: "text", tag_params: "content", source: "{{cms:text content}}" },
57
- " d",
58
- " b"
59
- ]
60
- assert_equal expected, layout_b.content_tokens
61
- end
62
-
63
- def test_content_tokens_nested_with_non_fragment_subclass_tag
64
- layout_a = Comfy::Cms::Layout.new(content: "a {{cms:snippet content}} b")
65
- layout_b = Comfy::Cms::Layout.new(content: "c {{cms:text content}} d")
66
- layout_b.parent = layout_a
67
- expected = [
68
- "c ",
69
- { tag_class: "text", tag_params: "content", source: "{{cms:text content}}" },
70
- " d"
71
- ]
72
- assert_equal expected, layout_b.content_tokens
73
- end
74
-
75
- def test_content_tokens_nested_without_content_tag
76
- layout_a = Comfy::Cms::Layout.new(content: "a {{cms:text footer}} b")
77
- layout_b = Comfy::Cms::Layout.new(content: "c {{cms:text content}} d")
78
- layout_b.parent = layout_a
79
- expected = [
80
- "c ", { tag_class: "text", tag_params: "content", source: "{{cms:text content}}" }, " d"
81
- ]
82
- assert_equal expected, layout_b.content_tokens
83
- end
84
-
85
- def test_label_assignment
86
- layout = @site.layouts.new(
87
- identifier: "test",
88
- content: "content"
89
- )
90
- assert layout.valid?
91
- assert_equal "Test", layout.label
92
- end
93
-
94
- def test_creation
95
- assert_difference "Comfy::Cms::Layout.count" do
96
- layout = @site.layouts.create(
97
- label: "New Layout",
98
- identifier: "new-layout",
99
- content: "{{cms:text default}}",
100
- css: "css",
101
- js: "js"
102
- )
103
- assert_equal "New Layout", layout.label
104
- assert_equal "new-layout", layout.identifier
105
- assert_equal "{{cms:text default}}", layout.content
106
- assert_equal "css", layout.css
107
- assert_equal "js", layout.js
108
- assert_equal 1, layout.position
109
- end
110
- end
111
-
112
- def test_options_for_select
113
- assert_equal ["Default Layout", "Nested Layout", ". . Child Layout"],
114
- Comfy::Cms::Layout.options_for_select(@site).collect(&:first)
115
- assert_equal ["Default Layout", "Nested Layout"],
116
- Comfy::Cms::Layout.options_for_select(@site, comfy_cms_layouts(:child)).collect(&:first)
117
- assert_equal ["Default Layout"],
118
- Comfy::Cms::Layout.options_for_select(@site, comfy_cms_layouts(:nested)).collect(&:first)
119
- end
120
-
121
- def test_app_layouts_for_select
122
- FileUtils.touch(File.expand_path("app/views/layouts/comfy/admin/cms/nested.html.erb", Rails.root))
123
- FileUtils.touch(File.expand_path("app/views/layouts/comfy/_partial.html.erb", Rails.root))
124
- FileUtils.touch(File.expand_path("app/views/layouts/comfy/not_a_layout.erb", Rails.root))
125
-
126
- view_paths = [File.expand_path("app/views/", Rails.root)]
127
- assert_equal ["comfy/admin/cms", "comfy/admin/cms/nested"],
128
- Comfy::Cms::Layout.app_layouts_for_select(view_paths)
129
-
130
- ensure
131
- FileUtils.rm(File.expand_path("app/views/layouts/comfy/admin/cms/nested.html.erb", Rails.root))
132
- FileUtils.rm(File.expand_path("app/views/layouts/comfy/_partial.html.erb", Rails.root))
133
- FileUtils.rm(File.expand_path("app/views/layouts/comfy/not_a_layout.erb", Rails.root))
134
- end
135
-
136
- def test_multiple_view_paths
137
- FileUtils.mkdir_p(File.expand_path("app/additional_views/layouts", Rails.root))
138
- FileUtils.touch(File.expand_path("app/additional_views/layouts/additional_layout.html.erb", Rails.root))
139
-
140
- view_paths = [File.expand_path("app/views/", Rails.root), File.expand_path("app/additional_views", Rails.root)]
141
- assert_equal ["additional_layout", "comfy/admin/cms"], Comfy::Cms::Layout.app_layouts_for_select(view_paths)
142
- ensure
143
- FileUtils.rm_r(File.expand_path("app/additional_views", Rails.root))
144
- end
145
-
146
- def test_update_forces_page_content_reload
147
- layout_a = comfy_cms_layouts(:nested)
148
- layout_b = comfy_cms_layouts(:child)
149
- page_a = @site.pages.create!(
150
- label: "page_1",
151
- slug: "page-1",
152
- parent_id: @page.id,
153
- layout_id: layout_a.id,
154
- is_published: "1",
155
- fragments_attributes: [
156
- { identifier: "header",
157
- content: "header_content" },
158
- { identifier: "content",
159
- content: "content_content" }
160
- ]
161
- )
162
- page_b = @site.pages.create!(
163
- label: "page_2",
164
- slug: "page-2",
165
- parent_id: @page.id,
166
- layout_id: layout_b.id,
167
- is_published: "1",
168
- fragments_attributes: [
169
- { identifier: "header",
170
- content: "header_content" },
171
- { identifier: "left_column",
172
- content: "left_column_content" },
173
- { identifier: "right_column",
174
- content: "left_column_content" }
175
- ]
176
- )
177
- assert_equal "header_content\ncontent_content", page_a.content_cache
178
- assert_equal "header_content\nleft_column_content\nleft_column_content", page_b.content_cache
179
-
180
- layout_a.update_attributes(content: "Updated {{cms:text content}}")
181
- page_a.reload
182
- page_b.reload
183
-
184
- assert_equal "Updated content_content", page_a.content_cache
185
- assert_equal "Updated left_column_content\nleft_column_content", page_b.content_cache
186
- end
187
-
188
- def test_cache_buster
189
- timestamp = Time.current
190
- layout = @site.layouts.create(updated_at: timestamp)
191
- assert_equal timestamp.to_i, layout.cache_buster
192
- end
193
-
194
- end