Skip to content

Commit ffe7a76

Browse files
committed
Specs for BlogController
1 parent 6bf8669 commit ffe7a76

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,104 @@
11
require 'spec_helper'
22

33
describe BlogController do
4+
let(:blog_post) { Fabricate(:blog_post) }
5+
let(:another_blog_post) { Fabricate(:another_blog_post) }
46

7+
describe('#index') do
8+
it "gets index successfully" do
9+
get :index
10+
response.should be_successful
11+
end
12+
13+
describe("handles posts by") do
14+
before(:each) do
15+
blog_post
16+
another_blog_post
17+
get :index
18+
@posts = assigns(:posts)
19+
end
20+
it "fetching posts" do
21+
@posts.size.should == 2
22+
end
23+
it "sorting them in reverse order" do
24+
@posts.first.content[0].should > @posts.last.content[0]
25+
end
26+
end
27+
end
28+
29+
describe "#show" do
30+
before(:each) do
31+
blog_post
32+
get :show, id: blog_post
33+
end
34+
it { response.should be_successful }
35+
it { assigns(:post).should == blog_post }
36+
end
37+
38+
describe "#admin" do
39+
context "when user is not signed in" do
40+
before(:each) do
41+
get :create
42+
end
43+
#TODO Should it not use signin_path?
44+
it { response.should redirect_to(new_user_session_path) }
45+
end
46+
47+
context "when user is not an blog_poster" do
48+
before(:each) do
49+
blog_post
50+
get :admin
51+
end
52+
it { response.should be_redirect }
53+
it { assigns(:post).should be_nil }
54+
it { assigns(:posts).should be_nil }
55+
end
56+
context "when user is a blog_poster" do
57+
before(:each) do
58+
sign_in Fabricate(:user, blog_poster: true)
59+
blog_post
60+
get :admin
61+
end
62+
it { response.should be_successful }
63+
it { assigns(:post).should be_a_new(BlogPost) }
64+
it { assigns(:posts).size.should == 1 }
65+
end
66+
end
67+
68+
describe "#create" do
69+
context "when user is not signed in" do
70+
before(:each) do
71+
get :create
72+
end
73+
#TODO Should it not use signin_path?
74+
it { response.should redirect_to(new_user_session_path) }
75+
end
76+
77+
context "when user is not an blog_poster" do
78+
before(:each) do
79+
sign_in Fabricate(:user)
80+
get :create
81+
end
82+
83+
it { response.should redirect_to(blog_index_path) }
84+
85+
it { assigns(:post).should be_nil }
86+
end
87+
88+
context "when user is a blog_poster" do
89+
before(:each) do
90+
sign_in Fabricate(:user, blog_poster: true)
91+
end
92+
93+
it "redirects to admin_blog_index_path when user is blog_poster" do
94+
post :create
95+
response.should redirect_to(admin_blog_index_path)
96+
end
97+
98+
it "creates a new blogpost" do
99+
->{ post :create, blog_post: Fabricate.build(:blog_post).attributes }
100+
.should change(BlogPost, :count).by(1)
101+
end
102+
end
103+
end
5104
end

0 commit comments

Comments
 (0)