forked from norman/friendly_id
-
Notifications
You must be signed in to change notification settings - Fork 0
/
scoped_model_test.rb
51 lines (41 loc) · 1.55 KB
/
scoped_model_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
require File.dirname(__FILE__) + '/test_helper'
class ScopedModelTest < Test::Unit::TestCase
context "A slugged model that uses a scope" do
setup do
Person.delete_all
Country.delete_all
Slug.delete_all
@usa = Country.create!(:name => "USA")
@canada = Country.create!(:name => "Canada")
@person = Person.create!(:name => "John Smith", :country => @usa)
@person2 = Person.create!(:name => "John Smith", :country => @canada)
end
should "find all scoped records without scope" do
assert_equal 2, Person.find(:all, @person.friendly_id).size
end
should "find a single scoped records with a scope" do
assert Person.find(@person.friendly_id, :scope => @person.country.to_param)
end
should "raise an error when finding a single scoped record with no scope" do
assert_raises ActiveRecord::RecordNotFound do
Person.find(@person.friendly_id)
end
end
should "append scope error info when missing scope causes a find to fail" do
begin
Person.find(@person.friendly_id)
fail "The find should not have succeeded"
rescue ActiveRecord::RecordNotFound => e
assert_match /expected scope/, e.message
end
end
should "append scope error info when the scope value causes a find to fail" do
begin
Person.find(@person.friendly_id, :scope => "badscope")
fail "The find should not have succeeded"
rescue ActiveRecord::RecordNotFound => e
assert_match /scope=badscope/, e.message
end
end
end
end