Sha256: 3cbb7d9ebb7a821ad7e721f2d9bcf2f46547810c4de9652fe635e62fe3ebe3d3

Contents?: true

Size: 1.95 KB

Versions: 3

Compression:

Stored size: 1.95 KB

Contents

# frozen_string_literal: true

module AdaptorHelpers
  def adaptor_class
    raise NotImplementedError
  end

  def create_operation_for(resource_class:)
    operation_for(
      method: :create,
      resource: resource_class
    )
  end

  def create_resource_for(*args)
    create_result_for(*args).raise_if_error.resource
  end

  def create_result_for(adaptor:, resource:)
    result_for(
      adaptor: adaptor,
      method: :create,
      resource: resource
    )
  end

  def delete_operation_for(resource_class:)
    operation_for(
      method: :delete,
      resource: resource_class
    )
  end

  def delete_resource_for(*args)
    delete_result_for(*args).raise_if_error.resource
  end

  def delete_result_for(adaptor:, resource:)
    result_for(
      adaptor: adaptor,
      method: :delete,
      resource: resource
    )
  end

  def find_operation_for(resource_class:)
    operation_for(
      method: :find,
      resource: resource_class
    )
  end

  def find_resource_for(*args)
    find_result_for(*args).raise_if_error.resource
  end

  def find_result_for(adaptor:, resource:)
    result_for(
      adaptor: adaptor,
      method: :find,
      resource: resource
    )
  end

  def operation_for(method:, resource_class:)
    adaptor_class
      .base_operation_module_for(resource_class: resource_class)
      .const_get(LedgerSync::Util::StringHelpers.camelcase(method.to_s))
  end

  def result_for(adaptor:, method:, resource:)
    operation_for(
      method: method,
      resource_class: resource.class
    ).new(
      adaptor: adaptor,
      resource: resource
    ).perform
  end

  def update_operation_for(resource_class:)
    operation_for(
      method: :update,
      resource: resource_class
    )
  end

  def update_resource_for(*args)
    update_result_for(*args).raise_if_error.resource
  end

  def update_result_for(adaptor:, resource:)
    result_for(
      adaptor: adaptor,
      method: :update,
      resource: resource
    )
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ledger_sync-1.3.3 qa/support/adaptor_helpers.rb
ledger_sync-1.3.2 qa/support/adaptor_helpers.rb
ledger_sync-1.3.1 qa/support/adaptor_helpers.rb