comfypress 0.1.3

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 (289) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.travis.yml +22 -0
  4. data/Gemfile +22 -0
  5. data/Gemfile.lock +175 -0
  6. data/LICENSE +20 -0
  7. data/README.md +79 -0
  8. data/Rakefile +5 -0
  9. data/app/assets/images/comfypress/arrow_bottom.gif +0 -0
  10. data/app/assets/images/comfypress/arrow_right.gif +0 -0
  11. data/app/assets/images/comfypress/bootstrap/glyphicons-halflings-white.png +0 -0
  12. data/app/assets/images/comfypress/bootstrap/glyphicons-halflings.png +0 -0
  13. data/app/assets/images/comfypress/checkerboard.gif +0 -0
  14. data/app/assets/images/comfypress/icon_draft.gif +0 -0
  15. data/app/assets/images/comfypress/icon_file.gif +0 -0
  16. data/app/assets/images/comfypress/icon_layout.gif +0 -0
  17. data/app/assets/images/comfypress/icon_move.gif +0 -0
  18. data/app/assets/images/comfypress/icon_page.gif +0 -0
  19. data/app/assets/images/comfypress/icon_site.gif +0 -0
  20. data/app/assets/images/comfypress/icon_snippet.gif +0 -0
  21. data/app/assets/images/comfypress/nav_arrow.png +0 -0
  22. data/app/assets/javascripts/comfypress/admin/application.js +1 -0
  23. data/app/assets/javascripts/comfypress/application.js.coffee +175 -0
  24. data/app/assets/javascripts/comfypress/lib/bootstrap-datetimepicker.js +21 -0
  25. data/app/assets/javascripts/comfypress/lib/bootstrap-wysihtml5.js +492 -0
  26. data/app/assets/javascripts/comfypress/lib/bootstrap.js +6 -0
  27. data/app/assets/javascripts/comfypress/lib/codemirror.js +10 -0
  28. data/app/assets/javascripts/comfypress/lib/wysihtml5.js +261 -0
  29. data/app/assets/stylesheets/comfypress/admin/application.css +1 -0
  30. data/app/assets/stylesheets/comfypress/application.css.sass +8 -0
  31. data/app/assets/stylesheets/comfypress/base.css.sass +333 -0
  32. data/app/assets/stylesheets/comfypress/bootstrap_overrides.css.sass +45 -0
  33. data/app/assets/stylesheets/comfypress/codemirror_overrides.css.sass +27 -0
  34. data/app/assets/stylesheets/comfypress/lib/bootstrap-datetimepicker.css +9 -0
  35. data/app/assets/stylesheets/comfypress/lib/bootstrap-wysihtml5.css +102 -0
  36. data/app/assets/stylesheets/comfypress/lib/bootstrap.css +9 -0
  37. data/app/assets/stylesheets/comfypress/lib/codemirror.css +240 -0
  38. data/app/assets/stylesheets/comfypress/wysihtml5_overrides.css.sass +5 -0
  39. data/app/controllers/application_controller.rb +5 -0
  40. data/app/controllers/cms_admin/base_controller.rb +51 -0
  41. data/app/controllers/cms_admin/categories_controller.rb +35 -0
  42. data/app/controllers/cms_admin/files_controller.rb +108 -0
  43. data/app/controllers/cms_admin/layouts_controller.rb +67 -0
  44. data/app/controllers/cms_admin/menu_items_controller.rb +65 -0
  45. data/app/controllers/cms_admin/menus_controller.rb +60 -0
  46. data/app/controllers/cms_admin/pages_controller.rb +112 -0
  47. data/app/controllers/cms_admin/revisions_controller.rb +57 -0
  48. data/app/controllers/cms_admin/sites_controller.rb +64 -0
  49. data/app/controllers/cms_admin/snippets_controller.rb +64 -0
  50. data/app/controllers/cms_content_controller.rb +79 -0
  51. data/app/helpers/application_helper.rb +16 -0
  52. data/app/models/cms/block.rb +48 -0
  53. data/app/models/cms/categorization.rb +21 -0
  54. data/app/models/cms/category.rb +30 -0
  55. data/app/models/cms/file.rb +75 -0
  56. data/app/models/cms/layout.rb +99 -0
  57. data/app/models/cms/menu.rb +26 -0
  58. data/app/models/cms/menu_item.rb +14 -0
  59. data/app/models/cms/page.rb +202 -0
  60. data/app/models/cms/revision.rb +17 -0
  61. data/app/models/cms/site.rb +113 -0
  62. data/app/models/cms/snippet.rb +58 -0
  63. data/app/models/cms.rb +5 -0
  64. data/app/views/cms_admin/categories/_categories.html.haml +3 -0
  65. data/app/views/cms_admin/categories/_edit.html.haml +6 -0
  66. data/app/views/cms_admin/categories/_form.html.haml +8 -0
  67. data/app/views/cms_admin/categories/_index.html.haml +24 -0
  68. data/app/views/cms_admin/categories/_show.html.haml +13 -0
  69. data/app/views/cms_admin/categories/create.js.erb +7 -0
  70. data/app/views/cms_admin/categories/destroy.js.erb +3 -0
  71. data/app/views/cms_admin/categories/edit.js.erb +3 -0
  72. data/app/views/cms_admin/categories/update.js.erb +6 -0
  73. data/app/views/cms_admin/files/_file.html.haml +13 -0
  74. data/app/views/cms_admin/files/_form.html.haml +14 -0
  75. data/app/views/cms_admin/files/_index.html.haml +14 -0
  76. data/app/views/cms_admin/files/_page_form.html.haml +9 -0
  77. data/app/views/cms_admin/files/destroy.js.coffee +2 -0
  78. data/app/views/cms_admin/files/edit.html.haml +5 -0
  79. data/app/views/cms_admin/files/index.html.haml +28 -0
  80. data/app/views/cms_admin/files/new.html.haml +5 -0
  81. data/app/views/cms_admin/layouts/_form.html.haml +17 -0
  82. data/app/views/cms_admin/layouts/_index_branch.html.haml +23 -0
  83. data/app/views/cms_admin/layouts/edit.html.haml +9 -0
  84. data/app/views/cms_admin/layouts/index.html.haml +9 -0
  85. data/app/views/cms_admin/layouts/new.html.haml +5 -0
  86. data/app/views/cms_admin/menu_items/_form.html.haml +22 -0
  87. data/app/views/cms_admin/menu_items/edit.html.haml +8 -0
  88. data/app/views/cms_admin/menu_items/index.html.haml +24 -0
  89. data/app/views/cms_admin/menu_items/new.html.haml +5 -0
  90. data/app/views/cms_admin/menus/_form.html.haml +8 -0
  91. data/app/views/cms_admin/menus/edit.html.haml +8 -0
  92. data/app/views/cms_admin/menus/index.html.haml +24 -0
  93. data/app/views/cms_admin/menus/new.html.haml +5 -0
  94. data/app/views/cms_admin/pages/_form.html.haml +38 -0
  95. data/app/views/cms_admin/pages/_form_blocks.html.haml +28 -0
  96. data/app/views/cms_admin/pages/_index_branch.html.haml +35 -0
  97. data/app/views/cms_admin/pages/edit.html.haml +9 -0
  98. data/app/views/cms_admin/pages/form_blocks.js.erb +2 -0
  99. data/app/views/cms_admin/pages/index.html.haml +11 -0
  100. data/app/views/cms_admin/pages/new.html.haml +5 -0
  101. data/app/views/cms_admin/pages/toggle_branch.js.erb +11 -0
  102. data/app/views/cms_admin/revisions/show.html.haml +28 -0
  103. data/app/views/cms_admin/sites/_form.html.haml +14 -0
  104. data/app/views/cms_admin/sites/_mirrors.html.haml +17 -0
  105. data/app/views/cms_admin/sites/edit.html.haml +5 -0
  106. data/app/views/cms_admin/sites/index.html.haml +24 -0
  107. data/app/views/cms_admin/sites/new.html.haml +5 -0
  108. data/app/views/cms_admin/snippets/_form.html.haml +11 -0
  109. data/app/views/cms_admin/snippets/edit.html.haml +9 -0
  110. data/app/views/cms_admin/snippets/index.html.haml +28 -0
  111. data/app/views/cms_admin/snippets/new.html.haml +5 -0
  112. data/app/views/cms_content/_menu.html.haml +5 -0
  113. data/app/views/cms_content/render_sitemap.xml.builder +15 -0
  114. data/app/views/layouts/cms_admin/_body.html.haml +16 -0
  115. data/app/views/layouts/cms_admin/_center.html.haml +7 -0
  116. data/app/views/layouts/cms_admin/_footer.html.haml +3 -0
  117. data/app/views/layouts/cms_admin/_footer_js.html.haml +7 -0
  118. data/app/views/layouts/cms_admin/_head.html.haml +12 -0
  119. data/app/views/layouts/cms_admin/_left.html.haml +11 -0
  120. data/app/views/layouts/cms_admin/_right.html.haml +1 -0
  121. data/app/views/layouts/cms_admin.html.haml +4 -0
  122. data/comfypress.gemspec +28 -0
  123. data/config/application.rb +69 -0
  124. data/config/boot.rb +6 -0
  125. data/config/database.sqlite.yml +47 -0
  126. data/config/database.yml +47 -0
  127. data/config/environment.rb +5 -0
  128. data/config/environments/development.rb +39 -0
  129. data/config/environments/production.rb +67 -0
  130. data/config/environments/test.rb +39 -0
  131. data/config/initializers/comfypress.rb +100 -0
  132. data/config/initializers/paperclip.rb +3 -0
  133. data/config/locales/de.yml +236 -0
  134. data/config/locales/en.yml +285 -0
  135. data/config/locales/es.yml +236 -0
  136. data/config/locales/fr.yml +236 -0
  137. data/config/locales/ja.yml +237 -0
  138. data/config/locales/pl.yml +236 -0
  139. data/config/locales/pt-BR.yml +236 -0
  140. data/config/locales/ru.yml +236 -0
  141. data/config/locales/sv.yml +236 -0
  142. data/config/locales/zh-CN.yml +236 -0
  143. data/config/routes.rb +10 -0
  144. data/config.ru +4 -0
  145. data/db/cms_fixtures/sample-site/layouts/default/_default.yml +1 -0
  146. data/db/cms_fixtures/sample-site/layouts/default/content.html +5 -0
  147. data/db/cms_fixtures/sample-site/layouts/default/css.css +1 -0
  148. data/db/cms_fixtures/sample-site/layouts/default/js.js +1 -0
  149. data/db/cms_fixtures/sample-site/layouts/default/nested/_nested.yml +2 -0
  150. data/db/cms_fixtures/sample-site/layouts/default/nested/content.html +2 -0
  151. data/db/cms_fixtures/sample-site/layouts/default/nested/css.css +1 -0
  152. data/db/cms_fixtures/sample-site/layouts/default/nested/js.js +1 -0
  153. data/db/cms_fixtures/sample-site/pages/index/_index.yml +2 -0
  154. data/db/cms_fixtures/sample-site/pages/index/child/_child.yml +3 -0
  155. data/db/cms_fixtures/sample-site/pages/index/child/left.html +1 -0
  156. data/db/cms_fixtures/sample-site/pages/index/child/right.html +1 -0
  157. data/db/cms_fixtures/sample-site/pages/index/content.html +2 -0
  158. data/db/cms_fixtures/sample-site/snippets/default/_default.yml +1 -0
  159. data/db/cms_fixtures/sample-site/snippets/default/content.html +1 -0
  160. data/db/migrate/01_create_cms.rb +163 -0
  161. data/db/seeds.rb +9 -0
  162. data/db/upgrade_migrations/02_upgrade_to_1_1_0.rb +19 -0
  163. data/db/upgrade_migrations/03_upgrade_to_1_2_0.rb +15 -0
  164. data/db/upgrade_migrations/04_upgrade_to_1_3_0.rb +23 -0
  165. data/db/upgrade_migrations/05_upgrade_to_1_4_0.rb +33 -0
  166. data/db/upgrade_migrations/06_upgrade_to_1_5_0.rb +21 -0
  167. data/db/upgrade_migrations/07_upgrade_to_1_6_0.rb +25 -0
  168. data/doc/preview.png +0 -0
  169. data/doc/sofa.png +0 -0
  170. data/lib/comfypress/authentication/dummy_auth.rb +8 -0
  171. data/lib/comfypress/authentication/http_auth.rb +18 -0
  172. data/lib/comfypress/configuration.rb +99 -0
  173. data/lib/comfypress/engine.rb +18 -0
  174. data/lib/comfypress/error.rb +24 -0
  175. data/lib/comfypress/extensions/acts_as_tree.rb +102 -0
  176. data/lib/comfypress/extensions/has_revisions.rb +64 -0
  177. data/lib/comfypress/extensions/is_categorized.rb +49 -0
  178. data/lib/comfypress/extensions/is_mirrored.rb +85 -0
  179. data/lib/comfypress/extensions/rails.rb +24 -0
  180. data/lib/comfypress/fixtures.rb +289 -0
  181. data/lib/comfypress/form_builder.rb +97 -0
  182. data/lib/comfypress/render_methods.rb +85 -0
  183. data/lib/comfypress/routing.rb +62 -0
  184. data/lib/comfypress/sitemap.rb +27 -0
  185. data/lib/comfypress/tag.rb +154 -0
  186. data/lib/comfypress/tags/asset.rb +25 -0
  187. data/lib/comfypress/tags/collection.rb +64 -0
  188. data/lib/comfypress/tags/field_datetime.rb +17 -0
  189. data/lib/comfypress/tags/field_integer.rb +17 -0
  190. data/lib/comfypress/tags/field_rich_text.rb +17 -0
  191. data/lib/comfypress/tags/field_string.rb +17 -0
  192. data/lib/comfypress/tags/field_text.rb +17 -0
  193. data/lib/comfypress/tags/file.rb +29 -0
  194. data/lib/comfypress/tags/helper.rb +24 -0
  195. data/lib/comfypress/tags/menu.rb +27 -0
  196. data/lib/comfypress/tags/page_datetime.rb +13 -0
  197. data/lib/comfypress/tags/page_file.rb +51 -0
  198. data/lib/comfypress/tags/page_files.rb +52 -0
  199. data/lib/comfypress/tags/page_integer.rb +13 -0
  200. data/lib/comfypress/tags/page_markdown.rb +22 -0
  201. data/lib/comfypress/tags/page_rich_text.rb +13 -0
  202. data/lib/comfypress/tags/page_string.rb +13 -0
  203. data/lib/comfypress/tags/page_text.rb +13 -0
  204. data/lib/comfypress/tags/partial.rb +23 -0
  205. data/lib/comfypress/tags/snippet.rb +19 -0
  206. data/lib/comfypress/version.rb +3 -0
  207. data/lib/comfypress/view_hooks.rb +32 -0
  208. data/lib/comfypress/view_methods.rb +52 -0
  209. data/lib/comfypress.rb +66 -0
  210. data/lib/generators/comfy/cms/README +10 -0
  211. data/lib/generators/comfy/cms/cms_generator.rb +57 -0
  212. data/lib/tasks/comfypress.rake +45 -0
  213. data/script/rails +6 -0
  214. data/test/fixtures/cms/blocks.yml +12 -0
  215. data/test/fixtures/cms/categories.yml +4 -0
  216. data/test/fixtures/cms/categorizations.yml +3 -0
  217. data/test/fixtures/cms/files.yml +9 -0
  218. data/test/fixtures/cms/layouts.yml +40 -0
  219. data/test/fixtures/cms/menu_items.yml +15 -0
  220. data/test/fixtures/cms/menus.yml +9 -0
  221. data/test/fixtures/cms/pages.yml +39 -0
  222. data/test/fixtures/cms/revisions.yml +21 -0
  223. data/test/fixtures/cms/sites.yml +6 -0
  224. data/test/fixtures/cms/snippets.yml +6 -0
  225. data/test/fixtures/files/data.zip +0 -0
  226. data/test/fixtures/files/document.pdf +0 -0
  227. data/test/fixtures/files/image.gif +0 -0
  228. data/test/fixtures/files/image.jpg +0 -0
  229. data/test/fixtures/views/_nav_hook.html.erb +1 -0
  230. data/test/fixtures/views/_nav_hook_2.html.erb +1 -0
  231. data/test/fixtures/views/render_test/_test.html.erb +1 -0
  232. data/test/fixtures/views/render_test/new.html.erb +1 -0
  233. data/test/fixtures/views/render_test/render_layout.html.erb +1 -0
  234. data/test/functional/cms_admin/base_controller_test.rb +18 -0
  235. data/test/functional/cms_admin/categories_controller_test.rb +70 -0
  236. data/test/functional/cms_admin/files_controller_test.rb +216 -0
  237. data/test/functional/cms_admin/layouts_controller_test.rb +123 -0
  238. data/test/functional/cms_admin/pages_controller_test.rb +450 -0
  239. data/test/functional/cms_admin/revisions_controller_test.rb +138 -0
  240. data/test/functional/cms_admin/sites_controller_test.rb +105 -0
  241. data/test/functional/cms_admin/snippets_controller_test.rb +140 -0
  242. data/test/functional/cms_content_controller_test.rb +205 -0
  243. data/test/gemfiles/Gemfile.rails.3.1 +16 -0
  244. data/test/gemfiles/Gemfile.rails.3.2 +16 -0
  245. data/test/gemfiles/Gemfile.rails.4.0 +16 -0
  246. data/test/integration/authentication_test.rb +48 -0
  247. data/test/integration/fixtures_test.rb +61 -0
  248. data/test/integration/mirrors_test.rb +72 -0
  249. data/test/integration/render_cms_test.rb +233 -0
  250. data/test/integration/sites_test.rb +120 -0
  251. data/test/integration/view_hooks_test.rb +43 -0
  252. data/test/test_helper.rb +124 -0
  253. data/test/unit/cms/menu_item_test.rb +7 -0
  254. data/test/unit/cms/menu_test.rb +7 -0
  255. data/test/unit/configuration_test.rb +42 -0
  256. data/test/unit/fixtures_test.rb +357 -0
  257. data/test/unit/mirrors_test.rb +242 -0
  258. data/test/unit/models/block_test.rb +199 -0
  259. data/test/unit/models/categorization_test.rb +76 -0
  260. data/test/unit/models/category_test.rb +39 -0
  261. data/test/unit/models/file_test.rb +89 -0
  262. data/test/unit/models/layout_test.rb +125 -0
  263. data/test/unit/models/page_test.rb +255 -0
  264. data/test/unit/models/site_test.rb +152 -0
  265. data/test/unit/models/snippet_test.rb +49 -0
  266. data/test/unit/revisions_test.rb +185 -0
  267. data/test/unit/sitemap_test.rb +20 -0
  268. data/test/unit/tag_test.rb +308 -0
  269. data/test/unit/tags/asset_test.rb +56 -0
  270. data/test/unit/tags/collection_test.rb +116 -0
  271. data/test/unit/tags/field_datetime_test.rb +50 -0
  272. data/test/unit/tags/field_integer_test.rb +49 -0
  273. data/test/unit/tags/field_rich_text_test.rb +49 -0
  274. data/test/unit/tags/field_string_test.rb +52 -0
  275. data/test/unit/tags/field_text_test.rb +48 -0
  276. data/test/unit/tags/file_test.rb +67 -0
  277. data/test/unit/tags/helper_test.rb +86 -0
  278. data/test/unit/tags/page_datetime_test.rb +50 -0
  279. data/test/unit/tags/page_file_test.rb +119 -0
  280. data/test/unit/tags/page_files_test.rb +113 -0
  281. data/test/unit/tags/page_integer_test.rb +49 -0
  282. data/test/unit/tags/page_markdown_test.rb +48 -0
  283. data/test/unit/tags/page_rich_text_test.rb +49 -0
  284. data/test/unit/tags/page_string_test.rb +49 -0
  285. data/test/unit/tags/page_text_test.rb +52 -0
  286. data/test/unit/tags/partial_test.rb +76 -0
  287. data/test/unit/tags/snippet_test.rb +45 -0
  288. data/test/unit/view_methods_test.rb +80 -0
  289. metadata +457 -0
@@ -0,0 +1,216 @@
1
+ require File.expand_path('../../test_helper', File.dirname(__FILE__))
2
+
3
+ class CmsAdmin::FilesControllerTest < ActionController::TestCase
4
+
5
+ def test_get_index
6
+ get :index, :site_id => cms_sites(:default)
7
+ assert_response :success
8
+ assert assigns(:files)
9
+ assert_template :index
10
+ end
11
+
12
+ def test_get_index_with_no_files
13
+ Cms::File.delete_all
14
+ get :index, :site_id => cms_sites(:default)
15
+ assert_response :redirect
16
+ assert_redirected_to :action => :new
17
+ end
18
+
19
+ def test_get_index_with_category
20
+ get :index, :site_id => cms_sites(:default), :category => cms_categories(:default).label
21
+ assert_response :success
22
+ assert assigns(:files)
23
+ assert_equal 1, assigns(:files).count
24
+ assert assigns(:files).first.categories.member? cms_categories(:default)
25
+ end
26
+
27
+ def test_get_index_with_category_invalid
28
+ get :index, :site_id => cms_sites(:default), :category => 'invalid'
29
+ assert_response :success
30
+ assert assigns(:files)
31
+ assert_equal 0, assigns(:files).count
32
+ end
33
+
34
+ def test_get_index_as_ajax
35
+ get :index, :site_id => cms_sites(:default), :ajax => true
36
+ assert_response :success
37
+ r = JSON.parse(response.body)
38
+ file = cms_files(:default)
39
+ assert_equal [{
40
+ 'thumb' => file.file.url(:cms_thumb),
41
+ 'image' => file.file.url
42
+ }], r
43
+ end
44
+
45
+ def test_get_new
46
+ site = cms_sites(:default)
47
+ get :new, :site_id => site
48
+ assert_response :success
49
+ assert assigns(:file)
50
+ assert_template :new
51
+ assert_select "form[action=/cms-admin/sites/#{site.id}/files][enctype=multipart/form-data]"
52
+ end
53
+
54
+ def test_get_edit
55
+ file = cms_files(:default)
56
+ get :edit, :site_id => file.site, :id => file
57
+ assert_response :success
58
+ assert assigns(:file)
59
+ assert_template :edit
60
+ assert_select "form[action=/cms-admin/sites/#{file.site.id}/files/#{file.id}]"
61
+ end
62
+
63
+ def test_get_edit_failure
64
+ get :edit, :site_id => cms_sites(:default), :id => 'not_found'
65
+ assert_response :redirect
66
+ assert_redirected_to :action => :index
67
+ assert_equal 'File not found', flash[:error]
68
+ end
69
+
70
+ def test_create
71
+ assert_difference 'Cms::File.count' do
72
+ post :create, :site_id => cms_sites(:default), :file => {
73
+ :label => 'Test File',
74
+ :description => 'Test Description',
75
+ :file => [fixture_file_upload('files/image.jpg', 'image/jpeg')]
76
+ }
77
+ assert_response :redirect
78
+ file = Cms::File.last
79
+ assert_equal cms_sites(:default), file.site
80
+ assert_equal 'Test File', file.label
81
+ assert_equal 'Test Description', file.description
82
+ assert_redirected_to :action => :edit, :id => file
83
+ assert_equal 'Files uploaded', flash[:success]
84
+ end
85
+ end
86
+
87
+ def test_create_failure
88
+ assert_no_difference 'Cms::File.count' do
89
+ post :create, :site_id => cms_sites(:default), :file => { }
90
+ assert_response :success
91
+ assert_template :new
92
+ assert_equal 'Failed to upload files', flash[:error]
93
+ end
94
+ end
95
+
96
+ def test_create_multiple
97
+ Cms::File.delete_all
98
+
99
+ assert_difference 'Cms::File.count', 2 do
100
+ post :create, :site_id => cms_sites(:default), :file => {
101
+ :label => 'Test File',
102
+ :description => 'Test Description',
103
+ :file => [
104
+ fixture_file_upload('files/image.jpg', 'image/jpeg'),
105
+ fixture_file_upload('files/image.gif', 'image/gif')
106
+ ]
107
+ }
108
+ assert_response :redirect
109
+ file_a, file_b = Cms::File.all
110
+ assert_equal cms_sites(:default), file_a.site
111
+
112
+ assert_equal 'image.jpg', file_a.file_file_name
113
+ assert_equal 'image.gif', file_b.file_file_name
114
+ assert_equal 'Test File 1', file_a.label
115
+ assert_equal 'Test File 2', file_b.label
116
+ assert_equal 'Test Description', file_a.description
117
+ assert_equal 'Test Description', file_b.description
118
+
119
+ assert_redirected_to :action => :edit, :id => file_b
120
+ assert_equal 'Files uploaded', flash[:success]
121
+ end
122
+ end
123
+
124
+ def test_create_as_ajax
125
+ assert_difference 'Cms::File.count' do
126
+ post :create,
127
+ :ajax => true,
128
+ :site_id => cms_sites(:default),
129
+ :file => {
130
+ :file => [fixture_file_upload('files/image.jpg', 'image/jpeg')]
131
+ }
132
+ assert_response :success
133
+ file = Cms::File.last
134
+ r = JSON.parse(response.body)
135
+ assert_equal file.file.url, r['filelink']
136
+ assert_present r['view']
137
+ end
138
+ end
139
+
140
+ def test_create_as_ajax_failure
141
+ assert_no_difference 'Cms::File.count' do
142
+ post :create, :ajax => true, :site_id => cms_sites(:default), :file => { }
143
+ assert_response :unprocessable_entity
144
+ end
145
+ end
146
+
147
+ def test_create_as_ajax_as_single_file
148
+ assert_difference 'Cms::File.count' do
149
+ post :create,
150
+ :ajax => true,
151
+ :site_id => cms_sites(:default),
152
+ :file => fixture_file_upload('files/image.jpg', 'image/jpeg')
153
+ assert_response :success
154
+ end
155
+ end
156
+
157
+ def test_update
158
+ file = cms_files(:default)
159
+ put :update, :site_id => file.site, :id => file, :file => {
160
+ :label => 'New File',
161
+ :description => 'New Description'
162
+ }
163
+ assert_response :redirect
164
+ assert_redirected_to :action => :edit, :site_id => file.site, :id => file
165
+ assert_equal 'File updated', flash[:success]
166
+ file.reload
167
+ assert_equal 'New File', file.label
168
+ assert_equal 'New Description', file.description
169
+ end
170
+
171
+ def test_update_failure
172
+ file = cms_files(:default)
173
+ put :update, :site_id => file.site, :id => file, :file => {
174
+ :file => nil
175
+ }
176
+ assert_response :success
177
+ assert_template :edit
178
+ file.reload
179
+ assert_not_equal nil, file.file
180
+ assert_equal 'Failed to update file', flash[:error]
181
+ end
182
+
183
+ def test_destroy
184
+ assert_difference 'Cms::File.count', -1 do
185
+ delete :destroy, :site_id => cms_sites(:default), :id => cms_files(:default)
186
+ assert_response :redirect
187
+ assert_redirected_to :action => :index
188
+ assert_equal 'File deleted', flash[:success]
189
+ end
190
+ end
191
+
192
+ def test_destroy_as_xhr
193
+ assert_difference 'Cms::File.count', -1 do
194
+ xhr :delete, :destroy, :site_id => cms_sites(:default), :id => cms_files(:default)
195
+ assert_response :success
196
+ end
197
+ end
198
+
199
+ def test_reorder
200
+ file_one = cms_files(:default)
201
+ file_two = cms_sites(:default).files.create(
202
+ :file => fixture_file_upload('files/image.jpg', "image/jpeg")
203
+ )
204
+ assert_equal 0, file_one.position
205
+ assert_equal 1, file_two.position
206
+
207
+ put :reorder, :site_id => cms_sites(:default), :cms_file => [file_two.id, file_one.id]
208
+ assert_response :success
209
+ file_one.reload
210
+ file_two.reload
211
+
212
+ assert_equal 1, file_one.position
213
+ assert_equal 0, file_two.position
214
+ end
215
+
216
+ end
@@ -0,0 +1,123 @@
1
+ require File.expand_path('../../test_helper', File.dirname(__FILE__))
2
+
3
+ class CmsAdmin::LayoutsControllerTest < ActionController::TestCase
4
+
5
+ def test_get_index
6
+ get :index, :site_id => cms_sites(:default)
7
+ assert_response :success
8
+ assert assigns(:layouts)
9
+ assert_template :index
10
+ end
11
+
12
+ def test_get_index_with_no_layouts
13
+ Cms::Layout.delete_all
14
+ get :index, :site_id => cms_sites(:default)
15
+ assert_response :redirect
16
+ assert_redirected_to :action => :new
17
+ end
18
+
19
+ def test_get_new
20
+ site = cms_sites(:default)
21
+ get :new, :site_id => site
22
+ assert_response :success
23
+ assert assigns(:layout)
24
+ assert_equal '{{ cms:page:content:text }}', assigns(:layout).content
25
+ assert_template :new
26
+ assert_select "form[action=/cms-admin/sites/#{site.id}/layouts]"
27
+ assert_select "form[action='/cms-admin/sites/#{site.id}/files?ajax=true']"
28
+ end
29
+
30
+ def test_get_edit
31
+ layout = cms_layouts(:default)
32
+ get :edit, :site_id => cms_sites(:default), :id => layout
33
+ assert_response :success
34
+ assert assigns(:layout)
35
+ assert_template :edit
36
+ assert_select "form[action=/cms-admin/sites/#{layout.site.id}/layouts/#{layout.id}]"
37
+ end
38
+
39
+ def test_get_edit_failure
40
+ get :edit, :site_id => cms_sites(:default), :id => 'not_found'
41
+ assert_response :redirect
42
+ assert_redirected_to :action => :index
43
+ assert_equal 'Layout not found', flash[:error]
44
+ end
45
+
46
+ def test_creation
47
+ assert_difference 'Cms::Layout.count' do
48
+ post :create, :site_id => cms_sites(:default), :layout => {
49
+ :label => 'Test Layout',
50
+ :identifier => 'test',
51
+ :content => 'Test {{cms:page:content}}'
52
+ }
53
+ assert_response :redirect
54
+ layout = Cms::Layout.last
55
+ assert_equal cms_sites(:default), layout.site
56
+ assert_redirected_to :action => :edit, :site_id => layout.site, :id => layout
57
+ assert_equal 'Layout created', flash[:success]
58
+ end
59
+ end
60
+
61
+ def test_creation_failure
62
+ assert_no_difference 'Cms::Layout.count' do
63
+ post :create, :site_id => cms_sites(:default), :layout => { }
64
+ assert_response :success
65
+ assert_template :new
66
+ assert_equal 'Failed to create layout', flash[:error]
67
+ end
68
+ end
69
+
70
+ def test_update
71
+ layout = cms_layouts(:default)
72
+ put :update, :site_id => cms_sites(:default), :id => layout, :layout => {
73
+ :label => 'New Label',
74
+ :content => 'New {{cms:page:content}}'
75
+ }
76
+ assert_response :redirect
77
+ assert_redirected_to :action => :edit, :site_id => layout.site, :id => layout
78
+ assert_equal 'Layout updated', flash[:success]
79
+ layout.reload
80
+ assert_equal 'New Label', layout.label
81
+ assert_equal 'New {{cms:page:content}}', layout.content
82
+ end
83
+
84
+ def test_update_failure
85
+ layout = cms_layouts(:default)
86
+ put :update, :site_id => cms_sites(:default), :id => layout, :layout => {
87
+ :identifier => ''
88
+ }
89
+ assert_response :success
90
+ assert_template :edit
91
+ layout.reload
92
+ assert_not_equal '', layout.identifier
93
+ assert_equal 'Failed to update layout', flash[:error]
94
+ end
95
+
96
+ def test_destroy
97
+ assert_difference 'Cms::Layout.count', -1 do
98
+ delete :destroy, :site_id => cms_sites(:default), :id => cms_layouts(:default)
99
+ assert_response :redirect
100
+ assert_redirected_to :action => :index
101
+ assert_equal 'Layout deleted', flash[:success]
102
+ end
103
+ end
104
+
105
+ def test_reorder
106
+ layout_one = cms_layouts(:default)
107
+ layout_two = cms_sites(:default).layouts.create!(
108
+ :label => 'test',
109
+ :identifier => 'test'
110
+ )
111
+ assert_equal 0, layout_one.position
112
+ assert_equal 1, layout_two.position
113
+
114
+ put :reorder, :site_id => cms_sites(:default), :cms_layout => [layout_two.id, layout_one.id]
115
+ assert_response :success
116
+ layout_one.reload
117
+ layout_two.reload
118
+
119
+ assert_equal 1, layout_one.position
120
+ assert_equal 0, layout_two.position
121
+ end
122
+
123
+ end