package Ġcom . iv ette val dez . sat urn us . screens . invoices . form . payment Ċ Ċ /* Ġk tl int - disable Ġno - wildcard - imports Ġ*/ Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . iv ette val dez . sat urn us . R Ċ import Ġcom . iv ette val dez . sat urn us . common . Constants Ċ import Ġcom . iv ette val dez . sat urn us . common . currency . Currency Helper . to Currency Ċ import Ġcom . iv ette val dez . sat urn us . invoices . Invoice Ċ import Ġcom . iv ette val dez . sat urn us . invoices . Invoice Dao Ċ import Ġcom . iv ette val dez . sat urn us . invoices . payment . Invoice Payment Ċ import Ġcom . iv ette val dez . sat urn us . invoices . payment . calculator . Invoice Payment Calculator Ċ import Ġcom . iv ette val dez . sat urn us . invoices . payment . calculator . Invoice Payment Calculator Factory Ċ import Ġcom . iv ette val dez . sat urn us . screens . common . controllers . Fragments EventBus Ċ import Ġcom . iv ette val dez . sat urn us . screens . common . dialogs . Dialog s Manager Ċ import Ġcom . iv ette val dez . sat urn us . screens . invoices . form . Invoice Form Change Fragment Event Ċ import Ġcom . iv ette val dez . sat urn us . screens . invoices . form . details . Invoice Form Details Fragment Event Ċ import Ġcom . iv ette val dez . sat urn us . screens . invoices . form . payment . Invoice Form Payment Controller Test . Fake Field Values . ALL _ FIL LED Ċ import Ġcom . iv ette val dez . sat urn us . screens . invoices . form . payment . Invoice Form Payment Controller Test . Fake Field Values . SUB TOTAL _ IS _ ZERO Ċ import Ġcom . iv ette val dez . sat urn us . testdata . Invoice TestData Ċ import Ġcom . step stone . step per . Verification Error Ċ import Ġorg . junit . Assert .* Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . mockito . Argument Captor Ċ import Ġorg . mockito . Captor Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . Mockito .* Ċ import Ġorg . mockito . junit . Mockito JUnit Runner Ċ import Ġorg . mockito . kotlin . any OrNull Ċ import Ġorg . mockito . kotlin . capture Ċ import Ġorg . mockito . kotlin . verify Ċ Ċ @ RunWith ( Mockito JUnit Runner :: class ) Ċ class ĠInvoice Form Payment Controller Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsut : ĠInvoice Form Payment Controller ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontext Mock : ĠContext ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Mvc Mock : ĠI Invoice Form Payment View Mvc ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdialog s Manager Mock : ĠDialog s Manager ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfragments EventBus Mock : ĠF rag ments EventBus ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġinvoice Payment Calculator Factory Mock : ĠInvoice Payment Calculator Factory ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġinvoice Dao Mock : ĠInvoice Dao ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġinvoice Form Details Fragment Event Mock : ĠInvoice Form Details Fragment Event ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġwrong Event Mock : ĠInvoice Form Change Fragment Event ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġverification Error Mock : ĠVerification Error ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġinvoice Payment Calculator Mock : ĠInvoice Payment Calculator ĊĊĠĠĠ Ġ@ Captor ĊĠĠĠ Ġprivate Ġval Ġpayment Event Captor : ĠArgument Captor < Invoice Form Payment Fragment Event > Ġ= ĊĠĠĠĠĠĠĠ ĠArgument Captor . for Class ( Invoice Form Payment Fragment Event :: class . java ) ĊĊĠĠĠ Ġprivate Ġval Ġfake Invoice : ĠInvoice Ġ= ĠInvoice TestData . get Invoice () ĊĠĠĠ Ġprivate Ġval Ġfake Invoice Payment : ĠInvoice Payment Ġ= Ġfake Invoice . payment !! ĊĊĠĠĠ Ġprivate Ġval Ġfol io : ĠString Ġ= Ġfake Invoice . folio ĊĊĠĠĠ Ġenum Ġclass ĠFake Field Values Ġ{ ĊĊĠĠĠĠĠĠĠ ĠALL _ FIL LED , ĠSUB TOTAL _ IS _ ZERO ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSUB TOTAL : ĠString Ġ= Ġ" 1 0 0 0 0 0 0 " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠU NA VA IL ABLE _ STRING _ ID : ĠInt Ġ= ĠR . string . default _ un available ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠU NA VA IL ABLE _ STRING _ VALUE : ĠString Ġ= Ġ" N / A " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ ZERO _ ID : ĠInt Ġ= ĠR . string . default _ zero ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ ZERO _ VALUE : ĠString Ġ= Ġ" 0 " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠERROR _ MISSING _ SUB TOTAL _ ID : ĠInt Ġ= ĠR . string . error _ missing _ subtotal ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠERROR _ MISSING _ CAL C UL ATION _ ID : ĠInt Ġ= ĠR . string . error _ missing _ calculation ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠERROR _ MISSING _ REC AL C UL ATION _ ID : ĠInt Ġ= ĠR . string . error _ missing _ re calculation ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġsut Ġ= ĠInvoice Form Payment Controller ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Mock , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog s Manager Mock , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragments EventBus Mock , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvoice Payment Calculator Factory Mock , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvoice Dao Mock ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsut . bind View ( view Mvc Mock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġinit Variables _ null F ol io _ config ures New Invoice () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġnew Invoice () ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġverify ( invoice Dao Mock , Ġnever ()). findBy F ol io ( any OrNull ()) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( sut . new Invoice ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( sut . editing Invoice ) ĊĠĠĠĠĠĠĠ ĠassertNull ( sut . invoice ) ĊĠĠĠĠĠĠĠ ĠassertNull ( sut . invoice Payment ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġinit Variables _ folio IsNotNull _ config ures Editing Invoice () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġediting Invoice () ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġverify ( invoice Dao Mock ). findBy F ol io ( folio ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( sut . new Invoice ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( sut . editing Invoice ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( sut . invoice , Ġfake Invoice ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( sut . invoice Payment , Ġfake Invoice Payment ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠonStart _ new Invoice _ no Data Is Bound To View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġnew Invoice () ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsut . onStart () ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġverify ( view Mvc Mock , Ġnever ()). bind Payment ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany OrNull (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany OrNull (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany OrNull (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany OrNull (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany OrNull () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠonStart _ editing Invoice With Physical Receiver _ invoice Payment Is Bound To View With Correct Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġediting Invoice With Physical Receiver () ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsut . onStart () ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġverify ( view Mvc Mock ). bind Payment ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub total Ġ= Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv a Ġ= Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv a With holding Ġ= Ġorg . mockito . kotlin . eq ( UN AVAILABLE _ STRING _ VALUE ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis r With holding Ġ= Ġorg . mockito . kotlin . eq ( UN AVAILABLE _ STRING _ VALUE ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Ġ= Ġany String () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠonStart _ editing Invoice With M oral Receiver _ invoice Payment Is Bound To View With Correct Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġediting Invoice With M oral Receiver () ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsut . onStart () ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġverify ( view Mvc Mock ). bind Payment ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub total Ġ= Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv a Ġ= Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv a With holding Ġ= Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis r With holding Ġ= Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Ġ= Ġany String () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠonStart _ listeners Registered () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsut . onStart () ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġverify ( view Mvc Mock ). register Listener ( sut ) ĊĠĠĠĠĠĠĠ Ġverify ( fragments EventBus Mock ). register Listener ( sut ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġon Stop _ listeners Un registered () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsut . on Stop () ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġverify ( view Mvc Mock ). unregister Listener ( sut ) ĊĠĠĠĠĠĠĠ Ġverify ( fragments EventBus Mock ). unregister Listener ( sut ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġon Fragment Event _ event IsNot Invoice Form Details Fragment Event _ no Data Is Bound () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġsut . invoice Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġsut . receiver Person Type Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġsut . invoice Payment Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsut . on Fragment Event ( wrong Event Mock ) ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠassertNull ( sut . invoice ) ĊĠĠĠĠĠĠĠ ĠassertNull ( sut . receiver Person Type ) ĊĠĠĠĠĠĠĠ ĠassertNull ( sut . invoice Payment Calculator ) ĊĠĠĠĠĠĠĠ ĠassertNull ( sut . invoice Payment ) ĊĠĠĠĠĠĠĠ Ġverify No Interactions ( view Mvc Mock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġon Fragment Event _ new Invoice With Invoice Form Details Fragment Event _ only Invoice And Receiver Person Type Are Bound () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġset Invoice Form Details Fragment Event () ĊĠĠĠĠĠĠĠ Ġget Invoice Payment Calculator () ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsut . on Fragment Event ( invoice Form Details Fragment Event Mock ) ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠassertNotNull ( sut . invoice ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( sut . receiver Person Type ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( sut . invoice Payment Calculator ) ĊĠĠĠĠĠĠĠ Ġverify No Interactions ( view Mvc Mock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġon Fragment Event _ editing Invoice With Invoice Form Details Fragment Event _ data Is Bound To View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġediting Invoice With Invoice Form Details Fragment Event () ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsut . on Fragment Event ( invoice Form Details Fragment Event Mock ) ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠassertNotNull ( sut . invoice ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( sut . receiver Person Type ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( sut . invoice Payment , Ġfake Invoice Payment ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( sut . has Changes ) ĊĊĠĠĠĠĠĠĠ Ġverify ( view Mvc Mock ). bind Payment ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany String () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġon Sub total Changed _ has Changes IsTrue () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsut . on Sub total Changed () ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠassertTrue ( sut . has Changes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġon Calculate Clicked _ empty Sub total _ generic Saving Error Dialog Is Shown () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ ĠgetDefault Zero String () ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsut . on Calculate Clicked ("") ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġverify ( dialogs Manager Mock ). show Missing Sub total Error ( any ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġon Calculate Clicked _ physical Receiver _ generated Payment Is Bound To View WithDefault With hold ings () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġgenerate Invoice Payment ( Constants . PHYSICAL _ PERSON ) ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsut . on Calculate Clicked ( SUB TOTAL ) ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠassertEquals ( sut . invoice Payment , Ġfake Invoice Payment ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( sut . has Changes ) ĊĊĠĠĠĠĠĠĠ Ġverify ( view Mvc Mock ). bind Payment ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub total Ġ= Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv a Ġ= Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv a With holding Ġ= Ġorg . mockito . kotlin . eq ( UN AVAILABLE _ STRING _ VALUE ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis r With holding Ġ= Ġorg . mockito . kotlin . eq ( UN AVAILABLE _ STRING _ VALUE ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Ġ= Ġany String () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġon Calculate Clicked _ m oral Receiver _ generated Payment Is Bound To View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġgenerate Invoice Payment ( Constants . MOR AL _ PERSON ) ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsut . on Calculate Clicked ( SUB TOTAL ) ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠassertEquals ( sut . invoice Payment , Ġfake Invoice Payment ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( sut . has Changes ) ĊĊĠĠĠĠĠĠĠ Ġverify ( view Mvc Mock ). bind Payment ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub total Ġ= Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv a Ġ= Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv a With holding Ġ= Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis r With holding Ġ= Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Ġ= Ġany String () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġverify Step _ missing Calculation Error _ returns Verification Error With Correct Message () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġmissing Calculation Error () ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsut . verify Step () ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠassertNotNull ( result ) ĊĠĠĠĠĠĠĠ Ġassert ( result Ġis ĠVerification Error ) ĊĠĠĠĠĠĠĠ Ġverify ( context Mock ). getString ( ERROR _ MISSING _ CAL C UL ATION _ ID ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġverify Step _ missing Re calculation Error _ returns Verification Error With Correct Message () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġmissing Re calculation Error () ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsut . verify Step () ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠassertNotNull ( result ) ĊĠĠĠĠĠĠĠ Ġassert ( result Ġis ĠVerification Error ) ĊĠĠĠĠĠĠĠ Ġverify ( context Mock ). getString ( ERROR _ MISSING _ REC AL C UL ATION _ ID ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġverify Step _ no Form Errors And Physical Receiver _ sets Default Values And Posts Complete Invoice () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġno Form Errors ( Constants . PHYSICAL _ PERSON ) ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsut . verify Step () ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠassertNull ( result ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( sut . invoice !!. payment !! , Ġsut . invoice Payment !! ) ĊĊĠĠĠĠĠĠĠ Ġverify ( view Mvc Mock ). bind Payment ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub total Ġ= ĠDEFAULT _ ZERO _ VALUE . to Currency (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv a Ġ= ĠDEFAULT _ ZERO _ VALUE . to Currency (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv a With holding Ġ= ĠU NA VA IL ABLE _ STRING _ VALUE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis r With holding Ġ= ĠU NA VA IL ABLE _ STRING _ VALUE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Ġ= ĠDEFAULT _ ZERO _ VALUE . to Currency () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġverify ( fragments EventBus Mock ). post Event ( capture ( payment Event Captor )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġverify Step _ no Form Errors And M oral Receiver _ sets Default Values And Posts Complete Invoice () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġno Form Errors ( Constants . MOR AL _ PERSON ) ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsut . verify Step () ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠassertNull ( result ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( sut . invoice !!. payment !! , Ġsut . invoice Payment !! ) ĊĊĠĠĠĠĠĠĠ Ġverify ( view Mvc Mock ). bind Payment ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub total Ġ= ĠDEFAULT _ ZERO _ VALUE . to Currency (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv a Ġ= ĠDEFAULT _ ZERO _ VALUE . to Currency (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv a With holding Ġ= ĠDEFAULT _ ZERO _ VALUE . to Currency (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis r With holding Ġ= ĠDEFAULT _ ZERO _ VALUE . to Currency (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Ġ= ĠDEFAULT _ ZERO _ VALUE . to Currency () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġverify ( fragments EventBus Mock ). post Event ( capture ( payment Event Captor )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠonError _ missing Calculation Error _ generic Saving Error With Correct Message Is Shown () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġmissing Calculation Error () ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsut . onError ( verification Error Mock ) ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġverify ( dialogs Manager Mock ). show Generic Saving Error ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverification Error Mock . errorMessage ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠonError _ missing Re calculation Error _ generic Saving Error With Correct Message Is Shown () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġmissing Re calculation Error () ĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġsut . onError ( verification Error Mock ) ĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġverify ( dialogs Manager Mock ). show Generic Saving Error ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverification Error Mock . errorMessage ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ-------------------------------------------------------------------------------- --------- ĊĠĠĠ Ġ// ĠHEL PER ĠMETHO DS ĊĠĠĠ Ġ// Ġ-------------------------------------------------------------------------------- --------- ĊĊĠĠĠ Ġprivate Ġfun Ġnew Invoice () Ġ{ ĊĠĠĠĠĠĠĠ Ġsut . init Variables ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġediting Invoice () Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Invoice By F ol io () ĊĠĠĠĠĠĠĠ Ġsut . init Variables ( folio ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġediting Invoice With Physical Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġediting Invoice () ĊĠĠĠĠĠĠĠ Ġget Unavailable String () ĊĠĠĠĠĠĠĠ Ġsut . receiver Person Type Ġ= ĠConstants . PHYSICAL _ PERSON ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġediting Invoice With Invoice Form Details Fragment Event () Ġ{ ĊĠĠĠĠĠĠĠ Ġediting Invoice With Physical Receiver () ĊĠĠĠĠĠĠĠ Ġget Invoice Payment Calculator () ĊĠĠĠĠĠĠĠ Ġgenerate Invoice Payment ( sut . receiver Person Type !! ) ĊĠĠĠĠĠĠĠ Ġset Invoice Form Details Fragment Event () ĊĠĠĠĠĠĠĠ Ġget Sub total () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġediting Invoice With M oral Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġediting Invoice () ĊĠĠĠĠĠĠĠ Ġsut . receiver Person Type Ġ= ĠConstants . MOR AL _ PERSON ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Invoice By F ol io () Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when `( invoice Dao Mock . findBy F ol io ( folio )). thenReturn ( fake Invoice ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Invoice Form Details Fragment Event () Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when `( invoice Form Details Fragment Event Mock . invoice ). thenReturn ( fake Invoice ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Invoice Payment Calculator () Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvoice Payment Calculator Factory Mock . new Invoice Payment Calculator ( any String ()) ĊĠĠĠĠĠĠĠ Ġ). thenReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvoice Payment Calculator Mock ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Invoice Payment ( receiver Person Type : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsut . receiver Person Type Ġ= Ġreceiver Person Type ĊĠĠĠĠĠĠĠ Ġsut . invoice Payment Calculator Ġ= Ġinvoice Payment Calculator Mock ĊĊĠĠĠĠĠĠĠ Ġediting Invoice () ĊĠĠĠĠĠĠĠ Ġget Unavailable String () ĊĠĠĠĠĠĠĠ ĠgetDefault Zero String () ĊĊĠĠĠĠĠĠĠ Ġ` when `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvoice Payment Calculator Mock . calculate Payment ( any Double ()) ĊĠĠĠĠĠĠĠ Ġ). thenReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfake Invoice Payment ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Sub total () Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when `( view Mvc Mock . getSub total ()). thenReturn ( SUB TOTAL ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Unavailable String () Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when `( context Mock . getString ( UN AVAILABLE _ STRING _ ID )). thenReturn ( UN AVAILABLE _ STRING _ VALUE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetDefault Zero String () Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when `( context Mock . getString ( DEFAULT _ ZERO _ ID )). thenReturn ( DEFAULT _ ZERO _ VALUE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Verification ErrorMessage () Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when `( verification Error Mock . errorMessage ). thenReturn ("") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmissing Calculation Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when `( context Mock . getString ( ERROR _ MISSING _ CAL C UL ATION _ ID )). thenReturn ("") ĊĊĠĠĠĠĠĠĠ Ġsut . has Changes Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠgetDefault Zero String () ĊĠĠĠĠĠĠĠ Ġget Verification ErrorMessage () ĊĠĠĠĠĠĠĠ Ġset Fields Return Values ( SUB TOTAL _ IS _ ZERO ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmissing Re calculation Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when `( context Mock . getString ( ERROR _ MISSING _ REC AL C UL ATION _ ID )). thenReturn ("") ĊĊĠĠĠĠĠĠĠ Ġsut . has Changes Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠgetDefault Zero String () ĊĠĠĠĠĠĠĠ Ġget Verification ErrorMessage () ĊĠĠĠĠĠĠĠ Ġset Fields Return Values ( ALL _ FIL LED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġno Form Errors ( receiver Person Type : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsut . has Changes Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġsut . receiver Person Type Ġ= Ġreceiver Person Type ĊĊĠĠĠĠĠĠĠ ĠgetDefault Zero String () ĊĠĠĠĠĠĠĠ Ġget Unavailable String () ĊĠĠĠĠĠĠĠ Ġediting Invoice () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Fields Return Values ( field Values : ĠFake Field Values ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsub total : ĠString ĊĠĠĠĠĠĠĠ Ġval Ġother FieldValue : ĠString ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( field Values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠALL _ FIL LED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub total Ġ= Ġ" x " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother FieldValue Ġ= Ġ" x " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSUB TOTAL _ IS _ ZERO Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub total Ġ= ĠDEFAULT _ ZERO _ VALUE . to Currency () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother FieldValue Ġ= Ġ" x " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Unsupported Ġfake Ġfield Ġvalues : Ġ$ field Values ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ` when `( view Mvc Mock . getSub total ()). thenReturn ( subtotal ) ĊĠĠĠĠĠĠĠ Ġ` when `( view Mvc Mock . get I va ()). thenReturn ( other FieldValue ) ĊĠĠĠĠĠĠĠ Ġ` when `( view Mvc Mock . getTotal ()). thenReturn ( other FieldValue ) ĊĠĠĠ Ġ} Ċ }