Skip to content

Commit 3dfada0

Browse files
authored
Merge pull request #155 from codemancers/add-results-per-attempt
Added results per attempt
2 parents 1caf693 + 28eaa23 commit 3dfada0

File tree

5 files changed

+53
-35
lines changed

5 files changed

+53
-35
lines changed

app/controllers/rapidfire/surveys_controller.rb

+7
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ def destroy
7272
def results
7373
params[:filter] ||= {}
7474
@survey = Rapidfire::Survey.find(params[:id])
75+
@survey_attempts = @survey.attempts
7576
@survey_results =
7677
SurveyResults.new(survey: @survey).extract(filter_params)
7778

@@ -83,6 +84,12 @@ def results
8384
end
8485
end
8586

87+
def show_result
88+
@survey = Rapidfire::Survey.find(params[:survey_id])
89+
@attempt = Rapidfire::Attempt.find(params[:id])
90+
@answers = @attempt.answers.includes(:question)
91+
end
92+
8693
private
8794

8895
def survey_params
+4-30
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,8 @@
11
<h1>Results</h1>
22
<%= link_to "Download CSV", results_survey_path(id: params[:id], format: :csv) %>
3-
<%- @survey_results.each do |result| %>
4-
<div>
5-
<h4><%= result.question.question_text %></h4>
6-
<p>
7-
<%- if result.results.is_a?(Array) %>
8-
<ol>
9-
<%- result.results.each do |answer| %>
10-
<li><%= answer %></li>
11-
<% end %>
12-
</ol>
13-
<% elsif result.results.is_a?(Hash) %>
14-
<table>
15-
<thead>
16-
<tr>
17-
<th>Option</th>
18-
<th>Count</th>
19-
<th>Filter</th>
20-
</tr>
21-
</thead>
22-
<tbody>
23-
<%- result.results.each do |option, count| %>
24-
<tr>
25-
<td><%= option %></td>
26-
<td><%= count %></td>
27-
<td><%= filter_link(result.question.id, option) %></th>
28-
</tr>
29-
<% end %>
30-
</tbody>
31-
</table>
32-
<% end %>
3+
<%- @survey_attempts.each do |attempt| %>
4+
<div class="flex justify between">
5+
<h4>User : <%= attempt.user_id %></h4>
6+
<%= link_to "View Answers", survey_result_path(@survey, attempt.id) %>
337
</div>
348
<% end %>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<h1>Survey Result</h1>
2+
3+
<p><strong>Survey Name:</strong> <%= @survey.name %></p>
4+
<p><strong>User ID:</strong> <%= @attempt.user_id %></p>
5+
6+
<div>
7+
<% @answers.each do |answer| %>
8+
<div class="question-answer-pair">
9+
<p><strong>Question:</strong> <%= answer.question.question_text %></p>
10+
<p><strong>Answer:</strong> <%= answer.answer_text %></p>
11+
<hr>
12+
</div>
13+
<% end %>
14+
</div>
15+
16+
17+
<%= link_to "Back to All Results", results_survey_path(@survey) %>

config/routes.rb

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
Rapidfire::Engine.routes.draw do
22
resources :surveys do
3-
get 'results', on: :member
3+
member do
4+
get 'results'
5+
end
6+
7+
get 'results/:id', to: 'surveys#show_result', as: 'result'
48

59
resources :questions
610
resources :attempts, only: [:new, :create, :edit, :update, :show]

spec/features/rapidfire/managing_surveys_spec.rb

+20-4
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
context "when user can administer" do
2626
before do
2727
allow_any_instance_of(ApplicationController).to receive(:can_administer?).and_return(true)
28-
2928
visit rapidfire.root_path
3029
click_button "Delete"
3130
end
@@ -148,9 +147,26 @@
148147
end
149148
end
150149

151-
it "shows results for particular question group" do
152-
expect(page).to have_content "Results"
153-
expect(page).to have_content "hindi 3"
150+
it "shows results for all attempts" do
151+
survey.attempts.each do |attempt|
152+
expect(page).to have_content "User: #{attempt.user_id}"
153+
expect(page).to have_link "View Answers", href: result_survey_path(survey, attempt.id)
154+
end
155+
end
156+
157+
context "when viewing an individual attempt" do
158+
let(:attempt) { survey.attempts.first || survey.attempts.create(user_id: 1) }
159+
160+
before do
161+
visit rapidfire.survey_result_path(survey, attempt.id)
162+
end
163+
164+
it "displays the questions and answers for the attempt" do
165+
attempt.answers.each do |answer|
166+
expect(page).to have_content answer.question.question_text
167+
expect(page).to have_content answer.answer_text
168+
end
169+
end
154170
end
155171
end
156172
end

0 commit comments

Comments
 (0)