From 048ada3e175eb25f8e7e080a4a8bb022b9f578fe Mon Sep 17 00:00:00 2001 From: kikito Date: Fri, 11 Nov 2016 19:08:32 +0100 Subject: [PATCH] Adds poll partial result --- app/models/poll/partial_result.rb | 18 ++++++++++++++++++ spec/models/poll/partial_result_spec.rb | 16 ++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 app/models/poll/partial_result.rb create mode 100644 spec/models/poll/partial_result_spec.rb diff --git a/app/models/poll/partial_result.rb b/app/models/poll/partial_result.rb new file mode 100644 index 000000000..202f147bd --- /dev/null +++ b/app/models/poll/partial_result.rb @@ -0,0 +1,18 @@ +class Poll::PartialResult < ActiveRecord::Base + + VALID_ORIGINS = %w{ web } + + belongs_to :question, -> { with_hidden } + belongs_to :author, -> { with_hidden }, class_name: 'User', foreign_key: 'author_id' + + validates :question, presence: true + validates :author, presence: true + validates :answer, presence: true + validates :answer, inclusion: {in: ->(a) { a.question.valid_answers }} + validates :origin, inclusion: {in: VALID_ORIGINS} + + scope :by_author, -> (author_id) { where(author_id: author_id) } + scope :by_question, -> (question_id) { where(question_id: question_id) } + + +end diff --git a/spec/models/poll/partial_result_spec.rb b/spec/models/poll/partial_result_spec.rb new file mode 100644 index 000000000..ef47ecd8c --- /dev/null +++ b/spec/models/poll/partial_result_spec.rb @@ -0,0 +1,16 @@ +require 'rails_helper' + +describe Poll::PartialResult, type: :model do + + describe "validations" do + it "validates that the answers are included in the Enquiry's list" do + q = create(:poll_question, valid_answers: 'One, Two, Three') + expect(build(:poll_partial_result, question: q, answer: 'One')).to be_valid + expect(build(:poll_partial_result, question: q, answer: 'Two')).to be_valid + expect(build(:poll_partial_result, question: q, answer: 'Three')).to be_valid + + expect(build(:poll_partial_result, question: q, answer: 'Four')).to_not be_valid + end + end + +end