package Ġcom . ep am . drill . admin . notifications Ċ Ċ import Ġcom . ep am . drill . admin . notification .* Ċ import Ġkotlin . test .* Ċ Ċ class ĠNotifications Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġagent Id Ġ= Ġ" test - agent " ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` plus Ġ- Ġtwo Ġidentical Ġnotifications `() Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnotifications Ġ= ĠNotifications () ĊĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= ĠNotification ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" some - id ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġagent Id Ġ= Ġagent Id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠSystem . currentTimeMillis (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠNotification Type . BUILD , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" some - message " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġnotifications Ġ+= Ġnotification ĊĠĠĠĠĠĠĠ Ġnotifications Ġ+= Ġnotification ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġnotifications . values Desc . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` plus Ġ- Ġasc Ġand Ġdesc Ġmust Ġcontain Ġthe Ġsame Ġelements `() Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnotifications Ġ= ĠNotifications () ĊĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= ĠNotification ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" some - id ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġagent Id Ġ= Ġagent Id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠSystem . currentTimeMillis (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠNotification Type . BUILD , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" some - message " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġnotifications Ġ+= Ġnotification ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġnotifications . values Desc . size ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( notifications [ notification . id ]) ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġnotification Ġin Ġnotifications . values Desc Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` replace Ġ- Ġnot Ġexisting Ġnotification `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnotifications Ġ= ĠNotifications () ĊĠĠĠĠĠĠĠ Ġval Ġnot Existing Ġ= ĠNotification ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" not - existing ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġagent Id Ġ= Ġagent Id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠSystem . currentTimeMillis (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠNotification Type . BUILD , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" some - message " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( notifications , Ġnotifications . replace ( not Existing )) ĊĠĠĠĠĠĠĠ ĠassertNull ( notifications [ not Existing . id ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` replace Ġ- Ġasc Ġand Ġdesc Ġmust Ġcontain Ġthe Ġsame Ġelements `() Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnotifications Ġ= ĠNotifications () ĊĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= ĠNotification ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" some - id ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġagent Id Ġ= Ġagent Id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠSystem . currentTimeMillis (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠNotification Type . BUILD , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" some - message " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġreplacement Ġ= Ġnotification . copy ( read Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġnotifications Ġ+= Ġnotification ĊĠĠĠĠĠĠĠ Ġnotifications Ġ= Ġnotifications . replace ( replacement ) ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( notification , Ġnotifications [ replacement . id ]) ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġnotifications [ replacement . id ] !!. read Ġ} ĊĠĠĠĠĠĠĠ ĠassertNotNull ( notifications [ replacement . id ]) ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġreplacement Ġin Ġnotifications . values Desc Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` minus Ġ- Ġnot Ġexisting Ġnotification `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnotifications Ġ= ĠNotifications () ĊĠĠĠĠĠĠĠ ĠassertEquals ( notifications , Ġnotifications Ġ- Ġ" not - existing ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` minus Ġ- Ġasc Ġand Ġdesc Ġmust Ġcontain Ġthe Ġsame Ġelements `() Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnotifications Ġ= ĠNotifications () ĊĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= ĠNotification ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" some - id ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġagent Id Ġ= Ġagent Id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠSystem . currentTimeMillis (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠNotification Type . BUILD , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" some - message " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġnotifications Ġ+= Ġnotification ĊĠĠĠĠĠĠĠ Ġnotifications Ġ-= Ġnotification . id ĊĠĠĠĠĠĠĠ ĠassertNull ( notifications [ notification . id ]) ĊĠĠĠĠĠĠĠ ĠassertFalse Ġ{ Ġnotification Ġin Ġnotifications . values Desc Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` update All Ġ- Ġall Ġtests Ġmust Ġbe Ġupdated `() Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnotifications Ġ= ĠNotifications () ĊĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= ĠNotification ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" some - id ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġagent Id Ġ= Ġagent Id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠSystem . currentTimeMillis (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠNotification Type . BUILD , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" some - message " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġsecond Notification Ġ= ĠNotification ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" second - notification ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġagent Id Ġ= Ġagent Id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠSystem . currentTimeMillis (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠNotification Type . BUILD , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" another - message " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġnotifications Ġ+= Ġnotification ĊĠĠĠĠĠĠĠ Ġnotifications Ġ+= Ġsecond Notification ĊĠĠĠĠĠĠĠ Ġnotifications Ġ= Ġnotifications . update All Ġ{ Ġit . copy ( read Ġ= Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġnotifications . values Desc . size ) ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġnotifications [ notification . id ] !!. read Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġnotifications [ second Notification . id ] !!. read Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġnotifications . values Desc . map Ġ{ Ġit . read Ġ}. all Ġ{ Ġit Ġ} Ġ} ĊĠĠĠ Ġ} Ċ } Ċ