73 lines
2.5 KiB
Ruby
Executable File
73 lines
2.5 KiB
Ruby
Executable File
# frozen_string_literal: true
|
|
|
|
# == Schema Information
|
|
#
|
|
# Table name: custom_attribute_definitions
|
|
#
|
|
# id :bigint not null, primary key
|
|
# attribute_description :text
|
|
# attribute_display_name :string
|
|
# attribute_display_type :integer default("text")
|
|
# attribute_key :string
|
|
# attribute_model :integer default("conversation_attribute")
|
|
# attribute_values :jsonb
|
|
# default_value :integer
|
|
# regex_cue :string
|
|
# regex_pattern :string
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
# account_id :bigint
|
|
#
|
|
# Indexes
|
|
#
|
|
# attribute_key_model_index (attribute_key,attribute_model,account_id) UNIQUE
|
|
# index_custom_attribute_definitions_on_account_id (account_id)
|
|
#
|
|
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
|