mirror of
https://github.com/astuto/astuto.git
synced 2025-12-15 11:17:49 +01:00
54 lines
1.5 KiB
Ruby
54 lines
1.5 KiB
Ruby
require 'rails_helper'
|
|
|
|
RSpec.describe User, type: :model do
|
|
let(:user) { FactoryBot.build(:user) }
|
|
|
|
it 'should be valid' do
|
|
expect(user).to be_valid
|
|
end
|
|
|
|
it 'creates a user with role "user" by default' do
|
|
expect(User.new.role).to eq('user')
|
|
end
|
|
|
|
it 'can have the following roles: "user", "moderator" and "admin"' do
|
|
user = FactoryBot.build(:user)
|
|
moderator = FactoryBot.build(:moderator)
|
|
admin = FactoryBot.build(:admin)
|
|
|
|
expect(user.role).to eq('user')
|
|
expect(moderator.role).to eq('moderator')
|
|
expect(admin.role).to eq('admin')
|
|
|
|
expect(user).to be_valid
|
|
expect(moderator).to be_valid
|
|
expect(admin).to be_valid
|
|
end
|
|
|
|
it 'has a non-nil and non-empty full name' do
|
|
nil_name_user = FactoryBot.build(:user, full_name: nil)
|
|
empty_name_user = FactoryBot.build(:user, full_name: '')
|
|
|
|
expect(nil_name_user).to be_invalid
|
|
expect(empty_name_user).to be_invalid
|
|
end
|
|
|
|
it 'has a full name between 2 and 32 characters' do
|
|
too_short_user = FactoryBot.build(:user, full_name: 'a' * 1)
|
|
short_user = FactoryBot.build(:user, full_name: 'a' * 2)
|
|
long_user = FactoryBot.build(:user, full_name: 'a' * 32)
|
|
too_long_user = FactoryBot.build(:user, full_name: 'a' * 33)
|
|
|
|
expect(too_short_user).to be_invalid
|
|
expect(short_user).to be_valid
|
|
expect(long_user).to be_valid
|
|
expect(too_long_user).to be_invalid
|
|
end
|
|
|
|
it 'has an email that must contain a @' do
|
|
invalid_email_user = FactoryBot.build(:user, email: 'invalid.email')
|
|
|
|
expect(invalid_email_user).to be_invalid
|
|
end
|
|
end
|