Files
fizzy/test/models/column/positioned_test.rb
T
Tomas Costantino 1f8c9aebfd update tests
2025-12-09 11:32:13 +01:00

93 lines
2.6 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 surrounding columns" do
board = boards(:writebook)
column = board.columns.sorted.last
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 surrounding columns" do
board = boards(:writebook)
columns = board.columns.sorted.to_a
column_to_destroy = columns[1]
left_neighbor = columns[0]
right_neighbor = columns[2]
original_left_updated_at = left_neighbor.updated_at
original_right_updated_at = right_neighbor.updated_at
travel 1.second do
column_to_destroy.destroy
end
assert_operator left_neighbor.reload.updated_at, :>, original_left_updated_at
assert_operator right_neighbor.reload.updated_at, :>, original_right_updated_at
end
end