trabajo-afectivo/spec/db/migrate/issue_1905_exchange_login_from_remote_id_spec.rb

89 lines
1.8 KiB
Ruby

# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
require 'rails_helper'
RSpec.describe Issue1905ExchangeLoginFromRemoteId, type: :db_migration do
let(:backend) { ::Import::Exchange }
it 'removes :item_id from attributes' do
invalid_config = {
attributes: {
item_id: 'login',
some: 'other',
}
}
valid_config = ActiveSupport::HashWithIndifferentAccess.new(
attributes: {
some: 'other',
}
)
expect(backend).to receive(:config).and_return(invalid_config) # rubocop:disable RSpec/StubbedMock
allow(backend).to receive(:config).and_call_original
migrate
expect(backend.config).to eq(valid_config)
end
context 'no changes' do
it 'performs no action for new systems', system_init_done: false do
expect(backend).not_to receive(:config)
migrate
end
shared_examples 'irrelevant config' do
it 'does not change the config' do
allow(backend).to receive(:config).and_return(config)
expect(backend).not_to receive(:config=)
migrate
end
end
context 'blank config' do
let(:config) { nil }
it_behaves_like 'irrelevant config'
end
context 'blank attributes' do
let(:config) do
{
some: 'config'
}
end
it_behaves_like 'irrelevant config'
end
context 'blank attribute :item_id' do
let(:config) do
{
attributes: {
some: 'mapping'
}
}
end
it_behaves_like 'irrelevant config'
end
context 'attribute :item_id not mapping to login' do
let(:config) do
{
attributes: {
item_id: 'other_local_attribute'
}
}
end
it_behaves_like 'irrelevant config'
end
end
end