lib/eml/uk/payload/card/activation.rb in eml-2.1.8 vs lib/eml/uk/payload/card/activation.rb in eml-2.2.0

- old
+ new

@@ -1,33 +1,44 @@ -# typed: true +# typed: strict # frozen_string_literal: true module EML module UK class Payload module Card class Activation < ::EML::UK::Payload - REQUIRED_VALUES = - %i[amount location.name location.country sales_channel].freeze - REQUIRED_CONFIG = %i[merchant_group].freeze + REQUIRED_VALUES = T.let( + %i[amount location.name location.country sales_channel].freeze, + T::Array[Symbol] + ) + REQUIRED_CONFIG = T.let(%i[merchant_group].freeze, T::Array[Symbol]) + sig { params(payload: T::Hash[Symbol, T.untyped]).void } + def initialize(payload) + super + + @client_reference_number = T.let(nil, T.nilable(String)) + @client_tracking_id = T.let(nil, T.nilable(String)) + @location = T.let(nil, T.nilable(EML::UK::Payload::Location)) + end + private - sig { params(amount: Numeric).returns(Numeric) } + sig { returns(T.nilable(Numeric)) } attr_accessor :amount - sig { params(campaign: String).returns(String) } + sig { returns(T.nilable(String)) } attr_accessor :campaign - sig { params(cardholder_user_id: String).returns(String) } + sig { returns(T.nilable(String)) } attr_accessor :cardholder_user_id # While client_order_date is sent to EML as a JSON DateTime, # there are many classes that could be used which causes a typing # challenge. For example, if Rails is in use, we will probably receive # a ActiveSupport::TimeWithZone - sig { params(client_order_date: T.untyped).returns(T.untyped) } + sig { returns(T.nilable(T.untyped)) } attr_accessor :client_order_date sig { params(client_reference_number: String).void } def client_reference_number=(client_reference_number) validate_max_length( @@ -38,34 +49,34 @@ # While client_time is sent to EML as a JSON DateTime, # there are many classes that could be used which causes a typing # challenge. For example, if Rails is in use, we will probably receive # a ActiveSupport::TimeWithZone - sig { params(client_time: T.untyped).returns(T.untyped) } + sig { returns(T.nilable(T.untyped)) } attr_accessor :client_time sig { params(client_tracking_id: String).void } def client_tracking_id=(client_tracking_id) validate_max_length( :client_tracking_id, client_tracking_id, 50 ) @client_tracking_id = client_tracking_id end - sig { params(location: Hash).void } + sig { params(location: T::Hash[T.untyped, T.untyped]).void } def location=(location) @location = EML::UK::Payload::Location.new(location) end - sig { params(merchant_group: String).returns(String) } + sig { returns(T.nilable(String)) } attr_accessor :merchant_group - sig { params(note: String).returns(String) } + sig { returns(T.nilable(String)) } attr_accessor :note - SALES_CHANNELS = %w[Online InPerson].freeze + SALES_CHANNELS = T.let(%w[Online InPerson].freeze, T::Array[String]) - sig { params(sales_channel: String).returns(String) } + sig { returns(T.nilable(String)) } attr_accessor :sales_channel end end end end