Files
fizzy/test/models/column/positioned_test.rb
T
2025-12-09 10:30:01 +01:00

89 lines
2.4 KiB
Ruby

require "test_helper"
class Column::PositionedTest < ActiveSupport::TestCase
test "auto position new columns" do
board = boards(:writebook)
max_position = board.columns.maximum(:position)
new_column = board.columns.create!(name: "New Column", color: "#000000")
assert_equal max_position + 1, new_column.position
end
test "move column to the left" do
board = boards(:writebook)
columns = board.columns.sorted.to_a
column_a = columns[0]
column_b = columns[1]
original_position_a = column_a.position
original_position_b = column_b.position
column_b.move_left
assert_equal original_position_b, column_a.reload.position
assert_equal original_position_a, column_b.reload.position
end
test "move left when already at leftmost position" do
board = boards(:writebook)
leftmost_column = board.columns.sorted.first
original_position = leftmost_column.position
leftmost_column.move_left
assert_equal original_position, leftmost_column.reload.position
end
test "move column to the right" do
board = boards(:writebook)
columns = board.columns.sorted.to_a
column_a = columns[0]
column_b = columns[1]
original_position_a = column_a.position
original_position_b = column_b.position
column_a.move_right
assert_equal original_position_b, column_a.reload.position
assert_equal original_position_a, column_b.reload.position
end
test "move right when already at rightmost position" do
board = boards(:writebook)
rightmost_column = board.columns.sorted.last
original_position = rightmost_column.position
rightmost_column.move_right
assert_equal original_position, rightmost_column.reload.position
end
test "creating a column touches sibling columns" do
board = boards(:writebook)
column = board.columns.first
original_updated_at = column.updated_at
travel 1.second do
board.columns.create!(name: "New Column")
end
assert_operator column.reload.updated_at, :>, original_updated_at
end
test "destroying a column touches sibling columns" do
board = boards(:writebook)
columns = board.columns.sorted.to_a
column_to_keep = columns.first
column_to_destroy = columns.last
original_updated_at = column_to_keep.updated_at
travel 1.second do
column_to_destroy.destroy
end
assert_operator column_to_keep.reload.updated_at, :>, original_updated_at
end
end