-
Notifications
You must be signed in to change notification settings - Fork 30
/
posts_spec.rb
46 lines (37 loc) · 1.33 KB
/
posts_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
require_relative "posts"
module Models; class Post; end; end
describe Interactors::CreatePost do
Post = Models::Post
CreatePost = Interactors::CreatePost
PostSaved = Interactors::CreatePost::PostSaved
ValidationFailure = Interactors::CreatePost::ValidationFailure
let(:post_params) { stub(:post_params) }
context "when the post is valid" do
let(:post) { stub(:post, :valid? => true) }
before { Post.stub(:new).with(post_params) { post } }
it "publishes the post if the user is an admin" do
user = stub(:user, :admin? => true)
post.should_receive(:publish)
CreatePost.create(user, post_params)
end
it "saves the post as a draft if the user isn't an admin" do
user = stub(:user, :admin? => false)
post.should_receive(:save_as_draft)
CreatePost.create(user, post_params)
end
it "returns a post saved response" do
user = stub(:user, :admin? => false)
post.stub(:save_as_draft)
response = CreatePost.create(user, post_params)
response.should be_a PostSaved
end
end
it "raises a validation failure when the post is invalid" do
user = stub(:user)
post = stub(:post, :valid? => false)
Post.stub(:new).with(post_params) { post }
expect do
CreatePost.create(user, post_params)
end.to raise_error(ValidationFailure)
end
end