-
Notifications
You must be signed in to change notification settings - Fork 1
/
risosu_san_test.rb
90 lines (71 loc) · 2.74 KB
/
risosu_san_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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
require File.expand_path('../test_helper', __FILE__)
class TestController < ActionController::Base
public :nested?, :parent_resource_params, :find_parent_resource
attr_reader :params
def params=(params)
@params = params.with_indifferent_access
end
end
class CamelCaseTest
end
describe "RisosuSan, at the class level" do
it "should define a before_filter which finds the parent resource" do
TestController.expects(:before_filter).with(:find_parent_resource, {})
TestController.find_parent_resource
end
it "should forward options to the before_filter" do
TestController.expects(:before_filter).with(:find_parent_resource, :only => :index)
TestController.find_parent_resource :only => :index
end
end
describe "RisosuSan" do
attr_accessor :controller
before do
RisosuSanTest::Initializer.setup_database
@controller = TestController.new
@member = Member.create(:name => 'Eloy')
end
after do
RisosuSanTest::Initializer.teardown_database
end
it "should know if it's not a nested request" do
controller.params = {}
controller.should.not.be.nested
end
it "should know if this is a nested request" do
controller.params = { :member_id => 12 }
controller.should.be.nested
end
it "should know the parent resource params" do
controller.params = { :member_id => 12, :id => 34 }
controller.parent_resource_params.should == { :name => 'member', :class => Member, :param => 'member_id', :class_name => 'Member', :id => 12 }
end
it "should know the parent resource params for camelcased classes" do
controller.params = { :camel_case_test_id => 12, :id => 34 }
controller.parent_resource_params.should == { :name => 'camel_case_test', :class => CamelCaseTest, :param => 'camel_case_test_id', :class_name => 'CamelCaseTest', :id => 12 }
end
it "should have cached the parent_resource_params" do
controller.params = { :member_id => 12, :id => 34 }
params = controller.parent_resource_params
controller.parent_resource_params.should.be params
end
it "should find the nested resource" do
controller.params = { :member_id => @member.to_param }
controller.find_parent_resource
assigns(:parent_resource).should == @member
end
it "should also set an instance variable named after the parent resource" do
controller.params = { :member_id => @member.to_param }
controller.find_parent_resource.should == @member
assigns(:member).should == @member
end
it "should return nil if the resource isn't nested" do
controller.params = {}
controller.find_parent_resource.should.be nil
assigns(:parent_resource).should.be nil
end
private
def assigns(name)
controller.instance_variable_get("@#{name}")
end
end