package Ġcom . k re ait . slack . api . test Ċ Ċ import Ġcom . k re ait . slack . api . group . Api Call Method Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . times Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Ċ import Ġorg . junit . jupiter . api . Assertions Ċ Ċ object ĠMock Method TestHelper Ġ{ ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġfun Ġ< Builder , ĠSuccess , ĠFailure , ĠParams Ġ: ĠAny > Ġverify ( method Provider : Ġ() Ġ-> ĠApi Call Method < Builder , ĠSuccess , ĠFailure , ĠParams >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Function : Ġ( Success ?) Ġ-> ĠAny , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Response : ĠSuccess , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure Function : Ġ( Failure ?) Ġ-> ĠAny , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure Response : ĠFailure , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams : ĠParams ) Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= Ġmethod Provider . invoke () ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( method Ġis ĠMock Method < *, Ġ*, Ġ* >) ĊĊĠĠĠĠĠĠĠ Ġ// Ġsetup Ġmethod Ġwith ĊĊĠĠĠĠĠĠĠ Ġmethod . with ( params ) ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠSet ĠFailure ĠResponse ĊĠĠĠĠĠĠĠ Ġ( method Ġas ĠMock Method < Success , ĠFailure , ĠParams >). success Response Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ( method Ġas ĠMock Method < Success , ĠFailure , ĠParams >). failure Response Ġ= Ġfailure Response ĊĠĠĠĠĠĠĠ Ġ// ĠSet ĠFailure ĠFunction ĊĠĠĠĠĠĠĠ Ġmethod . on Success ( null ) ĊĠĠĠĠĠĠĠ Ġmethod . on Failure ( failure Function ) ĊĠĠĠĠĠĠĠ Ġmethod Provider . invoke (). invoke () ĊĠĠĠĠĠĠĠ Ġ// ĠVerify Ġthat Ġfailure Ġfunction Ġhas Ġbeen Ġcalled Ġonce Ġafter Ġinvocation ĊĠĠĠĠĠĠĠ Ġverify ( failure Function , Ġtimes ( 1 )). invoke ( failure Response ) ĊĠĠĠĠĠĠĠ Ġ// ĠRemove Ġfailure Ġfunction ĊĠĠĠĠĠĠĠ Ġmethod . on Failure ( null ) ĊĠĠĠĠĠĠĠ Ġval Ġfailure Result Ġ= Ġmethod Provider . invoke (). invoke () ĊĠĠĠĠĠĠĠ Ġ// ĠVerify Ġthat Ġfunction Ġhas Ġstill Ġbeen Ġcalled Ġonline Ġonce Ġafter Ġinvocation ĊĠĠĠĠĠĠĠ Ġverify ( failure Function , Ġtimes ( 1 )). invoke ( failure Response ) ĊĠĠĠĠĠĠĠ Ġ// ĠAssert Ġthat Ġfailure Ġresponse Ġequal ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( failure Response , Ġfailure Result . failure , Ġ" Failure Response Ġis Ġequal ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet ĠSuccess ĠResponse ĊĠĠĠĠĠĠĠ Ġ( method Ġas ĠMock Method < Success , ĠFailure , ĠParams >). success Response Ġ= Ġsuccess Response ĊĠĠĠĠĠĠĠ Ġ( method Ġas ĠMock Method < Success , ĠFailure , ĠParams >). failure Response Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ// ĠSet ĠSuccess ĠFunction ĊĠĠĠĠĠĠĠ Ġmethod . on Success ( success Function ) ĊĠĠĠĠĠĠĠ Ġmethod . on Failure ( null ) ĊĠĠĠĠĠĠĠ Ġmethod Provider . invoke (). invoke () ĊĠĠĠĠĠĠĠ Ġ// ĠVerify Ġthat Ġfunction Ġhas Ġbeen Ġcalled Ġonce Ġafter Ġinvocation ĊĠĠĠĠĠĠĠ Ġverify ( success Function , Ġtimes ( 1 )). invoke ( success Response ) ĊĠĠĠĠĠĠĠ Ġ// ĠRemove Ġfailure Ġfunction ĊĠĠĠĠĠĠĠ Ġmethod . on Success ( null ) ĊĠĠĠĠĠĠĠ Ġval Ġsuccess Result Ġ= Ġmethod Provider . invoke (). invoke () ĊĠĠĠĠĠĠĠ Ġ// ĠVerify Ġthat Ġfunction Ġhas Ġstill Ġbeen Ġcalled Ġonline Ġonce Ġafter Ġinvocation ĊĠĠĠĠĠĠĠ Ġverify ( success Function , Ġtimes ( 1 )). invoke ( success Response ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( success Response , Ġsuccess Result . success , Ġ" Success Response Ġis Ġequal ") ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( method . params (), Ġparams , Ġ" Params Ġare Ġequal ") ĊĊĠĠĠ Ġ} Ċ } Ċ