forked from fulcrum-agile/fulcrum
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tasks_controller_spec.rb
119 lines (85 loc) · 2.8 KB
/
tasks_controller_spec.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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
require 'spec_helper'
describe TasksController do
let(:user) { FactoryGirl.create :user }
let(:project) { mock_model(Project, :id => 42) }
let(:story) { mock_model(Story, :id => 99) }
let(:projects) { double("projects") }
let(:stories) { double("stories") }
let(:tasks) { double("tasks", :to_json => '{foo:bar}') }
let(:task) { mock_model(Task, :id => 66, :to_json => '{foo:bar}') }
let(:request_params) { {:project_id => project.id, :story_id => story.id } }
context "when not logged in" do
describe "collection actions" do
specify "#create" do
xhr :post, :create, request_params
response.status.should == 401
end
end
describe "member actions" do
before do
request_params[:id] = task.id
end
specify "#destroy" do
xhr :delete, :destroy, request_params
response.status.should == 401
end
end
end
context "when logged in" do
before do
user.stub(:projects => projects)
projects.stub(:find).with(project.id.to_s).and_return(project)
project.stub(:stories => stories)
stories.stub(:find).with(story.id.to_s).and_return(story)
story.stub(:tasks => tasks)
tasks.stub(:find).with(task.id.to_s).and_return(task)
subject.stub(:current_user => user)
sign_in user
end
describe "collection actions" do
describe "#create" do
before do
request_params[:task] = {'task' => 'foo'}
tasks.should_receive(:build).with(request_params[:task]).and_return(task)
task.stub(:save => true)
end
specify do
xhr :post, :create, request_params
response.should be_success
assigns[:project].should == project
assigns[:story].should == story
assigns[:task].should == task
response.content_type.should == 'application/json'
response.body.should == task.to_json
end
context "when save fails" do
before do
task.stub(:save => false)
end
specify do
xhr :post, :create, request_params
response.status.should == 422
end
end
end
end
describe "member actions" do
let(:request_params) {
{:id => task.id, :project_id => project.id, :story_id => story.id}
}
describe "#destroy" do
before do
task.should_receive(:destroy)
end
specify do
xhr :delete, :destroy, request_params
response.should be_success
assigns[:project].should == project
assigns[:story].should == story
assigns[:task].should == task
response.body.should be_blank
end
end
end
end
end