mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-13 19:54:02 +00:00
Add uniqueness tests for Event scope on Vote model with User association
This commit is contained in:
parent
dfb159a0e1
commit
aa99f909a6
2 changed files with 25 additions and 0 deletions
|
|
@ -4,6 +4,8 @@ class Vote < ApplicationRecord
|
|||
belongs_to :user
|
||||
belongs_to :event
|
||||
|
||||
validates :user_id, uniqueness: { scope: :event_id }
|
||||
|
||||
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }
|
||||
|
||||
delegate :name, to: :user
|
||||
|
|
|
|||
23
spec/models/vote_spec.rb
Normal file
23
spec/models/vote_spec.rb
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe Vote do
|
||||
let!(:vote) { create(:vote) }
|
||||
|
||||
describe 'validation' do
|
||||
it 'has a valid factory' do
|
||||
expect(build(:vote)).to be_valid
|
||||
end
|
||||
|
||||
it { is_expected.to validate_uniqueness_of(:user_id).scoped_to(:event_id) }
|
||||
|
||||
# This is testing the relationship instead of using the shoulda-matchers
|
||||
context 'vote with user already exists' do
|
||||
it 'fails when adding vote twice for user and event' do
|
||||
expect { create(:vote, user: vote.user, event: vote.event) }
|
||||
.to raise_error(ActiveRecord::RecordInvalid, 'Validation failed: User has already been taken')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue