Skip to content

Commit 876ec97

Browse files
committed
Extract Decorator Step Six
* Flip composition
1 parent 61ca678 commit 876ec97

File tree

3 files changed

+11
-14
lines changed

3 files changed

+11
-14
lines changed

example_app/app/models/survey.rb

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

1010
def summaries_using(summarizer, options = {})
1111
questions.map do |question|
12-
UnansweredQuestionHider.new(summarizer, options[:answered_by]).
13-
summarize(question)
12+
hider = UnansweredQuestionHider.new(summarizer, options[:answered_by])
13+
question.summary_using(hider)
1414
end
1515
end
1616
end

example_app/app/models/unanswered_question_hider.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ def summarize(question)
1010
if hide_unanswered_question?(question)
1111
hide_answer_to_question(question)
1212
else
13-
question.summary_using(@summarizer)
13+
@summarizer.summarize(question)
1414
end
1515
end
1616

1717
private
1818

1919
def hide_answer_to_question(question)
20-
Summary.new(question.title, NO_ANSWER)
20+
NO_ANSWER
2121
end
2222

2323
def hide_unanswered_question?(question)

example_app/spec/models/unanswered_question_hider_spec.rb

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,36 +9,33 @@
99

1010
result = hider.summarize(question)
1111

12-
result.title.should eq question.title
13-
result.value.should eq UnansweredQuestionHider::NO_ANSWER
12+
result.should eq UnansweredQuestionHider::NO_ANSWER
1413
end
1514

1615
it 'delegates to the summarizer given a user with an answer' do
17-
summary = stub('summary')
1816
user = build_stubbed(:user)
1917
question = stub_answered_question(user, true)
20-
summarizer = stub_summarizer(question, summary)
18+
summarizer = stub_summarizer(question, 'value')
2119
hider = UnansweredQuestionHider.new(summarizer, user)
2220

2321
result = hider.summarize(question)
2422

25-
result.should eq summary
23+
result.should eq 'value'
2624
end
2725

2826
it 'delegates to the summarizer without a user' do
29-
summary = stub('summary')
3027
question = build_stubbed(:question)
31-
summarizer = stub_summarizer(question, summary)
28+
summarizer = stub_summarizer(question, 'value')
3229
hider = UnansweredQuestionHider.new(summarizer, nil)
3330

3431
result = hider.summarize(question)
3532

36-
result.should eq summary
33+
result.should eq 'value'
3734
end
3835

39-
def stub_summarizer(question, summary)
36+
def stub_summarizer(question, value)
4037
stub('summarizer').tap do |summarizer|
41-
question.stubs(:summary_using).with(summarizer).returns(summary)
38+
summarizer.stubs(:summarize).with(question).returns(value)
4239
end
4340
end
4441

0 commit comments

Comments
 (0)