package Ġcom . github . jean cs an che z . lea of am into . domain . service Ċ Ċ import Ġcom . github . jean cs an che z . lea of am into . data . Comp ras Repository Ċ import Ġcom . github . jean cs an che z . lea of am into . data . Oper acao Repository Ċ import Ġcom . github . jean cs an che z . lea of am into . data . V end as Repository Ċ import Ġcom . github . jean cs an che z . lea of am into . domain . Fake Factory Ċ import Ġcom . github . jean cs an che z . lea of am into . domain . Ger ar Oper acoes Con sol idad as Service Ċ import Ġjunit . framework . TestCase . assertEquals Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . mockito . Argument Matchers . any String Ċ import Ġorg . mockito . Inject Mocks Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . Mockito Annotations Ċ import Ġorg . mockito . junit . Mockito JUnit Runner Ċ import Ġorg . mockito . kotlin . any Ċ import Ġorg . mockito . kotlin . wh enever Ċ Ċ /** Ċ Ġ* Ġ@ author Ġ@ jean cs an che z Ċ Ġ* Ġ@ created Ġ 2 1 / 0 5 / 2 0 2 1 Ċ Ġ* ĠJes us Ġlo ves Ġyou . Ċ Ġ*/ Ċ Ċ @ RunWith ( Mockito JUnit Runner :: class ) Ċ internal Ġclass ĠGer ar Oper acoes Con sol idad as Service Test Ġ{ ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġoper acao Repository : ĠOper acao Repository ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġcomp ras Repository : ĠComp ras Repository ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġlateinit Ġvar Ġv end as Repository : ĠV end as Repository ĊĊĠĠĠ Ġ@ Inject Mocks ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrel atorio Service : ĠGer ar Oper acoes Con sol idad as Service ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠMockito Annotations . open Mocks ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġger ar Oper acoes Con sol idad as () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( comp ras Repository . findAll ()). then Answer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFake Factory . get Comp ras () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhenever ( v end as Repository . findAll By At ivo Codigo ( any ())). then Answer Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFake Factory . get V end as (). filter Ġ{ Ġit . ativo . codigo Ġ== Ġinvocation . arguments . first () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrel atorio Service . execute ( Unit ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDe ve Ġret orn ar Ġapenas Ġum Ġitem Ġcon solid ando Ġas Ġoper aÃ§Ãµes ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġresult . items . size ) ĊĊĠĠĠĠĠĠĠ Ġval Ġitems Simp ar Ġ= Ġresult . items . filter Ġ{ Ġit . codigo At ivo Ġ== Ġ" SIM H 3 " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġitems Ce A Ġ= Ġresult . items . filter Ġ{ Ġit . codigo At ivo Ġ== Ġ" CE AB 3 " Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠDe ve Ġret orn ar Ġa Ġquant idade Ġde Ġa Ã§Ãµes Ġconsider ando Ġas Ġoper aÃ§Ãµes ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 0 . 0 , Ġitems Simp ar . sum By Double Ġ{ Ġit . quant idade Total Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDe ve Ġret orn ar Ġa Ġquant idade Ġde Ġa Ã§Ãµes Ġconsider ando Ġas Ġoper aÃ§Ãµes ĊĠĠĠĠĠĠĠ ĠassertEquals ( 5 0 . 0 , Ġitems Ce A . sum By Double Ġ{ Ġit . quant idade Total Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDe ve Ġret orn ar Ġo Ġpre Ã§o ĠmÃ© dio Ġdas Ġa Ã§Ãµes ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 8 . 5 0 , Ġitems Simp ar . sum By Double Ġ{ Ġit . pre co Med io Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDe ve Ġret orn ar Ġo Ġpre Ã§o ĠmÃ© dio Ġdas Ġa Ã§Ãµes ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 . 8 8 , Ġitems Ce A . sum By Double Ġ{ Ġit . pre co Med io Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDe ve Ġret orn ar Ġo Ġtotal Ġconsider ando Ġas Ġoper aÃ§Ãµes ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 1 3 . 7 8 , Ġresult . total Invest ido ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġquando SIM H 3 Ou J SL G 3 Consider ar OM es mo P ap el () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcomp ras List Ġ= ĠFake Factory . get Comp ras (). filter Ġ{ Ġit . ativo . codigo Ġ== Ġ" SIM H 3 " Ġ|| Ġit . ativo . codigo Ġ== Ġ" J SL G 3 " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġv end asList Ġ= ĠFake Factory . get V end as (). filter Ġ{ Ġit . ativo . codigo Ġ== Ġ" SIM H 3 " Ġ|| Ġit . ativo . codigo Ġ== Ġ" J SL G 3 " Ġ} ĊĠĠĠĠĠĠĠ Ġwhenever ( comp ras Repository . findAll ()). thenReturn ( comp ras List ) ĊĠĠĠĠĠĠĠ Ġwhenever ( v end as Repository . findAll ()). thenReturn ( v end asList ) ĊĠĠĠĠĠĠĠ Ġwhenever ( comp ras Repository . findAll By At ivo Codigo ( any String ())). thenReturn ( comp ras List ) ĊĠĠĠĠĠĠĠ Ġwhenever ( v end as Repository . findAll By At ivo Codigo ( any String ())). thenReturn ( v end asList ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrel atorio Service . execute ( Unit ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDe ve Ġret orn ar Ġapenas Ġum Ġitem Ġcon solid ando Ġas Ġoper aÃ§Ãµes ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġresult . items . size ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDe ve Ġret orn ar Ġa Ġquant idade Ġde Ġa Ã§Ãµes Ġconsider ando Ġas Ġoper aÃ§Ãµes ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 0 . 0 , Ġresult . items . first (). quant idade Total ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDe ve Ġret orn ar Ġo Ġpre Ã§o ĠmÃ© dio Ġdas Ġa Ã§Ãµes ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 8 . 5 0 , Ġresult . items . first (). pre co Med io ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDe ve Ġret orn ar Ġo Ġtotal Ġconsider ando Ġas Ġoper aÃ§Ãµes ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 7 0 . 0 , Ġresult . total Invest ido ) ĊĠĠĠ Ġ} Ċ }