turniere-backend/spec/models/beamer_spec.rb

46 lines
1.2 KiB
Ruby

# frozen_string_literal: true
require 'rails_helper'
RSpec.describe Beamer, type: :model do
describe 'validation' do
it { should validate_presence_of :name }
it { should validate_presence_of :display_state }
it 'validates uniqueness of name scoped to tournament' do
beamer = create(:beamer)
duplicate = build(:beamer, name: beamer.name, tournament: beamer.tournament)
expect(duplicate).not_to be_valid
end
it 'allows same name in different tournaments' do
beamer = create(:beamer, name: 'projector')
other = build(:beamer, name: 'projector', tournament: create(:tournament))
expect(other).to be_valid
end
it 'validates display_state inclusion' do
beamer = build(:beamer, display_state: 'invalid_state')
expect(beamer).not_to be_valid
end
Beamer::DISPLAY_STATES.each do |state|
it "accepts display_state '#{state}'" do
beamer = build(:beamer, display_state: state)
expect(beamer).to be_valid
end
end
end
describe 'association' do
it { should belong_to :tournament }
end
describe '#owner' do
it 'delegates to tournament' do
beamer = create(:beamer)
expect(beamer.owner).to eq(beamer.tournament.owner)
end
end
end