summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2026-07-22 02:24:40 +0200
committererdgeist <erdgeist@erdgeist.org>2026-07-22 02:24:40 +0200
commit99be82718b436708da00fb2a0e736c628159283d (patch)
tree27e25dd5688226f6278f4e63467e4cf0a4c76659
parent8f3f58e3010fa7c923b77b7d2050175890b58f9b (diff)
Fix Node#title ignoring autosave
head ? head.title : draft.title never accounted for a node with only an autosave, reuses editable_page
-rw-r--r--app/models/node.rb2
-rw-r--r--test/models/node_test.rb11
2 files changed, 11 insertions, 2 deletions
diff --git a/app/models/node.rb b/app/models/node.rb
index a440c2f..0796ea4 100644
--- a/app/models/node.rb
+++ b/app/models/node.rb
@@ -443,7 +443,7 @@ class Node < ApplicationRecord
443 end 443 end
444 444
445 def title 445 def title
446 head ? head.title : draft.title 446 editable_page&.title
447 end 447 end
448 448
449 def update_unique_names? 449 def update_unique_names?
diff --git a/test/models/node_test.rb b/test/models/node_test.rb
index ab66f81..d7e4dd0 100644
--- a/test/models/node_test.rb
+++ b/test/models/node_test.rb
@@ -268,7 +268,6 @@ class NodeTest < ActiveSupport::TestCase
268 assert_equal "quentin", node.head.user.login 268 assert_equal "quentin", node.head.user.login
269 end 269 end
270 270
271
272 test "update?" do 271 test "update?" do
273 Node.root.descendants.delete_all 272 Node.root.descendants.delete_all
274 updates = Node.root.children.create!( :slug => "updates" ) 273 updates = Node.root.children.create!( :slug => "updates" )
@@ -359,6 +358,16 @@ class NodeTest < ActiveSupport::TestCase
359 assert_equal @user1, node.reload.lock_owner 358 assert_equal @user1, node.reload.lock_owner
360 end 359 end
361 360
361 test "title reads from autosave when neither draft nor head exists yet" do
362 node = Node.root.children.create!(:slug => "title_autosave_only_test")
363 node.draft.destroy
364 node.update_column(:draft_id, nil)
365 node.lock_for_editing!(users(:quentin))
366 node.autosave!({ :title => "autosave-only title" }, users(:quentin))
367
368 assert_equal "autosave-only title", node.reload.title
369 end
370
362 test "revert! is a safe no-op on a fresh node with only a draft" do 371 test "revert! is a safe no-op on a fresh node with only a draft" do
363 node = create_node_with_draft 372 node = create_node_with_draft
364 node.lock_for_editing!(@user1) 373 node.lock_for_editing!(@user1)