mirror of
https://github.com/zammad/zammad
synced 2026-05-24 09:48:36 +00:00
Fixes #5474 - Failing import when an existing zendesk custom attribute name is equal an internal Zammad attribute name.
This commit is contained in:
parent
ed298164c7
commit
af566999dd
4 changed files with 64 additions and 9 deletions
|
|
@ -7,6 +7,7 @@ class Sequencer::Sequence::Import::Zendesk::OrganizationField < Sequencer::Seque
|
|||
'Common::ModelClass::Organization',
|
||||
'Import::Zendesk::ObjectAttribute::SanitizedType',
|
||||
'Import::Zendesk::ObjectAttribute::SanitizedName',
|
||||
'Import::Zendesk::ObjectAttribute::Skip',
|
||||
'Import::Zendesk::ObjectAttribute::Add',
|
||||
'Import::Zendesk::ObjectAttribute::FieldMap',
|
||||
]
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ class Sequencer::Sequence::Import::Zendesk::UserField < Sequencer::Sequence::Bas
|
|||
'Common::ModelClass::User',
|
||||
'Import::Zendesk::ObjectAttribute::SanitizedType',
|
||||
'Import::Zendesk::ObjectAttribute::SanitizedName',
|
||||
'Import::Zendesk::ObjectAttribute::Skip',
|
||||
'Import::Zendesk::ObjectAttribute::Add',
|
||||
'Import::Zendesk::ObjectAttribute::FieldMap',
|
||||
]
|
||||
|
|
|
|||
26
lib/sequencer/unit/import/zendesk/object_attribute/skip.rb
Normal file
26
lib/sequencer/unit/import/zendesk/object_attribute/skip.rb
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
# Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
|
||||
|
||||
class Sequencer::Unit::Import::Zendesk::ObjectAttribute::Skip < Sequencer::Unit::Base
|
||||
|
||||
uses :model_class, :sanitized_name
|
||||
provides :action
|
||||
|
||||
# Skip fields which already exists and not editable.
|
||||
def process
|
||||
attribute = object_attribute_for_name
|
||||
|
||||
return if !attribute || attribute.editable
|
||||
|
||||
logger.info { "Skipping. Default field '#{attribute}' found for field '#{sanitized_name}'." }
|
||||
state.provide(:action, :skipped)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def object_attribute_for_name
|
||||
ObjectManager::Attribute.get(
|
||||
object: model_class.to_s,
|
||||
name: sanitized_name
|
||||
)
|
||||
end
|
||||
end
|
||||
|
|
@ -4,18 +4,17 @@ require 'rails_helper'
|
|||
require 'zendesk_api'
|
||||
|
||||
RSpec.describe Sequencer::Sequence::Import::Zendesk::UserField, sequencer: :sequence do
|
||||
let(:process_payload) do
|
||||
{
|
||||
import_job: build_stubbed(:import_job, name: 'Import::Zendesk', payload: {}),
|
||||
dry_run: false,
|
||||
resource: resource,
|
||||
field_map: {},
|
||||
}
|
||||
end
|
||||
|
||||
context 'when trying to import user fields from Zendesk', db_strategy: :reset do
|
||||
|
||||
let(:process_payload) do
|
||||
{
|
||||
import_job: build_stubbed(:import_job, name: 'Import::Zendesk', payload: {}),
|
||||
dry_run: false,
|
||||
resource: resource,
|
||||
field_map: {},
|
||||
}
|
||||
end
|
||||
|
||||
let(:resource) do
|
||||
ZendeskAPI::UserField.new(
|
||||
nil,
|
||||
|
|
@ -43,4 +42,32 @@ RSpec.describe Sequencer::Sequence::Import::Zendesk::UserField, sequencer: :sequ
|
|||
expect { process(process_payload) }.to change(User, :column_names).by(['lieblingstier'])
|
||||
end
|
||||
end
|
||||
|
||||
context 'when trying to import an existing internal field on zammad side' do
|
||||
let(:resource) do
|
||||
ZendeskAPI::UserField.new(
|
||||
nil,
|
||||
{
|
||||
'id' => 206_415,
|
||||
'type' => 'text',
|
||||
'key' => 'phone',
|
||||
'title' => 'Phone',
|
||||
'description' => '',
|
||||
'raw_title' => 'Phone',
|
||||
'raw_description' => ",
|
||||
Katze oder Maus?",
|
||||
'position' => 0,
|
||||
'active' => false,
|
||||
'system' => false,
|
||||
'regexp_for_validation' => nil,
|
||||
'created_at' => '2015-12-04 11:05:45 UTC',
|
||||
'updated_at' => '2015-12-04 11:05:45 UTC'
|
||||
}
|
||||
)
|
||||
end
|
||||
|
||||
it 'does not try to add a existing field' do
|
||||
expect { process(process_payload) }.not_to raise_error
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue