Class: Smartpay::Requests::Coupon

Inherits:
Object
  • Object
show all
Includes:
Validator
Defined in:
lib/smartpay/requests/coupon.rb

Overview

Coupon

Constant Summary collapse

REQUIREMENT_KEY_NAME =
%i[discountType name].freeze
AVAILABLE_DISCOUNT_TYPES =
%w[percentage amount].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(raw_payload) ⇒ Coupon

Returns a new instance of Coupon.



14
15
16
# File 'lib/smartpay/requests/coupon.rb', line 14

def initialize(raw_payload)
  @payload = raw_payload.transform_keys(&:to_sym)
end

Instance Attribute Details

#payloadObject

Returns the value of attribute payload.



9
10
11
# File 'lib/smartpay/requests/coupon.rb', line 9

def payload
  @payload
end

Instance Method Details

#as_hashObject



18
19
20
21
22
23
24
25
# File 'lib/smartpay/requests/coupon.rb', line 18

def as_hash
  check_requirement!(REQUIREMENT_KEY_NAME)
  raise Errors::InvalidRequestPayloadError, :discountType unless AVAILABLE_DISCOUNT_TYPES.include?(payload[:discountType])
  raise Errors::InvalidRequestPayloadError, :discountPercentage if payload[:discountType] == "percentage" && !payload[:discountPercentage]
  raise Errors::InvalidRequestPayloadError, :discountAmount if payload[:discountType] == "amount" && !payload[:discountAmount]

  normalize_payload
end