Class: ActsAsCalculator::FindTier

Inherits:
Object
  • Object
show all
Defined in:
lib/acts_as_calculator/find_tier.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tiers:, amount:) ⇒ FindTier

Returns a new instance of FindTier.



9
10
11
12
# File 'lib/acts_as_calculator/find_tier.rb', line 9

def initialize(tiers:, amount:)
  @tiers = tiers
  @amount = amount
end

Class Method Details

.callObject



5
6
7
# File 'lib/acts_as_calculator/find_tier.rb', line 5

def self.call(...)
  new(...).call
end

Instance Method Details

#callObject



14
15
16
17
18
19
# File 'lib/acts_as_calculator/find_tier.rb', line 14

def call
  built = tiers.map { |tier| Tier.build(tier) }

  built.find { |tier| tier.covers?(amount) } ||
    raise(TierNotFoundError, "no tier covers #{amount.inspect} in #{built.inspect}")
end