Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion lib/closure_tree/hierarchy_maintenance.rb
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ def _ct_after_save
_ct_reorder_prior_siblings_if_parent_changed
_ct_reorder_siblings
elsif saved_changes[_ct.order_column_sym]
_ct_reorder_siblings(saved_changes[_ct.order_column_sym].min)
min = saved_changes[_ct.order_column_sym].min
_ct_reorder_siblings(min.negative? ? nil : min)
end
end
if saved_changes[_ct.parent_column_name] && !@was_new_record
Expand Down
18 changes: 18 additions & 0 deletions test/closure_tree/label_order_value_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,24 @@ def setup
assert_equal 1, c.reload.order_value
end

test 'prepend_child should produce 0-based order values when reordering within the same parent' do
root = Label.create(name: 'root')
a = root.children.create(name: 'a')
b = root.children.create(name: 'b')
c = root.children.create(name: 'c')

assert_equal 0, a.order_value
assert_equal 1, b.order_value
assert_equal 2, c.order_value

# Move c to be the first child (same parent, reorder only)
root.prepend_child(c)

assert_equal 0, c.reload.order_value
assert_equal 1, a.reload.order_value
assert_equal 2, b.reload.order_value
end

test 'should set order_value on roots for LabelWithoutRootOrdering' do
root = LabelWithoutRootOrdering.create(name: 'root')
assert_nil root.order_value
Expand Down