diff options
author | Heinrich Lee Yu <heinrich@gitlab.com> | 2019-08-01 01:57:04 +0800 |
---|---|---|
committer | Heinrich Lee Yu <heinrich@gitlab.com> | 2019-08-01 02:04:10 +0800 |
commit | 8992013689e358328d9ae74623b9b29d80f7b17b (patch) | |
tree | 2242db40a6b13180192ea29544aac3fc85bb6036 /spec/support/shared_examples | |
parent | 2e7f4bbb66b4bae61c9dd09234e8435c91e7e986 (diff) | |
download | gitlab-ce-8992013689e358328d9ae74623b9b29d80f7b17b.tar.gz |
Fix bug when moving batches of items to the endrename-relative-position-move-to-end
Starts from START_POSITION when there are no existing
positions.
Also improves the test to actually test the behavior
Diffstat (limited to 'spec/support/shared_examples')
-rw-r--r-- | spec/support/shared_examples/relative_positioning_shared_examples.rb | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/spec/support/shared_examples/relative_positioning_shared_examples.rb b/spec/support/shared_examples/relative_positioning_shared_examples.rb index 5ee62644c54..45eacf3721e 100644 --- a/spec/support/shared_examples/relative_positioning_shared_examples.rb +++ b/spec/support/shared_examples/relative_positioning_shared_examples.rb @@ -9,24 +9,27 @@ RSpec.shared_examples "a class that supports relative positioning" do create(factory, params.merge(default_params)) end - describe '.move_to_end' do - it 'moves the object to the end' do - item1.update(relative_position: 5) - item2.update(relative_position: 15) - - described_class.move_to_end([item1, item2]) + describe '.move_nulls_to_end' do + it 'moves items with null relative_position to the end' do + described_class.move_nulls_to_end([item1, item2]) expect(item2.prev_relative_position).to eq item1.relative_position expect(item1.prev_relative_position).to eq nil expect(item2.next_relative_position).to eq nil end + it 'moves the item near the start position when there are no existing positions' do + described_class.move_nulls_to_end([item1]) + + expect(item1.relative_position).to eq(described_class::START_POSITION + described_class::IDEAL_DISTANCE) + end + it 'does not perform any moves if all items have their relative_position set' do item1.update!(relative_position: 1) expect(item1).not_to receive(:save) - described_class.move_to_end([item1]) + described_class.move_nulls_to_end([item1]) end end |