Skip to content

Commit 422c6a1

Browse files
committed
Update Encouragements Controller specs.
1 parent 4e98fa3 commit 422c6a1

File tree

4 files changed

+34
-9
lines changed

4 files changed

+34
-9
lines changed
Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
class EncouragementsController < ApplicationController
22
before_action :authenticate_user
3+
before_action :authors_are_not_allowed
4+
before_action :only_one_encouragement
35

4-
def new
56

7+
def new
8+
@encouragement = Encouragement.new
69
end
710

811
def authenticate_user
@@ -11,5 +14,17 @@ def authenticate_user
1114
unless current_user
1215
redirect_to achievement_path(@achievement), alert: 'You must be logged in to encourage people'
1316
end
14-
end
17+
end
18+
19+
def authors_are_not_allowed
20+
if current_user.id == @achievement.user_id
21+
redirect_to achievement_path(@achievement), alert: "You can't encourage yourself."
22+
end
23+
end
24+
25+
def only_one_encouragement
26+
if Encouragement.exists?(user: current_user, achievement: @achievement)
27+
redirect_to achievement_path(@achievement), alert: "You already encouraged it. You can't be so generous."
28+
end
29+
end
1530
end
File renamed without changes.

spec/controllers/encouragements_controller_spec.rb

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,32 @@
3333
end
3434

3535
context 'achievement author' do
36+
before {sign_in(author)}
3637
it 'is redirected back to achievement page' do
37-
38+
get :new, params: {achievement_id: achievement.id}
39+
expect(response).to redirect_to(achievement_path(achievement))
3840
end
3941

4042
it 'assigns flash message' do
41-
43+
get :new, params: {achievement_id: achievement.id}
44+
expect(flash[:alert]).to eq("You can't encourage yourself.")
4245
end
4346
end
4447

4548
context 'user who already left encouragement for this achievement' do
46-
it 'is redirected back to achievement page' do
49+
before do
50+
sign_in(user)
51+
FactoryGirl.create(:encouragement, user:user, achievement: achievement )
52+
end
4753

54+
it 'is redirected back to achievement page' do
55+
get :new, params: {achievement_id: achievement.id}
56+
expect(response).to redirect_to(achievement_path(achievement))
4857
end
4958

5059
it 'assigns flash message' do
51-
60+
get :new, params: {achievement_id: achievement.id}
61+
expect(flash[:alert]).to eq("You already encouraged it. You can't be so generous.")
5262
end
5363
end
5464
end

spec/factories/encouragements.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
FactoryGirl.define do
22
factory :encouragement do
3-
user nil
4-
achievement nil
5-
message "MyString"
3+
user
4+
achievement
5+
message "My Message"
66
end
77
end

0 commit comments

Comments
 (0)