diff --git a/activeresource/lib/active_resource/base.rb b/activeresource/lib/active_resource/base.rb index f27febb7ef94a..e5b8589fb3793 100644 --- a/activeresource/lib/active_resource/base.rb +++ b/activeresource/lib/active_resource/base.rb @@ -611,6 +611,28 @@ def find(*arguments) end end + + # A convenience wrapper for find(:first, *args). You can pass + # in all the same arguments to this method as you can to + # find(:first). + def first(*args) + find(:first, *args) + end + + # A convenience wrapper for find(:last, *args). You can pass + # in all the same arguments to this method as you can to + # find(:last). + def last(*args) + find(:last, *args) + end + + # This is an alias for find(:all). You can pass in all the same + # arguments to this method as you can to find(:all) + def all(*args) + find(:all, *args) + end + + # Deletes the resources with the ID in the +id+ parameter. # # ==== Options diff --git a/activeresource/test/cases/finder_test.rb b/activeresource/test/cases/finder_test.rb index 38f7de96aca5c..535b6f419874a 100644 --- a/activeresource/test/cases/finder_test.rb +++ b/activeresource/test/cases/finder_test.rb @@ -126,18 +126,56 @@ def test_find_all assert_equal "David", all.last.name end + def test_all + all = Person.all + assert_equal 2, all.size + assert_kind_of Person, all.first + assert_equal "Matz", all.first.name + assert_equal "David", all.last.name + end + + def test_all_with_params + all = StreetAddress.all(:params => { :person_id => 1 }) + assert_equal 1, all.size + assert_kind_of StreetAddress, all.first + end + def test_find_first matz = Person.find(:first) assert_kind_of Person, matz assert_equal "Matz", matz.name end + def test_first + matz = Person.first + assert_kind_of Person, matz + assert_equal "Matz", matz.name + end + + def test_first_with_params + addy = StreetAddress.first(:params => { :person_id => 1 }) + assert_kind_of StreetAddress, addy + assert_equal '12345 Street', addy.street + end + def test_find_last david = Person.find(:last) assert_kind_of Person, david assert_equal 'David', david.name end + def test_last + david = Person.last + assert_kind_of Person, david + assert_equal 'David', david.name + end + + def test_last_with_params + addy = StreetAddress.last(:params => { :person_id => 1 }) + assert_kind_of StreetAddress, addy + assert_equal '12345 Street', addy.street + end + def test_find_by_id_not_found assert_raise(ActiveResource::ResourceNotFound) { Person.find(99) } assert_raise(ActiveResource::ResourceNotFound) { StreetAddress.find(1) }