diff --git a/app/models/vote.rb b/app/models/vote.rb index 2ce0e671..be1fc86e 100644 --- a/app/models/vote.rb +++ b/app/models/vote.rb @@ -6,6 +6,8 @@ class Vote < ApplicationRecord has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } + validates :event, uniqueness: { scope: :user } + delegate :name, to: :user private diff --git a/spec/models/vote_spec.rb b/spec/models/vote_spec.rb new file mode 100644 index 00000000..f368af93 --- /dev/null +++ b/spec/models/vote_spec.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Vote do + let(:user) { create(:user) } + let(:event) { create(:event) } + let(:vote) { create(:vote, event: event, user: user) } + + describe 'validation' do + it 'has a valid factory' do + expect(build(:vote)).to be_valid + end + + it 'validates uniqueness of event in scope of user' do + expect(build(:vote, event: vote.event, user: vote.user)).not_to be_valid + end + end +end