diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-07-27 02:53:21 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-07-27 02:53:21 +0200 |
| commit | 180b5feba092db1339f7bb3217e91f0b22239bc5 (patch) | |
| tree | ed2912eb568639d027e2d54bc4f28c7a9406f7e0 /test/models | |
| parent | 102c33264fd1463cd88aa8245413e7b331dd9632 (diff) | |
Surface held locks in the dashboard's work-in-progress widget
A lock with no draft or autosave behind it was invisible to
everyone including its holder, until the next editor collided
with it. work_in_progress now admits those nodes, and the
widget names the holder rather than the last editor on any
locked row.
Also flips the ordering to stalest-first, so a backlog reads as a queue
rather than a feed, and gives the heading a real total: the count came
from the already-limited relation and could never exceed five.
Diffstat (limited to 'test/models')
| -rw-r--r-- | test/models/node_test.rb | 20 | ||||
| -rw-r--r-- | test/models/node_trash_test.rb | 2 |
2 files changed, 16 insertions, 6 deletions
diff --git a/test/models/node_test.rb b/test/models/node_test.rb index 8bdb90ee..c5b0d6a2 100644 --- a/test/models/node_test.rb +++ b/test/models/node_test.rb | |||
| @@ -522,17 +522,17 @@ class NodeTest < ActiveSupport::TestCase | |||
| 522 | assert_equal 0, Node.editor_search("Backspace Nonexistentstreet").count | 522 | assert_equal 0, Node.editor_search("Backspace Nonexistentstreet").count |
| 523 | end | 523 | end |
| 524 | 524 | ||
| 525 | test "drafts_and_autosaves without a user sorts by recency only" do | 525 | test "work_in_progress without a user sorts by oldest-first" do |
| 526 | older = Node.root.children.create!(:slug => "drafts_order_older") | 526 | older = Node.root.children.create!(:slug => "drafts_order_older") |
| 527 | find_or_create_draft(older, @user1) | 527 | find_or_create_draft(older, @user1) |
| 528 | newer = Node.root.children.create!(:slug => "drafts_order_newer") | 528 | newer = Node.root.children.create!(:slug => "drafts_order_newer") |
| 529 | find_or_create_draft(newer, @user1) | 529 | find_or_create_draft(newer, @user1) |
| 530 | 530 | ||
| 531 | result = Node.drafts_and_autosaves.to_a | 531 | result = Node.work_in_progress.to_a |
| 532 | assert result.index(newer) < result.index(older) | 532 | assert result.index(older) < result.index(newer) |
| 533 | end | 533 | end |
| 534 | 534 | ||
| 535 | test "drafts_and_autosaves with a user puts their own locked nodes first, regardless of recency" do | 535 | test "work_in_progress with a user puts their own locked nodes first, regardless of recency" do |
| 536 | mine = Node.root.children.create!(:slug => "drafts_order_mine") | 536 | mine = Node.root.children.create!(:slug => "drafts_order_mine") |
| 537 | mine.lock_for_editing!(@user1) | 537 | mine.lock_for_editing!(@user1) |
| 538 | mine.autosave!({:title => "mine"}, @user1) | 538 | mine.autosave!({:title => "mine"}, @user1) |
| @@ -542,10 +542,20 @@ class NodeTest < ActiveSupport::TestCase | |||
| 542 | someone_elses_newer.lock_for_editing!(other_user) | 542 | someone_elses_newer.lock_for_editing!(other_user) |
| 543 | someone_elses_newer.autosave!({:title => "theirs"}, other_user) | 543 | someone_elses_newer.autosave!({:title => "theirs"}, other_user) |
| 544 | 544 | ||
| 545 | result = Node.drafts_and_autosaves(current_user_id: @user1.id).to_a | 545 | result = Node.work_in_progress(current_user_id: @user1.id).to_a |
| 546 | assert result.index(mine) < result.index(someone_elses_newer) | 546 | assert result.index(mine) < result.index(someone_elses_newer) |
| 547 | end | 547 | end |
| 548 | 548 | ||
| 549 | test "work_in_progress includes a node that is only locked" do | ||
| 550 | locked = create_node_with_published_page | ||
| 551 | locked.lock_for_editing!(@user1) | ||
| 552 | locked.reload | ||
| 553 | |||
| 554 | assert_nil locked.draft | ||
| 555 | assert_nil locked.autosave | ||
| 556 | assert_includes Node.work_in_progress.to_a, locked | ||
| 557 | end | ||
| 558 | |||
| 549 | test "autosave! carries over the current related assets to the newly created autosave row" do | 559 | test "autosave! carries over the current related assets to the newly created autosave row" do |
| 550 | node = Node.root.children.create!(:slug => "autosave_asset_carryover_test") | 560 | node = Node.root.children.create!(:slug => "autosave_asset_carryover_test") |
| 551 | user = User.find_by_login("quentin") | 561 | user = User.find_by_login("quentin") |
diff --git a/test/models/node_trash_test.rb b/test/models/node_trash_test.rb index 52069d75..3947f20e 100644 --- a/test/models/node_trash_test.rb +++ b/test/models/node_trash_test.rb | |||
| @@ -161,7 +161,7 @@ class NodeTrashTest < ActiveSupport::TestCase | |||
| 161 | node = create_node_with_published_page | 161 | node = create_node_with_published_page |
| 162 | node.trash!(@user1) | 162 | node.trash!(@user1) |
| 163 | 163 | ||
| 164 | ids = Node.drafts_and_autosaves.pluck(:id) | 164 | ids = Node.work_in_progress.pluck(:id) |
| 165 | assert_not_includes ids, Node.trash.id | 165 | assert_not_includes ids, Node.trash.id |
| 166 | assert_not_includes ids, node.id | 166 | assert_not_includes ids, node.id |
| 167 | end | 167 | end |
