Specify query order in STI test

This fixes an intermittent test failure where query sometimes
returned records in an order other than that in which they
were created. This is not a bug. Without an order clause, SQL
queries are expected to return records in any order.
This commit is contained in:
Jared Beck 2015-12-22 23:09:33 -05:00
parent 6df3532b7f
commit fc07a4db7d
1 changed files with 6 additions and 6 deletions

View File

@ -1,7 +1,6 @@
require 'test_helper' require 'test_helper'
class InheritanceColumnTest < ActiveSupport::TestCase class InheritanceColumnTest < ActiveSupport::TestCase
context 'STI models' do context 'STI models' do
setup do setup do
@animal = Animal.create :name => 'Animal' @animal = Animal.create :name => 'Animal'
@ -28,16 +27,17 @@ class InheritanceColumnTest < ActiveSupport::TestCase
# For some reason `@dog.versions` doesn't include the final `destroy` version. # For some reason `@dog.versions` doesn't include the final `destroy` version.
# Neither do `@dog.versions.scoped` nor `@dog.versions(true)` nor `@dog.versions.reload`. # Neither do `@dog.versions.scoped` nor `@dog.versions(true)` nor `@dog.versions.reload`.
dog_versions = PaperTrail::Version.where(:item_id => @dog.id) dog_versions = PaperTrail::Version.where(:item_id => @dog.id).
order(PaperTrail.timestamp_field)
assert_equal 4, dog_versions.count assert_equal 4, dog_versions.count
assert_nil dog_versions.first.reify assert_nil dog_versions.first.reify
dog_versions[1..-1].each { |v| assert_equal 'Dog', v.reify.class.name } assert_equal %w[NilClass Dog Dog Dog], dog_versions.map { |v| v.reify.class.name }
cat_versions = PaperTrail::Version.where(:item_id => @cat.id) cat_versions = PaperTrail::Version.where(:item_id => @cat.id).
order(PaperTrail.timestamp_field)
assert_equal 4, cat_versions.count assert_equal 4, cat_versions.count
assert_nil cat_versions.first.reify assert_nil cat_versions.first.reify
cat_versions[1..-1].each { |v| assert_equal 'Cat', v.reify.class.name } assert_equal %w[NilClass Cat Cat Cat], cat_versions.map { |v| v.reify.class.name }
end end
end end
end end