summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/controllers/admin_controller_test.rb2
-rw-r--r--test/controllers/content_controller_test.rb14
-rw-r--r--test/controllers/nodes_controller_test.rb26
-rw-r--r--test/controllers/revisions_controller_test.rb16
-rw-r--r--test/controllers/rss_controller_test.rb2
-rw-r--r--test/controllers/shared_previews_controller_test.rb2
-rw-r--r--test/controllers/tags_controller_test.rb2
-rw-r--r--test/models/event_test.rb2
-rw-r--r--test/models/node_test.rb63
-rw-r--r--test/models/page_test.rb52
-rw-r--r--test/test_helper.rb5
11 files changed, 83 insertions, 103 deletions
diff --git a/test/controllers/admin_controller_test.rb b/test/controllers/admin_controller_test.rb
index 00a51e2..cba4a59 100644
--- a/test/controllers/admin_controller_test.rb
+++ b/test/controllers/admin_controller_test.rb
@@ -17,7 +17,7 @@ class AdminControllerTest < ActionController::TestCase
17 17
18 test "dashboard_search returns matching tags and nodes grouped separately" do 18 test "dashboard_search returns matching tags and nodes grouped separately" do
19 node = Node.root.children.create!(:slug => "dashboard_search_test") 19 node = Node.root.children.create!(:slug => "dashboard_search_test")
20 node.find_or_create_draft(User.find_by_login("aaron")) 20 find_or_create_draft(node, User.find_by_login("aaron"))
21 node.draft.update(:title => "Biometrics Workshop") 21 node.draft.update(:title => "Biometrics Workshop")
22 node.draft.tag_list = "biometrics-workshop" 22 node.draft.tag_list = "biometrics-workshop"
23 node.draft.save! 23 node.draft.save!
diff --git a/test/controllers/content_controller_test.rb b/test/controllers/content_controller_test.rb
index 9313783..e8bc55f 100644
--- a/test/controllers/content_controller_test.rb
+++ b/test/controllers/content_controller_test.rb
@@ -39,7 +39,7 @@ class ContentControllerTest < ActionController::TestCase
39 fill_pages_with_content 39 fill_pages_with_content
40 40
41 new_node = create_node_under_root "fnord" 41 new_node = create_node_under_root "fnord"
42 draft = new_node.find_or_create_draft @user1 42 draft = find_or_create_draft(new_node, @user1)
43 draft.body = '[aggregate tags="update" limit="20"]' 43 draft.body = '[aggregate tags="update" limit="20"]'
44 draft.save 44 draft.save
45 new_node.publish_draft! 45 new_node.publish_draft!
@@ -58,7 +58,7 @@ class ContentControllerTest < ActionController::TestCase
58 fill_pages_with_content 58 fill_pages_with_content
59 59
60 new_node = create_node_under_root "fnord" 60 new_node = create_node_under_root "fnord"
61 draft = new_node.find_or_create_draft @user1 61 draft = find_or_create_draft(new_node, @user1)
62 draft.body = '[aggregate tags="update" limit="20" partial="sidebar_title_only"]' 62 draft.body = '[aggregate tags="update" limit="20" partial="sidebar_title_only"]'
63 draft.save 63 draft.save
64 new_node.publish_draft! 64 new_node.publish_draft!
@@ -72,7 +72,7 @@ class ContentControllerTest < ActionController::TestCase
72 72
73 def test_nonexistant_custom_template_defaults_to_standard_template 73 def test_nonexistant_custom_template_defaults_to_standard_template
74 new_node = create_node_under_root "fnord" 74 new_node = create_node_under_root "fnord"
75 draft = new_node.find_or_create_draft @user1 75 draft = find_or_create_draft(new_node, @user1)
76 draft.template_name = "huchibu" 76 draft.template_name = "huchibu"
77 draft.save 77 draft.save
78 new_node.publish_draft! 78 new_node.publish_draft!
@@ -84,7 +84,7 @@ class ContentControllerTest < ActionController::TestCase
84 84
85 def test_custom_template_no_date_and_author 85 def test_custom_template_no_date_and_author
86 new_node = create_node_under_root "fnord" 86 new_node = create_node_under_root "fnord"
87 draft = new_node.find_or_create_draft @user1 87 draft = find_or_create_draft(new_node, @user1)
88 draft.template_name = "no_date_and_author" 88 draft.template_name = "no_date_and_author"
89 draft.save 89 draft.save
90 new_node.publish_draft! 90 new_node.publish_draft!
@@ -96,7 +96,7 @@ class ContentControllerTest < ActionController::TestCase
96 96
97 def test_aggregator_without_fill 97 def test_aggregator_without_fill
98 new_node = create_node_under_root "fnord" 98 new_node = create_node_under_root "fnord"
99 draft = new_node.find_or_create_draft @user1 99 draft = find_or_create_draft(new_node, @user1)
100 draft.body = '<aggregate tags="xyzzy_unique_test_tag" limit="20" />' 100 draft.body = '<aggregate tags="xyzzy_unique_test_tag" limit="20" />'
101 draft.save 101 draft.save
102 new_node.publish_draft! 102 new_node.publish_draft!
@@ -114,13 +114,13 @@ class ContentControllerTest < ActionController::TestCase
114 end 114 end
115 115
116 def fill_pages_with_content 116 def fill_pages_with_content
117 d1 = @first_child.find_or_create_draft @user1 117 d1 = find_or_create_draft(@first_child, @user1)
118 d1.title = "one" 118 d1.title = "one"
119 d1.tag_list = "update" 119 d1.tag_list = "update"
120 d1.save 120 d1.save
121 @first_child.publish_draft! 121 @first_child.publish_draft!
122 122
123 d2 = @second_child.find_or_create_draft @user1 123 d2 = find_or_create_draft(@second_child, @user1)
124 d2.title = "two" 124 d2.title = "two"
125 d2.tag_list = "update" 125 d2.tag_list = "update"
126 d2.save 126 d2.save
diff --git a/test/controllers/nodes_controller_test.rb b/test/controllers/nodes_controller_test.rb
index 81e3f45..9da9514 100644
--- a/test/controllers/nodes_controller_test.rb
+++ b/test/controllers/nodes_controller_test.rb
@@ -89,7 +89,7 @@ class NodesControllerTest < ActionController::TestCase
89 89
90 assert_equal 1, node.pages.length 90 assert_equal 1, node.pages.length
91 91
92 draft = node.find_or_create_draft( User.first ) 92 draft = find_or_create_draft(node, User.first)
93 draft.title = "Hello" 93 draft.title = "Hello"
94 draft.body = "World" 94 draft.body = "World"
95 draft.save 95 draft.save
@@ -102,8 +102,8 @@ class NodesControllerTest < ActionController::TestCase
102 102
103 node.reload 103 node.reload
104 assert_equal 1, node.pages.length 104 assert_equal 1, node.pages.length
105 assert_equal "Hello", node.find_or_create_draft( User.first ).title 105 assert_equal "Hello", find_or_create_draft(node, User.first).title
106 assert_equal "World", node.find_or_create_draft( User.first ).body 106 assert_equal "World", find_or_create_draft(node, User.first).body
107 end 107 end
108 108
109 test "editing a locked node raises LockedByAnotherUser Exception" do 109 test "editing a locked node raises LockedByAnotherUser Exception" do
@@ -228,7 +228,7 @@ class NodesControllerTest < ActionController::TestCase
228 test "unlocking a locked node" do 228 test "unlocking a locked node" do
229 login_as :quentin 229 login_as :quentin
230 node = create_node_with_published_page 230 node = create_node_with_published_page
231 node.find_or_create_draft User.first 231 find_or_create_draft(node, User.first)
232 232
233 assert node.locked? 233 assert node.locked?
234 234
@@ -250,7 +250,7 @@ class NodesControllerTest < ActionController::TestCase
250 Node.root.descendants.destroy_all 250 Node.root.descendants.destroy_all
251 login_as :quentin 251 login_as :quentin
252 node = create_node_with_published_page 252 node = create_node_with_published_page
253 node.find_or_create_draft User.first 253 find_or_create_draft(node, User.first)
254 254
255 other_node = Node.root.children.create( :slug => "other" ) 255 other_node = Node.root.children.create( :slug => "other" )
256 256
@@ -274,7 +274,7 @@ class NodesControllerTest < ActionController::TestCase
274 Node.root.descendants.destroy_all 274 Node.root.descendants.destroy_all
275 node = create_node_with_published_page 275 node = create_node_with_published_page
276 assert_equal "quentin", node.head.user.login 276 assert_equal "quentin", node.head.user.login
277 node.find_or_create_draft users(:quentin) 277 find_or_create_draft(node, users(:quentin))
278 assert node.draft.valid? 278 assert node.draft.valid?
279 assert node.valid? 279 assert node.valid?
280 280
@@ -336,7 +336,7 @@ class NodesControllerTest < ActionController::TestCase
336 336
337 test "unlocking and relocking changes editor if done by another user" do 337 test "unlocking and relocking changes editor if done by another user" do
338 node = create_node_with_published_page 338 node = create_node_with_published_page
339 draft = node.find_or_create_draft users(:quentin) 339 draft = find_or_create_draft(node, users(:quentin))
340 assert_equal draft.user.login, draft.editor.login 340 assert_equal draft.user.login, draft.editor.login
341 assert node.locked? 341 assert node.locked?
342 node.unlock! 342 node.unlock!
@@ -481,13 +481,13 @@ class NodesControllerTest < ActionController::TestCase
481 481
482 test "chapters filters by kind, matching head or draft, and shows both by default" do 482 test "chapters filters by kind, matching head or draft, and shows both by default" do
483 erfa_node = Node.root.children.create!(:slug => "chapters_erfa_test") 483 erfa_node = Node.root.children.create!(:slug => "chapters_erfa_test")
484 erfa_node.find_or_create_draft(@user1) 484 find_or_create_draft(erfa_node, @user1)
485 erfa_node.draft.tag_list = "erfa-detail" 485 erfa_node.draft.tag_list = "erfa-detail"
486 erfa_node.draft.save! 486 erfa_node.draft.save!
487 erfa_node.publish_draft! 487 erfa_node.publish_draft!
488 488
489 chaostreff_node = Node.root.children.create!(:slug => "chapters_chaostreff_test") 489 chaostreff_node = Node.root.children.create!(:slug => "chapters_chaostreff_test")
490 chaostreff_node.find_or_create_draft(@user1) 490 find_or_create_draft(chaostreff_node, @user1)
491 chaostreff_node.draft.tag_list = "chaostreff-detail" 491 chaostreff_node.draft.tag_list = "chaostreff-detail"
492 chaostreff_node.draft.save! 492 chaostreff_node.draft.save!
493 chaostreff_node.publish_draft! 493 chaostreff_node.publish_draft!
@@ -549,13 +549,13 @@ class NodesControllerTest < ActionController::TestCase
549 549
550 test "tags path filters by an arbitrary raw tag, generalizing chapters" do 550 test "tags path filters by an arbitrary raw tag, generalizing chapters" do
551 presse_node = Node.root.children.create!(:slug => "tags_path_presse_test") 551 presse_node = Node.root.children.create!(:slug => "tags_path_presse_test")
552 presse_node.find_or_create_draft(@user1) 552 find_or_create_draft(presse_node, @user1)
553 presse_node.draft.tag_list = "pressemitteilung" 553 presse_node.draft.tag_list = "pressemitteilung"
554 presse_node.draft.save! 554 presse_node.draft.save!
555 presse_node.publish_draft! 555 presse_node.publish_draft!
556 556
557 erfa_node = Node.root.children.create!(:slug => "tags_path_erfa_test") 557 erfa_node = Node.root.children.create!(:slug => "tags_path_erfa_test")
558 erfa_node.find_or_create_draft(@user1) 558 find_or_create_draft(erfa_node, @user1)
559 erfa_node.draft.tag_list = "erfa-detail" 559 erfa_node.draft.tag_list = "erfa-detail"
560 erfa_node.draft.save! 560 erfa_node.draft.save!
561 erfa_node.publish_draft! 561 erfa_node.publish_draft!
@@ -572,13 +572,13 @@ class NodesControllerTest < ActionController::TestCase
572 572
573 test "tags path with multiple tags matches any of them, not all" do 573 test "tags path with multiple tags matches any of them, not all" do
574 erfa_node = Node.root.children.create!(:slug => "tags_path_multi_erfa_test") 574 erfa_node = Node.root.children.create!(:slug => "tags_path_multi_erfa_test")
575 erfa_node.find_or_create_draft(@user1) 575 find_or_create_draft(erfa_node, @user1)
576 erfa_node.draft.tag_list = "erfa-detail" 576 erfa_node.draft.tag_list = "erfa-detail"
577 erfa_node.draft.save! 577 erfa_node.draft.save!
578 erfa_node.publish_draft! 578 erfa_node.publish_draft!
579 579
580 chaostreff_node = Node.root.children.create!(:slug => "tags_path_multi_chaostreff_test") 580 chaostreff_node = Node.root.children.create!(:slug => "tags_path_multi_chaostreff_test")
581 chaostreff_node.find_or_create_draft(@user1) 581 find_or_create_draft(chaostreff_node, @user1)
582 chaostreff_node.draft.tag_list = "chaostreff-detail" 582 chaostreff_node.draft.tag_list = "chaostreff-detail"
583 chaostreff_node.draft.save! 583 chaostreff_node.draft.save!
584 chaostreff_node.publish_draft! 584 chaostreff_node.publish_draft!
diff --git a/test/controllers/revisions_controller_test.rb b/test/controllers/revisions_controller_test.rb
index e5726f7..96c6d6c 100644
--- a/test/controllers/revisions_controller_test.rb
+++ b/test/controllers/revisions_controller_test.rb
@@ -10,7 +10,7 @@ class RevisionsControllerTest < ActionController::TestCase
10 draft = @node.draft 10 draft = @node.draft
11 draft.body = "first" 11 draft.body = "first"
12 @node.publish_draft! 12 @node.publish_draft!
13 @node.find_or_create_draft @user 13 find_or_create_draft(@node, @user)
14 draft = @node.draft 14 draft = @node.draft
15 draft.update(:body => "second") 15 draft.update(:body => "second")
16 @node.publish_draft! 16 @node.publish_draft!
@@ -103,7 +103,7 @@ class RevisionsControllerTest < ActionController::TestCase
103 103
104 test "diffing head against draft by name" do 104 test "diffing head against draft by name" do
105 login_as :quentin 105 login_as :quentin
106 @node.find_or_create_draft(@user) 106 find_or_create_draft(@node, @user)
107 @node.draft.update(:body => "draft body") 107 @node.draft.update(:body => "draft body")
108 108
109 post(:diff, params: { :node_id => @node.id, :start_revision => "head", :end_revision => "draft" }) 109 post(:diff, params: { :node_id => @node.id, :start_revision => "head", :end_revision => "draft" })
@@ -119,7 +119,7 @@ class RevisionsControllerTest < ActionController::TestCase
119 119
120 test "diffing by name shows a clear comparison label instead of a misleading revision picker" do 120 test "diffing by name shows a clear comparison label instead of a misleading revision picker" do
121 login_as :quentin 121 login_as :quentin
122 @node.find_or_create_draft(@user) 122 find_or_create_draft(@node, @user)
123 123
124 post(:diff, params: { :node_id => @node.id, :start_revision => "head", :end_revision => "draft" }) 124 post(:diff, params: { :node_id => @node.id, :start_revision => "head", :end_revision => "draft" })
125 assert_response :success 125 assert_response :success
@@ -130,7 +130,7 @@ class RevisionsControllerTest < ActionController::TestCase
130 130
131 test "pair-switcher buttons carry their params as real hidden fields, not a query string" do 131 test "pair-switcher buttons carry their params as real hidden fields, not a query string" do
132 login_as :quentin 132 login_as :quentin
133 @node.find_or_create_draft(@user) 133 find_or_create_draft(@node, @user)
134 @node.lock_for_editing!(@user) 134 @node.lock_for_editing!(@user)
135 @node.autosave!({ :body => "unsaved" }, @user) 135 @node.autosave!({ :body => "unsaved" }, @user)
136 136
@@ -142,7 +142,7 @@ class RevisionsControllerTest < ActionController::TestCase
142 142
143 test "the view toggle is available even when comparing named layers" do 143 test "the view toggle is available even when comparing named layers" do
144 login_as :quentin 144 login_as :quentin
145 @node.find_or_create_draft(@user) 145 find_or_create_draft(@node, @user)
146 146
147 post(:diff, params: { :node_id => @node.id, :start_revision => "head", :end_revision => "draft" }) 147 post(:diff, params: { :node_id => @node.id, :start_revision => "head", :end_revision => "draft" })
148 assert_response :success 148 assert_response :success
@@ -151,7 +151,7 @@ class RevisionsControllerTest < ActionController::TestCase
151 151
152 test "diffing two revisions also shows tag, template, and asset changes" do 152 test "diffing two revisions also shows tag, template, and asset changes" do
153 login_as :quentin 153 login_as :quentin
154 @node.find_or_create_draft(@user) 154 find_or_create_draft(@node, @user)
155 @node.draft.tag_list = "update" 155 @node.draft.tag_list = "update"
156 @node.draft.save! 156 @node.draft.save!
157 157
@@ -175,7 +175,7 @@ class RevisionsControllerTest < ActionController::TestCase
175 node.draft.save! 175 node.draft.save!
176 node.publish_draft! 176 node.publish_draft!
177 177
178 node.find_or_create_draft(@user) 178 find_or_create_draft(node, @user)
179 Globalize.with_locale(:en) { node.draft.update!(:title => "Changed in English only") } 179 Globalize.with_locale(:en) { node.draft.update!(:title => "Changed in English only") }
180 node.draft.save! 180 node.draft.save!
181 181
@@ -191,7 +191,7 @@ class RevisionsControllerTest < ActionController::TestCase
191 node.draft.save! 191 node.draft.save!
192 node.publish_draft! 192 node.publish_draft!
193 193
194 node.find_or_create_draft(@user) 194 find_or_create_draft(node, @user)
195 Globalize.with_locale(:en) { node.draft.update!(:title => "English changed") } 195 Globalize.with_locale(:en) { node.draft.update!(:title => "English changed") }
196 node.draft.save! 196 node.draft.save!
197 197
diff --git a/test/controllers/rss_controller_test.rb b/test/controllers/rss_controller_test.rb
index 7e28844..3f4b4fb 100644
--- a/test/controllers/rss_controller_test.rb
+++ b/test/controllers/rss_controller_test.rb
@@ -6,7 +6,7 @@ class RssControllerTest < ActionController::TestCase
6 @user = User.create :login => 'rsstest', :email => 'rsstest@example.com', 6 @user = User.create :login => 'rsstest', :email => 'rsstest@example.com',
7 :password => 'foobar', :password_confirmation => 'foobar' 7 :password => 'foobar', :password_confirmation => 'foobar'
8 @node = Node.root.children.create! :slug => 'rss_test_node' 8 @node = Node.root.children.create! :slug => 'rss_test_node'
9 draft = @node.find_or_create_draft @user 9 draft = find_or_create_draft(@node, @user)
10 draft.title = "RSS Update Article" 10 draft.title = "RSS Update Article"
11 draft.tag_list = "update" 11 draft.tag_list = "update"
12 draft.save 12 draft.save
diff --git a/test/controllers/shared_previews_controller_test.rb b/test/controllers/shared_previews_controller_test.rb
index 5f2d20d..4ebc785 100644
--- a/test/controllers/shared_previews_controller_test.rb
+++ b/test/controllers/shared_previews_controller_test.rb
@@ -13,7 +13,7 @@ class SharedPreviewsControllerTest < ActionController::TestCase
13 test "renders the preview for a brand-new draft on an already-published node" do 13 test "renders the preview for a brand-new draft on an already-published node" do
14 node = Node.root.children.create!(:slug => "shared_preview_published_node_test") 14 node = Node.root.children.create!(:slug => "shared_preview_published_node_test")
15 node.publish_draft! 15 node.publish_draft!
16 node.find_or_create_draft(User.first) 16 find_or_create_draft(node, User.first)
17 node.draft.ensure_preview_token! 17 node.draft.ensure_preview_token!
18 18
19 get :show, params: { :token => node.draft.preview_token } 19 get :show, params: { :token => node.draft.preview_token }
diff --git a/test/controllers/tags_controller_test.rb b/test/controllers/tags_controller_test.rb
index 95c0d31..b2d30c5 100644
--- a/test/controllers/tags_controller_test.rb
+++ b/test/controllers/tags_controller_test.rb
@@ -6,7 +6,7 @@ class TagsControllerTest < ActionController::TestCase
6 @user = User.create :login => 'tagtest', :email => 'tagtest@example.com', 6 @user = User.create :login => 'tagtest', :email => 'tagtest@example.com',
7 :password => 'foobar', :password_confirmation => 'foobar' 7 :password => 'foobar', :password_confirmation => 'foobar'
8 @node = Node.root.children.create! :slug => 'tag_test_node' 8 @node = Node.root.children.create! :slug => 'tag_test_node'
9 draft = @node.find_or_create_draft @user 9 draft = find_or_create_draft(@node, @user)
10 draft.title = "Tagged Article" 10 draft.title = "Tagged Article"
11 draft.tag_list = "testtag" 11 draft.tag_list = "testtag"
12 draft.save 12 draft.save
diff --git a/test/models/event_test.rb b/test/models/event_test.rb
index e98605e..2a671b7 100644
--- a/test/models/event_test.rb
+++ b/test/models/event_test.rb
@@ -5,7 +5,7 @@ class EventTest < ActiveSupport::TestCase
5 def setup 5 def setup
6 Page.delete_all 6 Page.delete_all
7 @cal_node = Node.root.children.create! :slug => "calendar" 7 @cal_node = Node.root.children.create! :slug => "calendar"
8 @draft = @cal_node.find_or_create_draft User.first 8 @draft = find_or_create_draft(@cal_node, User.first)
9 @draft.title = "99C3" 9 @draft.title = "99C3"
10 @draft.abstract = "The 99th Chaos Comunication Congress" 10 @draft.abstract = "The 99th Chaos Comunication Congress"
11 @draft.body = "Its totally freakin awesome" 11 @draft.body = "Its totally freakin awesome"
diff --git a/test/models/node_test.rb b/test/models/node_test.rb
index 91a4a6d..959387d 100644
--- a/test/models/node_test.rb
+++ b/test/models/node_test.rb
@@ -31,7 +31,7 @@ class NodeTest < ActiveSupport::TestCase
31 assert_nil test_node.draft.user 31 assert_nil test_node.draft.user
32 32
33 3.times do 33 3.times do
34 test_node.find_or_create_draft @user1 34 find_or_create_draft(test_node, @user1)
35 end 35 end
36 36
37 assert_equal 1, test_node.pages.length 37 assert_equal 1, test_node.pages.length
@@ -40,7 +40,7 @@ class NodeTest < ActiveSupport::TestCase
40 def test_user_gets_assigned_to_unlocked_draft 40 def test_user_gets_assigned_to_unlocked_draft
41 assert_not_nil @first_child.draft 41 assert_not_nil @first_child.draft
42 assert_nil @first_child.draft.user 42 assert_nil @first_child.draft.user
43 @first_child.find_or_create_draft @user1 43 find_or_create_draft(@first_child, @user1)
44 assert_equal @user1, @first_child.lock_owner 44 assert_equal @user1, @first_child.lock_owner
45 end 45 end
46 46
@@ -77,7 +77,7 @@ class NodeTest < ActiveSupport::TestCase
77 77
78 @first_child.publish_draft! 78 @first_child.publish_draft!
79 79
80 draft1 = @first_child.find_or_create_draft(@user1) 80 draft1 = find_or_create_draft(@first_child, @user1)
81 81
82 I18n.locale = :de 82 I18n.locale = :de
83 assert_equal "Hallo", draft1.title 83 assert_equal "Hallo", draft1.title
@@ -109,15 +109,15 @@ class NodeTest < ActiveSupport::TestCase
109 def test_find_or_create_draft_if_no_draft_exists 109 def test_find_or_create_draft_if_no_draft_exists
110 node = Node.root.children.create :slug => "xyz" 110 node = Node.root.children.create :slug => "xyz"
111 node.publish_draft! 111 node.publish_draft!
112 assert_not_nil node.find_or_create_draft( @user1 ) 112 assert_not_nil find_or_create_draft(node, @user1)
113 end 113 end
114 114
115 def test_find_or_create_draft_if_draft_exists_and_is_owned_by_user 115 def test_find_or_create_draft_if_draft_exists_and_is_owned_by_user
116 node = Node.root.children.create :slug => "xyz" 116 node = Node.root.children.create :slug => "xyz"
117 node.publish_draft! 117 node.publish_draft!
118 118
119 first_call = node.find_or_create_draft @user1 119 first_call = find_or_create_draft(node, @user1)
120 second_call = node.find_or_create_draft @user1 120 second_call = find_or_create_draft(node, @user1)
121 121
122 assert_equal first_call, second_call 122 assert_equal first_call, second_call
123 assert_equal 2, node.pages.count 123 assert_equal 2, node.pages.count
@@ -127,10 +127,10 @@ class NodeTest < ActiveSupport::TestCase
127 def test_exception_if_draft_exists_but_locked_by_another_user 127 def test_exception_if_draft_exists_but_locked_by_another_user
128 node = Node.root.children.create :slug => "xyz" 128 node = Node.root.children.create :slug => "xyz"
129 node.publish_draft! 129 node.publish_draft!
130 node.find_or_create_draft @user1 130 find_or_create_draft(node, @user1)
131 assert_equal @user1, node.lock_owner 131 assert_equal @user1, node.lock_owner
132 assert_raise(LockedByAnotherUser) do 132 assert_raise(LockedByAnotherUser) do
133 node.find_or_create_draft @user2 133 find_or_create_draft(node, @user2)
134 end 134 end
135 end 135 end
136 136
@@ -222,7 +222,7 @@ class NodeTest < ActiveSupport::TestCase
222 assert_equal 1, test_node.pages.length 222 assert_equal 1, test_node.pages.length
223 assert_not_nil test_node.head 223 assert_not_nil test_node.head
224 assert_nil test_node.draft 224 assert_nil test_node.draft
225 test_node.find_or_create_draft @user1 225 find_or_create_draft(test_node, @user1)
226 test_node.reload 226 test_node.reload
227 assert_equal 2, test_node.pages.length 227 assert_equal 2, test_node.pages.length
228 assert_not_nil test_node.draft 228 assert_not_nil test_node.draft
@@ -232,7 +232,7 @@ class NodeTest < ActiveSupport::TestCase
232 test "restoring a revision" do 232 test "restoring a revision" do
233 test_node = Node.root.children.create! :slug => "test_node" 233 test_node = Node.root.children.create! :slug => "test_node"
234 create_revisions( test_node, 3 ) 234 create_revisions( test_node, 3 )
235 test_node.find_or_create_draft @user1 235 find_or_create_draft(test_node, @user1)
236 test_node.reload 236 test_node.reload
237 237
238 assert_equal 4, test_node.pages.count 238 assert_equal 4, test_node.pages.count
@@ -250,7 +250,7 @@ class NodeTest < ActiveSupport::TestCase
250 draft.user = users(:aaron) 250 draft.user = users(:aaron)
251 draft.save 251 draft.save
252 node.publish_draft! 252 node.publish_draft!
253 new_draft = node.find_or_create_draft( users(:quentin) ) 253 new_draft = find_or_create_draft(node, users(:quentin))
254 assert_equal "aaron", new_draft.user.login 254 assert_equal "aaron", new_draft.user.login
255 end 255 end
256 256
@@ -261,7 +261,7 @@ class NodeTest < ActiveSupport::TestCase
261 draft.user = users(:aaron) 261 draft.user = users(:aaron)
262 draft.save! 262 draft.save!
263 node.publish_draft! 263 node.publish_draft!
264 new_draft = node.find_or_create_draft( users(:quentin) ) 264 new_draft = find_or_create_draft(node, users(:quentin))
265 new_draft.user_id = users(:quentin).id 265 new_draft.user_id = users(:quentin).id
266 new_draft.save 266 new_draft.save
267 node.publish_draft! 267 node.publish_draft!
@@ -359,31 +359,6 @@ class NodeTest < ActiveSupport::TestCase
359 assert_equal @user1, node.reload.lock_owner 359 assert_equal @user1, node.reload.lock_owner
360 end 360 end
361 361
362 test "wipe_draft! leaves a fresh autosave and its lock untouched" do
363 node = create_node_with_published_page
364 node.lock_for_editing!(@user1)
365 node.autosave!({ :title => "still typing" }, @user1)
366
367 node.wipe_draft!
368 node.reload
369
370 assert_not_nil node.autosave
371 assert_equal @user1, node.lock_owner
372 end
373
374 test "wipe_draft! destroys a stale, orphaned autosave and releases its lock" do
375 node = create_node_with_published_page
376 node.lock_for_editing!(@user1)
377 node.autosave!({ :title => "abandoned mid-session" }, @user1)
378 node.autosave.update_column(:updated_at, 2.days.ago)
379
380 node.wipe_draft!
381 node.reload
382
383 assert_nil node.autosave
384 assert_nil node.lock_owner
385 end
386
387 test "revert! is a safe no-op on a fresh node with only a draft" do 362 test "revert! is a safe no-op on a fresh node with only a draft" do
388 node = create_node_with_draft 363 node = create_node_with_draft
389 node.lock_for_editing!(@user1) 364 node.lock_for_editing!(@user1)
@@ -473,7 +448,7 @@ class NodeTest < ActiveSupport::TestCase
473 448
474 def create_revisions node, count 449 def create_revisions node, count
475 count.times do 450 count.times do
476 node.find_or_create_draft @user1 451 find_or_create_draft(node, @user1)
477 node.publish_draft! 452 node.publish_draft!
478 end 453 end
479 end 454 end
@@ -514,7 +489,7 @@ class NodeTest < ActiveSupport::TestCase
514 489
515 test "editor_search matches a partial substring, not just a whole word" do 490 test "editor_search matches a partial substring, not just a whole word" do
516 node = Node.root.children.create!(:slug => "editor_search_substring_test") 491 node = Node.root.children.create!(:slug => "editor_search_substring_test")
517 node.find_or_create_draft(@user1) 492 find_or_create_draft(node, @user1)
518 node.draft.update(:title => "Biometrics Conference") 493 node.draft.update(:title => "Biometrics Conference")
519 node.publish_draft! 494 node.publish_draft!
520 495
@@ -530,7 +505,7 @@ class NodeTest < ActiveSupport::TestCase
530 505
531 test "editor_search requires every word to match, but each word can match a different field" do 506 test "editor_search requires every word to match, but each word can match a different field" do
532 node = Node.root.children.create!(:slug => "editor_search_multiword_test") 507 node = Node.root.children.create!(:slug => "editor_search_multiword_test")
533 node.find_or_create_draft(@user1) 508 find_or_create_draft(node, @user1)
534 node.draft.update(:title => "Backspace e.V. Bamberg", :abstract => "Spiegelgraben 41, 96052 Bamberg") 509 node.draft.update(:title => "Backspace e.V. Bamberg", :abstract => "Spiegelgraben 41, 96052 Bamberg")
535 node.publish_draft! 510 node.publish_draft!
536 511
@@ -540,9 +515,9 @@ class NodeTest < ActiveSupport::TestCase
540 515
541 test "drafts_and_autosaves without a user sorts by recency only" do 516 test "drafts_and_autosaves without a user sorts by recency only" do
542 older = Node.root.children.create!(:slug => "drafts_order_older") 517 older = Node.root.children.create!(:slug => "drafts_order_older")
543 older.find_or_create_draft(@user1) 518 find_or_create_draft(older, @user1)
544 newer = Node.root.children.create!(:slug => "drafts_order_newer") 519 newer = Node.root.children.create!(:slug => "drafts_order_newer")
545 newer.find_or_create_draft(@user1) 520 find_or_create_draft(newer, @user1)
546 521
547 result = Node.drafts_and_autosaves.to_a 522 result = Node.drafts_and_autosaves.to_a
548 assert result.index(newer) < result.index(older) 523 assert result.index(newer) < result.index(older)
@@ -564,7 +539,7 @@ class NodeTest < ActiveSupport::TestCase
564 539
565 test "recently_changed includes a node whose head was recently published" do 540 test "recently_changed includes a node whose head was recently published" do
566 node = Node.root.children.create!(:slug => "recent_changed_published") 541 node = Node.root.children.create!(:slug => "recent_changed_published")
567 node.find_or_create_draft(@user1) 542 find_or_create_draft(node, @user1)
568 node.autosave!({:title => "v1"}, @user1) 543 node.autosave!({:title => "v1"}, @user1)
569 node.save_draft!(@user1) 544 node.save_draft!(@user1)
570 node.publish_draft! 545 node.publish_draft!
@@ -574,7 +549,7 @@ class NodeTest < ActiveSupport::TestCase
574 549
575 test "recently_changed excludes a node only touched by locking or unlocking after an old publish" do 550 test "recently_changed excludes a node only touched by locking or unlocking after an old publish" do
576 node = Node.root.children.create!(:slug => "recent_changed_lock_only") 551 node = Node.root.children.create!(:slug => "recent_changed_lock_only")
577 node.find_or_create_draft(@user1) 552 find_or_create_draft(node, @user1)
578 node.autosave!({:title => "v1"}, @user1) 553 node.autosave!({:title => "v1"}, @user1)
579 node.save_draft!(@user1) 554 node.save_draft!(@user1)
580 node.publish_draft! 555 node.publish_draft!
diff --git a/test/models/page_test.rb b/test/models/page_test.rb
index 24bc7c5..edb7c37 100644
--- a/test/models/page_test.rb
+++ b/test/models/page_test.rb
@@ -13,15 +13,15 @@ class PageTest < ActiveSupport::TestCase
13 n2 = Node.root.children.create! :slug => "two" 13 n2 = Node.root.children.create! :slug => "two"
14 14
15 # get the drafts and assign a user to it 15 # get the drafts and assign a user to it
16 assert_not_nil d1 = n1.find_or_create_draft( @user1 ) 16 assert_not_nil d1 = find_or_create_draft(n1, @user1)
17 assert_not_nil d3 = n2.find_or_create_draft( @user1 ) 17 assert_not_nil d3 = find_or_create_draft(n2, @user1)
18 18
19 # tag and double publish so we have 4 pages tagged with "update" 19 # tag and double publish so we have 4 pages tagged with "update"
20 d1.tag_list = "update" 20 d1.tag_list = "update"
21 d1.save 21 d1.save
22 n1.publish_draft! 22 n1.publish_draft!
23 23
24 d2 = n1.find_or_create_draft @user1 24 d2 = find_or_create_draft(n1, @user1)
25 n1.publish_draft! 25 n1.publish_draft!
26 26
27 27
@@ -29,7 +29,7 @@ class PageTest < ActiveSupport::TestCase
29 d3.save 29 d3.save
30 n2.publish_draft! 30 n2.publish_draft!
31 31
32 d4 = n2.find_or_create_draft @user1 32 d4 = find_or_create_draft(n2, @user1)
33 n2.publish_draft! 33 n2.publish_draft!
34 34
35 # Set up two options hashes for the assertions 35 # Set up two options hashes for the assertions
@@ -49,7 +49,7 @@ class PageTest < ActiveSupport::TestCase
49 49
50 def test_before_save_rewrite_links_in_body 50 def test_before_save_rewrite_links_in_body
51 n = Node.root.children.create :slug => "link_test" 51 n = Node.root.children.create :slug => "link_test"
52 d = n.find_or_create_draft @user1 52 d = find_or_create_draft(n, @user1)
53 53
54 before = "<h1>Hello World</h1>\n" \ 54 before = "<h1>Hello World</h1>\n" \
55 "<a href=\"/club\" target=\"_blank\">Linkme</a>" 55 "<a href=\"/club\" target=\"_blank\">Linkme</a>"
@@ -67,7 +67,7 @@ class PageTest < ActiveSupport::TestCase
67 67
68 def test_before_save_rewrite_links_in_body_if_no_locale_prefix_present 68 def test_before_save_rewrite_links_in_body_if_no_locale_prefix_present
69 n = Node.root.children.create :slug => "link_test" 69 n = Node.root.children.create :slug => "link_test"
70 d = n.find_or_create_draft @user1 70 d = find_or_create_draft(n, @user1)
71 71
72 before = "<h1>Hello World</h1>\n" \ 72 before = "<h1>Hello World</h1>\n" \
73 "<a href=\"/de/club\" target=\"_blank\">Linkme</a>" 73 "<a href=\"/de/club\" target=\"_blank\">Linkme</a>"
@@ -85,7 +85,7 @@ class PageTest < ActiveSupport::TestCase
85 85
86 def test_before_save_rewrite_links_skips_on_external_links 86 def test_before_save_rewrite_links_skips_on_external_links
87 n = Node.root.children.create :slug => "link_test" 87 n = Node.root.children.create :slug => "link_test"
88 d = n.find_or_create_draft @user1 88 d = find_or_create_draft(n, @user1)
89 89
90 before = "<h1>Hello World</h1>\n" \ 90 before = "<h1>Hello World</h1>\n" \
91 "<a href=\"http://www.ccc.de/club\" target=\"_blank\">Linkme</a>" 91 "<a href=\"http://www.ccc.de/club\" target=\"_blank\">Linkme</a>"
@@ -145,7 +145,7 @@ class PageTest < ActiveSupport::TestCase
145 145
146 test "a page scheduled for future publication is not yet public even after being published" do 146 test "a page scheduled for future publication is not yet public even after being published" do
147 node = Node.root.children.create!(slug: "preview-scheduled-test") 147 node = Node.root.children.create!(slug: "preview-scheduled-test")
148 draft = node.find_or_create_draft(@user1) 148 draft = find_or_create_draft(node, @user1)
149 draft.title = "Scheduled test" 149 draft.title = "Scheduled test"
150 draft.published_at = 1.day.from_now 150 draft.published_at = 1.day.from_now
151 draft.save! 151 draft.save!
@@ -160,13 +160,13 @@ class PageTest < ActiveSupport::TestCase
160 160
161 test "a superseded page is no longer the head, even though it was once published" do 161 test "a superseded page is no longer the head, even though it was once published" do
162 node = Node.root.children.create!(slug: "preview-superseded-test") 162 node = Node.root.children.create!(slug: "preview-superseded-test")
163 first_draft = node.find_or_create_draft(@user1) 163 first_draft = find_or_create_draft(node, @user1)
164 first_draft.title = "First version" 164 first_draft.title = "First version"
165 first_draft.save! 165 first_draft.save!
166 first_token = first_draft.ensure_preview_token! 166 first_token = first_draft.ensure_preview_token!
167 node.publish_draft! 167 node.publish_draft!
168 168
169 second_draft = node.find_or_create_draft(@user1) 169 second_draft = find_or_create_draft(node, @user1)
170 second_draft.title = "Second version" 170 second_draft.title = "Second version"
171 second_draft.save! 171 second_draft.save!
172 node.publish_draft! 172 node.publish_draft!
@@ -229,12 +229,12 @@ class PageTest < ActiveSupport::TestCase
229 229
230 def test_diff_against_inline_keeps_tags_and_marks_only_the_changed_word 230 def test_diff_against_inline_keeps_tags_and_marks_only_the_changed_word
231 n = Node.root.children.create! :slug => "diff_against_test" 231 n = Node.root.children.create! :slug => "diff_against_test"
232 d = n.find_or_create_draft @user1 232 d = find_or_create_draft(n, @user1)
233 d.title = "Old heading" 233 d.title = "Old heading"
234 d.save! 234 d.save!
235 n.publish_draft! 235 n.publish_draft!
236 236
237 d2 = n.find_or_create_draft @user1 237 d2 = find_or_create_draft(n, @user1)
238 d2.title = "New heading" 238 d2.title = "New heading"
239 d2.save! 239 d2.save!
240 240
@@ -246,12 +246,12 @@ class PageTest < ActiveSupport::TestCase
246 246
247 def test_diff_against_side_by_side_returns_two_annotated_strings 247 def test_diff_against_side_by_side_returns_two_annotated_strings
248 n = Node.root.children.create! :slug => "diff_against_sbs_test" 248 n = Node.root.children.create! :slug => "diff_against_sbs_test"
249 d = n.find_or_create_draft @user1 249 d = find_or_create_draft(n, @user1)
250 d.title = "Old heading" 250 d.title = "Old heading"
251 d.save! 251 d.save!
252 n.publish_draft! 252 n.publish_draft!
253 253
254 d2 = n.find_or_create_draft @user1 254 d2 = find_or_create_draft(n, @user1)
255 d2.title = "New heading" 255 d2.title = "New heading"
256 d2.save! 256 d2.save!
257 257
@@ -263,12 +263,12 @@ class PageTest < ActiveSupport::TestCase
263 263
264 test "diff_against handles an inserted paragraph split without corrupting the document" do 264 test "diff_against handles an inserted paragraph split without corrupting the document" do
265 n = Node.root.children.create! :slug => "paragraph_split_test" 265 n = Node.root.children.create! :slug => "paragraph_split_test"
266 d = n.find_or_create_draft @user1 266 d = find_or_create_draft(n, @user1)
267 d.body = "<p>Der Vortragsraum ist ab 19 Uhr geöffnet, der Zugang erfolgt über den Hinterhof.</p>" 267 d.body = "<p>Der Vortragsraum ist ab 19 Uhr geöffnet, der Zugang erfolgt über den Hinterhof.</p>"
268 d.save! 268 d.save!
269 n.publish_draft! 269 n.publish_draft!
270 270
271 d2 = n.find_or_create_draft @user1 271 d2 = find_or_create_draft(n, @user1)
272 d2.body = "<p>Der Vortragsraum ist ab 19 Uhr geöffnet,</p>\n<p>der Zugang erfolgt über den Hinterhof.</p>" 272 d2.body = "<p>Der Vortragsraum ist ab 19 Uhr geöffnet,</p>\n<p>der Zugang erfolgt über den Hinterhof.</p>"
273 d2.save! 273 d2.save!
274 274
@@ -281,13 +281,13 @@ class PageTest < ActiveSupport::TestCase
281 281
282 test "diff_against reports tag and template changes" do 282 test "diff_against reports tag and template changes" do
283 n = Node.root.children.create! :slug => "field_diff_test" 283 n = Node.root.children.create! :slug => "field_diff_test"
284 d = n.find_or_create_draft @user1 284 d = find_or_create_draft(n, @user1)
285 d.tag_list = "update" 285 d.tag_list = "update"
286 d.template_name = "standard_template" 286 d.template_name = "standard_template"
287 d.save! 287 d.save!
288 n.publish_draft! 288 n.publish_draft!
289 289
290 d2 = n.find_or_create_draft @user1 290 d2 = find_or_create_draft(n, @user1)
291 d2.tag_list = "update, pressemitteilung" 291 d2.tag_list = "update, pressemitteilung"
292 d2.template_name = "title_only" 292 d2.template_name = "title_only"
293 d2.save! 293 d2.save!
@@ -303,7 +303,7 @@ class PageTest < ActiveSupport::TestCase
303 303
304 test "diff_against reports added and removed assets by filename" do 304 test "diff_against reports added and removed assets by filename" do
305 n = Node.root.children.create! :slug => "asset_diff_test" 305 n = Node.root.children.create! :slug => "asset_diff_test"
306 d = n.find_or_create_draft @user1 306 d = find_or_create_draft(n, @user1)
307 d.save! 307 d.save!
308 n.publish_draft! 308 n.publish_draft!
309 309
@@ -311,7 +311,7 @@ class PageTest < ActiveSupport::TestCase
311 removed_asset = Asset.create!(:upload_file_name => "removed.pdf", :upload_content_type => "application/pdf", :upload_file_size => 1) 311 removed_asset = Asset.create!(:upload_file_name => "removed.pdf", :upload_content_type => "application/pdf", :upload_file_size => 1)
312 n.head.update_assets([kept_asset.id, removed_asset.id]) 312 n.head.update_assets([kept_asset.id, removed_asset.id])
313 313
314 d2 = n.find_or_create_draft @user1 314 d2 = find_or_create_draft(n, @user1)
315 added_asset = Asset.create!(:upload_file_name => "added.png", :upload_content_type => "image/png", :upload_file_size => 1) 315 added_asset = Asset.create!(:upload_file_name => "added.png", :upload_content_type => "image/png", :upload_file_size => 1)
316 d2.update_assets([kept_asset.id, added_asset.id]) 316 d2.update_assets([kept_asset.id, added_asset.id])
317 d2.save! 317 d2.save!
@@ -324,12 +324,12 @@ class PageTest < ActiveSupport::TestCase
324 324
325 test "diff_against with an explicit locale compares that locale's own translation on each side" do 325 test "diff_against with an explicit locale compares that locale's own translation on each side" do
326 n = Node.root.children.create!(:slug => "diff_locale_test") 326 n = Node.root.children.create!(:slug => "diff_locale_test")
327 d = n.find_or_create_draft(@user1) 327 d = find_or_create_draft(n, @user1)
328 Globalize.with_locale(:en) { d.update!(:title => "Old English") } 328 Globalize.with_locale(:en) { d.update!(:title => "Old English") }
329 d.save! 329 d.save!
330 n.publish_draft! 330 n.publish_draft!
331 331
332 d2 = n.find_or_create_draft(@user1) 332 d2 = find_or_create_draft(n, @user1)
333 Globalize.with_locale(:en) { d2.update!(:title => "New English") } 333 Globalize.with_locale(:en) { d2.update!(:title => "New English") }
334 d2.save! 334 d2.save!
335 335
@@ -341,11 +341,11 @@ class PageTest < ActiveSupport::TestCase
341 341
342 test "diff_against with an explicit locale ignores content in other locales entirely" do 342 test "diff_against with an explicit locale ignores content in other locales entirely" do
343 n = Node.root.children.create!(:slug => "diff_locale_isolation_test") 343 n = Node.root.children.create!(:slug => "diff_locale_isolation_test")
344 d = n.find_or_create_draft(@user1) 344 d = find_or_create_draft(n, @user1)
345 d.save! 345 d.save!
346 n.publish_draft! 346 n.publish_draft!
347 347
348 d2 = n.find_or_create_draft(@user1) 348 d2 = find_or_create_draft(n, @user1)
349 Globalize.with_locale(:de) { d2.update!(:title => "Nur Deutsch geändert") } 349 Globalize.with_locale(:de) { d2.update!(:title => "Nur Deutsch geändert") }
350 d2.save! 350 d2.save!
351 351
@@ -356,11 +356,11 @@ class PageTest < ActiveSupport::TestCase
356 356
357 test "locale_diff_summary flags a locale that only exists on one side as changed" do 357 test "locale_diff_summary flags a locale that only exists on one side as changed" do
358 n = Node.root.children.create!(:slug => "diff_locale_summary_test") 358 n = Node.root.children.create!(:slug => "diff_locale_summary_test")
359 d = n.find_or_create_draft(@user1) 359 d = find_or_create_draft(n, @user1)
360 d.save! 360 d.save!
361 n.publish_draft! 361 n.publish_draft!
362 362
363 d2 = n.find_or_create_draft(@user1) 363 d2 = find_or_create_draft(n, @user1)
364 Globalize.with_locale(:en) { d2.update!(:title => "New English translation") } 364 Globalize.with_locale(:en) { d2.update!(:title => "New English translation") }
365 d2.save! 365 d2.save!
366 366
diff --git a/test/test_helper.rb b/test/test_helper.rb
index c494c68..7ab9c8c 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -67,4 +67,9 @@ class ActiveSupport::TestCase
67 node.reload 67 node.reload
68 node 68 node
69 end 69 end
70
71 def find_or_create_draft(node, user)
72 node.lock_for_editing!(user)
73 node.draft || node.create_new_draft(user)
74 end
70end 75end