# frozen_string_literal: true require 'spec_helper' describe 'user_identities' do let(:client) { create_client } let(:user) { client.users.create(email: mock_email, name: mock_uuid, verified: true) } include_examples 'zendesk#resource', create_params: -> { { value: "ey+#{mock_uuid}@example.org", type: 'email', user_id: user.id } }, update_params: -> { { verified: true } }, fetch_params: ->(uc) { { 'user_id' => uc.user_id, 'id' => uc.id } }, collection: -> { client.user_identities(user_id: user.id) }, paged: false, search: false describe '#create_user_identity' do let(:another_user) { client.users.create(email: mock_email, name: mock_uuid, verified: true) } it 'should prevent duplicate identities across users' do expect do client.create_user_identity( 'user_identity' => { 'type' => 'email', 'value' => user.email, 'user_id' => another_user.id } ) end.to raise_exception(Zendesk2::Error, /is already being used by another user/) end it 'should prevent duplicate identities on the same user' do expect do client.create_user_identity( 'user_identity' => { 'type' => 'email', 'value' => user.email, 'user_id' => user.id } ) end.to raise_exception(Zendesk2::Error, /is already being used by another user/) end it 'should be allowed if the user is deleted' do email = user.email user.destroy expect do client.create_user_identity( 'user_identity' => { 'type' => 'email', 'value' => email, 'user_id' => another_user.id, } ) end.to change { another_user.identities.all.count }.by(1) end end end