From 330e8625d3e7a2ecd32112a0555120c0a18b7ca0 Mon Sep 17 00:00:00 2001 From: Karthik Sivadas Date: Sun, 1 Dec 2019 15:42:15 +0530 Subject: [PATCH] Update user model specs (#334) --- app/models/user.rb | 8 ++++---- spec/models/user_spec.rb | 23 ++++++----------------- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 30fc387de..9c96f0c8b 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -60,10 +60,10 @@ class User < ApplicationRecord # Used by the actionCable/PubSub Service we use for real time communications has_secure_token :pubsub_token - validates_uniqueness_of :email, scope: :account_id - validates :email, presence: true - validates :name, presence: true - validates :account_id, presence: true + # The validation below has been commented out as it does not + # work because :validatable in devise overrides this. + # validates_uniqueness_of :email, scope: :account_id + validates :email, :name, :account_id, presence: true enum role: [:agent, :administrator] diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index c95b6bd8a..71d89faa8 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -3,6 +3,8 @@ require 'rails_helper' RSpec.describe User do + let!(:user) { create(:user) } + context 'validations' do it { is_expected.to validate_presence_of(:email) } it { is_expected.to validate_presence_of(:name) } @@ -12,29 +14,16 @@ RSpec.describe User do context 'associations' do it { is_expected.to belong_to(:account) } it { is_expected.to belong_to(:inviter).class_name('User').required(false) } - - it do - is_expected.to have_many(:assigned_conversations) - .class_name('Conversation').dependent(:nullify) - end + it { is_expected.to have_many(:assigned_conversations).class_name('Conversation').dependent(:nullify) } it { is_expected.to have_many(:inbox_members).dependent(:destroy) } it { is_expected.to have_many(:assigned_inboxes).through(:inbox_members) } it { is_expected.to have_many(:messages) } end describe 'pubsub_token' do - let(:user) { create(:user) } + before { user.update(name: Faker::Name.name) } - it 'gets created on object create' do - obj = user - expect(obj.pubsub_token).not_to eq(nil) - end - - it 'does not get updated on object update' do - obj = user - old_token = obj.pubsub_token - obj.update(name: 'test') - expect(obj.pubsub_token).to eq(old_token) - end + it { expect(user.pubsub_token).not_to eq(nil) } + it { expect(user.saved_changes.keys).not_to eq('pubsub_token') } end end