spec: get acts_as_list tests running again

test plan:
check jenkins output
confirm it runs now

Change-Id: I25c9e677ae754e1cfcb9562aef6585ff6e40b0b7
Reviewed-on: https://gerrit.instructure.com/107796
Tested-by: Jenkins
Reviewed-by: Landon Wilkins <lwilkins@instructure.com>
Product-Review: Landon Wilkins <lwilkins@instructure.com>
QA-Review: Landon Wilkins <lwilkins@instructure.com>
This commit is contained in:
Jon Jensen 2017-04-06 15:49:23 -06:00
parent cb53fc0b26
commit 2f90c122fe
4 changed files with 21 additions and 29 deletions

View File

@ -59,7 +59,7 @@ module ActiveRecord
when Hash when Hash
scope scope
else else
raise InvalidArgument.new("scope must be nil, a symbol, an array, or a hash") raise ArgumentError.new("scope must be nil, a symbol, an array, or a hash")
end end
# expand assocations to their foreign keys # expand assocations to their foreign keys
new_scope = {} new_scope = {}
@ -126,9 +126,7 @@ module ActiveRecord
RUBY RUBY
if position_column != 'position' if position_column != 'position'
class_eval do define_method(:position) { read_attribute(self.class.position_column.to_sym) }
alias_method :position, self.class.position_column.to_sym
end
end end
end end
end end

View File

@ -1,2 +1,2 @@
require 'active_record/acts/list' require_relative "active_record/acts/list"
ActiveRecord::Base.class_eval { include ActiveRecord::Acts::List } ActiveRecord::Base.class_eval { include ActiveRecord::Acts::List }

5
gems/acts_as_list/test.sh Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
set -e
bundle check || bundle install
ruby test/list_test.rb

View File

@ -1,12 +1,11 @@
require 'test/unit' require 'test/unit'
require 'rubygems' require 'rubygems'
gem 'activerecord', '>= 1.15.4.7794'
require 'active_record' require 'active_record'
require "#{File.dirname(__FILE__)}/../init" require_relative "../lib/acts_as_list"
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :dbfile => ":memory:") ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
def setup_db def setup_db
ActiveRecord::Schema.define(:version => 1) do ActiveRecord::Schema.define(:version => 1) do
@ -26,12 +25,13 @@ def teardown_db
end end
class Mixin < ActiveRecord::Base class Mixin < ActiveRecord::Base
def self.nulls(first_or_last, column, direction = nil)
"#{column} IS#{" NOT" unless first_or_last == :last} NULL, #{column} #{direction.to_s.upcase}".strip
end
end end
class ListMixin < Mixin class ListMixin < Mixin
acts_as_list :column => "pos", :scope => :parent acts_as_list :column => "pos", :scope => :parent_id
def self.table_name() "mixins" end
end end
class ListMixinSub1 < ListMixin class ListMixinSub1 < ListMixin
@ -40,13 +40,10 @@ end
class ListMixinSub2 < ListMixin class ListMixinSub2 < ListMixin
end end
class ListWithStringScopeMixin < ActiveRecord::Base class UnscopedListMixin < Mixin
acts_as_list :column => "pos", :scope => 'parent_id = #{parent_id}' acts_as_list :column => "pos"
def self.table_name() "mixins" end
end end
class ListTest < Test::Unit::TestCase class ListTest < Test::Unit::TestCase
def setup def setup
@ -82,7 +79,7 @@ class ListTest < Test::Unit::TestCase
def test_injection def test_injection
item = ListMixin.new(:parent_id => 1) item = ListMixin.new(:parent_id => 1)
assert_equal "parent_id = 1", item.scope_condition assert_equal({parent_id: 1}, item.scope_condition)
assert_equal "pos", item.class.position_column assert_equal "pos", item.class.position_column
end end
@ -155,24 +152,16 @@ class ListTest < Test::Unit::TestCase
assert_equal 3, ListMixin.find(4).pos assert_equal 3, ListMixin.find(4).pos
ListMixin.find(1).destroy ListMixin.find(1).destroy
assert_equal [3, 4], ListMixin.where('parent_id = 5').order('pos').pluck(:id) assert_equal [3, 4], ListMixin.where('parent_id = 5').order('pos').pluck(:id)
assert_equal 1, ListMixin.find(3).pos assert_equal 1, ListMixin.find(3).pos
assert_equal 2, ListMixin.find(4).pos assert_equal 2, ListMixin.find(4).pos
end end
def test_with_string_based_scope
new = ListWithStringScopeMixin.create(:parent_id => 500)
assert_equal 1, new.pos
assert new.first?
assert new.last?
end
def test_nil_scope def test_nil_scope
new1, new2, new3 = ListMixin.create, ListMixin.create, ListMixin.create new1, new2, new3 = UnscopedListMixin.create, UnscopedListMixin.create, UnscopedListMixin.create
new2.move_to_top new2.move_to_top
assert_equal [new2, new1, new3], ListMixin.where('parent_id IS NULL').order('pos').to_a assert_equal [new2, new1, new3], UnscopedListMixin.where('parent_id IS NULL').order('pos').to_a
end end
@ -245,7 +234,7 @@ class ListSubTest < Test::Unit::TestCase
def test_injection def test_injection
item = ListMixin.new("parent_id"=>1) item = ListMixin.new("parent_id"=>1)
assert_equal "parent_id = 1", item.scope_condition assert_equal({parent_id: 1}, item.scope_condition)
assert_equal "pos", item.class.position_column assert_equal "pos", item.class.position_column
end end