Add more options for surveys

* Survey period constraints
* Add abilities
* Enforce required questions
* Update survey_submssion updated_at
* Do a full match of possible answer and user reply
This commit is contained in:
Stella Rouzi 2018-02-09 19:07:10 +02:00
parent c278e547ce
commit 683f62a27c
36 changed files with 219 additions and 74 deletions

View file

@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'spec_helper'
describe SurveyQuestion do
@ -7,7 +9,7 @@ describe SurveyQuestion do
let(:single_choice_question) { create(:choice_mandatory_1_reply) }
let(:multiple_choice_question) { create(:choice_mandatory_2_replies) }
let(:boolean_question) { create(:boolean_question, min_choices: 3)}
let(:boolean_question) { create(:boolean_question, min_choices: 3) }
describe 'association' do
it { is_expected.to belong_to(:survey) }
@ -88,7 +90,7 @@ describe SurveyQuestion do
end
end
fields = ['min_choices', 'max_choices', 'possible_answers']
fields = %w[min_choices max_choices possible_answers]
(SurveyQuestion.kinds.keys - ['choice']).each do |kind|
fields.each do |field|
it_behaves_like 'is nil', kind, field

View file

@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'spec_helper'
describe SurveyReply do

View file

@ -1,9 +1,11 @@
# frozen_string_literal: true
require 'spec_helper'
describe Survey do
subject { create(:survey) }
let(:survey_active) { create(:conference_survey, start_date: Date.current - 1.day, end_date: Date.current + 1.day) }
let(:survey_inactive) { create(:conference_survey, start_date: Date.current - 2.day, end_date: Date.current - 1.day) }
let(:survey_inactive) { create(:conference_survey, start_date: Date.current - 2.days, end_date: Date.current - 1.day) }
describe 'association' do
it { is_expected.to have_many(:survey_questions) }
@ -17,12 +19,8 @@ describe Survey do
describe '#active?' do
it { expect(survey_active.active?).to eq true }
it { expect(survey_inactive.active?).to eq false }
it 'returns false, if start_date is not set' do
expect(create(:survey, start_date: nil, end_date: Date.current + 1.day).active?).to eq false
end
it 'returns false, if end_date is not set' do
expect(create(:survey, start_date: Date.current + 1.day, end_date: nil).active?).to eq false
it 'returns true, if both start_date and end_date are not set' do
expect(create(:survey, start_date: nil, end_date: nil, surveyable: create(:conference)).active?).to eq true
end
end
end

View file

@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'spec_helper'
describe SurveySubmission do