diff options
Diffstat (limited to 'activerecord/test/cases/dynamic_finder_match_test.rb')
-rw-r--r-- | activerecord/test/cases/dynamic_finder_match_test.rb | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/activerecord/test/cases/dynamic_finder_match_test.rb b/activerecord/test/cases/dynamic_finder_match_test.rb index 64bf6cb508..e576870317 100644 --- a/activerecord/test/cases/dynamic_finder_match_test.rb +++ b/activerecord/test/cases/dynamic_finder_match_test.rb @@ -2,18 +2,67 @@ require "cases/helper" module ActiveRecord class DynamicFinderMatchTest < ActiveRecord::TestCase + def test_find_or_create_by + match = DynamicFinderMatch.match("find_or_create_by_age_and_sex_and_location") + assert_not_nil match + assert !match.finder? + assert match.instantiator? + assert_equal :first, match.finder + assert_equal :create, match.instantiator + assert_equal %w(age sex location), match.attribute_names + end + + def test_find_or_initialize_by + match = DynamicFinderMatch.match("find_or_initialize_by_age_and_sex_and_location") + assert_not_nil match + assert !match.finder? + assert match.instantiator? + assert_equal :first, match.finder + assert_equal :new, match.instantiator + assert_equal %w(age sex location), match.attribute_names + end + + def test_find_no_match + assert_nil DynamicFinderMatch.match("not_a_finder") + end + + def find_by_bang + match = DynamicFinderMatch.match("find_by_age_and_sex_and_location!") + assert_not_nil match + assert match.finder? + assert match.bang? + assert_equal :first, match.finder + assert_equal %w(age sex location), match.attribute_names + end + def test_find_by + match = DynamicFinderMatch.match("find_by_age_and_sex_and_location") + assert_not_nil match + assert match.finder? + assert_equal :first, match.finder + assert_equal %w(age sex location), match.attribute_names + end + + def test_find_by_with_symbol m = DynamicFinderMatch.match(:find_by_foo) assert_equal :first, m.finder assert_equal %w{ foo }, m.attribute_names end - def test_find_all_by + def test_find_all_by_with_symbol m = DynamicFinderMatch.match(:find_all_by_foo) assert_equal :all, m.finder assert_equal %w{ foo }, m.attribute_names end + def test_find_all_by + match = DynamicFinderMatch.match("find_all_by_age_and_sex_and_location") + assert_not_nil match + assert match.finder? + assert_equal :all, match.finder + assert_equal %w(age sex location), match.attribute_names + end + def test_find_last_by m = DynamicFinderMatch.match(:find_last_by_foo) assert_equal :last, m.finder |