browsercms 3.1.4 → 3.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (164) hide show
  1. data/app/controllers/cms/content_block_controller.rb +2 -2
  2. data/app/controllers/cms/section_nodes_controller.rb +6 -1
  3. data/app/controllers/cms/sections_controller.rb +1 -1
  4. data/app/helpers/cms/application_helper.rb +1 -1
  5. data/app/helpers/cms/content_block_helper.rb +27 -0
  6. data/app/helpers/cms/section_nodes_helper.rb +43 -5
  7. data/app/models/abstract_file_block.rb +16 -1
  8. data/app/models/attachment.rb +17 -35
  9. data/app/models/file_block.rb +0 -12
  10. data/app/models/image_block.rb +0 -12
  11. data/app/models/link.rb +4 -21
  12. data/app/models/page.rb +31 -34
  13. data/app/models/section.rb +82 -44
  14. data/app/models/section_node.rb +39 -24
  15. data/app/models/user.rb +5 -0
  16. data/app/views/cms/blocks/index.html.erb +4 -4
  17. data/app/views/cms/file_blocks/_form.html.erb +1 -1
  18. data/app/views/cms/image_blocks/_form.html.erb +1 -1
  19. data/app/views/cms/section_nodes/_link.html.erb +6 -3
  20. data/app/views/cms/section_nodes/_node.html.erb +11 -1
  21. data/app/views/cms/section_nodes/_page.html.erb +13 -7
  22. data/app/views/cms/section_nodes/_section.html.erb +24 -8
  23. data/app/views/cms/section_nodes/index.html.erb +28 -16
  24. data/app/views/layouts/templates/default.html.erb +17 -0
  25. data/browsercms.gemspec +28 -1413
  26. data/db/migrate/20120117144039_browsercms315.rb +94 -0
  27. data/db/migrate/{20081114172307_load_seed_data.rb → 20121114172307_load_seeds.rb} +8 -1
  28. data/lib/acts_as_list.rb +1 -1
  29. data/lib/browsercms.rb +2 -0
  30. data/lib/cms/addressable.rb +83 -0
  31. data/lib/cms/behaviors/attaching.rb +44 -24
  32. data/lib/cms/behaviors/connecting.rb +2 -1
  33. data/lib/cms/behaviors/publishing.rb +12 -3
  34. data/lib/cms/behaviors/versioning.rb +83 -53
  35. data/lib/cms/content_rendering_support.rb +3 -3
  36. data/lib/cms/error_pages.rb +8 -0
  37. data/lib/cms/init.rb +5 -3
  38. data/lib/cms/version.rb +1 -1
  39. data/templates/blank.rb +2 -0
  40. data/templates/demo.rb +2 -0
  41. data/templates/module.rb +2 -0
  42. data/test/custom_assertions.rb +7 -1
  43. data/test/factories.rb +3 -1
  44. data/test/factories/sitemap_factories.rb +28 -0
  45. data/test/fixtures/connectors.yml +97 -0
  46. data/test/fixtures/content_type_groups.yml +13 -0
  47. data/test/fixtures/content_types.yml +50 -0
  48. data/test/fixtures/dynamic_view_versions.yml +26 -0
  49. data/test/fixtures/dynamic_views.yml +26 -0
  50. data/test/fixtures/group_permissions.yml +16 -0
  51. data/test/fixtures/group_sections.yml +31 -0
  52. data/test/fixtures/group_type_permissions.yml +11 -0
  53. data/test/fixtures/group_types.yml +25 -0
  54. data/test/fixtures/groups.yml +25 -0
  55. data/test/fixtures/html_block_versions.yml +67 -0
  56. data/test/fixtures/html_blocks.yml +63 -0
  57. data/test/fixtures/page_versions.yml +265 -0
  58. data/test/fixtures/pages.yml +85 -0
  59. data/test/fixtures/permissions.yml +28 -0
  60. data/test/fixtures/section_nodes.yml +46 -0
  61. data/test/fixtures/sections.yml +19 -0
  62. data/test/fixtures/sites.yml +9 -0
  63. data/test/fixtures/user_group_memberships.yml +11 -0
  64. data/test/fixtures/users.yml +15 -0
  65. data/test/functional/cms/content_controller_test.rb +6 -1
  66. data/test/functional/cms/file_blocks_controller_test.rb +1 -0
  67. data/test/functional/cms/html_blocks_controller_test.rb +1 -0
  68. data/test/functional/cms/image_blocks_controller_test.rb +39 -32
  69. data/test/functional/cms/section_nodes_controller_test.rb +48 -20
  70. data/test/functional/cms/sections_controller_test.rb +3 -1
  71. data/test/functional/tests/pretend_controller_test.rb +6 -3
  72. data/test/integration/cms/ckeditor_test.rb +5 -2
  73. data/test/integration/sitemap_performance_test.rb +26 -0
  74. data/test/selenium-core/Blank.html +7 -0
  75. data/test/selenium-core/InjectedRemoteRunner.html +8 -0
  76. data/test/selenium-core/RemoteRunner.html +110 -0
  77. data/test/selenium-core/SeleniumLog.html +109 -0
  78. data/test/selenium-core/TestPrompt.html +145 -0
  79. data/test/selenium-core/TestRunner-splash.html +55 -0
  80. data/test/selenium-core/TestRunner.hta +176 -0
  81. data/test/selenium-core/TestRunner.html +176 -0
  82. data/test/selenium-core/domviewer/butmin.gif +0 -0
  83. data/test/selenium-core/domviewer/butplus.gif +0 -0
  84. data/test/selenium-core/domviewer/domviewer.css +298 -0
  85. data/test/selenium-core/domviewer/domviewer.html +16 -0
  86. data/test/selenium-core/domviewer/selenium-domviewer.js +205 -0
  87. data/test/selenium-core/icons/all.png +0 -0
  88. data/test/selenium-core/icons/continue.png +0 -0
  89. data/test/selenium-core/icons/continue_disabled.png +0 -0
  90. data/test/selenium-core/icons/pause.png +0 -0
  91. data/test/selenium-core/icons/pause_disabled.png +0 -0
  92. data/test/selenium-core/icons/selected.png +0 -0
  93. data/test/selenium-core/icons/step.png +0 -0
  94. data/test/selenium-core/icons/step_disabled.png +0 -0
  95. data/test/selenium-core/iedoc-core.xml +1515 -0
  96. data/test/selenium-core/iedoc.xml +1469 -0
  97. data/test/selenium-core/lib/cssQuery/cssQuery-p.js +6 -0
  98. data/test/selenium-core/lib/cssQuery/src/cssQuery-level2.js +142 -0
  99. data/test/selenium-core/lib/cssQuery/src/cssQuery-level3.js +150 -0
  100. data/test/selenium-core/lib/cssQuery/src/cssQuery-standard.js +53 -0
  101. data/test/selenium-core/lib/cssQuery/src/cssQuery.js +356 -0
  102. data/test/selenium-core/lib/prototype.js +2006 -0
  103. data/test/selenium-core/lib/scriptaculous/builder.js +101 -0
  104. data/test/selenium-core/lib/scriptaculous/controls.js +815 -0
  105. data/test/selenium-core/lib/scriptaculous/dragdrop.js +915 -0
  106. data/test/selenium-core/lib/scriptaculous/effects.js +958 -0
  107. data/test/selenium-core/lib/scriptaculous/scriptaculous.js +47 -0
  108. data/test/selenium-core/lib/scriptaculous/slider.js +283 -0
  109. data/test/selenium-core/lib/scriptaculous/unittest.js +383 -0
  110. data/test/selenium-core/scripts/find_matching_child.js +69 -0
  111. data/test/selenium-core/scripts/htmlutils.js +894 -0
  112. data/test/selenium-core/scripts/injection.html +72 -0
  113. data/test/selenium-core/scripts/js2html.js +70 -0
  114. data/test/selenium-core/scripts/narcissus-defs.js +175 -0
  115. data/test/selenium-core/scripts/narcissus-exec.js +1054 -0
  116. data/test/selenium-core/scripts/narcissus-parse.js +1003 -0
  117. data/test/selenium-core/scripts/se2html.js +63 -0
  118. data/test/selenium-core/scripts/selenium-api.js +2409 -0
  119. data/test/selenium-core/scripts/selenium-browserbot.js +2203 -0
  120. data/test/selenium-core/scripts/selenium-browserdetect.js +150 -0
  121. data/test/selenium-core/scripts/selenium-commandhandlers.js +377 -0
  122. data/test/selenium-core/scripts/selenium-executionloop.js +175 -0
  123. data/test/selenium-core/scripts/selenium-logging.js +147 -0
  124. data/test/selenium-core/scripts/selenium-remoterunner.js +571 -0
  125. data/test/selenium-core/scripts/selenium-testrunner.js +1333 -0
  126. data/test/selenium-core/scripts/selenium-version.js +5 -0
  127. data/test/selenium-core/scripts/user-extensions.js +3 -0
  128. data/test/selenium-core/scripts/user-extensions.js.sample +75 -0
  129. data/test/selenium-core/scripts/xmlextras.js +153 -0
  130. data/test/selenium-core/selenium-logo.png +0 -0
  131. data/test/selenium-core/selenium-test.css +43 -0
  132. data/test/selenium-core/selenium.css +299 -0
  133. data/test/selenium-core/xpath/dom.js +428 -0
  134. data/test/selenium-core/xpath/misc.js +252 -0
  135. data/test/selenium-core/xpath/xpath.js +2223 -0
  136. data/test/selenium/_login_as_cmsadmin.rsel +4 -0
  137. data/test/selenium/dashboard.rsel +5 -0
  138. data/test/selenium/html_blocks.rsel +4 -0
  139. data/test/selenium/login/failed_login.rsel +8 -0
  140. data/test/selenium/login/successful_login.rsel +9 -0
  141. data/test/selenium/page_templates.rsel +12 -0
  142. data/test/selenium/pages/edit_properties.rsel +5 -0
  143. data/test/selenium/site/view_home_page.rsel +4 -0
  144. data/test/selenium/sitemap/move_page.rsel +9 -0
  145. data/test/selenium/sitemap/open_section.rsel +6 -0
  146. data/test/selenium/sitemap/select_page.rsel +12 -0
  147. data/test/selenium/sitemap/select_section.rsel +17 -0
  148. data/test/test_helper.rb +30 -12
  149. data/test/unit/behaviors/attaching_test.rb +4 -6
  150. data/test/unit/behaviors/connectable_test.rb +29 -0
  151. data/test/unit/behaviors/publishable_test.rb +40 -9
  152. data/test/unit/behaviors/versioning_test.rb +36 -0
  153. data/test/unit/helpers/menu_helper_test.rb +5 -2
  154. data/test/unit/helpers/page_helper_test.rb +2 -0
  155. data/test/unit/lib/cms/sitemap_test.rb +206 -0
  156. data/test/unit/models/attachment_test.rb +51 -31
  157. data/test/unit/models/file_block_test.rb +74 -55
  158. data/test/unit/models/link_test.rb +44 -0
  159. data/test/unit/models/page_test.rb +290 -224
  160. data/test/unit/models/sections_test.rb +144 -44
  161. data/test/unit/models/user_test.rb +28 -18
  162. metadata +581 -350
  163. data/app/views/cms/section_nodes/_section_node.html.erb +0 -10
  164. data/test/unit/models/section_node_test.rb +0 -92
@@ -0,0 +1,4 @@
1
+ open '/cms/login'
2
+ type 'login', 'cmsadmin'
3
+ type 'password', 'cmsadmin'
4
+ click_and_wait 'commit'
@@ -0,0 +1,5 @@
1
+ setup :fixtures => :all
2
+ include_partial 'login_as_cmsadmin'
3
+ open '/cms'
4
+ assert_title 'Dashboard'
5
+ verify_text_present "Welcome"
@@ -0,0 +1,4 @@
1
+ setup :fixtures => :all
2
+ include_partial 'login_as_cmsadmin'
3
+ open '/cms/blocks/html_blocks'
4
+ assert_title 'Content Library / List Html'
@@ -0,0 +1,8 @@
1
+ setup :fixtures => :all
2
+ open '/cms'
3
+ assert_title 'Log In'
4
+ verify_text_present 'Log In'
5
+ type 'login', 'cmsadmin'
6
+ type 'password', 'FAIL'
7
+ click_and_wait 'commit'
8
+ verify_text_present "Couldn't log you in as 'cmsadmin'"
@@ -0,0 +1,9 @@
1
+ setup :fixtures => :all
2
+ open '/cms'
3
+ assert_title 'Log In'
4
+ verify_text_present 'Log In'
5
+ type 'login', 'cmsadmin'
6
+ type 'password', 'cmsadmin'
7
+ click_and_wait 'commit'
8
+ assert_title 'Dashboard'
9
+ verify_text_present 'Logged in successfully'
@@ -0,0 +1,12 @@
1
+ setup :fixtures => :all
2
+ include_partial 'login_as_cmsadmin'
3
+ open '/cms/page_templates'
4
+ assert_title 'View Page Templates'
5
+ click_and_wait "link=*New Page Template"
6
+ assert_title "New Page Template"
7
+ type "page_template_name", "Test"
8
+ type "page_template_file_name", "test"
9
+ type "page_template_body", "<html><body><%= yield %></body></html>"
10
+ click_and_wait "page_template_submit"
11
+ assert_title "View Page Templates"
12
+ assert_text "//table[@id='blocks']/tbody/tr[3]/td[1]", "Test"
@@ -0,0 +1,5 @@
1
+ setup :fixtures => :all
2
+ @page = Page.find_by_name('Home')
3
+ include_partial 'login_as_cmsadmin'
4
+ open "/cms/pages/edit/#{@page.id}"
5
+ assert_title "Edit '#{@page.name}' Page"
@@ -0,0 +1,4 @@
1
+ setup :fixtures => :all
2
+ open '/'
3
+ assert_title 'Home'
4
+ verify_text_present 'Hello, World!'
@@ -0,0 +1,9 @@
1
+ setup :fixtures => :all
2
+ include_partial 'login_as_cmsadmin'
3
+ open '/cms/sitemap'
4
+ verify_text_not_present "Page 'Home' was moved to 'About'."
5
+ assert_not_visible "//span[@class='page' and text()='About Us']"
6
+ #TODO: Figure out why selenium drag and drop doesn't work
7
+ #drag_and_drop_to_object "//span[@class='page' and text()='Home']", "//span[@class='section' and text()='About']"
8
+ #assert_visible "//span[@class='page' and text()='About Us']"
9
+ #verify_text_present "Page 'Home' was moved to 'About'."
@@ -0,0 +1,6 @@
1
+ setup :fixtures => :all
2
+ include_partial 'login_as_cmsadmin'
3
+ open '/cms/sitemap'
4
+ assert_not_visible "//span[@class='page' and text()='About Us']"
5
+ click "//span[@class='section' and text()='About']/../a"
6
+ assert_visible "//span[@class='page' and text()='About Us']"
@@ -0,0 +1,12 @@
1
+ setup :fixtures => :all
2
+ @page = Page.find_by_name('Home')
3
+ include_partial 'login_as_cmsadmin'
4
+ open '/cms/sitemap'
5
+ assert_title 'Sitemap'
6
+ #assert_not_editable 'edit-button'
7
+ #assert_not_editable 'properties-button'
8
+ click "//span[@class='page' and text()='#{@page.name}']"
9
+ #assert_editable 'edit-button'
10
+ #assert_editable 'properties-button'
11
+ assert_attribute "//a[@id='edit-button']", 'href', "/cms/pages/show/#{@page.id}"
12
+ assert_attribute "//a[@id='properties-button']", 'href', "/cms/pages/edit/#{@page.id}"
@@ -0,0 +1,17 @@
1
+ setup :fixtures => :all
2
+ @section = Section.find_by_name('About')
3
+ include_partial 'login_as_cmsadmin'
4
+ open '/cms/sitemap'
5
+ assert_title 'Sitemap'
6
+ # assert_not_editable 'edit-button'
7
+ # assert_not_editable 'properties-button'
8
+ # assert_not_editable 'add-page-button'
9
+ # assert_not_editable 'add-section-button'
10
+ click "//span[@class='section' and text()='#{@section.name}']"
11
+ # assert_not_editable 'edit-button'
12
+ # assert_editable 'properties-button'
13
+ # assert_editable 'add-page-button'
14
+ # assert_editable 'add-section-button'
15
+ assert_attribute "//a[@id='properties-button']", 'href', "/cms/sections/edit/#{@section.id}"
16
+ assert_attribute "//a[@id='add-page-button']", 'href', "/cms/pages/new?section_id=#{@section.id}"
17
+ assert_attribute "//a[@id='add-section-button']", 'href', "/cms/sections/new?section_id=#{@section.id}"
data/test/test_helper.rb CHANGED
@@ -41,9 +41,9 @@ class ActiveSupport::TestCase
41
41
 
42
42
  require File.dirname(__FILE__) + '/test_logging'
43
43
  include TestLogging
44
- require File.dirname(__FILE__) + '/custom_assertions'
44
+ require File.dirname(__FILE__) + '/custom_assertions'
45
45
  include CustomAssertions
46
-
46
+
47
47
  #----- Test Macros -----------------------------------------------------------
48
48
  class << self
49
49
  def should_validate_presence_of(*fields)
@@ -69,7 +69,7 @@ class ActiveSupport::TestCase
69
69
  end
70
70
 
71
71
  end
72
-
72
+
73
73
  #----- Fixture/Data related helpers ------------------------------------------
74
74
 
75
75
  def admin_user
@@ -87,7 +87,7 @@ class ActiveSupport::TestCase
87
87
  group.permissions << create_or_find_permission_named("edit_content")
88
88
  group.permissions << create_or_find_permission_named("publish_content")
89
89
  user.groups << group
90
- user
90
+ user
91
91
  end
92
92
 
93
93
  def file_upload_object(options)
@@ -100,7 +100,7 @@ class ActiveSupport::TestCase
100
100
 
101
101
  def guest_group
102
102
  Group.guest || Factory(:group, :code => Group::GUEST_CODE)
103
- end
103
+ end
104
104
 
105
105
  def login_as(user)
106
106
  @request.session[:user_id] = user ? user.id : nil
@@ -111,7 +111,7 @@ class ActiveSupport::TestCase
111
111
  end
112
112
 
113
113
  def mock_file(options = {})
114
- file_upload_object({:original_filename => "test.jpg",
114
+ file_upload_object({:original_filename => "test.jpg",
115
115
  :content_type => "image/jpeg", :rewind => true,
116
116
  :size => "99", :read => "01010010101010101"}.merge(options))
117
117
  end
@@ -127,20 +127,38 @@ class ActiveSupport::TestCase
127
127
  end
128
128
 
129
129
  def root_section
130
- sections(:section_1)
130
+ @root_section ||= Factory(:root_section)
131
+ end
132
+
133
+ # Fixtures add incorrect Section/Section node data. We don't want to replace fixtures AGAIN (this is handled in CMS 3.3)
134
+ # so we can just clean it out using this method where needed to avoid test breakage.
135
+ def remove_all_sitemap_fixtures_to_avoid_bugs
136
+ Section.delete_all
137
+ SectionNode.delete_all
138
+ Page.delete_all
139
+ end
140
+
141
+ # Create a 'faux' sitemap which will work for tests (avoids need for fixtures)
142
+ def given_a_site_exists
143
+ remove_all_sitemap_fixtures_to_avoid_bugs
144
+ @root = root_section
145
+ @homepage = Factory(:public_page, :name=>"Home", :section=>@root, :path=>"/")
146
+ @system_section = Factory(:public_page, :name=>"System", :section=>@root, :path=>"/system")
147
+ @not_found_page = Factory(:public_page, :name=>"Not Found", :section=>@system_section, :path=>Cms::ErrorPages::NOT_FOUND_PATH)
148
+ @access_denied_page = Factory(:public_page, :name=>"Access Denied", :section=>@system_section, :path=>Cms::ErrorPages::FORBIDDEN_PATH)
149
+ @error_page = Factory(:public_page, :name=>"Server Error", :section=>@system_section, :path=>Cms::ErrorPages::SERVER_ERROR_PATH)
131
150
  end
132
-
133
151
  end
134
152
 
135
153
  module Cms::ControllerTestHelper
136
154
  def self.included(test_case)
137
155
  test_case.send(:include, Cms::PathHelper)
138
156
  end
139
-
157
+
140
158
  def request
141
159
  @request
142
160
  end
143
-
161
+
144
162
  def streaming_file_contents
145
163
  #The body of a streaming response is a proc
146
164
  streamer = @response.body
@@ -149,11 +167,11 @@ module Cms::ControllerTestHelper
149
167
  #Create a dummy object for the proc to write to
150
168
  output = Object.new
151
169
  def output.write(contents)
152
- (@contents ||= "") << contents
170
+ (@contents ||= "") << contents
153
171
  end
154
172
 
155
173
  #run the proc
156
- streamer.call(@response, output)
174
+ streamer.call(@response, output)
157
175
 
158
176
  #return what it wrote to the dummy object
159
177
  output.instance_variable_get("@contents")
@@ -37,7 +37,7 @@ end
37
37
  class VersionedAttachable < ActiveRecord::Base
38
38
  acts_as_content_block :belongs_to_attachment => true
39
39
 
40
- def set_attachment_file_path
40
+ def use_default_attachment_path
41
41
  if @attachment_file_path && @attachment_file_path != attachment.file_path
42
42
  attachment.file_path = @attachment_file_path
43
43
  end
@@ -52,6 +52,8 @@ end
52
52
 
53
53
  class DefaultAttachableTest < ActiveSupport::TestCase
54
54
  def setup
55
+ remove_all_sitemap_fixtures_to_avoid_bugs
56
+
55
57
  #file is a mock of the object that Rails wraps file uploads in
56
58
  @file = file_upload_object(:original_filename => "foo.jpg",
57
59
  :content_type => "image/jpeg", :rewind => true,
@@ -61,12 +63,10 @@ class DefaultAttachableTest < ActiveSupport::TestCase
61
63
  end
62
64
 
63
65
  def test_create_with_attachment_file
64
- @attachable = DefaultAttachable.new(:name => "File Name",
65
- :attachment_file => @file, :publish_on_save => true)
66
+ @attachable = DefaultAttachable.new(:name => "File Name", :attachment_file => @file, :publish_on_save => true)
66
67
 
67
68
  attachable_count = DefaultAttachable.count
68
69
 
69
- assert_valid @attachable
70
70
  @attachable.save!
71
71
 
72
72
  assert_incremented attachable_count, DefaultAttachable.count
@@ -107,8 +107,6 @@ class DefaultAttachableTest < ActiveSupport::TestCase
107
107
  assert_equal "/attachments/foo.jpg", @attachable.attachment_file_path
108
108
  assert @attachable.attachment.published?
109
109
  end
110
-
111
-
112
110
  end
113
111
 
114
112
  class AttachingTest < ActiveSupport::TestCase
@@ -0,0 +1,29 @@
1
+ require "test_helper"
2
+
3
+ class ConnectableTest < ActiveSupport::TestCase
4
+
5
+ def setup
6
+ given_a_site_exists
7
+ @block = Factory(:html_block)
8
+ @connected_page = Factory(:public_page, :parent=>root_section)
9
+ @connected_page_2 = Factory(:public_page, :parent=>root_section)
10
+ @unconnected_page = Factory(:public_page, :parent=>root_section)
11
+
12
+ @connected_page.create_connector(@block, "main")
13
+ @connected_page_2.create_connector(@block, "main")
14
+ end
15
+
16
+ def teardown
17
+ end
18
+
19
+ test "#connected_pages" do
20
+ assert_equal [@connected_page, @connected_page_2], @block.connected_pages
21
+ end
22
+
23
+ test "#connected_pages should return same list when called twice" do
24
+ expected = @block.connected_pages
25
+ assert_equal expected.object_id, @block.connected_pages.object_id
26
+ end
27
+
28
+
29
+ end
@@ -2,12 +2,18 @@ require File.join(File.dirname(__FILE__), '/../../test_helper')
2
2
 
3
3
  ActiveRecord::Base.connection.instance_eval do
4
4
  drop_table(:publishables) if table_exists?(:publishables)
5
- create_table(:publishables) do |t|
5
+ create_table(:publishables) do |t|
6
6
  t.string :name
7
7
  t.boolean :published, :default => false
8
8
  end
9
9
  drop_table(:unpublishables) if table_exists?(:unpublishables)
10
- create_table(:unpublishables) do |t|
10
+ create_table(:unpublishables) do |t|
11
+ t.string :name
12
+ end
13
+
14
+ drop_table(:publishable_blocks) if table_exists?(:publishable_blocks)
15
+ drop_table(:publishable_block_versions) if table_exists?(:publishable_block_versions)
16
+ create_content_table(:publishable_blocks) do |t|
11
17
  t.string :name
12
18
  end
13
19
  end
@@ -19,23 +25,47 @@ end
19
25
  class Unpublishable < ActiveRecord::Base
20
26
  end
21
27
 
28
+ class PublishableBlock < ActiveRecord::Base
29
+ acts_as_content_block
30
+ end
31
+
32
+ class PublishableBlockTestCase < ActiveSupport::TestCase
33
+
34
+ def setup
35
+ @object = PublishableBlock.create!(:name=>"v1", :publish_on_save=>true)
36
+ end
37
+
38
+ test "#live?" do
39
+ assert @object.live?
40
+ end
41
+
42
+ test "#live? if there are draft versions" do
43
+ @object.name = "New Name"
44
+ @object.save!
45
+
46
+ assert_equal false, @object.live?
47
+ assert_equal :draft, @object.status
48
+ end
49
+ end
50
+
22
51
  class PublishableTestCase < ActiveSupport::TestCase
23
- def test_publishable
52
+
53
+ def setup
24
54
  @object = Publishable.new(:name => "New Record")
55
+ end
56
+
57
+ def test_publishable
25
58
  assert @object.publishable?
26
59
  end
27
-
60
+
28
61
  def test_save
29
- @object = Publishable.new(:name => "New Record")
30
62
  assert @object.save
31
63
  assert !@object.published?
32
64
  end
33
65
 
34
66
  def test_publish_on_save
35
- @object = Publishable.new(:name => "New Record")
36
67
  @object.publish_on_save = true
37
68
  assert @object.save
38
- log_table_without_stamps Publishable
39
69
  assert @object.reload.published?
40
70
  end
41
71
 
@@ -45,9 +75,10 @@ class PublishableTestCase < ActiveSupport::TestCase
45
75
  assert @object.save
46
76
  assert !@object.publishable?
47
77
  end
48
-
78
+
49
79
  def test_not_publishable_if_connect_to_page_id_is_blank
50
80
  assert HtmlBlock.new(:connect_to_page_id => "").publishable?
51
81
  end
52
-
82
+
83
+
53
84
  end
@@ -0,0 +1,36 @@
1
+ require "test_helper"
2
+
3
+ class VersioningTest < ActiveSupport::TestCase
4
+
5
+ def setup
6
+ @published_block = Factory(:html_block, :name=>"Version 1", :publish_on_save=>true)
7
+ @published_block.update_attributes(:name=>"Version 2")
8
+ @published_block.reload
9
+ end
10
+
11
+ def teardown
12
+ end
13
+
14
+
15
+ test "#name matches original version's attributes'" do
16
+ assert_equal "Version 1", @published_block.name
17
+ end
18
+
19
+ test "#as_of_draft_version" do
20
+ v2 = @published_block.as_of_draft_version
21
+ assert_equal "Version 2", v2.name
22
+ assert_equal HtmlBlock, v2.class
23
+ end
24
+
25
+ test "#draft returns the latest Version Object for a block" do
26
+ v2 = @published_block.draft
27
+ assert_equal "Version 2", v2.name
28
+ assert_equal HtmlBlock::Version, v2.class
29
+ end
30
+
31
+ test "#as_of_version" do
32
+ v1 = @published_block.as_of_version(1)
33
+ assert_equal "Version 1", v1.name
34
+ assert_equal @published_block.id, v1.id
35
+ end
36
+ end
@@ -2,8 +2,12 @@ require File.join(File.dirname(__FILE__), '/../../test_helper')
2
2
 
3
3
  class Cms::MenuHelperTest < ActionView::TestCase
4
4
 
5
+ def setup
6
+ remove_all_sitemap_fixtures_to_avoid_bugs
7
+ root_section # Ensure this exists
8
+ end
9
+
5
10
  def test_menu_items
6
- Page.first.update_attributes(:hidden => true, :publish_on_save => true)
7
11
  create_nfl_data
8
12
 
9
13
  expected = [
@@ -108,7 +112,6 @@ class Cms::MenuHelperTest < ActionView::TestCase
108
112
  end
109
113
 
110
114
  def test_menu_with_links
111
- Page.first.update_attributes(:hidden => true, :publish_on_save => true)
112
115
 
113
116
  @news = Factory(:section, :parent => root_section, :name => "News", :path => "/whatever")
114
117
  @press_releases = Factory(:page, :section => @news, :name => "Press Releases", :path => "/press_releases", :publish_on_save => true)
@@ -3,6 +3,8 @@ require File.join(File.dirname(__FILE__), '/../../test_helper')
3
3
  class Cms::PageHelperTest < ActionView::TestCase
4
4
 
5
5
  def setup
6
+ root_section.name = "My Site"
7
+ root_section.save!
6
8
  @foo = Factory(:section, :name => "Foo", :parent => root_section, :path => "/foo")
7
9
  Factory(:page, :name => "Overview", :section => @foo, :path => "/foo")
8
10
  @bar = Factory(:section, :name => "Bar", :parent => @foo, :path => "/bar")