Add surveys during proposal submission

This commit is contained in:
Andrew Kvalheim 2022-03-11 14:28:16 -08:00
parent 4de554e0d4
commit f8d6283f44
6 changed files with 40 additions and 2 deletions

View file

@ -442,7 +442,7 @@ Metrics/BlockNesting:
# Offense count: 14
# Configuration parameters: CountComments, CountAsOne.
Metrics/ClassLength:
Max: 652
Max: 655
# Offense count: 29
# Configuration parameters: IgnoredMethods.

View file

@ -12,6 +12,7 @@ class ProposalsController < ApplicationController
@event = @program.events.new
@event.event_users.new(user: current_user, event_role: 'submitter')
@events = current_user.proposals(@conference)
@surveys = @conference.surveys.during_proposal.select(&:active?)
end
def show

View file

@ -57,6 +57,10 @@ class Conference < ApplicationRecord
has_many :event_types, through: :program
has_many :surveys, as: :surveyable, dependent: :destroy do
def during_proposal
where(target: targets[:during_proposal])
end
def for_registration
where(target: targets[:during_registration])
end

View file

@ -5,7 +5,7 @@ class Survey < ActiveRecord::Base
has_many :survey_questions, dependent: :destroy
has_many :survey_submissions, dependent: :destroy
enum target: [:after_conference, :during_registration, :after_event]
enum target: [:after_conference, :during_registration, :after_event, :during_proposal]
validates :title, presence: true
##

View file

@ -117,3 +117,10 @@
.col-md-12
- if can? :create, @event
= link_to "New Proposal", new_conference_program_proposal_path(@conference.short_title), class: 'btn btn-success pull-right'
- if @surveys.any?
.row
.col-md-12
%h2 Surveys
= render partial: 'surveys/list', locals: { surveys: @surveys, conference: @conference }

View file

@ -52,4 +52,30 @@ feature Survey do
expect(find(:link, survey.title).sibling('.fa-solid')[:title]).to eq('Thank you for filling out the survey')
end
end
context 'as a speaker' do
let(:speaker) { create(:user) }
before :each do
sign_in speaker
end
scenario 'respond to a survey during proposal submission', feature: true, js: true do
create :cfp, program: conference.program
create :event, program: conference.program, submitter: speaker
survey = create(:survey, surveyable: conference, target: :during_proposal)
create :boolean_mandatory, survey: survey
visit conference_program_proposals_path(conference.short_title)
expect(find(:link, survey.title).sibling('.fa-solid')[:title]).to eq('Please fill out the survey')
click_link survey.title
choose 'Yes'
click_button 'Submit'
expect(flash).to eq('Successfully responded to survey.')
visit conference_program_proposals_path(conference.short_title)
expect(find(:link, survey.title).sibling('.fa-solid')[:title]).to eq('Thank you for filling out the survey')
end
end
end