File tree Expand file tree Collapse file tree 5 files changed +12
-49
lines changed
Expand file tree Collapse file tree 5 files changed +12
-49
lines changed Original file line number Diff line number Diff line change 11class SummariesController < ApplicationController
22 def show
33 @survey = Survey . find ( params [ :survey_id ] )
4- @summaries = @survey . summaries_using ( summarizer , constraints )
4+ @summaries = @survey . summaries_using ( decorated_summarizer )
55 end
66
77 private
88
9+ def decorated_summarizer
10+ if include_unanswered?
11+ summarizer
12+ else
13+ UnansweredQuestionHider . new ( summarizer , current_user )
14+ end
15+ end
16+
917 def summarizer
1018 summarizer_class . new ( user : current_user )
1119 end
@@ -14,14 +22,6 @@ def summarizer_class
1422 "Summarizer::#{ params [ :id ] . classify } " . constantize
1523 end
1624
17- def constraints
18- if include_unanswered?
19- { }
20- else
21- { answered_by : current_user }
22- end
23- end
24-
2525 def include_unanswered?
2626 params [ :unanswered ]
2727 end
Original file line number Diff line number Diff line change @@ -7,10 +7,9 @@ class Survey < ActiveRecord::Base
77 has_many :completions
88 has_many :questions
99
10- def summaries_using ( summarizer , options = { } )
10+ def summaries_using ( summarizer )
1111 questions . map do |question |
12- hider = UnansweredQuestionHider . new ( summarizer , options [ :answered_by ] )
13- question . summary_using ( hider )
12+ question . summary_using ( summarizer )
1413 end
1514 end
1615end
Original file line number Diff line number Diff line change @@ -17,6 +17,6 @@ def summarize(question)
1717 private
1818
1919 def hide_unanswered_question? ( question )
20- @user && !question . answered_by? ( @user )
20+ !question . answered_by? ( @user )
2121 end
2222end
Original file line number Diff line number Diff line change 2020 result . map ( &:value ) . should == %w( result result )
2121 end
2222
23- it 'applies the given summarizer to each question answered by the user' do
24- user = build_stubbed ( :user )
25- answered_question = stub_question ( user : user , answered : true )
26- unanswered_question = stub_question ( user : user , answered : false )
27- questions = [ answered_question , unanswered_question ]
28- questions . stubs ( :answered_by ) . with ( user ) . returns ( questions )
29- survey = build_stubbed ( :survey , questions : questions )
30- summarizer = stub_summarizer
31-
32- result = survey . summaries_using ( summarizer , answered_by : user )
33-
34- should_summarize_questions [ answered_question ] , summarizer
35- result . map ( &:title ) . should eq questions . map ( &:title )
36- result . map ( &:value ) .
37- should eq [ 'result' , "You haven't answered this question" ]
38- end
39-
40- def stub_question ( arguments )
41- build_stubbed ( :question ) . tap do |question |
42- question .
43- stubs ( :answered_by? ) .
44- with ( arguments [ :user ] ) .
45- returns ( arguments [ :answered ] )
46- end
47- end
48-
4923 def stub_summarizer
5024 stub ( 'summarizer' , summarize : 'result' )
5125 end
Original file line number Diff line number Diff line change 2323 result . should eq 'value'
2424 end
2525
26- it 'delegates to the summarizer without a user' do
27- question = build_stubbed ( :question )
28- summarizer = stub_summarizer ( question , 'value' )
29- hider = UnansweredQuestionHider . new ( summarizer , nil )
30-
31- result = hider . summarize ( question )
32-
33- result . should eq 'value'
34- end
35-
3626 def stub_summarizer ( question , value )
3727 stub ( 'summarizer' ) . tap do |summarizer |
3828 summarizer . stubs ( :summarize ) . with ( question ) . returns ( value )
You can’t perform that action at this time.
0 commit comments