Skip to content

Commit 72801b5

Browse files
committed
Extract Decorator Step Four
* Promote parameters to instance variables
1 parent 4fd00a8 commit 72801b5

File tree

3 files changed

+18
-16
lines changed

3 files changed

+18
-16
lines changed

example_app/app/models/survey.rb

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,8 @@ class Survey < ActiveRecord::Base
99

1010
def summaries_using(summarizer, options = {})
1111
questions.map do |question|
12-
UnansweredQuestionHider.new.summary_or_hidden_answer(
13-
summarizer,
14-
question,
15-
options[:answered_by]
16-
)
12+
UnansweredQuestionHider.new(summarizer, options[:answered_by]).
13+
summary_or_hidden_answer(question)
1714
end
1815
end
1916
end
Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
class UnansweredQuestionHider
22
NO_ANSWER = "You haven't answered this question".freeze
33

4-
def summary_or_hidden_answer(summarizer, question, user)
5-
if hide_unanswered_question?(question, user)
4+
def initialize(summarizer, user)
5+
@summarizer = summarizer
6+
@user = user
7+
end
8+
9+
def summary_or_hidden_answer(question)
10+
if hide_unanswered_question?(question)
611
hide_answer_to_question(question)
712
else
8-
question.summary_using(summarizer)
13+
question.summary_using(@summarizer)
914
end
1015
end
1116

@@ -15,7 +20,7 @@ def hide_answer_to_question(question)
1520
Summary.new(question.title, NO_ANSWER)
1621
end
1722

18-
def hide_unanswered_question?(question, user)
19-
user && !question.answered_by?(user)
23+
def hide_unanswered_question?(question)
24+
@user && !question.answered_by?(@user)
2025
end
2126
end

example_app/spec/models/unanswered_question_hider_spec.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
summarizer = stub('summarizer')
66
user = build_stubbed(:user)
77
question = stub_answered_question(user, false)
8-
hider = UnansweredQuestionHider.new
8+
hider = UnansweredQuestionHider.new(summarizer, user)
99

10-
result = hider.summary_or_hidden_answer(summarizer, question, user)
10+
result = hider.summary_or_hidden_answer(question)
1111

1212
result.title.should eq question.title
1313
result.value.should eq UnansweredQuestionHider::NO_ANSWER
@@ -18,9 +18,9 @@
1818
user = build_stubbed(:user)
1919
question = stub_answered_question(user, true)
2020
summarizer = stub_summarizer(question, summary)
21-
hider = UnansweredQuestionHider.new
21+
hider = UnansweredQuestionHider.new(summarizer, user)
2222

23-
result = hider.summary_or_hidden_answer(summarizer, question, user)
23+
result = hider.summary_or_hidden_answer(question)
2424

2525
result.should eq summary
2626
end
@@ -29,9 +29,9 @@
2929
summary = stub('summary')
3030
question = build_stubbed(:question)
3131
summarizer = stub_summarizer(question, summary)
32-
hider = UnansweredQuestionHider.new
32+
hider = UnansweredQuestionHider.new(summarizer, nil)
3333

34-
result = hider.summary_or_hidden_answer(summarizer, question, nil)
34+
result = hider.summary_or_hidden_answer(question)
3535

3636
result.should eq summary
3737
end

0 commit comments

Comments
 (0)