comfortable_mexican_sofa 0.0.18 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. data/.gitignore +8 -8
  2. data/Gemfile +11 -0
  3. data/Gemfile.lock +91 -0
  4. data/README.md +4 -0
  5. data/Rakefile +28 -57
  6. data/VERSION +1 -1
  7. data/app/controllers/application_controller.rb +5 -0
  8. data/app/controllers/cms_admin/base_controller.rb +1 -21
  9. data/app/controllers/cms_admin/layouts_controller.rb +23 -38
  10. data/app/controllers/cms_admin/pages_controller.rb +24 -40
  11. data/app/controllers/cms_admin/snippets_controller.rb +26 -34
  12. data/app/controllers/cms_admin/uploads_controller.rb +27 -0
  13. data/app/controllers/cms_content_controller.rb +22 -19
  14. data/app/models/cms_block.rb +20 -6
  15. data/app/models/cms_layout.rb +34 -80
  16. data/app/models/cms_page.rb +44 -102
  17. data/app/models/cms_snippet.rb +12 -7
  18. data/app/models/cms_upload.rb +36 -0
  19. data/app/views/cms_admin/layouts/_form.html.erb +6 -0
  20. data/app/views/cms_admin/layouts/_index_branch.html.erb +24 -0
  21. data/app/views/cms_admin/layouts/edit.html.erb +6 -0
  22. data/app/views/cms_admin/layouts/index.html.erb +6 -0
  23. data/app/views/cms_admin/layouts/new.html.erb +6 -0
  24. data/app/views/cms_admin/pages/_form.html.erb +14 -0
  25. data/app/views/cms_admin/pages/_form_blocks.html.erb +7 -0
  26. data/app/views/cms_admin/pages/_index_branch.html.erb +27 -0
  27. data/app/views/cms_admin/pages/edit.html.erb +6 -0
  28. data/app/views/cms_admin/pages/form_blocks.js.erb +1 -0
  29. data/app/views/cms_admin/pages/index.html.erb +6 -0
  30. data/app/views/cms_admin/pages/new.html.erb +6 -0
  31. data/app/views/cms_admin/snippets/_form.html.erb +2 -0
  32. data/app/views/cms_admin/snippets/edit.html.erb +6 -0
  33. data/app/views/cms_admin/snippets/index.html.erb +3 -0
  34. data/app/views/cms_admin/snippets/new.html.erb +6 -0
  35. data/app/views/cms_admin/uploads/_index.html.erb +8 -0
  36. data/app/views/cms_admin/uploads/_upload.html.erb +11 -0
  37. data/app/views/cms_admin/uploads/destroy.js.erb +3 -0
  38. data/app/views/cms_admin/uploads/index.html.erb +2 -0
  39. data/app/views/layouts/cms_admin.html.erb +36 -0
  40. data/comfortable_mexican_sofa.gemspec +141 -197
  41. data/config.ru +4 -0
  42. data/config/application.rb +44 -0
  43. data/config/boot.rb +13 -0
  44. data/{test/rails_root/config → config}/database.yml +0 -0
  45. data/config/environment.rb +5 -0
  46. data/config/environments/development.rb +22 -0
  47. data/config/environments/production.rb +49 -0
  48. data/config/environments/test.rb +35 -0
  49. data/{test/rails_root/config → config}/initializers/backtrace_silencers.rb +2 -2
  50. data/{test/rails_root/config → config}/initializers/inflections.rb +1 -1
  51. data/{test/rails_root/config → config}/initializers/mime_types.rb +0 -0
  52. data/config/initializers/paperclip.rb +3 -0
  53. data/config/initializers/secret_token.rb +7 -0
  54. data/config/initializers/session_store.rb +8 -0
  55. data/{test/rails_root/config → config}/locales/en.yml +1 -1
  56. data/config/routes.rb +20 -0
  57. data/db/migrate/01_create_cms.rb +73 -0
  58. data/db/seeds.rb +7 -0
  59. data/doc/README_FOR_APP +95 -0
  60. data/lib/comfortable_mexican_sofa.rb +34 -39
  61. data/lib/comfortable_mexican_sofa/cms_acts_as_tree.rb +42 -49
  62. data/lib/comfortable_mexican_sofa/cms_form_builder.rb +107 -0
  63. data/lib/comfortable_mexican_sofa/cms_rails_extensions.rb +25 -5
  64. data/lib/comfortable_mexican_sofa/cms_tag.rb +90 -85
  65. data/lib/comfortable_mexican_sofa/cms_tag/field_datetime.rb +26 -0
  66. data/lib/comfortable_mexican_sofa/cms_tag/field_integer.rb +26 -0
  67. data/lib/comfortable_mexican_sofa/cms_tag/field_string.rb +26 -0
  68. data/lib/comfortable_mexican_sofa/cms_tag/field_text.rb +26 -0
  69. data/lib/comfortable_mexican_sofa/cms_tag/page_datetime.rb +22 -0
  70. data/lib/comfortable_mexican_sofa/cms_tag/page_integer.rb +22 -0
  71. data/lib/comfortable_mexican_sofa/cms_tag/page_string.rb +22 -0
  72. data/lib/comfortable_mexican_sofa/cms_tag/page_text.rb +22 -0
  73. data/lib/comfortable_mexican_sofa/cms_tag/partial.rb +20 -0
  74. data/lib/comfortable_mexican_sofa/cms_tag/snippet.rb +18 -0
  75. data/{generators/cms/templates → lib/generators}/README +0 -20
  76. data/lib/generators/cms_generator.rb +28 -0
  77. data/public/404.html +26 -0
  78. data/public/422.html +26 -0
  79. data/public/500.html +26 -0
  80. data/{test/rails_root/public → public}/favicon.ico +0 -0
  81. data/public/images/comfortable_mexican_sofa/body_bg.jpg +0 -0
  82. data/{generators/cms/templates/images → public/images/comfortable_mexican_sofa}/icon_regular.gif +0 -0
  83. data/public/javascripts/comfortable_mexican_sofa/cms.js +53 -0
  84. data/public/javascripts/comfortable_mexican_sofa/jquery-ui.js +325 -0
  85. data/public/javascripts/comfortable_mexican_sofa/jquery.js +154 -0
  86. data/public/javascripts/comfortable_mexican_sofa/plupload/plupload.full.min.js +1 -0
  87. data/public/javascripts/comfortable_mexican_sofa/plupload/plupload.html4.min.js +1 -0
  88. data/public/javascripts/comfortable_mexican_sofa/plupload/plupload.html5.min.js +1 -0
  89. data/public/javascripts/comfortable_mexican_sofa/rails.js +132 -0
  90. data/public/javascripts/comfortable_mexican_sofa/uploader.js +47 -0
  91. data/{test/rails_root/public → public}/robots.txt +0 -0
  92. data/public/stylesheets/comfortable_mexican_sofa/jquery-ui.css +305 -0
  93. data/public/stylesheets/comfortable_mexican_sofa/reset.css +1 -0
  94. data/public/stylesheets/comfortable_mexican_sofa/structure.css +194 -0
  95. data/public/stylesheets/comfortable_mexican_sofa/typography.css +20 -0
  96. data/script/rails +6 -0
  97. data/test/fixtures/README.md +22 -0
  98. data/test/fixtures/cms_blocks.yml +10 -34
  99. data/test/fixtures/cms_layouts.yml +37 -33
  100. data/test/fixtures/cms_pages.yml +11 -32
  101. data/test/fixtures/cms_snippets.yml +2 -6
  102. data/test/fixtures/cms_uploads.yml +4 -0
  103. data/test/fixtures/files/invalid_file.gif +9 -0
  104. data/test/fixtures/files/valid_image.jpg +0 -0
  105. data/test/functional/cms_admin/base_controller_test.rb +9 -0
  106. data/test/functional/cms_admin/layouts_controller_test.rb +61 -46
  107. data/test/functional/cms_admin/pages_controller_test.rb +201 -102
  108. data/test/functional/cms_admin/snippets_controller_test.rb +46 -39
  109. data/test/functional/cms_admin/uploads_controller_test.rb +32 -0
  110. data/test/functional/cms_content_controller_test.rb +37 -32
  111. data/test/test_helper.rb +29 -9
  112. data/test/unit/cms_block_test.rb +60 -0
  113. data/test/unit/cms_layout_test.rb +48 -0
  114. data/test/unit/cms_page_test.rb +122 -0
  115. data/test/unit/cms_snippet_test.rb +23 -0
  116. data/test/unit/cms_tag_test.rb +149 -0
  117. data/test/unit/cms_tags/field_datetime_test.rb +36 -0
  118. data/test/unit/cms_tags/field_integer_test.rb +35 -0
  119. data/test/unit/cms_tags/field_string_test.rb +35 -0
  120. data/test/unit/cms_tags/field_text_test.rb +34 -0
  121. data/test/unit/cms_tags/page_datetime_test.rb +36 -0
  122. data/test/unit/cms_tags/page_integer_test.rb +35 -0
  123. data/test/unit/cms_tags/page_string_test.rb +35 -0
  124. data/test/unit/cms_tags/page_text_test.rb +36 -0
  125. data/test/unit/cms_tags/partial_test.rb +30 -0
  126. data/test/unit/cms_tags/snippet_test.rb +34 -0
  127. data/test/unit/cms_upload_test.rb +30 -0
  128. metadata +176 -215
  129. data/CHANGELOG.rdoc +0 -2
  130. data/LICENSE +0 -20
  131. data/README.rdoc +0 -55
  132. data/app/controllers/cms_admin/attachments_controller.rb +0 -55
  133. data/app/controllers/cms_admin/categories_controller.rb +0 -69
  134. data/app/controllers/cms_admin/sections_controller.rb +0 -17
  135. data/app/controllers/cms_common/render_page.rb +0 -47
  136. data/app/helpers/cms_helper.rb +0 -12
  137. data/app/models/cms_attachment.rb +0 -17
  138. data/app/models/cms_attachment_categorization.rb +0 -5
  139. data/app/models/cms_category.rb +0 -36
  140. data/app/models/cms_page_categorization.rb +0 -6
  141. data/app/views/cms_admin/attachments/_details.html.haml +0 -27
  142. data/app/views/cms_admin/attachments/_form.html.haml +0 -24
  143. data/app/views/cms_admin/attachments/edit.html.haml +0 -10
  144. data/app/views/cms_admin/attachments/index.html.haml +0 -36
  145. data/app/views/cms_admin/attachments/new.html.haml +0 -8
  146. data/app/views/cms_admin/categories/_category.html.haml +0 -21
  147. data/app/views/cms_admin/categories/_category_subform.html.haml +0 -12
  148. data/app/views/cms_admin/categories/_form.html.haml +0 -18
  149. data/app/views/cms_admin/categories/_new.html.haml +0 -7
  150. data/app/views/cms_admin/categories/_toggle_link.html.haml +0 -9
  151. data/app/views/cms_admin/categories/_tree_branch.html.haml +0 -36
  152. data/app/views/cms_admin/categories/children.js.rjs +0 -10
  153. data/app/views/cms_admin/categories/create.js.rjs +0 -9
  154. data/app/views/cms_admin/categories/edit.html.haml +0 -10
  155. data/app/views/cms_admin/categories/index.html.haml +0 -7
  156. data/app/views/cms_admin/categories/new.html.haml +0 -8
  157. data/app/views/cms_admin/categories/show.html.haml +0 -17
  158. data/app/views/cms_admin/layouts/_details.html.haml +0 -6
  159. data/app/views/cms_admin/layouts/_form.html.haml +0 -19
  160. data/app/views/cms_admin/layouts/_toggle_link.html.haml +0 -9
  161. data/app/views/cms_admin/layouts/_tree_branch.html.haml +0 -39
  162. data/app/views/cms_admin/layouts/children.js.rjs +0 -10
  163. data/app/views/cms_admin/layouts/edit.html.haml +0 -10
  164. data/app/views/cms_admin/layouts/index.html.haml +0 -7
  165. data/app/views/cms_admin/layouts/new.html.haml +0 -8
  166. data/app/views/cms_admin/pages/_details.html.haml +0 -25
  167. data/app/views/cms_admin/pages/_form.html.haml +0 -45
  168. data/app/views/cms_admin/pages/_form_blocks.html.haml +0 -48
  169. data/app/views/cms_admin/pages/_toggle_link.html.haml +0 -10
  170. data/app/views/cms_admin/pages/_tree_branch.html.haml +0 -41
  171. data/app/views/cms_admin/pages/children.js.rjs +0 -10
  172. data/app/views/cms_admin/pages/edit.html.haml +0 -11
  173. data/app/views/cms_admin/pages/form_blocks.js.rjs +0 -1
  174. data/app/views/cms_admin/pages/index.html.haml +0 -6
  175. data/app/views/cms_admin/pages/new.html.haml +0 -9
  176. data/app/views/cms_admin/sections/show.html.haml +0 -23
  177. data/app/views/cms_admin/snippets/_form.html.haml +0 -10
  178. data/app/views/cms_admin/snippets/edit.html.haml +0 -10
  179. data/app/views/cms_admin/snippets/index.html.haml +0 -26
  180. data/app/views/cms_admin/snippets/new.html.haml +0 -8
  181. data/app/views/cms_content/show.xml.rxml +0 -27
  182. data/app/views/cms_content/sitemap.xml.rxml +0 -16
  183. data/app/views/layouts/cms_admin.html.haml +0 -44
  184. data/config/cms_routes.rb +0 -25
  185. data/generators/cms/cms_generator.rb +0 -55
  186. data/generators/cms/templates/images/arrow_bottom.gif +0 -0
  187. data/generators/cms/templates/images/arrow_right.gif +0 -0
  188. data/generators/cms/templates/images/icon_attachment.gif +0 -0
  189. data/generators/cms/templates/images/icon_category.gif +0 -0
  190. data/generators/cms/templates/images/icon_draft.gif +0 -0
  191. data/generators/cms/templates/images/icon_layout.gif +0 -0
  192. data/generators/cms/templates/images/icon_move.gif +0 -0
  193. data/generators/cms/templates/images/icon_snippet.gif +0 -0
  194. data/generators/cms/templates/images/logo.png +0 -0
  195. data/generators/cms/templates/initializers/cms.rb +0 -14
  196. data/generators/cms/templates/initializers/paperclip.rb +0 -14
  197. data/generators/cms/templates/javascripts/codemirror_init.js +0 -16
  198. data/generators/cms/templates/javascripts/mce_init.js +0 -17
  199. data/generators/cms/templates/javascripts/utilities.js +0 -27
  200. data/generators/cms/templates/migrations/create_cms.rb +0 -113
  201. data/generators/cms/templates/stylesheets/cms_master.sass +0 -414
  202. data/init.rb +0 -1
  203. data/lib/comfortable_mexican_sofa/acts_as_categorized.rb +0 -87
  204. data/lib/comfortable_mexican_sofa/acts_as_published.rb +0 -60
  205. data/lib/comfortable_mexican_sofa/cms_tags/attachment.rb +0 -3
  206. data/lib/comfortable_mexican_sofa/cms_tags/block.rb +0 -117
  207. data/lib/comfortable_mexican_sofa/cms_tags/helper.rb +0 -3
  208. data/lib/comfortable_mexican_sofa/cms_tags/page_block.rb +0 -119
  209. data/lib/comfortable_mexican_sofa/cms_tags/partial.rb +0 -19
  210. data/lib/comfortable_mexican_sofa/cms_tags/snippet.rb +0 -19
  211. data/rails/init.rb +0 -1
  212. data/test/fixtures/cms_attachment_categorizations.yml +0 -7
  213. data/test/fixtures/cms_attachments.yml +0 -6
  214. data/test/fixtures/cms_categories.yml +0 -19
  215. data/test/fixtures/cms_page_categorizations.yml +0 -15
  216. data/test/fixtures/files/upload_file.txt +0 -1
  217. data/test/functional/cms_admin/attachments_controller_test.rb +0 -63
  218. data/test/functional/cms_admin/categories_controller_test.rb +0 -86
  219. data/test/functional/cms_admin/sections_controller_test.rb +0 -9
  220. data/test/models/cms_attachment_test.rb +0 -16
  221. data/test/models/cms_block_test.rb +0 -11
  222. data/test/models/cms_categorization_test.rb +0 -39
  223. data/test/models/cms_category_test.rb +0 -71
  224. data/test/models/cms_layout_test.rb +0 -44
  225. data/test/models/cms_page_test.rb +0 -55
  226. data/test/models/cms_snippet_test.rb +0 -16
  227. data/test/models/cms_tag_test.rb +0 -70
  228. data/test/rails_root/README +0 -243
  229. data/test/rails_root/Rakefile +0 -10
  230. data/test/rails_root/app/controllers/application_controller.rb +0 -10
  231. data/test/rails_root/app/helpers/application_helper.rb +0 -3
  232. data/test/rails_root/app/views/cms/under-development.html.haml +0 -1
  233. data/test/rails_root/app/views/complex_page/_example.html.erb +0 -1
  234. data/test/rails_root/config/boot.rb +0 -110
  235. data/test/rails_root/config/environment.rb +0 -48
  236. data/test/rails_root/config/environments/development.rb +0 -17
  237. data/test/rails_root/config/environments/production.rb +0 -28
  238. data/test/rails_root/config/environments/test.rb +0 -28
  239. data/test/rails_root/config/initializers/new_rails_defaults.rb +0 -19
  240. data/test/rails_root/config/initializers/session_store.rb +0 -15
  241. data/test/rails_root/config/routes.rb +0 -43
  242. data/test/rails_root/doc/README_FOR_APP +0 -2
  243. data/test/rails_root/public/404.html +0 -30
  244. data/test/rails_root/public/422.html +0 -30
  245. data/test/rails_root/public/500.html +0 -30
  246. data/test/rails_root/public/images/rails.png +0 -0
  247. data/test/rails_root/public/index.html +0 -275
  248. data/test/rails_root/public/javascripts/application.js +0 -2
  249. data/test/rails_root/public/javascripts/controls.js +0 -963
  250. data/test/rails_root/public/javascripts/dragdrop.js +0 -973
  251. data/test/rails_root/public/javascripts/effects.js +0 -1128
  252. data/test/rails_root/public/javascripts/prototype.js +0 -4320
  253. data/test/rails_root/public/stylesheets/sass/cms_master.sass +0 -414
  254. data/test/rails_root/script/about +0 -4
  255. data/test/rails_root/script/console +0 -3
  256. data/test/rails_root/script/dbconsole +0 -3
  257. data/test/rails_root/script/destroy +0 -3
  258. data/test/rails_root/script/generate +0 -3
  259. data/test/rails_root/script/performance/benchmarker +0 -3
  260. data/test/rails_root/script/performance/profiler +0 -3
  261. data/test/rails_root/script/plugin +0 -3
  262. data/test/rails_root/script/runner +0 -3
  263. data/test/rails_root/script/server +0 -3
@@ -0,0 +1,9 @@
1
+ STDOUT.sync = true
2
+
3
+ c = 0
4
+ loop do
5
+ # print "\r%s" % %w[ / - \\ | ][(c +=1) % 4]
6
+ # print "\r%s" % ['o.o', 'o.O', 'O.O', 'O.o'][(c +=1) % 4]
7
+
8
+ select(nil, nil, nil, 0.2)
9
+ end
Binary file
@@ -0,0 +1,9 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper'
2
+
3
+ class CmsAdmin::BaseControllerTest < ActionController::TestCase
4
+
5
+ def test_something
6
+ flunk
7
+ end
8
+
9
+ end
@@ -1,77 +1,92 @@
1
- require 'test_helper'
1
+ require File.dirname(__FILE__) + '/../../test_helper'
2
2
 
3
3
  class CmsAdmin::LayoutsControllerTest < ActionController::TestCase
4
4
 
5
- def setup
6
- http_auth
7
- end
8
-
9
5
  def test_get_index
10
6
  get :index
11
7
  assert_response :success
12
- assert assigns(:layouts)
8
+ assert assigns(:cms_layouts)
9
+ assert_template :index
13
10
  end
14
11
 
15
12
  def test_get_new
16
13
  get :new
17
14
  assert_response :success
15
+ assert assigns(:cms_layout)
16
+ assert_template :new
17
+ assert_select 'form[action=/cms-admin/layouts]'
18
18
  end
19
19
 
20
20
  def test_get_edit
21
- get :edit, :id => cms_layouts(:default)
21
+ layout = cms_layouts(:default)
22
+ get :edit, :id => layout
22
23
  assert_response :success
23
- assert assigns(:layout)
24
+ assert assigns(:cms_layout)
25
+ assert_template :edit
26
+ assert_select "form[action=/cms-admin/layouts/#{layout.id}]"
27
+ end
28
+
29
+ def test_get_edit_failure
30
+ get :edit, :id => 'not_found'
31
+ assert_response :redirect
32
+ assert_redirected_to :action => :index
33
+ assert_equal 'Layout not found', flash[:error]
24
34
  end
25
35
 
26
- def test_create
36
+ def test_creation
27
37
  assert_difference 'CmsLayout.count' do
28
- post :create, :layout => {
29
- :label => 'Test Layout',
30
- :parent_id => '',
31
- :app_layout => '',
32
- :content => 'Test content {{ cms_block:test_block:text }}'
38
+ post :create, :cms_layout => {
39
+ :label => 'Test Layout',
40
+ :content => 'Test Content'
33
41
  }
34
42
  assert_response :redirect
35
- assert_redirected_to :action => :edit
43
+ assert_redirected_to :action => :edit, :id => CmsLayout.last
36
44
  assert_equal 'Layout created', flash[:notice]
37
45
  end
38
46
  end
39
47
 
48
+ def test_creation_failure
49
+ assert_no_difference 'CmsLayout.count' do
50
+ post :create, :cms_layout => { }
51
+ assert_response :success
52
+ assert_template :new
53
+ assert_equal 'Failed to create layout', flash[:error]
54
+ end
55
+ end
56
+
40
57
  def test_update
41
58
  layout = cms_layouts(:default)
42
-
43
- assert_difference 'CmsBlock.count', layout.cms_pages.count do
44
- put :update, :id => layout, :layout => {
45
- :label => 'New Test Label',
46
- :content => '{{ cms_block:completely_new_block:string }}'
47
- }
48
- assert_response :redirect
49
- assert_redirected_to :action => :edit
50
- assert_equal 'Layout updated', flash[:notice]
51
-
52
- layout.reload
53
- assert_equal 'New Test Label', layout.label
54
- assert_equal '{{ cms_block:completely_new_block:string }}', layout.content
55
- end
59
+ put :update, :id => layout, :cms_layout => {
60
+ :label => 'New Label',
61
+ :content => 'New Content'
62
+ }
63
+ assert_response :redirect
64
+ assert_redirected_to :action => :edit, :id => layout
65
+ assert_equal 'Layout updated', flash[:notice]
66
+ layout.reload
67
+ assert_equal 'New Label', layout.label
68
+ assert_equal 'New Content', layout.content
56
69
  end
57
70
 
58
- def test_destroy
71
+ def test_update_failure
59
72
  layout = cms_layouts(:default)
60
- assert !(layout_pages = layout.cms_pages).blank?
61
-
62
- assert_equal 1, layout.descendants.size
63
-
64
- assert_difference 'CmsLayout.count', -2 do
65
- assert_no_difference ['CmsPage.count', 'CmsBlock.count'] do
66
- delete :destroy, :id => layout
67
- assert_response :redirect
68
- assert_redirected_to :action => :index
69
- assert_equal 'Layout removed', flash[:notice]
70
-
71
- layout_pages.each do |page|
72
- assert !page.cms_layout
73
- end
74
- end
73
+ put :update, :id => layout, :cms_layout => {
74
+ :label => ''
75
+ }
76
+ assert_response :success
77
+ assert_template :edit
78
+ layout.reload
79
+ assert_not_equal '', layout.label
80
+ assert_equal 'Failed to update layout', flash[:error]
81
+ end
82
+
83
+ def test_destroy
84
+ assert_difference 'CmsLayout.count', -1 do
85
+ delete :destroy, :id => cms_layouts(:default)
86
+ assert_response :redirect
87
+ assert_redirected_to :action => :index
88
+ assert_equal 'Layout deleted', flash[:notice]
75
89
  end
76
90
  end
77
- end
91
+
92
+ end
@@ -1,153 +1,252 @@
1
- require 'test_helper'
1
+ require File.dirname(__FILE__) + '/../../test_helper'
2
2
 
3
3
  class CmsAdmin::PagesControllerTest < ActionController::TestCase
4
4
 
5
- def setup
6
- http_auth
7
- end
8
-
9
5
  def test_get_index
10
6
  get :index
11
7
  assert_response :success
12
8
  assert assigns(:cms_pages)
9
+ assert_template :index
13
10
  end
14
11
 
15
12
  def test_get_new
16
13
  get :new
17
14
  assert_response :success
15
+ assert assigns(:cms_page)
16
+ assert_equal cms_layouts(:default), assigns(:cms_page).cms_layout
17
+
18
+ assert_template :new
19
+ assert_select 'form[action=/cms-admin/pages]'
20
+ end
21
+
22
+ def test_get_new_with_field_datetime
23
+ cms_layouts(:default).update_attribute(:content, '<cms:field:test_label:datetime>')
24
+ get :new
25
+ assert_select "input[type='datetime'][name='cms_page[cms_blocks_attributes][][content]']"
26
+ assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][label]'][value='test_label']"
27
+ assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][type]'][value='CmsTag::FieldDateTime']"
28
+ end
29
+
30
+ def test_get_new_with_field_integer
31
+ cms_layouts(:default).update_attribute(:content, '<cms:field:test_label:integer>')
32
+ get :new
33
+ assert_select "input[type='number'][name='cms_page[cms_blocks_attributes][][content]']"
34
+ assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][label]'][value='test_label']"
35
+ assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][type]'][value='CmsTag::FieldInteger']"
36
+ end
37
+
38
+ def test_get_new_with_field_string
39
+ cms_layouts(:default).update_attribute(:content, '<cms:field:test_label>')
40
+ get :new
41
+ assert_select "input[type='text'][name='cms_page[cms_blocks_attributes][][content]']"
42
+ assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][label]'][value='test_label']"
43
+ assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][type]'][value='CmsTag::FieldString']"
44
+ end
45
+
46
+ def test_get_new_with_field_text
47
+ cms_layouts(:default).update_attribute(:content, '<cms:field:test_label:text>')
48
+ get :new
49
+ assert_select "textarea[name='cms_page[cms_blocks_attributes][][content]']"
50
+ assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][label]'][value='test_label']"
51
+ assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][type]'][value='CmsTag::FieldText']"
52
+ end
53
+
54
+ def test_get_new_with_page_datetime
55
+ cms_layouts(:default).update_attribute(:content, '<cms:page:test_label:datetime>')
56
+ get :new
57
+ assert_select "input[type='datetime'][name='cms_page[cms_blocks_attributes][][content]']"
58
+ assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][label]'][value='test_label']"
59
+ assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][type]'][value='CmsTag::PageDateTime']"
60
+ end
61
+
62
+ def test_get_new_with_page_integer
63
+ cms_layouts(:default).update_attribute(:content, '<cms:page:test_label:integer>')
64
+ get :new
65
+ assert_select "input[type='number'][name='cms_page[cms_blocks_attributes][][content]']"
66
+ assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][label]'][value='test_label']"
67
+ assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][type]'][value='CmsTag::PageInteger']"
68
+ end
69
+
70
+ def test_get_new_with_page_string
71
+ cms_layouts(:default).update_attribute(:content, '<cms:page:test_label:string>')
72
+ get :new
73
+ assert_select "input[type='text'][name='cms_page[cms_blocks_attributes][][content]']"
74
+ assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][label]'][value='test_label']"
75
+ assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][type]'][value='CmsTag::PageString']"
76
+ end
77
+
78
+ def test_get_new_with_page_text
79
+ cms_layouts(:default).update_attribute(:content, '<cms:page:test_label>')
80
+ get :new
81
+ assert_select "textarea[name='cms_page[cms_blocks_attributes][][content]']"
82
+ assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][label]'][value='test_label']"
83
+ assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][type]'][value='CmsTag::PageText']"
84
+ end
85
+
86
+ def test_get_new_as_child_page
87
+ get :new, :parent_id => cms_pages(:default)
88
+ assert_response :success
89
+ assert assigns(:cms_page)
90
+ assert_equal cms_pages(:default), assigns(:cms_page).parent
91
+ assert_template :new
18
92
  end
19
93
 
20
94
  def test_get_edit
21
- get :edit, :id => cms_pages(:default)
95
+ page = cms_pages(:default)
96
+ get :edit, :id => page
22
97
  assert_response :success
23
98
  assert assigns(:cms_page)
99
+ assert_template :edit
100
+ assert_select "form[action=/cms-admin/pages/#{page.id}]"
24
101
  end
25
102
 
26
- def test_create
103
+ def test_get_edit_failure
104
+ get :edit, :id => 'not_found'
105
+ assert_response :redirect
106
+ assert_redirected_to :action => :index
107
+ assert_equal 'Page not found', flash[:error]
108
+ end
109
+
110
+ def test_get_edit_with_blank_layout
111
+ page = cms_pages(:default)
112
+ page.update_attribute(:cms_layout_id, nil)
113
+ get :edit, :id => page
114
+ assert_response :success
115
+ assert assigns(:cms_page)
116
+ assert_equal cms_layouts(:default), assigns(:cms_page).cms_layout
117
+ end
118
+
119
+ def test_creation
27
120
  assert_difference 'CmsPage.count' do
28
121
  assert_difference 'CmsBlock.count', 3 do
29
122
  post :create, :cms_page => {
30
- :label => 'Test Page',
31
- :slug => 'test_page',
32
- :cms_layout => cms_layouts(:default),
33
- :blocks => {
34
- :header => { :content_string => 'Test Header' },
35
- :default => { :content_text => 'Test Content' },
36
- :footer => { :content_text => 'Test Footer' }
37
- }
123
+ :label => 'Test Page',
124
+ :slug => 'test-page',
125
+ :parent_id => cms_pages(:default).id,
126
+ :cms_layout_id => cms_layouts(:default).id,
127
+ :cms_blocks_attributes => [
128
+ { :label => 'content',
129
+ :type => 'CmsTag::PageText',
130
+ :content => 'content content' },
131
+ { :label => 'title',
132
+ :type => 'CmsTag::PageString',
133
+ :content => 'title content' },
134
+ { :label => 'number',
135
+ :type => 'CmsTag::PageInteger',
136
+ :content => '999' }
137
+ ]
38
138
  }
39
139
  assert_response :redirect
40
- assert_redirected_to :action => :edit
41
- assert_equal 'Page created', flash[:notice]
42
-
43
- assert page = CmsPage.find_by_slug('test_page')
44
- assert_equal 'Test Header', page.cms_block_content(:header, :content_string)
45
- assert_equal 'Test Content', page.cms_block_content(:default, :content_text)
46
- assert_equal 'Test Footer', page.cms_block_content(:footer, :content_text)
140
+ assert_redirected_to :action => :edit, :id => CmsPage.last
141
+ assert_equal 'Page saved', flash[:notice]
47
142
  end
48
143
  end
49
144
  end
50
145
 
51
- def test_update
52
- page = cms_pages(:complex)
53
-
54
- assert_difference 'CmsBlock.count' do
55
- put :update, :id => page, :cms_page => {
56
- :label => 'New Test Page',
57
- :slug => 'new_test_page',
58
- :cms_layout => cms_layouts(:default),
59
- :blocks => {
60
- :header => { :content_string => 'New Test Header' },
61
- :default => { :content_text => 'New Test Content' },
62
- :footer => { :content_text => 'New Test Footer' }
63
- }
146
+ def test_creation_failure
147
+ assert_no_difference ['CmsPage.count', 'CmsBlock.count'] do
148
+ post :create, :cms_page => {
149
+ :cms_layout_id => cms_layouts(:default).id,
150
+ :cms_blocks_attributes => [
151
+ { :label => 'content',
152
+ :type => 'CmsTag::PageText',
153
+ :content => 'content content' },
154
+ { :label => 'title',
155
+ :type => 'CmsTag::PageString',
156
+ :content => 'title content' },
157
+ { :label => 'number',
158
+ :type => 'CmsTag::PageInteger',
159
+ :content => '999' }
160
+ ]
64
161
  }
65
- assert_response :redirect
66
- assert_redirected_to :action => :edit
67
- assert_equal 'Page updated', flash[:notice]
68
-
69
- assert page = CmsPage.find_by_slug('new_test_page')
70
- assert_equal 'New Test Header', page.cms_block_content(:header, :content_string)
71
- assert_equal 'New Test Content', page.cms_block_content(:default, :content_text)
72
- assert_equal 'New Test Footer', page.cms_block_content(:footer, :content_text)
73
-
74
- # old blocks are still there:
75
- assert !page.cms_block_content(:left_column, :content_text).blank?
76
- assert !page.cms_block_content(:right_column, :content_text).blank?
77
- end
78
- end
79
-
80
- def test_destroy
81
- page = cms_pages(:default)
82
-
83
- assert_difference 'CmsPage.count', -4 do
84
- assert_difference 'CmsBlock.count', -7 do
85
- delete :destroy, :id => page
86
- assert_response :redirect
87
- assert_redirected_to :action => :index
88
- assert_equal 'Page removed', flash[:notice]
89
- end
162
+ assert_response :success
163
+ page = assigns(:cms_page)
164
+ assert_equal 3, page.cms_blocks.size
165
+ assert_equal ['content content', 'title content', 999], page.cms_blocks.collect{|b| b.content}
166
+ assert_template :new
167
+ assert_equal 'Failed to create page', flash[:error]
90
168
  end
91
169
  end
92
170
 
93
- def test_adding_categorizations
171
+ def test_update
94
172
  page = cms_pages(:default)
95
-
96
- assert_difference 'CmsPageCategorization.count' do
173
+ assert_no_difference 'CmsBlock.count' do
97
174
  put :update, :id => page, :cms_page => {
98
- :attr_category_ids => {
99
- cms_categories(:category_1).id => 1
100
- }
175
+ :label => 'Updated Label'
101
176
  }
177
+ page.reload
178
+ assert_response :redirect
179
+ assert_redirected_to :action => :edit, :id => page
180
+ assert_equal 'Page updated', flash[:notice]
181
+ assert_equal 'Updated Label', page.label
102
182
  end
103
183
  end
104
184
 
105
- def test_removing_categorizations
185
+ def test_update_with_layout_change
106
186
  page = cms_pages(:default)
107
-
108
- assert_difference 'CmsPageCategorization.count', -3 do
187
+ assert_difference 'CmsBlock.count', 1 do
109
188
  put :update, :id => page, :cms_page => {
110
- :attr_category_ids => {
111
- cms_categories(:category_2).id => 0
112
- }
189
+ :label => 'Updated Label',
190
+ :cms_layout_id => cms_layouts(:nested).id,
191
+ :cms_blocks_attributes => [
192
+ { :label => 'content',
193
+ :type => 'CmsTag::PageText',
194
+ :content => 'new_page_text_content',
195
+ :id => cms_blocks(:default_page_text).id },
196
+ { :label => 'header',
197
+ :type => 'CmsTag::PageString',
198
+ :content => 'new_page_string_content' }
199
+ ]
113
200
  }
201
+ page.reload
202
+ assert_response :redirect
203
+ assert_redirected_to :action => :edit, :id => page
204
+ assert_equal 'Page updated', flash[:notice]
205
+ assert_equal 'Updated Label', page.label
206
+ assert_equal ['default_field_text_content', 'new_page_string_content', 'new_page_text_content'], page.cms_blocks.collect{|b| b.content}
114
207
  end
115
208
  end
116
209
 
117
- def test_preview_for_create
118
- assert_no_difference 'CmsPage.count' do
119
- assert_no_difference 'CmsBlock.count' do
120
- post :create, :preview => 'Preview Button', :cms_page => {
121
- :label => 'Test Page',
122
- :slug => 'test_page',
123
- :cms_layout => cms_layouts(:default),
124
- :blocks => {
125
- :header => { :content_string => 'Test Header' },
126
- :default => { :content_text => 'Test Content' },
127
- :footer => { :content_text => 'Test Footer' }
128
- }
129
- }
130
- assert_response :success
210
+ def test_update_failure
211
+ put :update, :id => cms_pages(:default), :cms_page => {
212
+ :label => ''
213
+ }
214
+ assert_response :success
215
+ assert_template :edit
216
+ assert assigns(:cms_page)
217
+ assert_equal 'Failed to update page', flash[:error]
218
+ end
219
+
220
+ def test_destroy
221
+ assert_difference 'CmsPage.count', -2 do
222
+ assert_difference 'CmsBlock.count', -2 do
223
+ delete :destroy, :id => cms_pages(:default)
224
+ assert_response :redirect
225
+ assert_redirected_to :action => :index
226
+ assert_equal 'Page deleted', flash[:notice]
131
227
  end
132
228
  end
133
229
  end
134
230
 
135
- def test_preview_for_update
136
- page = cms_pages(:complex)
231
+ def test_get_form_blocks
232
+ xhr :get, :form_blocks, :id => cms_pages(:default), :layout_id => cms_layouts(:nested).id
233
+ assert_response :success
234
+ assert assigns(:cms_page)
235
+ assert_equal 2, assigns(:cms_page).cms_tags.size
236
+ assert_template :form_blocks
137
237
 
138
- assert_no_difference 'CmsBlock.count' do
139
- put :update, :preview => 'Preview Button', :id => page, :cms_page => {
140
- :label => 'New Test Page',
141
- :slug => 'new_test_page',
142
- :cms_layout => cms_layouts(:default),
143
- :blocks => {
144
- :header => { :content_string => 'New Test Header' },
145
- :default => { :content_text => 'New Test Content' },
146
- :footer => { :content_text => 'New Test Footer' }
147
- }
148
- }
149
- assert_response :success
150
- end
238
+ xhr :get, :form_blocks, :id => cms_pages(:default), :layout_id => cms_layouts(:default).id
239
+ assert_response :success
240
+ assert assigns(:cms_page)
241
+ assert_equal 4, assigns(:cms_page).cms_tags.size
242
+ assert_template :form_blocks
151
243
  end
152
244
 
153
- end
245
+ def test_get_form_blocks_for_new_page
246
+ xhr :get, :form_blocks, :id => 0, :layout_id => cms_layouts(:default).id
247
+ assert_response :success
248
+ assert assigns(:cms_page)
249
+ assert_equal 3, assigns(:cms_page).cms_tags.size
250
+ assert_template :form_blocks
251
+ end
252
+ end