File tree Expand file tree Collapse file tree 1 file changed +6
-5
lines changed
ecommerce/processes/lib/processes Expand file tree Collapse file tree 1 file changed +6
-5
lines changed Original file line number Diff line number Diff line change 11module 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
You can’t perform that action at this time.
0 commit comments