forked from activeadmin/inherited_resources
-
Notifications
You must be signed in to change notification settings - Fork 0
/
belongs_to_test.rb
105 lines (83 loc) · 3.06 KB
/
belongs_to_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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
require File.expand_path('test_helper', File.dirname(__FILE__))
class Post
extend ActiveModel::Naming
end
class Comment
extend ActiveModel::Naming
end
class CommentsController < InheritedResources::Base
belongs_to :post
end
class BelongsToTest < ActionController::TestCase
tests CommentsController
def setup
Post.expects(:find).with('37').returns(mock_post)
mock_post.expects(:comments).returns(Comment)
@controller.stubs(:resource_url).returns('/')
@controller.stubs(:collection_url).returns('/')
end
def test_expose_all_comments_as_instance_variable_on_index
Comment.expects(:all).returns([mock_comment])
get :index, :post_id => '37'
assert_equal mock_post, assigns(:post)
assert_equal [mock_comment], assigns(:comments)
end
def test_expose_the_requested_comment_on_show
Comment.expects(:find).with('42').returns(mock_comment)
get :show, :id => '42', :post_id => '37'
assert_equal mock_post, assigns(:post)
assert_equal mock_comment, assigns(:comment)
end
def test_expose_a_new_comment_on_new
Comment.expects(:build).returns(mock_comment)
get :new, :post_id => '37'
assert_equal mock_post, assigns(:post)
assert_equal mock_comment, assigns(:comment)
end
def test_expose_the_requested_comment_on_edit
Comment.expects(:find).with('42').returns(mock_comment)
get :edit, :id => '42', :post_id => '37'
assert_equal mock_post, assigns(:post)
assert_equal mock_comment, assigns(:comment)
end
def test_expose_a_newly_create_comment_on_create
Comment.expects(:build).with({'these' => 'params'}).returns(mock_comment(:save => true))
post :create, :post_id => '37', :comment => {:these => 'params'}
assert_equal mock_post, assigns(:post)
assert_equal mock_comment, assigns(:comment)
end
def test_update_the_requested_object_on_update
Comment.expects(:find).with('42').returns(mock_comment)
mock_comment.expects(:update_attributes).with({'these' => 'params'}).returns(true)
put :update, :id => '42', :post_id => '37', :comment => {:these => 'params'}
assert_equal mock_post, assigns(:post)
assert_equal mock_comment, assigns(:comment)
end
def test_the_requested_comment_is_destroyed_on_destroy
Comment.expects(:find).with('42').returns(mock_comment)
mock_comment.expects(:destroy)
delete :destroy, :id => '42', :post_id => '37'
assert_equal mock_post, assigns(:post)
assert_equal mock_comment, assigns(:comment)
end
def helper_methods
@controller.class._helpers.instance_methods.map {|m| m.to_s }
end
def test_helpers
mock_post.stubs(:class).returns(Post)
Comment.expects(:all).returns([mock_comment])
get :index, :post_id => '37'
assert helper_methods.include?('parent?')
assert @controller.send(:parent?)
assert_equal mock_post, assigns(:post)
assert helper_methods.include?('parent')
assert_equal mock_post, @controller.send(:parent)
end
protected
def mock_post(stubs={})
@mock_post ||= mock(stubs)
end
def mock_comment(stubs={})
@mock_comment ||= mock(stubs)
end
end