I made sure that my MessageBoards would acts_as_list for Forum:
class Forum < ActiveRecord::Base
#This is a superset of message boards
has_many :message_boards, :order => ‘position’, :dependent
=> :destroy
…
end
class MessageBoard < ActiveRecord::Base
#This is a subset of forums
belongs_to :forum
#This causes MessageBoard to act as a list
#it uses order as its index
acts_as_list :scope => :forum_id
…
end
But for some reason, the unit tests file indicates several failures:
#in forum_test.rb
def test_board_up
forum = Forum.new(:title => ‘basic’)
assert forum.valid?, “forum is invalid, expect more failures”
assert_equal forum.title, ‘basic’
board = []
board[0] = forum.message_boards.build(:title => ‘#1’, :description
=> ‘one’
)
board[2] = forum.message_boards.build(:title => ‘#3’, :description
=> ‘thre
e’)
board[1] = forum.message_boards.build(:title => ‘#2’, :description
=> ‘two’
)
forum.message_boards[2].move_lower
forum.save
board_temp = forum.message_boards
board_temp.each{|b| puts b.title}
for num in 0…2
assert_equal board_temp[num].title, board[num].title
assert_equal board_temp[num].description, board[num].description
end
forum.destroy
end
def test_board_down
forum = Forum.new(:title => ‘basic’)
assert forum.valid?, “forum is invalid, expect more failures”
assert_equal forum.title, ‘basic’
board = []
board[0] = forum.message_boards.build(:title => ‘#1’, :description
=> ‘one’
)
board[2] = forum.message_boards.build(:title => ‘#3’, :description
=> ‘thre
e’)
board[1] = forum.message_boards.build(:title => ‘#2’, :description
=> ‘two’
)
board[2].move_higher
forum.save
board_temp = forum.message_boards
board_temp.each{|b| puts b.title}
for num in 0…2
assert_equal board_temp[num].title, board[num].title
assert_equal board_temp[num].description, board[num].description
end
forum.destroy
end
Loaded suite forum_test
Started
.#1
#3
#2
F.#1
#3
#2
F…
Finished in 0.597854 seconds.
-
Failure:
test_board_down(ForumTest)
[forum_test.rb:133:intest_board_down' forum_test.rb:132:in
each’
forum_test.rb:132:in `test_board_down’]:
<"#3"> expected but was
<"#2">. -
Failure:
test_board_up(ForumTest)
[forum_test.rb:114:intest_board_up' forum_test.rb:113:in
each’
forum_test.rb:113:in `test_board_up’]:
<"#3"> expected but was
<"#2">.
10 tests, 43 assertions, 2 failures, 0 errors
Why doesn’t move_higher and move_lower affect forum.message_boards in
any way?