class Zendesk2::CreateUserIdentity

Public Class Methods

accepted_attributes() click to toggle source
# File lib/zendesk2/create_user_identity.rb, line 9
def self.accepted_attributes
  %w(primary verified type value user_id)
end

Public Instance Methods

mock() click to toggle source
# File lib/zendesk2/create_user_identity.rb, line 21
def mock
  identity = cistern.serial_id

  record = {
    'id'         => identity,
    'url'        => url_for("/user/#{user_id}/identities/#{identity}.json"),
    'created_at' => timestamp,
    'updated_at' => timestamp,
    'verified'   => false,
    'primary'    => false,
    'user_id'    => user_id,
  }.merge(user_identity_params)

  record.merge('primary' => true) if cistern.data[:identities].values.find { |ui| ui['user_id'] == user_id }.nil?

  if cistern.data[:identities].values.find { |i| i['value'] == record['value'] }
    error!(:invalid, details: {
             'value' => [{ 'description' => "Value: #{record['value']} is already being used by another user" }],
           })
  end

  cistern.data[:identities][identity] = record

  mock_response('identity' => record)
end
user_id() click to toggle source
# File lib/zendesk2/create_user_identity.rb, line 17
def user_id
  params.fetch('user_identity').fetch('user_id').to_i
end
user_identity_params() click to toggle source
# File lib/zendesk2/create_user_identity.rb, line 13
def user_identity_params
  Cistern::Hash.slice(params.fetch('user_identity'), *self.class.accepted_attributes)
end