50 lines
1.6 KiB
Ruby
50 lines
1.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
RSpec.describe CustomAttributeDefinition do
|
|
describe 'callbacks' do
|
|
describe '#cleanup_conversation_required_attributes' do
|
|
let(:account) { create(:account) }
|
|
let(:attribute_key) { 'test_attribute' }
|
|
let!(:custom_attribute) do
|
|
create(:custom_attribute_definition,
|
|
account: account,
|
|
attribute_key: attribute_key,
|
|
attribute_model: 'conversation_attribute')
|
|
end
|
|
|
|
context 'when conversation attribute is in required attributes list' do
|
|
before do
|
|
account.update!(conversation_required_attributes: [attribute_key, 'other_attribute'])
|
|
end
|
|
|
|
it 'removes the attribute from conversation_required_attributes when destroyed' do
|
|
expect { custom_attribute.destroy! }
|
|
.to change { account.reload.conversation_required_attributes }
|
|
.from([attribute_key, 'other_attribute'])
|
|
.to(['other_attribute'])
|
|
end
|
|
end
|
|
|
|
context 'when attribute is contact_attribute' do
|
|
let!(:contact_attribute) do
|
|
create(:custom_attribute_definition,
|
|
account: account,
|
|
attribute_key: attribute_key,
|
|
attribute_model: 'contact_attribute')
|
|
end
|
|
|
|
before do
|
|
account.update!(conversation_required_attributes: [attribute_key])
|
|
end
|
|
|
|
it 'does not modify conversation_required_attributes when destroyed' do
|
|
expect { contact_attribute.destroy! }
|
|
.not_to(change { account.reload.conversation_required_attributes })
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|