e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksarequire 'spec_helper'
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksadescribe FormalityLevel do
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa context 'Migrations' do
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa %w( name description ).each do |column|
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa it { should have_db_column(column).of_type(:text) }
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa end
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa it { should have_db_index(:name).unique(true) }
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa end
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa context 'Validations' do
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa context 'when no name is taken' do
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa it { should allow_value('foo').for(:name) }
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa end
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa context "when 'foo' is already taken" do
23305f217b86a2ebf90a848af9036908e0070542Eugen Kuksa before { FormalityLevel.create!(name: 'foo') }
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa it { should_not allow_value('foo').for(:name) }
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa end
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa context 'when FormalityLevel without name is to be saved' do
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa it 'raise error' do
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa expect { FormalityLevel.create! }.
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa to raise_error(ActiveRecord::RecordInvalid)
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa end
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa end
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksa end
e4f36cc6b6d3d4c1bcc5de4a9d0fbfbfcb9ee922Eugen Kuksaend