lucy_cms 0.0.1

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 (245) hide show
  1. data/Gemfile +19 -0
  2. data/Gemfile.lock +88 -0
  3. data/LICENSE +24 -0
  4. data/README.md +161 -0
  5. data/Rakefile +26 -0
  6. data/VERSION +1 -0
  7. data/app/controllers/application_controller.rb +5 -0
  8. data/app/controllers/cms_admin/base_controller.rb +43 -0
  9. data/app/controllers/cms_admin/layouts_controller.rb +66 -0
  10. data/app/controllers/cms_admin/pages_controller.rb +111 -0
  11. data/app/controllers/cms_admin/sessions_controller.rb +25 -0
  12. data/app/controllers/cms_admin/sites_controller.rb +69 -0
  13. data/app/controllers/cms_admin/snippets_controller.rb +62 -0
  14. data/app/controllers/cms_admin/upload_dirs_controller.rb +79 -0
  15. data/app/controllers/cms_admin/users_controller.rb +129 -0
  16. data/app/controllers/cms_content_controller.rb +51 -0
  17. data/app/models/cms_block.rb +28 -0
  18. data/app/models/cms_layout.rb +118 -0
  19. data/app/models/cms_page.rb +163 -0
  20. data/app/models/cms_site.rb +38 -0
  21. data/app/models/cms_snippet.rb +70 -0
  22. data/app/models/cms_upload.rb +19 -0
  23. data/app/models/cms_upload_dir.rb +11 -0
  24. data/app/models/cms_user.rb +93 -0
  25. data/app/views/cms_admin/layouts/_form.html.erb +10 -0
  26. data/app/views/cms_admin/layouts/_index_branch.html.erb +24 -0
  27. data/app/views/cms_admin/layouts/edit.html.erb +6 -0
  28. data/app/views/cms_admin/layouts/index.html.erb +6 -0
  29. data/app/views/cms_admin/layouts/new.html.erb +6 -0
  30. data/app/views/cms_admin/pages/_form.html.erb +37 -0
  31. data/app/views/cms_admin/pages/_form_blocks.html.erb +7 -0
  32. data/app/views/cms_admin/pages/_index_branch.html.erb +40 -0
  33. data/app/views/cms_admin/pages/edit.html.erb +5 -0
  34. data/app/views/cms_admin/pages/form_blocks.js.erb +2 -0
  35. data/app/views/cms_admin/pages/index.html.erb +6 -0
  36. data/app/views/cms_admin/pages/new.html.erb +5 -0
  37. data/app/views/cms_admin/pages/toggle_branch.js.erb +11 -0
  38. data/app/views/cms_admin/sessions/new.html.erb +12 -0
  39. data/app/views/cms_admin/sites/_form.html.erb +16 -0
  40. data/app/views/cms_admin/sites/edit.html.erb +6 -0
  41. data/app/views/cms_admin/sites/new.html.erb +6 -0
  42. data/app/views/cms_admin/sites/setup.html.erb +16 -0
  43. data/app/views/cms_admin/snippets/_form.html.erb +4 -0
  44. data/app/views/cms_admin/snippets/edit.html.erb +6 -0
  45. data/app/views/cms_admin/snippets/index.html.erb +23 -0
  46. data/app/views/cms_admin/snippets/new.html.erb +6 -0
  47. data/app/views/cms_admin/upload_dirs/_file.html.erb +15 -0
  48. data/app/views/cms_admin/upload_dirs/_form.html.erb +2 -0
  49. data/app/views/cms_admin/upload_dirs/conflict.html.erb +12 -0
  50. data/app/views/cms_admin/upload_dirs/index.html.erb +23 -0
  51. data/app/views/cms_admin/upload_dirs/new.html.erb +6 -0
  52. data/app/views/cms_admin/upload_dirs/show.html.erb +26 -0
  53. data/app/views/cms_admin/upload_dirs/uploads_destroy.js.erb +3 -0
  54. data/app/views/cms_admin/users/_form.html.erb +9 -0
  55. data/app/views/cms_admin/users/_index_branch.html.erb +16 -0
  56. data/app/views/cms_admin/users/change_password.html.erb +14 -0
  57. data/app/views/cms_admin/users/edit.html.erb +17 -0
  58. data/app/views/cms_admin/users/index.html.erb +6 -0
  59. data/app/views/cms_admin/users/new.html.erb +14 -0
  60. data/app/views/layouts/cms_admin.html.erb +52 -0
  61. data/config/application.rb +48 -0
  62. data/config/boot.rb +13 -0
  63. data/config/database.yml +22 -0
  64. data/config/environment.rb +5 -0
  65. data/config/environments/development.rb +22 -0
  66. data/config/environments/production.rb +49 -0
  67. data/config/environments/test.rb +35 -0
  68. data/config/initializers/LucyCMS.rb +37 -0
  69. data/config/initializers/mime_types.rb +5 -0
  70. data/config/locales/en.yml +5 -0
  71. data/config/routes.rb +45 -0
  72. data/config.ru +4 -0
  73. data/db/cms_seeds/example.local/layouts/default.yml +8 -0
  74. data/db/cms_seeds/example.local/layouts/nested.yml +6 -0
  75. data/db/cms_seeds/example.local/pages/child/subchild.yml +14 -0
  76. data/db/cms_seeds/example.local/pages/child.yml +10 -0
  77. data/db/cms_seeds/example.local/pages/index.yml +11 -0
  78. data/db/cms_seeds/example.local/snippets/example.yml +4 -0
  79. data/db/migrate/01_create_cms.rb +114 -0
  80. data/db/seeds.rb +7 -0
  81. data/lib/LucyCMS/acts_as_tree.rb +102 -0
  82. data/lib/LucyCMS/cms_tag/field_datetime.rb +26 -0
  83. data/lib/LucyCMS/cms_tag/field_integer.rb +26 -0
  84. data/lib/LucyCMS/cms_tag/field_string.rb +26 -0
  85. data/lib/LucyCMS/cms_tag/field_text.rb +26 -0
  86. data/lib/LucyCMS/cms_tag/helper.rb +20 -0
  87. data/lib/LucyCMS/cms_tag/page_datetime.rb +22 -0
  88. data/lib/LucyCMS/cms_tag/page_integer.rb +22 -0
  89. data/lib/LucyCMS/cms_tag/page_rich_text.rb +22 -0
  90. data/lib/LucyCMS/cms_tag/page_string.rb +22 -0
  91. data/lib/LucyCMS/cms_tag/page_text.rb +22 -0
  92. data/lib/LucyCMS/cms_tag/partial.rb +21 -0
  93. data/lib/LucyCMS/cms_tag/snippet.rb +22 -0
  94. data/lib/LucyCMS/cms_tag.rb +119 -0
  95. data/lib/LucyCMS/configuration.rb +36 -0
  96. data/lib/LucyCMS/controller_methods.rb +42 -0
  97. data/lib/LucyCMS/engine.rb +12 -0
  98. data/lib/LucyCMS/form_builder.rb +129 -0
  99. data/lib/LucyCMS/rails_extensions.rb +22 -0
  100. data/lib/LucyCMS/site_form_builder.rb +129 -0
  101. data/lib/LucyCMS/view_hooks.rb +30 -0
  102. data/lib/LucyCMS/view_methods.rb +68 -0
  103. data/lib/LucyCMS.rb +40 -0
  104. data/lib/generators/README +17 -0
  105. data/lib/generators/cms_generator.rb +44 -0
  106. data/lib/tasks/LucyCMS.rake +283 -0
  107. data/lucy_cms.gemspec +100 -0
  108. data/public/404.html +26 -0
  109. data/public/422.html +26 -0
  110. data/public/500.html +26 -0
  111. data/public/favicon.ico +0 -0
  112. data/public/images/LucyCMS/arrow_bottom.gif +0 -0
  113. data/public/images/LucyCMS/arrow_right.gif +0 -0
  114. data/public/images/LucyCMS/icon_folder.png +0 -0
  115. data/public/images/LucyCMS/icon_layout.gif +0 -0
  116. data/public/images/LucyCMS/icon_move.gif +0 -0
  117. data/public/images/LucyCMS/icon_regular.gif +0 -0
  118. data/public/images/LucyCMS/icon_snippet.gif +0 -0
  119. data/public/images/LucyCMS/icon_upload.png +0 -0
  120. data/public/images/LucyCMS/icon_user.jpg +0 -0
  121. data/public/javascripts/LucyCMS/cms.js +204 -0
  122. data/public/javascripts/LucyCMS/codemirror/codemirror.css +102 -0
  123. data/public/javascripts/LucyCMS/codemirror/codemirror.js +23 -0
  124. data/public/javascripts/LucyCMS/codemirror/codemirror_base.js +88 -0
  125. data/public/javascripts/LucyCMS/codemirror/parse_css.js +4 -0
  126. data/public/javascripts/LucyCMS/codemirror/parse_html_mixed.js +3 -0
  127. data/public/javascripts/LucyCMS/codemirror/parse_js.js +12 -0
  128. data/public/javascripts/LucyCMS/codemirror/parse_xml.js +7 -0
  129. data/public/javascripts/LucyCMS/jquery-ui/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  130. data/public/javascripts/LucyCMS/jquery-ui/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  131. data/public/javascripts/LucyCMS/jquery-ui/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  132. data/public/javascripts/LucyCMS/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  133. data/public/javascripts/LucyCMS/jquery-ui/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  134. data/public/javascripts/LucyCMS/jquery-ui/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  135. data/public/javascripts/LucyCMS/jquery-ui/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  136. data/public/javascripts/LucyCMS/jquery-ui/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  137. data/public/javascripts/LucyCMS/jquery-ui/images/ui-icons_222222_256x240.png +0 -0
  138. data/public/javascripts/LucyCMS/jquery-ui/images/ui-icons_2e83ff_256x240.png +0 -0
  139. data/public/javascripts/LucyCMS/jquery-ui/images/ui-icons_454545_256x240.png +0 -0
  140. data/public/javascripts/LucyCMS/jquery-ui/images/ui-icons_888888_256x240.png +0 -0
  141. data/public/javascripts/LucyCMS/jquery-ui/images/ui-icons_cd0a0a_256x240.png +0 -0
  142. data/public/javascripts/LucyCMS/jquery-ui/jquery-ui.css +362 -0
  143. data/public/javascripts/LucyCMS/jquery-ui/jquery-ui.js +190 -0
  144. data/public/javascripts/LucyCMS/jquery.js +154 -0
  145. data/public/javascripts/LucyCMS/plupload/plupload.full.min.js +1 -0
  146. data/public/javascripts/LucyCMS/plupload/plupload.html5.min.js +1 -0
  147. data/public/javascripts/LucyCMS/plupload/plupload.min.js +1 -0
  148. data/public/javascripts/LucyCMS/rails.js +132 -0
  149. data/public/javascripts/LucyCMS/tiny_mce/jquery.tinymce.js +1 -0
  150. data/public/javascripts/LucyCMS/tiny_mce/langs/en.js +170 -0
  151. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/about.htm +54 -0
  152. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/anchor.htm +26 -0
  153. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/charmap.htm +52 -0
  154. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/color_picker.htm +73 -0
  155. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/editor_template.js +1 -0
  156. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/image.htm +80 -0
  157. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/img/colorpicker.jpg +0 -0
  158. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/img/icons.gif +0 -0
  159. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/js/about.js +72 -0
  160. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/js/anchor.js +37 -0
  161. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/js/charmap.js +335 -0
  162. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/js/color_picker.js +253 -0
  163. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/js/image.js +245 -0
  164. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/js/link.js +156 -0
  165. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/js/source_editor.js +56 -0
  166. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/langs/en.js +62 -0
  167. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/langs/en_dlg.js +51 -0
  168. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/link.htm +58 -0
  169. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/skins/default/content.css +36 -0
  170. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/skins/default/dialog.css +117 -0
  171. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/skins/default/img/buttons.png +0 -0
  172. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/skins/default/img/items.gif +0 -0
  173. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
  174. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/skins/default/img/menu_check.gif +0 -0
  175. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/skins/default/img/progress.gif +0 -0
  176. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/skins/default/img/tabs.gif +0 -0
  177. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/skins/default/ui.css +213 -0
  178. data/public/javascripts/LucyCMS/tiny_mce/themes/advanced/source_editor.htm +25 -0
  179. data/public/javascripts/LucyCMS/tiny_mce/tiny_mce.js +1 -0
  180. data/public/javascripts/LucyCMS/tiny_mce/tiny_mce_popup.js +5 -0
  181. data/public/robots.txt +5 -0
  182. data/public/stylesheets/LucyCMS/content.css +196 -0
  183. data/public/stylesheets/LucyCMS/form.css +125 -0
  184. data/public/stylesheets/LucyCMS/reset.css +1 -0
  185. data/public/stylesheets/LucyCMS/site_form.css +82 -0
  186. data/public/stylesheets/LucyCMS/structure.css +125 -0
  187. data/public/stylesheets/LucyCMS/typography.css +25 -0
  188. data/script/rails +6 -0
  189. data/test/cms_seeds/test.host/layouts/broken.yml +1 -0
  190. data/test/cms_seeds/test.host/layouts/default.yml +3 -0
  191. data/test/cms_seeds/test.host/layouts/nested.yml +4 -0
  192. data/test/cms_seeds/test.host/pages/broken.yml +1 -0
  193. data/test/cms_seeds/test.host/pages/child/subchild.yml +10 -0
  194. data/test/cms_seeds/test.host/pages/child.yml +10 -0
  195. data/test/cms_seeds/test.host/pages/index.yml +10 -0
  196. data/test/cms_seeds/test.host/snippets/broken.yml +1 -0
  197. data/test/cms_seeds/test.host/snippets/default.yml +3 -0
  198. data/test/fixtures/cms_blocks.yml +12 -0
  199. data/test/fixtures/cms_layouts.yml +36 -0
  200. data/test/fixtures/cms_pages.yml +39 -0
  201. data/test/fixtures/cms_sites.yml +3 -0
  202. data/test/fixtures/cms_snippets.yml +5 -0
  203. data/test/fixtures/cms_upload_dirs.yml +9 -0
  204. data/test/fixtures/cms_uploads.yml +4 -0
  205. data/test/fixtures/cms_users.yml +11 -0
  206. data/test/fixtures/files/invalid_file.gif +9 -0
  207. data/test/fixtures/files/valid_image.jpg +0 -0
  208. data/test/fixtures/views/_nav_hook.html.erb +1 -0
  209. data/test/fixtures/views/_nav_hook_2.html.erb +1 -0
  210. data/test/functional/cms_admin/layouts_controller_test.rb +103 -0
  211. data/test/functional/cms_admin/pages_controller_test.rb +334 -0
  212. data/test/functional/cms_admin/sites_controller_test.rb +99 -0
  213. data/test/functional/cms_admin/snippets_controller_test.rb +102 -0
  214. data/test/functional/cms_admin/uploads_controller_test.rb +26 -0
  215. data/test/functional/cms_content_controller_test.rb +134 -0
  216. data/test/integration/rake_tasks_test.rb +65 -0
  217. data/test/integration/render_cms_seed_test.rb +34 -0
  218. data/test/integration/render_cms_test.rb +81 -0
  219. data/test/integration/sites_test.rb +63 -0
  220. data/test/integration/view_hooks_test.rb +33 -0
  221. data/test/test_helper.rb +86 -0
  222. data/test/unit/cms_block_test.rb +43 -0
  223. data/test/unit/cms_configuration_test.rb +17 -0
  224. data/test/unit/cms_layout_test.rb +146 -0
  225. data/test/unit/cms_page_test.rb +257 -0
  226. data/test/unit/cms_site_test.rb +41 -0
  227. data/test/unit/cms_snippet_test.rb +77 -0
  228. data/test/unit/cms_tag_test.rb +206 -0
  229. data/test/unit/cms_tags/field_datetime_test.rb +34 -0
  230. data/test/unit/cms_tags/field_integer_test.rb +33 -0
  231. data/test/unit/cms_tags/field_string_test.rb +34 -0
  232. data/test/unit/cms_tags/field_text_test.rb +32 -0
  233. data/test/unit/cms_tags/helper_test.rb +38 -0
  234. data/test/unit/cms_tags/page_datetime_test.rb +34 -0
  235. data/test/unit/cms_tags/page_integer_test.rb +33 -0
  236. data/test/unit/cms_tags/page_rich_text.rb +33 -0
  237. data/test/unit/cms_tags/page_string_test.rb +33 -0
  238. data/test/unit/cms_tags/page_text_test.rb +34 -0
  239. data/test/unit/cms_tags/partial_test.rb +44 -0
  240. data/test/unit/cms_tags/snippet_test.rb +33 -0
  241. data/test/unit/cms_upload_dir_test.rb +8 -0
  242. data/test/unit/cms_upload_test.rb +26 -0
  243. data/test/unit/cms_user_test.rb +8 -0
  244. data/test/unit/view_methods_test.rb +21 -0
  245. metadata +488 -0
@@ -0,0 +1,206 @@
1
+ require File.expand_path('../test_helper', File.dirname(__FILE__))
2
+
3
+ class CmsTagTest < ActiveSupport::TestCase
4
+
5
+ def test_tokenizer_regex
6
+ regex = CmsTag::TOKENIZER_REGEX
7
+
8
+ tokens = 'text { text } text'.scan(regex)
9
+ assert_equal nil, tokens[0][0]
10
+ assert_equal 'text { text } text', tokens[0][1]
11
+
12
+ tokens = 'content<{{cms:some_tag content'.scan(regex)
13
+ assert_equal nil, tokens[0][0]
14
+ assert_equal 'content<', tokens[0][1]
15
+ assert_equal nil, tokens[1][0]
16
+ assert_equal '{{', tokens[1][1]
17
+ assert_equal nil, tokens[2][0]
18
+ assert_equal 'cms:some_tag content', tokens[2][1]
19
+
20
+ tokens = 'content<{{cms some_tag}}>content'.scan(regex)
21
+ assert_equal nil, tokens[0][0]
22
+ assert_equal 'content<', tokens[0][1]
23
+ assert_equal nil, tokens[1][0]
24
+ assert_equal '{{', tokens[1][1]
25
+ assert_equal nil, tokens[2][0]
26
+ assert_equal 'cms some_tag}}>content',tokens[2][1]
27
+
28
+ tokens = 'content<{{cms:some_tag}}>content'.scan(regex)
29
+ assert_equal nil, tokens[0][0]
30
+ assert_equal 'content<', tokens[0][1]
31
+ assert_equal '{{cms:some_tag}}', tokens[1][0]
32
+ assert_equal nil, tokens[1][1]
33
+ assert_equal nil, tokens[2][0]
34
+ assert_equal '>content', tokens[2][1]
35
+
36
+ tokens = 'content<{{cms:type:label}}>content'.scan(regex)
37
+ assert_equal nil, tokens[0][0]
38
+ assert_equal 'content<', tokens[0][1]
39
+ assert_equal '{{cms:type:label}}', tokens[1][0]
40
+ assert_equal nil, tokens[1][1]
41
+ assert_equal nil, tokens[2][0]
42
+ assert_equal '>content', tokens[2][1]
43
+
44
+ tokens = 'content<{{cms:type:label }}>content'.scan(regex)
45
+ assert_equal nil, tokens[0][0]
46
+ assert_equal 'content<', tokens[0][1]
47
+ assert_equal '{{cms:type:label }}', tokens[1][0]
48
+ assert_equal nil, tokens[1][1]
49
+ assert_equal nil, tokens[2][0]
50
+ assert_equal '>content', tokens[2][1]
51
+
52
+ tokens = 'content<{{ cms:type:la/b el }}>content'.scan(regex)
53
+ assert_equal nil, tokens[0][0]
54
+ assert_equal 'content<', tokens[0][1]
55
+ assert_equal '{{ cms:type:la/b el }}',tokens[1][0]
56
+ assert_equal nil, tokens[1][1]
57
+ assert_equal nil, tokens[2][0]
58
+ assert_equal '>content', tokens[2][1]
59
+ end
60
+
61
+ def test_tokenizer_regex_limit
62
+ string = '<p>text</p>' * 400
63
+ tokens = string.scan(CmsTag::TOKENIZER_REGEX)
64
+ assert_equal 1, tokens.count
65
+ assert_equal nil, tokens[0][0]
66
+ assert_equal string, tokens[0][1]
67
+ end
68
+
69
+ def test_content_for_existing_page
70
+ page = cms_pages(:default)
71
+ assert page.cms_tags.blank?
72
+ assert_equal rendered_content_formatter(
73
+ '
74
+ layout_content_a
75
+ default_page_text_content_a
76
+ default_snippet_content
77
+ default_page_text_content_b
78
+ layout_content_b
79
+ default_snippet_content
80
+ layout_content_c'
81
+ ), page.content(true)
82
+
83
+ assert_equal 4, page.cms_tags.size
84
+ assert_equal 'cms_tag/field_text_default_field_text', page.cms_tags[0].identifier
85
+ assert_equal 'cms_tag/page_text_default_page_text', page.cms_tags[1].identifier
86
+ assert_equal 'cms_tag/snippet_default', page.cms_tags[2].identifier
87
+ assert_equal page.cms_tags[1], page.cms_tags[2].parent
88
+ assert_equal 'cms_tag/snippet_default', page.cms_tags[3].identifier
89
+ end
90
+
91
+ def test_content_for_new_page
92
+ page = CmsPage.new
93
+ assert page.cms_blocks.blank?
94
+ assert page.cms_tags.blank?
95
+ assert_equal '', page.content
96
+ assert page.cms_tags.blank?
97
+ end
98
+
99
+ def test_content_for_new_page_with_layout
100
+ page = CmsPage.new(:cms_layout => cms_layouts(:default))
101
+ assert page.cms_blocks.blank?
102
+ assert page.cms_tags.blank?
103
+ assert_equal rendered_content_formatter(
104
+ '
105
+ layout_content_a
106
+
107
+ layout_content_b
108
+ default_snippet_content
109
+ layout_content_c'
110
+ ), page.content
111
+
112
+ assert_equal 3, page.cms_tags.size
113
+ assert_equal 'cms_tag/field_text_default_field_text', page.cms_tags[0].identifier
114
+ assert_equal 'cms_tag/page_text_default_page_text', page.cms_tags[1].identifier
115
+ assert_equal 'cms_tag/snippet_default', page.cms_tags[2].identifier
116
+ end
117
+
118
+ def test_content_for_new_page_with_initilized_cms_blocks
119
+ page = CmsPage.new(:cms_layout => cms_layouts(:default))
120
+ assert page.cms_blocks.blank?
121
+ assert page.cms_tags.blank?
122
+ page.cms_blocks_attributes = [
123
+ {
124
+ :label => 'default_field_text',
125
+ :content => 'new_default_field_content',
126
+ :type => 'CmsTag::FieldText'
127
+ },
128
+ {
129
+ :label => 'default_page_text',
130
+ :content => "new_default_page_text_content\n{{cms:snippet:default}}",
131
+ :type => 'CmsTag::PageText'
132
+ },
133
+ {
134
+ :label => 'bogus_field_that_never_will_get_rendered',
135
+ :content => 'some_content_that_doesnot_matter',
136
+ :type => 'CmsTag::PageText'
137
+ }
138
+ ]
139
+ assert_equal 3, page.cms_blocks.size
140
+
141
+ assert_equal rendered_content_formatter(
142
+ '
143
+ layout_content_a
144
+ new_default_page_text_content
145
+ default_snippet_content
146
+ layout_content_b
147
+ default_snippet_content
148
+ layout_content_c'
149
+ ), page.content
150
+
151
+ assert_equal 4, page.cms_tags.size
152
+ assert_equal 'cms_tag/field_text_default_field_text', page.cms_tags[0].identifier
153
+ assert_equal 'cms_tag/page_text_default_page_text', page.cms_tags[1].identifier
154
+ assert_equal 'cms_tag/snippet_default', page.cms_tags[2].identifier
155
+ assert_equal page.cms_tags[1], page.cms_tags[2].parent
156
+ assert_equal 'cms_tag/snippet_default', page.cms_tags[3].identifier
157
+ end
158
+
159
+ def test_content_with_repeated_tags
160
+ page = cms_pages(:default)
161
+ page.cms_layout.content << "\n{{cms:page:default_page_text:text}}"
162
+ page.cms_layout.save!
163
+
164
+ assert_equal rendered_content_formatter(
165
+ '
166
+ layout_content_a
167
+ default_page_text_content_a
168
+ default_snippet_content
169
+ default_page_text_content_b
170
+ layout_content_b
171
+ default_snippet_content
172
+ layout_content_c
173
+ default_page_text_content_a
174
+ default_snippet_content
175
+ default_page_text_content_b'
176
+ ), page.content(true)
177
+
178
+ assert_equal 6, page.cms_tags.size
179
+ assert_equal 'cms_tag/field_text_default_field_text', page.cms_tags[0].identifier
180
+ assert_equal 'cms_tag/page_text_default_page_text', page.cms_tags[1].identifier
181
+ assert_equal 'cms_tag/snippet_default', page.cms_tags[2].identifier
182
+ assert_equal page.cms_tags[1], page.cms_tags[2].parent
183
+ assert_equal 'cms_tag/snippet_default', page.cms_tags[3].identifier
184
+ assert_equal 'cms_tag/page_text_default_page_text', page.cms_tags[4].identifier
185
+ assert_equal 'cms_tag/snippet_default', page.cms_tags[5].identifier
186
+ assert_equal page.cms_tags[4], page.cms_tags[5].parent
187
+ end
188
+
189
+ def test_content_with_cyclical_tags
190
+ page = cms_pages(:default)
191
+ snippet = cms_snippets(:default)
192
+ snippet.update_attribute(:content, "infinite {{cms:page:default}} loop")
193
+ assert_equal rendered_content_formatter(
194
+ '
195
+ layout_content_a
196
+ default_page_text_content_a
197
+ infinite loop
198
+ default_page_text_content_b
199
+ layout_content_b
200
+ infinite loop
201
+ layout_content_c'
202
+ ), page.content(true)
203
+ assert_equal 6, page.cms_tags.size
204
+ end
205
+
206
+ end
@@ -0,0 +1,34 @@
1
+ require File.expand_path('../../test_helper', File.dirname(__FILE__))
2
+
3
+ class FieldDateTimeTest < ActiveSupport::TestCase
4
+
5
+ def test_initialize_tag
6
+ assert tag = CmsTag::FieldDateTime.initialize_tag(cms_pages(:default), '{{ cms:field:content:datetime }}')
7
+ assert_equal 'content', tag.label
8
+ assert tag = CmsTag::FieldDateTime.initialize_tag(cms_pages(:default), '{{cms:field:content:datetime}}')
9
+ assert_equal 'content', tag.label
10
+ assert tag = CmsTag::FieldDateTime.initialize_tag(cms_pages(:default), '{{cms:field:dash-content:datetime}}')
11
+ assert_equal 'dash-content', tag.label
12
+ end
13
+
14
+ def test_initialize_tag_failure
15
+ [
16
+ '{{cms:field:content:not_datetime}}',
17
+ '{{cms:field:content}}',
18
+ '{{cms:not_field:content}}',
19
+ '{not_a_tag}'
20
+ ].each do |tag_signature|
21
+ assert_nil CmsTag::FieldDateTime.initialize_tag(cms_pages(:default), tag_signature)
22
+ end
23
+ end
24
+
25
+ def test_content_and_render
26
+ tag = CmsTag::FieldDateTime.initialize_tag(cms_pages(:default), '{{cms:field:content:datetime}}')
27
+ assert tag.content.blank?
28
+ time = 2.days.ago
29
+ tag.content = time
30
+ assert_equal time, tag.content
31
+ assert_equal '', tag.render
32
+ end
33
+
34
+ end
@@ -0,0 +1,33 @@
1
+ require File.expand_path('../../test_helper', File.dirname(__FILE__))
2
+
3
+ class FieldIntegerTest < ActiveSupport::TestCase
4
+
5
+ def test_initialize_tag
6
+ assert tag = CmsTag::FieldInteger.initialize_tag(cms_pages(:default), '{{ cms:field:content:integer }}')
7
+ assert_equal 'content', tag.label
8
+ assert tag = CmsTag::FieldInteger.initialize_tag(cms_pages(:default), '{{cms:field:content:integer}}')
9
+ assert_equal 'content', tag.label
10
+ assert tag = CmsTag::FieldInteger.initialize_tag(cms_pages(:default), '{{cms:field:dash-content:integer}}')
11
+ assert_equal 'dash-content', tag.label
12
+ end
13
+
14
+ def test_initialize_tag_failure
15
+ [
16
+ '{{cms:field:content:not_integer}}',
17
+ '{{cms:field:content}}',
18
+ '{{cms:not_field:content}}',
19
+ '{not_a_tag}'
20
+ ].each do |tag_signature|
21
+ assert_nil CmsTag::FieldInteger.initialize_tag(cms_pages(:default), tag_signature)
22
+ end
23
+ end
24
+
25
+ def test_content_and_render
26
+ tag = CmsTag::FieldInteger.initialize_tag(cms_pages(:default), '{{cms:field:content:integer}}')
27
+ assert tag.content.blank?
28
+ tag.content = '5'
29
+ assert_equal '5', tag.content
30
+ assert_equal '', tag.render
31
+ end
32
+
33
+ end
@@ -0,0 +1,34 @@
1
+ require File.expand_path('../../test_helper', File.dirname(__FILE__))
2
+
3
+ class FieldStringTest < ActiveSupport::TestCase
4
+
5
+ def test_initialize_tag
6
+ assert tag = CmsTag::FieldString.initialize_tag(cms_pages(:default), '{{ cms:field:content:string }}')
7
+ assert_equal 'content', tag.label
8
+ assert tag = CmsTag::FieldString.initialize_tag(cms_pages(:default), '{{cms:field:content:string}}')
9
+ assert_equal 'content', tag.label
10
+ assert tag = CmsTag::FieldString.initialize_tag(cms_pages(:default), '{{cms:field:content}}')
11
+ assert_equal 'content', tag.label
12
+ assert tag = CmsTag::FieldString.initialize_tag(cms_pages(:default), '{{cms:field:dash-content}}')
13
+ assert_equal 'dash-content', tag.label
14
+ end
15
+
16
+ def test_initialize_tag_failure
17
+ [
18
+ '{{cms:field:content:not_string}}',
19
+ '{{cms:not_field:content}}',
20
+ '{not_a_tag}'
21
+ ].each do |tag_signature|
22
+ assert_nil CmsTag::FieldString.initialize_tag(cms_pages(:default), tag_signature)
23
+ end
24
+ end
25
+
26
+ def test_content_and_render
27
+ tag = CmsTag::FieldString.initialize_tag(cms_pages(:default), '{{cms:field:content}}')
28
+ assert tag.content.blank?
29
+ tag.content = 'test_content'
30
+ assert_equal 'test_content', tag.content
31
+ assert_equal '', tag.render
32
+ end
33
+
34
+ end
@@ -0,0 +1,32 @@
1
+ require File.expand_path('../../test_helper', File.dirname(__FILE__))
2
+
3
+ class FieldTextTest < ActiveSupport::TestCase
4
+
5
+ def test_initialize_tag
6
+ assert tag = CmsTag::FieldText.initialize_tag(cms_pages(:default), '{{ cms:field:content:text }}')
7
+ assert_equal 'content', tag.label
8
+ assert tag = CmsTag::FieldText.initialize_tag(cms_pages(:default), '{{cms:field:content:text}}')
9
+ assert_equal 'content', tag.label
10
+ assert tag = CmsTag::FieldText.initialize_tag(cms_pages(:default), '{{cms:field:dash-content:text}}')
11
+ assert_equal 'dash-content', tag.label
12
+ end
13
+
14
+ def test_initialize_tag_failure
15
+ [
16
+ '{{cms:field:content:not_text}}',
17
+ '{{cms:not_field:content:text}}',
18
+ '{not_a_tag}'
19
+ ].each do |tag_signature|
20
+ assert_nil CmsTag::FieldText.initialize_tag(cms_pages(:default), tag_signature)
21
+ end
22
+ end
23
+
24
+ def test_content_and_render
25
+ tag = CmsTag::FieldText.initialize_tag(cms_pages(:default), '{{cms:field:content:text}}')
26
+ assert tag.content.blank?
27
+ tag.content = 'test_content'
28
+ assert_equal 'test_content', tag.content
29
+ assert_equal '', tag.render
30
+ end
31
+
32
+ end
@@ -0,0 +1,38 @@
1
+ require File.expand_path('../../test_helper', File.dirname(__FILE__))
2
+
3
+ class HelperTest < ActiveSupport::TestCase
4
+
5
+ def test_initialize_tag
6
+ assert tag = CmsTag::Helper.initialize_tag(cms_pages(:default), '{{ cms:helper:method_name }}')
7
+ assert_equal 'method_name', tag.label
8
+ assert tag = CmsTag::Helper.initialize_tag(cms_pages(:default), '{{ cms:helper:method-name }}')
9
+ assert_equal 'method-name', tag.label
10
+ end
11
+
12
+ def test_initialize_tag_with_parameters
13
+ assert tag = CmsTag::Helper.initialize_tag(cms_pages(:default), '{{ cms:helper:method_name:param1:param2 }}')
14
+ assert tag.label = 'method_name'
15
+ assert tag.params = 'param1:param2'
16
+ end
17
+
18
+ def test_initialize_tag_failure
19
+ [
20
+ '{{cms:helper}}',
21
+ '{{cms:not_helper:method_name}}',
22
+ '{not_a_tag}'
23
+ ].each do |tag_signature|
24
+ assert_nil CmsTag::Helper.initialize_tag(cms_pages(:default), tag_signature)
25
+ end
26
+ end
27
+
28
+ def test_content_and_render
29
+ tag = CmsTag::Helper.initialize_tag(cms_pages(:default), '{{cms:helper:method_name}}')
30
+ assert_equal "<%= method_name() %>", tag.content
31
+ assert_equal "<%= method_name() %>", tag.render
32
+
33
+ tag = CmsTag::Helper.initialize_tag(cms_pages(:default), '{{cms:helper:method_name:param1:param2}}')
34
+ assert_equal "<%= method_name('param1', 'param2') %>", tag.content
35
+ assert_equal "<%= method_name('param1', 'param2') %>", tag.render
36
+ end
37
+
38
+ end
@@ -0,0 +1,34 @@
1
+ require File.expand_path('../../test_helper', File.dirname(__FILE__))
2
+
3
+ class PageDateTimeTest < ActiveSupport::TestCase
4
+
5
+ def test_initialize_tag
6
+ assert tag = CmsTag::PageDateTime.initialize_tag(cms_pages(:default), '{{ cms:page:content:datetime }}')
7
+ assert_equal 'content', tag.label
8
+ assert tag = CmsTag::PageDateTime.initialize_tag(cms_pages(:default), '{{cms:page:content:datetime}}')
9
+ assert_equal 'content', tag.label
10
+ assert tag = CmsTag::PageDateTime.initialize_tag(cms_pages(:default), '{{cms:page:dash-content:datetime}}')
11
+ assert_equal 'dash-content', tag.label
12
+ end
13
+
14
+ def test_initialize_tag_failure
15
+ [
16
+ '{{cms:page:content:not_datetime}}',
17
+ '{{cms:page:content}}',
18
+ '{{cms:not_page:content}}',
19
+ '{not_a_tag}'
20
+ ].each do |tag_signature|
21
+ assert_nil CmsTag::PageDateTime.initialize_tag(cms_pages(:default), tag_signature)
22
+ end
23
+ end
24
+
25
+ def test_content_and_render
26
+ tag = CmsTag::PageDateTime.initialize_tag(cms_pages(:default), '{{cms:page:content:datetime}}')
27
+ assert tag.content.blank?
28
+ time = 2.days.ago
29
+ tag.content = time
30
+ assert_equal time, tag.content
31
+ assert_equal time.to_s, tag.render
32
+ end
33
+
34
+ end
@@ -0,0 +1,33 @@
1
+ require File.expand_path('../../test_helper', File.dirname(__FILE__))
2
+
3
+ class PageIntegerTest < ActiveSupport::TestCase
4
+
5
+ def test_initialize_tag
6
+ assert tag = CmsTag::PageInteger.initialize_tag(cms_pages(:default), '{{ cms:page:content:integer }}')
7
+ assert_equal 'content', tag.label
8
+ assert tag = CmsTag::PageInteger.initialize_tag(cms_pages(:default), '{{cms:page:content:integer}}')
9
+ assert_equal 'content', tag.label
10
+ assert tag = CmsTag::PageInteger.initialize_tag(cms_pages(:default), '{{cms:page:dash-content:integer}}')
11
+ assert_equal 'dash-content', tag.label
12
+ end
13
+
14
+ def test_initialize_tag_failure
15
+ [
16
+ '{{cms:page:content:not_integer}}',
17
+ '{{cms:page:content}}',
18
+ '{{cms:not_page:content}}',
19
+ '{not_a_tag}'
20
+ ].each do |tag_signature|
21
+ assert_nil CmsTag::PageInteger.initialize_tag(cms_pages(:default), tag_signature)
22
+ end
23
+ end
24
+
25
+ def test_content_and_render
26
+ tag = CmsTag::PageInteger.initialize_tag(cms_pages(:default), '{{cms:page:content:integer}}')
27
+ assert tag.content.blank?
28
+ tag.content = '5'
29
+ assert_equal '5', tag.content
30
+ assert_equal '5', tag.render
31
+ end
32
+
33
+ end
@@ -0,0 +1,33 @@
1
+ require File.expand_path('../../test_helper', File.dirname(__FILE__))
2
+
3
+ class PageRichTextTest < ActiveSupport::TestCase
4
+
5
+ def test_initialize_tag
6
+ assert tag = CmsTag::PageRichText.initialize_tag(cms_pages(:default), '{{ cms:page:content:rich_text }}')
7
+ assert_equal 'content', tag.label
8
+ assert tag = CmsTag::PageRichText.initialize_tag(cms_pages(:default), '{{cms:page:content:rich_text}}')
9
+ assert_equal 'content', tag.label
10
+ assert tag = CmsTag::PageRichText.initialize_tag(cms_pages(:default), '{{cms:page:dash-content:rich_text}}')
11
+ assert_equal 'dash-content', tag.label
12
+ end
13
+
14
+ def test_initialize_tag_failure
15
+ [
16
+ '{{cms:page:content:not_rich_text}}',
17
+ '{{cms:page:content}}',
18
+ '{{cms:not_page:content}}',
19
+ '{not_a_tag}'
20
+ ].each do |tag_signature|
21
+ assert_nil CmsTag::PageRichText.initialize_tag(cms_pages(:default), tag_signature)
22
+ end
23
+ end
24
+
25
+ def test_content_and_render
26
+ tag = CmsTag::PageRichText.initialize_tag(cms_pages(:default), '{{cms:page:content:rich_text}}')
27
+ assert tag.content.blank?
28
+ tag.content = 'test_content'
29
+ assert_equal 'test_content', tag.content
30
+ assert_equal 'test_content', tag.render
31
+ end
32
+
33
+ end
@@ -0,0 +1,33 @@
1
+ require File.expand_path('../../test_helper', File.dirname(__FILE__))
2
+
3
+ class PageStringTest < ActiveSupport::TestCase
4
+
5
+ def test_initialize_tag
6
+ assert tag = CmsTag::PageString.initialize_tag(cms_pages(:default), '{{ cms:page:content:string }}')
7
+ assert_equal 'content', tag.label
8
+ assert tag = CmsTag::PageString.initialize_tag(cms_pages(:default), '{{cms:page:content:string}}')
9
+ assert_equal 'content', tag.label
10
+ assert tag = CmsTag::PageString.initialize_tag(cms_pages(:default), '{{cms:page:dash-content:string}}')
11
+ assert_equal 'dash-content', tag.label
12
+ end
13
+
14
+ def test_initialize_tag_failure
15
+ [
16
+ '{{cms:page:content:not_string}}',
17
+ '{{cms:page:content}}',
18
+ '{{cms:not_page:content}}',
19
+ '{not_a_tag}'
20
+ ].each do |tag_signature|
21
+ assert_nil CmsTag::PageString.initialize_tag(cms_pages(:default), tag_signature)
22
+ end
23
+ end
24
+
25
+ def test_content_and_render
26
+ tag = CmsTag::PageString.initialize_tag(cms_pages(:default), '{{cms:page:content:string}}')
27
+ assert tag.content.blank?
28
+ tag.content = 'test_content'
29
+ assert_equal 'test_content', tag.content
30
+ assert_equal 'test_content', tag.render
31
+ end
32
+
33
+ end
@@ -0,0 +1,34 @@
1
+ require File.expand_path('../../test_helper', File.dirname(__FILE__))
2
+
3
+ class PageTextTest < ActiveSupport::TestCase
4
+
5
+ def test_initialize_tag
6
+ assert tag = CmsTag::PageText.initialize_tag(cms_pages(:default), '{{ cms:page:content:text }}')
7
+ assert_equal 'content', tag.label
8
+ assert tag = CmsTag::PageText.initialize_tag(cms_pages(:default), '{{cms:page:content}}')
9
+ assert_equal 'content', tag.label
10
+ assert tag = CmsTag::PageText.initialize_tag(cms_pages(:default), '{{cms:page:content:text}}')
11
+ assert_equal 'content', tag.label
12
+ assert tag = CmsTag::PageText.initialize_tag(cms_pages(:default), '{{cms:page:dash-content}}')
13
+ assert_equal 'dash-content', tag.label
14
+ end
15
+
16
+ def test_initialize_tag_failure
17
+ [
18
+ '{{cms:page:content:not_text}}',
19
+ '{{cms:not_page:content}}',
20
+ '{not_a_tag}'
21
+ ].each do |tag_signature|
22
+ assert_nil CmsTag::PageText.initialize_tag(cms_pages(:default), tag_signature)
23
+ end
24
+ end
25
+
26
+ def test_content_and_render
27
+ tag = CmsTag::PageText.initialize_tag(cms_pages(:default), '{{cms:page:content}}')
28
+ assert tag.content.blank?
29
+ tag.content = 'test_content'
30
+ assert_equal 'test_content', tag.content
31
+ assert_equal 'test_content', tag.render
32
+ end
33
+
34
+ end
@@ -0,0 +1,44 @@
1
+ require File.expand_path('../../test_helper', File.dirname(__FILE__))
2
+
3
+ class PartialTest < ActiveSupport::TestCase
4
+
5
+ def test_initialize_tag
6
+ assert tag = CmsTag::Partial.initialize_tag(cms_pages(:default), '{{ cms:partial:partial_name }}')
7
+ assert_equal 'partial_name', tag.label
8
+ assert tag = CmsTag::Partial.initialize_tag(cms_pages(:default), '{{cms:partial:path/to/partial}}')
9
+ assert_equal 'path/to/partial', tag.label
10
+ assert tag = CmsTag::Partial.initialize_tag(cms_pages(:default), '{{cms:partial:path/to/dashed-partial}}')
11
+ assert_equal 'path/to/dashed-partial', tag.label
12
+ end
13
+
14
+ def test_initialize_tag_with_parameters
15
+ assert tag = CmsTag::Partial.initialize_tag(cms_pages(:default), '{{cms:partial:path/to/partial:param1:param2}}')
16
+ assert tag.label = 'path/to/partial'
17
+ assert tag.params = 'param1:param2'
18
+ end
19
+
20
+ def test_initialize_tag_failure
21
+ [
22
+ '{{cms:partial}}',
23
+ '{{cms:not_partial:label}}',
24
+ '{not_a_tag}'
25
+ ].each do |tag_signature|
26
+ assert_nil CmsTag::Partial.initialize_tag(cms_pages(:default), tag_signature)
27
+ end
28
+ end
29
+
30
+ def test_content_and_render
31
+ tag = CmsTag::Partial.initialize_tag(cms_pages(:default), '{{cms:partial:path/to/partial}}')
32
+ assert_equal "<%= render :partial => 'path/to/partial' %>", tag.content
33
+ assert_equal "<%= render :partial => 'path/to/partial' %>", tag.render
34
+
35
+ tag = CmsTag::Partial.initialize_tag(cms_pages(:default), '{{cms:partial:path/to/partial:param1}}')
36
+ assert_equal "<%= render :partial => 'path/to/partial', :locals => {:param_1 => 'param1'} %>", tag.content
37
+ assert_equal "<%= render :partial => 'path/to/partial', :locals => {:param_1 => 'param1'} %>", tag.render
38
+
39
+ tag = CmsTag::Partial.initialize_tag(cms_pages(:default), '{{cms:partial:path/to/partial:param1:param2}}')
40
+ assert_equal "<%= render :partial => 'path/to/partial', :locals => {:param_1 => 'param1', :param_2 => 'param2'} %>", tag.content
41
+ assert_equal "<%= render :partial => 'path/to/partial', :locals => {:param_1 => 'param1', :param_2 => 'param2'} %>", tag.render
42
+ end
43
+
44
+ end
@@ -0,0 +1,33 @@
1
+ require File.expand_path('../../test_helper', File.dirname(__FILE__))
2
+
3
+ class SnippetTest < ActiveSupport::TestCase
4
+
5
+ def test_initialize_tag
6
+ assert tag = CmsTag::Snippet.initialize_tag(cms_pages(:default), '{{ cms:snippet:label }}')
7
+ assert_equal 'label', tag.slug
8
+ assert tag = CmsTag::Snippet.initialize_tag(cms_pages(:default), '{{cms:snippet:label}}')
9
+ assert_equal 'label', tag.slug
10
+ assert tag = CmsTag::Snippet.initialize_tag(cms_pages(:default), '{{cms:snippet:dash-label}}')
11
+ assert_equal 'dash-label', tag.slug
12
+ end
13
+
14
+ def test_initialize_tag_failure
15
+ [
16
+ '{{cms:snippet}}',
17
+ '{{cms:not_snippet:label}}',
18
+ '{not_a_tag}'
19
+ ].each do |tag_signature|
20
+ assert_nil CmsTag::Snippet.initialize_tag(cms_pages(:default), tag_signature)
21
+ end
22
+ end
23
+
24
+ def test_content_and_render
25
+ tag = CmsTag::Snippet.initialize_tag(cms_pages(:default), '{{cms:snippet:default}}')
26
+ assert_equal 'default_snippet_content', tag.content
27
+ assert_equal 'default_snippet_content', tag.render
28
+
29
+ tag = CmsTag::Snippet.initialize_tag(cms_pages(:default), "{{cms:snippet:doesnot_exist}}")
30
+ assert_equal nil, tag.content
31
+ assert_equal '', tag.render
32
+ end
33
+ end
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class CmsUploadDirTest < ActiveSupport::TestCase
4
+ # Replace this with your real tests.
5
+ test "the truth" do
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,26 @@
1
+ require File.expand_path('../test_helper', File.dirname(__FILE__))
2
+
3
+ class CmsUploadTest < ActiveSupport::TestCase
4
+
5
+ def test_validations
6
+ assert_no_difference 'CmsUpload.count' do
7
+ upload = CmsUpload.create
8
+ assert upload.errors.present?
9
+ assert_has_errors_on upload, [:file_file_name]
10
+ end
11
+ end
12
+
13
+ def test_create
14
+ assert_difference 'CmsUpload.count' do
15
+ cms_sites(:default).cms_uploads.create(
16
+ :file => fixture_file_upload('files/valid_image.jpg')
17
+ )
18
+ end
19
+ end
20
+
21
+ def test_create_failure
22
+ assert_no_difference 'CmsUpload.count' do
23
+ cms_sites(:default).cms_uploads.create(:file => '')
24
+ end
25
+ end
26
+ end