57 lines
2.6 KiB
Ruby
57 lines
2.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
describe User, type: :model do
|
|
subject { FactoryBot.build_stubbed(:user) }
|
|
context 'fields' do
|
|
## Database authenticatable
|
|
it { is_expected.to have_db_column(:email).of_type(:string) }
|
|
it { is_expected.to have_db_column(:username).of_type(:string) }
|
|
it { is_expected.to have_db_column(:encrypted_password).of_type(:string) }
|
|
## Recoverable
|
|
it { is_expected.to have_db_column(:reset_password_token).of_type(:string) }
|
|
it { is_expected.to have_db_column(:reset_password_sent_at).of_type(:datetime) }
|
|
## Trackable
|
|
it { is_expected.to have_db_column(:sign_in_count).of_type(:integer).with_options(default: 0) }
|
|
it { is_expected.to have_db_column(:current_sign_in_at).of_type(:datetime) }
|
|
it { is_expected.to have_db_column(:last_sign_in_at).of_type(:datetime) }
|
|
it { is_expected.to have_db_column(:current_sign_in_ip).of_type(:inet) }
|
|
it { is_expected.to have_db_column(:last_sign_in_ip).of_type(:inet) }
|
|
## Confirmable
|
|
it { is_expected.to have_db_column(:confirmation_token).of_type(:string) }
|
|
it { is_expected.to have_db_column(:confirmed_at).of_type(:datetime) }
|
|
it { is_expected.to have_db_column(:confirmation_sent_at).of_type(:datetime) }
|
|
it { is_expected.to have_db_column(:unconfirmed_email).of_type(:string) }
|
|
## Lockable
|
|
it { is_expected.to have_db_column(:failed_attempts).of_type(:integer).with_options(default: 0) }
|
|
it { is_expected.to have_db_column(:unlock_token).of_type(:string) }
|
|
it { is_expected.to have_db_column(:locked_at).of_type(:datetime) }
|
|
## Dates
|
|
it { is_expected.to have_db_column(:deleted_at).of_type(:datetime) }
|
|
it { is_expected.to have_db_column(:created_at).of_type(:datetime) }
|
|
it { is_expected.to have_db_column(:updated_at).of_type(:datetime) }
|
|
# admin/employee
|
|
it { is_expected.to have_db_column(:admin).of_type(:boolean).with_options(default: false) }
|
|
|
|
it { is_expected.to have_db_index(:confirmation_token).unique }
|
|
it { is_expected.to have_db_index(:email).unique }
|
|
it { is_expected.to have_db_index(:reset_password_token).unique }
|
|
it { is_expected.to have_db_index(:unlock_token).unique }
|
|
it { is_expected.to have_db_index(:username).unique }
|
|
it { is_expected.to be_paranoid }
|
|
end
|
|
|
|
describe 'associations' do
|
|
# it { is_expected.to have_many(:user_notification_subscriptions) }
|
|
end
|
|
|
|
describe 'callbacks' do
|
|
end
|
|
|
|
describe 'validations' do
|
|
it { should validate_email_format_of(:email).with_message('format is not valid') }
|
|
# it { is_expected.to callback(:activate_beta_code).after(:create) }
|
|
end
|
|
end
|