package Ġcom . azure . data . integration . common Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġcom . azure . core . log . i Ċ import Ġcom . azure . core . log . start Logging Ċ import Ġcom . azure . data . Azure Data Ċ import Ġcom . azure . data . integration . off lin et ests . mocks . Mock Ok HttpClient Ċ import Ġcom . azure . data . model .* Ċ import Ġcom . azure . data . model . service . Data Response Ċ import Ġcom . azure . data . model . service . ListResponse Ċ import Ġcom . azure . data . model . service . ResourceType Ċ import Ġcom . azure . data . model . service . Response Ċ import Ġcom . azure . data . service .* Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġorg . await ility . Await ility . await Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Assert .* Ċ import Ġorg . junit . Before Ċ Ċ /** Ċ Ġ* ĠCopyright Ġ( c ) ĠMicrosoft ĠCorporation . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLicensed Ġunder Ġthe ĠMIT ĠLicense . Ċ Ġ*/ Ċ Ċ open Ġclass ĠResource Test < T Resource Ġ: ĠResource >( resourceName : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġensure Database Ġ: ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġensure Collection Ġ: ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġensure Document Ġ: ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĊĠĠĠ Ġval Ġdatabase Id Ġ= Ġ" Android Test $ resourceName ${ ResourceType . Database . name }" ĊĠĠĠ Ġval Ġcollection Id Ġ= Ġ" Android Test $ resourceName ${ ResourceType . Collection . name }" ĊĠĠĠ Ġval Ġdocument Id Ġ= Ġ" Android Test $ resourceName ${ ResourceType . Document . name }" ĊĠĠĠ Ġval Ġcreated ResourceId Ġ= Ġ" Android Test $ resourceName " ĊĊĠĠĠ Ġfun Ġdatabase Id ( count Ġ: ĠInt Ġ= Ġ 0 ) Ġ= Ġ"$ database Id ${ if Ġ( count < 2 ) Ġ"" Ġelse Ġcount . toString () }" ĊĠĠĠ Ġfun Ġcollection Id ( count Ġ: ĠInt Ġ= Ġ 0 ) Ġ= Ġ"$ collection Id ${ if Ġ( count < 2 ) Ġ"" Ġelse Ġcount . toString () }" ĊĠĠĠ Ġfun Ġdocument Id ( count Ġ: ĠInt Ġ= Ġ 0 ) Ġ= Ġ"$ document Id ${ if Ġ( count < 2 ) Ġ"" Ġelse Ġcount . toString () }" ĊĠĠĠ Ġfun Ġcreated ResourceId ( count Ġ: ĠInt ? Ġ= Ġ 0 ) Ġ= Ġ"$ created ResourceId ${ if Ġ( count == null ) Ġ"" Ġelse Ġif Ġ( count < 2 ) Ġ"" Ġelse Ġcount . toString () }" ĊĊĠĠĠ Ġvar Ġresponse : ĠResponse < T Resource >? Ġ= Ġnull ĊĠĠĠ Ġvar Ġresource ListResponse : ĠList Response < T Resource >? Ġ= Ġnull ĊĠĠĠ Ġvar Ġdata Response : ĠData Response ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġdatabase : ĠDatabase ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġcollection : ĠDocument Collection ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġdocument : ĠDocument ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġpartition Key Path : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġopen Ġfun ĠsetUp () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġstart Logging ( Log . VERBOSE ) ĊĊĠĠĠĠĠĠĠ Ġi Ġ{ Ġ" ******** * ĠBegin ĠTest ĠSetup Ġ********* " Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! Azure Data . is Configured ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠContext Ġof Ġthe Ġapp Ġunder Ġtest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Context Ġ= ĠInstrument ation Registry . get Instrumentation (). target Context ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Azure Data ( app Context ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġturn On Internet Connection () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpurge Cache () ĊĠĠĠĠĠĠĠ Ġdelete Resources () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ensure Database Ġ|| Ġensure Collection Ġ|| Ġensure Document ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠD bs Ġwith Ġprovision ed Ġthroughput ĠREQUIRE Ġpartition Ġkeys ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( partition Key Path Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġensure Database ( 2 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġensure Database () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ensure Collection Ġ|| Ġensure Document ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġensure Collection () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ensure Document ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġensure Document () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġi Ġ{ Ġ" ******** * ĠEnd ĠTest ĠSetup Ġ********* " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġopen Ġfun ĠtearDown () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġi Ġ{ Ġ" ******** * ĠBegin ĠTest ĠT ear ĠDown Ġ********* " Ġ} ĊĊĠĠĠĠĠĠĠ Ġdelete Resources () ĊĠĠĠĠĠĠĠ Ġpurge Cache () ĊĊĠĠĠĠĠĠĠ Ġi Ġ{ Ġ" ******** * ĠEnd ĠTest ĠT ear ĠDown Ġ********* " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// region ĠConfig / setup / control Ġflow ĊĊĠĠĠ Ġopen Ġfun Ġconfigure Azure Data ( app Context : ĠContext ) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠAzure Data . configure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġazure Cos mos Db Account , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġazure Cos mos PrimaryKey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPermission Mode . All ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġturn On Internet Connection () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Document Client . client Ġis ĠMock Ok HttpClient ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠDocument Client . client Ġ= ĠOk HttpClient () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġturn Off Internet Connection () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠMock Ok HttpClient () ĊĠĠĠĠĠĠĠ Ġclient . has Network Error Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠDocument Client . client Ġ= Ġclient ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpurge Cache () Ġ{ ĊĊĠĠĠĠĠĠĠ ĠResource Cache . shared . purge () ĊĠĠĠĠĠĠĠ ĠResource Write Operation Queue . shared . purge () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset Response () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġresponse Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠResource Ġcreation ĊĊĠĠĠ Ġfun Ġtry Create Database ( through put : ĠInt ? Ġ= Ġnull ) Ġ: ĠResponse < Database >? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġdb Response : ĠResponse < Database >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġthroughput ?. let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAzure Data . create Database ( database Id , Ġthroughput ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Response Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAzure Data . create Database ( database Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Response Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġawait (). until Ġ{ Ġdb Response Ġ!= Ġnull Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdb Response ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġensure Database ( through put : ĠInt ? Ġ= Ġnull ) Ġ: ĠDatabase Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġdb Response Ġ= Ġtry Create Database ( through put ) ĊĊĠĠĠĠĠĠĠ Ġassert Resource Response Success ( db Response ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( database Id , Ġdb Response ?. resource ?. id ) ĊĊĠĠĠĠĠĠĠ Ġdatabase Ġ= Ġdb Response !!. resource !! ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdatabase !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġensure Databases ( count Ġ: ĠInt ) Ġ: ĠList < Database > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġdb Response : ĠResponse < Database >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġdatabases Ġ= Ġmutable ListOf < Database >() ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. count ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAzure Data . create Database ( database Id ( i )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Response Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait (). until Ġ{ Ġdb Response Ġ!= Ġnull Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Resource Response Success ( db Response ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( database Id ( i ), Ġdb Response ?. resource ?. id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabases . add ( db Response !!. resource !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdatabases ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtry Create Collection ( through put : ĠInt ? Ġ= Ġnull ) Ġ: ĠResponse < Document Collection >? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġcollection Response : ĠResponse < Document Collection >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! partition Key Path . isNull Or Blank ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthroughput ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAzure Data . create Collection ( collection Id , Ġthroughput , Ġpartition Key Path !! , Ġdatabase Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollection Response Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAzure Data . create Collection ( collection Id , Ġpartition Key Path !! , Ġdatabase Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollection Response Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ// fixed Ġcollection Ġ- Ġdeprecated ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAzure Data . create Collection ( collection Id , Ġdatabase Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollection Response Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġawait (). until Ġ{ Ġcollection Response Ġ!= Ġnull Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcollection Response ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġensure Collection ( through put : ĠInt ? Ġ= Ġnull ) Ġ: ĠDocument Collection Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcollection Response Ġ= Ġtry Create Collection ( through put ) ĊĊĠĠĠĠĠĠĠ Ġassert Resource Response Success ( collection Response ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( collection Id , Ġcollection Response ?. resource ?. id ) ĊĊĠĠĠĠĠĠĠ Ġcollection Ġ= Ġcollection Response !!. resource !! ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcollection !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġensure Document () Ġ: ĠDocument Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( partition Key Path Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdoc Response : ĠResponse < Partition ed Custom Doc ment >? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= ĠPartition ed Custom Doc ment ( document Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAzure Data . create Document ( doc , Ġcollection !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdoc Response Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait (). until Ġ{ Ġdoc Response Ġ!= Ġnull Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Resource Response Success ( doc Response ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument Ġ= Ġdoc Response !!. resource !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument !! ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdoc Response : ĠResponse < Custom Document >? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= ĠCustom Document ( document Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAzure Data . create Document ( doc , Ġcollection !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdoc Response Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait (). until Ġ{ Ġdoc Response Ġ!= Ġnull Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Resource Response Success ( doc Response ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument Ġ= Ġdoc Response !!. resource !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Resources () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġdelete Response : ĠData Response ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ// delete Ġthe ĠDB Ġ- Ġthis Ġshould Ġdelete Ġall Ġattached Ġresources ĊĊĠĠĠĠĠĠĠ ĠAzure Data . delete Database ( database Id ) Ġ{ Ġresponse Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ{ Ġ" At tempted Ġto Ġdelete Ġtest Ġdatabase . Ġ ĠResult : Ġ${ response . is Successful }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Response Ġ= Ġresponse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġawait (). until Ġ{ Ġdelete Response Ġ!= Ġnull Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠAssertions ĊĊĠĠĠ Ġprivate Ġfun Ġassert Response Pop ulated ( response : ĠResponse < *> ?) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠassertNotNull (" Response Ġwas Ġnull ", Ġresponse ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( response !!. request ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġoffline Ġresponses Ġwill Ġnot Ġhave Ġthe ĠOk Http Ġresponse Ġor ĠJson Ġdata ĊĠĠĠĠĠĠĠ Ġif Ġ(! response . from Cache ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( response . response ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( response . json Data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Resource Ġ: ĠResource > Ġassert ListResponse Success ( response : ĠList Response < T Resource > ?, Ġverify Doc Values : ĠBoolean Ġ= Ġtrue , Ġverify Is Pop ulated : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġassert Response Pop ulated ( response !! ) ĊĠĠĠĠĠĠĠ ĠassertTrue (" response . is Successful Ġis Ġnot ĠTrue ", Ġresponse . is Successful ) ĊĠĠĠĠĠĠĠ ĠassertFalse (" response . is Er rored Ġis Ġnot ĠFalse ", Ġresponse . is Er rored ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" response . resource Ġis Ġnull ", Ġresponse . resource ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( verify Is Pop ulated Ġ|| Ġverify Doc Values ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġresponse . resource Ġas ĠResource List < *> ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Returned ĠList < T Resource > Ġlist . is Pop ulated Ġis ĠFalse ", Ġlist . is Pop ulated ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( verify Doc Values ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . items . forEach Ġ{ Ġitem Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Resource Properties Set ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġassert Data Response Success ( response : ĠData Response ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġassert Response Pop ulated ( response ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( response !!. is Successful ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( response . is Er rored ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġassert Resource Response Success ( response : ĠResponse < *> ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġassert Response Pop ulated ( response ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( response !!. is Successful ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( response . is Er rored ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( response . resource Ġis ĠResource ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Resource Properties Set ( response . resource Ġas ĠResource ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġassert Response Failure ( response : ĠResponse < *> ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġassert Response Pop ulated ( response ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( response !!. error ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( response . is Successful ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( response . is Er rored ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġassert ErrorResponse ( response : ĠResponse < *> ?) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠassertNotNull ( response ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( response !!. error ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( response . is Successful ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( response . is Er rored ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠResource > Ġassert Page N ( ids Found : ĠMutable List < String >, Ġresponse : ĠList Response < T > ?, ĠpageSize : ĠInt Ġ= Ġ 1 , Ġcheck Created Id : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġassert ListResponse Success ( response ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( response !!. metadata . continu ation ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( response . resource ?. items ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( pageSize , Ġresponse . resource ?. items ?. size ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġresponse . resource ?. items !! ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check Created Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( item . id . startsWith ( created ResourceId )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( ids Found . contains ( item . id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġids Found . add ( item . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( response . hasMore Results ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠResource > Ġassert Page Last ( ids Found : ĠMutable List < String >, Ġresponse : ĠList Response < T > ?, ĠpageSize : ĠInt Ġ= Ġ 1 , Ġcheck Created Id : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġassert ListResponse Success ( response ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( response !!. resource ?. items ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( pageSize , Ġresponse . resource ?. items ?. size ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġresponse . resource ?. items !! ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check Created Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( item . id . startsWith ( created ResourceId )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( ids Found . contains ( item . id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġids Found . add ( item . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( response . hasMore Results ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠResource > Ġassert Page One Past Last ( response : ĠList Response < T > ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġassert ErrorResponse ( response ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert Resource Properties Set ( resource : ĠResource ) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠassertNotNull (" resource . id Ġis Ġnull ", Ġresource . id ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" resource . resourceId Ġis Ġnull ", Ġresource . resourceId ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" resource . self Link Ġis Ġnull ", Ġresource . self Link ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" resource . alt Link Ġis Ġnull ", Ġresource . alt Link ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" resource . etag Ġis Ġnull ", Ġresource . etag ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" resource . timestamp Ġis Ġnull ", Ġresource . timestamp ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// endregion Ċ }