4040-export ([commit_processes_idempotently /1 ]).
4141-export ([full_commit_processes_idempotently /1 ]).
4242-export ([partial_commit_processes_idempotently /1 ]).
43- % % -export([rollback_processes_idempotently/1]).
43+ -export ([rollback_processes_idempotently /1 ]).
4444
4545-export ([commit_number_ok /1 ]).
46- % % -export([rollback_number_ok/1]).
46+ -export ([rollback_number_ok /1 ]).
4747-export ([commit_refund_keep_number_unchanged /1 ]).
4848-export ([partial_commit_number_counts_as_single_op /1 ]).
4949
@@ -154,15 +154,15 @@ groups() ->
154154 ]},
155155 {cashless , [parallel ], [
156156 commit_number_ok ,
157- % % rollback_number_ok,
157+ rollback_number_ok ,
158158 commit_refund_keep_number_unchanged ,
159159 partial_commit_number_counts_as_single_op
160160 ]},
161161 {idempotency , [parallel ], [
162162 commit_processes_idempotently ,
163163 full_commit_processes_idempotently ,
164- partial_commit_processes_idempotently
165- % % rollback_processes_idempotently
164+ partial_commit_processes_idempotently ,
165+ rollback_processes_idempotently
166166 ]}
167167 ].
168168
@@ -542,20 +542,18 @@ partial_commit_processes_idempotently(C) ->
542542 ok = lim_client :commit (Change , Context , Client ),
543543 {ok , Limit = # limiter_Limit {amount = 40 }} = lim_client :get (ID , Version , Context , Client ).
544544
545- % % NOTE This test case is temporary disabled for same reason as
546- % % `rollback_number_ok`.
547- % % -spec rollback_processes_idempotently(config()) -> _.
548- % % rollback_processes_idempotently(C) ->
549- % % Client = ?config(client, C),
550- % % {ID, Version} = configure_limit(?time_range_week(), ?global(), C),
551- % % Context = ?payproc_ctx_payment(?cash(42), ?cash(0)),
552- % % Change = ?LIMIT_CHANGE(ID, Version),
553- % % ok = lim_client:hold(Change, Context, Client),
554- % % ok = lim_client:hold(Change, Context, Client),
555- % % ok = lim_client:commit(Change, Context, Client),
556- % % {ok, Limit = #limiter_Limit{amount = 0}} = lim_client:get(ID, Version, Context, Client),
557- % % ok = lim_client:commit(Change, Context, Client),
558- % % {ok, Limit = #limiter_Limit{amount = 0}} = lim_client:get(ID, Version, Context, Client).
545+ -spec rollback_processes_idempotently (config ()) -> _ .
546+ rollback_processes_idempotently (C ) ->
547+ Client = ? config (client , C ),
548+ {ID , Version } = configure_limit (? time_range_week (), ? global (), C ),
549+ Context = ? payproc_ctx_payment (? cash (42 ), ? cash (0 )),
550+ Change = ? LIMIT_CHANGE (ID , Version ),
551+ ok = lim_client :hold (Change , Context , Client ),
552+ ok = lim_client :hold (Change , Context , Client ),
553+ ok = lim_client :commit (Change , Context , Client ),
554+ {ok , Limit = # limiter_Limit {amount = 0 }} = lim_client :get (ID , Version , Context , Client ),
555+ ok = lim_client :commit (Change , Context , Client ),
556+ {ok , Limit = # limiter_Limit {amount = 0 }} = lim_client :get (ID , Version , Context , Client ).
559557
560558% %
561559
@@ -572,23 +570,19 @@ commit_number_ok(C) ->
572570 LimitState0 # limiter_Limit .amount + 1
573571 ).
574572
575- % % NOTE This test case is temporary disabled because of the bug in liminator: it
576- % % doesn't respect partial commits with final value of change in operation
577- % % distinct from value of initial hold. Somehow value of limit counter is
578- % % aggregated with summing changes up of both (!) hold and commit values.
579- % % -spec rollback_number_ok(config()) -> _.
580- % % rollback_number_ok(C) ->
581- % % Client = ?config(client, C),
582- % % {ID, Version} = configure_limit(?time_range_week(), ?global(), ?turnover_metric_number(), C),
583- % % Context = ?payproc_ctx_payment(?cash(10), ?cash(10)),
584- % % ContextRollback = ?payproc_ctx_payment(?cash(10), ?cash(0)),
585- % % {ok, LimitState0} = lim_client:get(ID, Version, Context, Client),
586- % % _ = hold_and_commit(?LIMIT_CHANGE(ID, Version), Context, ContextRollback, Client),
587- % % {ok, LimitState1} = lim_client:get(ID, Version, Context, Client),
588- % % ?assertEqual(
589- % % LimitState1#limiter_Limit.amount,
590- % % LimitState0#limiter_Limit.amount
591- % % ).
573+ -spec rollback_number_ok (config ()) -> _ .
574+ rollback_number_ok (C ) ->
575+ Client = ? config (client , C ),
576+ {ID , Version } = configure_limit (? time_range_week (), ? global (), ? turnover_metric_number (), C ),
577+ Context = ? payproc_ctx_payment (? cash (10 ), ? cash (10 )),
578+ ContextRollback = ? payproc_ctx_payment (? cash (10 ), ? cash (0 )),
579+ {ok , LimitState0 } = lim_client :get (ID , Version , Context , Client ),
580+ _ = hold_and_commit (? LIMIT_CHANGE (ID , Version ), Context , ContextRollback , Client ),
581+ {ok , LimitState1 } = lim_client :get (ID , Version , Context , Client ),
582+ ? assertEqual (
583+ LimitState1 # limiter_Limit .amount ,
584+ LimitState0 # limiter_Limit .amount
585+ ).
592586
593587-spec commit_refund_keep_number_unchanged (config ()) -> _ .
594588commit_refund_keep_number_unchanged (C ) ->
0 commit comments