package Ġcom . tel en . easy line up . domain Ċ Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . any Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . never Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Ċ import Ġcom . tel en . easy line up . domain . model . Player Ċ import Ġcom . tel en . easy line up . domain . repository . Player Repository Ċ import Ġcom . tel en . easy line up . domain . use cases . Save Player Ċ import Ġcom . tel en . easy line up . domain . use cases . exceptions . Name Empty Exception Ċ import Ġcom . tel en . easy line up . domain . utils . Validator Utils Ċ import Ġio . reactivex . Comp letable Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . ob servers . Test Observer Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . Mockito Ċ import Ġorg . mockito . Mockito Annotations Ċ import Ġorg . mockito . junit . Mockito JUnit Runner ĊĊ Ċ @ RunWith ( Mockito JUnit Runner :: class ) Ċ internal Ġclass ĠSave Player Tests Ġ{ ĊĊĠĠĠ Ġ@ Mock Ġlateinit Ġvar Ġplayer Dao : ĠPlayer Repository ĊĠĠĠ Ġlateinit Ġvar Ġvalidator Utils : ĠValidator Utils ĊĠĠĠ Ġlateinit Ġvar Ġm Save Player : ĠSave Player ĊĊĠĠĠ Ġinner Ġclass ĠValidator Utils Mock : ĠValidator Utils () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis Email Valid ( email : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠisValid PhoneNumber ( phone : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ ĠMockito Annotations . init Mocks ( this ) ĊĠĠĠĠĠĠĠ Ġm Save Player Ġ= ĠSave Player ( player Dao ) ĊĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= ĠPlayer ( id Ġ= Ġ 1 L , Ġteam Id Ġ= Ġ 1 , Ġname Ġ= Ġ" Test ", Ġimage Ġ= Ġnull , Ġsh irt Number Ġ= Ġ 1 , Ġlicense Number Ġ= Ġ 1 L , Ġpositions Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpitch ing Ġ= Ġ 1 , Ġbat ting Ġ= Ġ 3 , Ġhash Ġ= Ġ" hash ", Ġemail Ġ= Ġ" p 1 @ test . com ", Ġphone Ġ= Ġ" 0 0 1 ") ĊĠĠĠĠĠĠĠ ĠMockito .` when `( player Dao . update Player ( any ())). thenReturn ( Comp letable . complete ()) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( player Dao . insert Player ( any ())). thenReturn ( Single . just ( 1 )) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( player Dao . getPlayer ById As Single ( any ())). thenReturn ( Single . just ( player )) ĊĠĠĠĠĠĠĠ Ġvalidator Utils Ġ= ĠValidator Utils Mock () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Trigger Name Empty Exception If Name IsEmpty () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠSave Player . Request Values ( validator Utils Ġ= Ġvalidator Utils , Ġplayer ID Ġ= Ġ 1 L , Ġteam ID Ġ= Ġ 1 , Ġname Ġ= Ġ"", Ġpositions Ġ= Ġ 1 , Ġlicense Number Ġ= Ġ 1 , Ġsh irt Number Ġ= Ġ 1 , Ġimage Uri Ġ= Ġnull , Ġpitch ing Ġ= Ġ 0 , Ġbat ting Ġ= Ġ 0 , Ġemail Ġ= Ġ" p 1 @ test . com ", Ġphone Ġ= Ġ" 0 0 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= ĠTest Observer < Save Player . Response Value >() ĊĠĠĠĠĠĠĠ Ġm Save Player . execute UseCase ( request ). subscribe ( observer ) ĊĠĠĠĠĠĠĠ Ġobserver . await () ĊĠĠĠĠĠĠĠ Ġobserver . assert Error ( Name Empty Exception :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Trigger Name Empty Exception If Name Is Wh ites p aces () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠSave Player . Request Values ( validator Utils Ġ= Ġvalidator Utils , Ġplayer ID Ġ= Ġ 1 L , Ġteam ID Ġ= Ġ 1 , Ġname Ġ= Ġ" ĠĠĠĠ Ġ", Ġpositions Ġ= Ġ 1 , Ġlicense Number Ġ= Ġ 1 , Ġsh irt Number Ġ= Ġ 1 , Ġimage Uri Ġ= Ġnull , Ġpitch ing Ġ= Ġ 0 , Ġbat ting Ġ= Ġ 0 , Ġemail Ġ= Ġ" p 1 @ test . com ", Ġphone Ġ= Ġ" 0 0 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= ĠTest Observer < Save Player . Response Value >() ĊĠĠĠĠĠĠĠ Ġm Save Player . execute UseCase ( request ). subscribe ( observer ) ĊĠĠĠĠĠĠĠ Ġobserver . await () ĊĠĠĠĠĠĠĠ Ġobserver . assert Error ( Name Empty Exception :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Trigger Name Empty Exception If Name IsNull () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠSave Player . Request Values ( validator Utils Ġ= Ġvalidator Utils , Ġplayer ID Ġ= Ġ 1 L , Ġteam ID Ġ= Ġ 1 , Ġname Ġ= Ġnull , Ġpositions Ġ= Ġ 1 , Ġlicense Number Ġ= Ġ 1 , Ġsh irt Number Ġ= Ġ 1 , Ġimage Uri Ġ= Ġnull , Ġpitch ing Ġ= Ġ 0 , Ġbat ting Ġ= Ġ 0 , Ġemail Ġ= Ġ" p 1 @ test . com ", Ġphone Ġ= Ġ" 0 0 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= ĠTest Observer < Save Player . Response Value >() ĊĠĠĠĠĠĠĠ Ġm Save Player . execute UseCase ( request ). subscribe ( observer ) ĊĠĠĠĠĠĠĠ Ġobserver . await () ĊĠĠĠĠĠĠĠ Ġobserver . assert Error ( Name Empty Exception :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Insert Event If Sh irt Number IsNull () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠSave Player . Request Values ( validator Utils Ġ= Ġvalidator Utils , Ġplayer ID Ġ= Ġ 0 L , Ġteam ID Ġ= Ġ 1 , Ġname Ġ= Ġ" Test ", Ġpositions Ġ= Ġ 1 , Ġlicense Number Ġ= Ġ 1 , Ġsh irt Number Ġ= Ġnull , Ġimage Uri Ġ= Ġnull , Ġpitch ing Ġ= Ġ 0 , Ġbat ting Ġ= Ġ 0 , Ġemail Ġ= Ġ" p 1 @ test . com ", Ġphone Ġ= Ġ" 0 0 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= ĠTest Observer < Save Player . Response Value >() ĊĠĠĠĠĠĠĠ Ġm Save Player . execute UseCase ( request ). subscribe ( observer ) ĊĠĠĠĠĠĠĠ Ġobserver . await () ĊĠĠĠĠĠĠĠ Ġobserver . assert Complete () ĊĠĠĠĠĠĠĠ Ġverify ( player Dao ). insert Player ( any ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Insert If New Player () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠSave Player . Request Values ( validator Utils Ġ= Ġvalidator Utils , Ġplayer ID Ġ= Ġ 0 L , Ġteam ID Ġ= Ġ 1 , Ġname Ġ= Ġ" Test ", Ġpositions Ġ= Ġ 1 , Ġlicense Number Ġ= Ġ 1 , Ġsh irt Number Ġ= Ġ 1 , Ġimage Uri Ġ= Ġnull , Ġpitch ing Ġ= Ġ 0 , Ġbat ting Ġ= Ġ 0 , Ġemail Ġ= Ġ" p 1 @ test . com ", Ġphone Ġ= Ġ" 0 0 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= ĠTest Observer < Save Player . Response Value >() ĊĠĠĠĠĠĠĠ Ġm Save Player . execute UseCase ( request ). subscribe ( observer ) ĊĠĠĠĠĠĠĠ Ġobserver . await () ĊĠĠĠĠĠĠĠ Ġobserver . assert Complete () ĊĠĠĠĠĠĠĠ Ġverify ( player Dao ). insert Player ( any ()) ĊĠĠĠĠĠĠĠ Ġverify ( player Dao , Ġnever ()). update Player ( any ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Update If Known Player () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠSave Player . Request Values ( validator Utils Ġ= Ġvalidator Utils , Ġplayer ID Ġ= Ġ 1 L , Ġteam ID Ġ= Ġ 1 , Ġname Ġ= Ġ" Test ", Ġpositions Ġ= Ġ 1 , Ġlicense Number Ġ= Ġ 1 , Ġsh irt Number Ġ= Ġ 1 , Ġimage Uri Ġ= Ġnull , Ġpitch ing Ġ= Ġ 0 , Ġbat ting Ġ= Ġ 0 , Ġemail Ġ= Ġ" p 1 @ test . com ", Ġphone Ġ= Ġ" 0 0 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= ĠTest Observer < Save Player . Response Value >() ĊĠĠĠĠĠĠĠ Ġm Save Player . execute UseCase ( request ). subscribe ( observer ) ĊĠĠĠĠĠĠĠ Ġobserver . await () ĊĠĠĠĠĠĠĠ Ġobserver . assert Complete () ĊĠĠĠĠĠĠĠ Ġverify ( player Dao ). update Player ( any ()) ĊĠĠĠĠĠĠĠ Ġverify ( player Dao , Ġnever ()). insert Player ( any ()) ĊĠĠĠ Ġ} Ċ }