package Ġcom . hand stand sam . shopping app . mock account ĊĊ Ċ import Ġandroid . os . Strict Mode Ċ import Ġcom . github . tom ake hur st . wire mock . Wire Mock Server Ċ import Ġcom . github . tom ake hur st . wire mock . client . Mapping Builder Ċ import Ġcom . github . tom ake hur st . wire mock . client . Wire Mock Ċ import Ġcom . github . tom ake hur st . wire mock . core . Wire Mock Configuration . wire Mock Config Ċ import Ġcom . github . tom ake hur st . wire mock . stub bing . Stub Mapping Ċ import Ġcom . hand stand sam . shopping app . mock data . Mock Account Ċ import Ġcom . hand stand sam . shopping app . models . User Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠStub ber ator ( val Ġuse Local Server : ĠBoolean ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm oshi Ġ= ĠM oshi . Builder (). build () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġwire Mock Server : ĠWire Mock Server ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpolicy Ġ= ĠStrict Mode . Thread Policy . Builder (). permit All (). build () ĊĠĠĠĠĠĠĠ ĠStrict Mode . set Thread Policy ( policy ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( use Local Server ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwire Mock Server Ġ= ĠWire Mock Server ( wire Mock Config (). port ( Network Constants . LOCAL HOST _ PORT )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwire Mock Server . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwire Mock Server . reset Mappings () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWire Mock . configure For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Constants . REMOTE _ EM UL ATOR _ ENDPOINT _ HOST , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Constants . REMOTE _ PORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWire Mock . reset () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠTim ber . d (" new ĠStub ber ator () ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstub For ( mapping Builder : ĠMapping Builder ): ĠStub Mapping Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Network Constants . USE _ LOCAL _ SERVER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwire Mock Server . stub For ( mapping Builder ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWire Mock . stub For ( mapping Builder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstub It All ( mock Account : ĠMock Account ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstub Categories ( mock Account ) ĊĠĠĠĠĠĠĠ Ġstub Login ( mock Account ) ĊĠĠĠĠĠĠĠ Ġstub Items ( mock Account ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstub Categories ( mock Account : ĠMock Account ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġm oshi . adapter ( List :: class . java ). toJson ( mock Account . getC ategories ()) ĊĠĠĠĠĠĠĠ Ġstub For ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStub Mappings . categories . willReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWire Mock . a Response (). with Status ( 2 0 0 ). with Body ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstub Items ( mock Account : ĠMock Account ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Account . items By Category . keys . forEach Ġ{ Ġcategory Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġmock Account . items By Category [ categoryId ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġm oshi . adapter ( List :: class . java ). toJson ( items ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstub For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStub Mappings . getItems For Category ( categoryId ). willReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWire Mock . a Response (). with Status ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). with Body ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstub Login ( mock Account : ĠMock Account ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġm oshi . adapter ( User :: class . java ). toJson ( mock Account . getUser ()) ĊĠĠĠĠĠĠĠ Ġstub For ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStub Mappings . login (). willReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWire Mock . a Response () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Status ( 2 0 0 ). with Body ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ private Ġobject ĠNetwork Constants Ġ{ ĊĠĠĠ Ġvar ĠLOCAL HOST _ PORT Ġ= Ġ 8 0 8 0 ĊĠĠĠ Ġval ĠLOCAL HOST _ ENDPOINT Ġ= Ġ" http :// localhost :" Ġ+ ĠLOCAL HOST _ PORT ĊĠĠĠ Ġval ĠS 3 _ ENDPOINT Ġ= Ġ" https :// shopping - app . s 3 . amazonaws . com " ĊĊĠĠĠ Ġvar ĠUSE _ LOCAL _ SERVER Ġ= Ġtrue ĊĊĠĠĠ Ġval ĠRE MOTE _ PORT Ġ= Ġ 8 0 8 0 ĊĠĠĠ Ġval ĠRE MOTE _ EM UL ATOR _ ENDPOINT _ HOST Ġ= Ġ" 1 0 . 0 . 2 . 2 " ĊĠĠĠ Ġvar ĠL AP TOP _ FROM _ EM UL ATOR _ ENDPOINT Ġ= Ġ" http :// $ REMOTE _ EM UL ATOR _ ENDPOINT _ HOST :$ REMOTE _ PORT " Ċ }