Skip to content

Commit 1be24fa

Browse files
committed
kill mutants
1 parent 8f7af0d commit 1be24fa

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

ecommerce/processes/lib/processes/three_plus_one_free.rb

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
module Processes
22
class ThreePlusOneFree
33

4-
class ProcessState < Data.define(:lines, :free_product)
5-
def initialize(lines: [], free_product: nil) = super
4+
ProcessState = Data.define(:lines, :free_product) do
5+
def initialize(lines: [], free_product: nil)
6+
super(lines: lines.freeze, free_product:)
7+
end
68

79
MIN_ORDER_LINES_QUANTITY = 4
810

911
def eligible_free_product
1012
if lines.size >= MIN_ORDER_LINES_QUANTITY
11-
line = lines.first
12-
line.fetch(:product_id)
13+
lines.sort_by { _1.fetch(:price) }.first.fetch(:product_id)
1314
end
1415
end
1516
end
@@ -29,7 +30,7 @@ def apply(event)
2930
product_id = event.data.fetch(:product_id)
3031
case event
3132
when Pricing::PriceItemAdded
32-
lines = (state.lines + [{ product_id:, price: event.data.fetch(:price) }]).sort_by { |line| line.fetch(:price) }
33+
lines = (state.lines + [{ product_id:, price: event.data.fetch(:price) }])
3334
state.with(lines:)
3435
when Pricing::PriceItemRemoved
3536
lines = state.lines.dup

0 commit comments

Comments
 (0)