package Ġcom . re kt apps . ass ault timer . view . ass ault s Schedule . mapper Ċ Ċ import Ġcom . re kt apps . ass ault timer . model . entity . Ass ault Ċ import Ġcom . re kt apps . ass ault timer . model . enums . Ass ault State Ċ import Ġcom . re kt apps . ass ault timer . model . enums . Ass ault Type Ċ import Ġcom . re kt apps . ass ault timer . model . enums . Region Ċ import Ġcom . re kt apps . ass ault timer . model . provider . Ass ault State Provider Ċ import Ġcom . re kt apps . ass ault timer . notifications . Notification Mode Ċ import Ġcom . re kt apps . ass ault timer . service . Manual Notifications Service Ċ import Ġcom . re kt apps . ass ault timer . storage . settings . AppConfig Ċ import Ġcom . re kt apps . ass ault timer . storage . settings . Notifications Config Ċ import Ġcom . re kt apps . ass ault timer . view . ass ault s Schedule . Ass ault ListItem Ċ import Ġio . mock k . Mock K Annotations Ċ import Ġio . mock k . every Ċ import Ġio . mock k . impl . annotations . Inject Mock Ks Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġio . reactivex . Single Ċ import Ġorg . joda . time . DateTime Ċ import Ġorg . junit . BeforeClass Ċ import Ġorg . junit . Test Ċ Ċ class ĠAss ault ListItem Mapper Impl Test Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Mock K ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock AppConfig : ĠApp Config ĊĠĠĠĠĠĠĠ Ġ@ Mock K ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Notification Config : ĠNotifications Config ĊĠĠĠĠĠĠĠ Ġ@ Mock K ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Ass ault State Provider : ĠAss ault State Provider ĊĠĠĠĠĠĠĠ Ġ@ Mock K ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Manual Notifications Service : ĠManual Notifications Service ĊĠĠĠĠĠĠĠ Ġ@ Inject Mock Ks ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġass ault ListItem Mapper : ĠAss ault ListItem Mapper Impl ĊĊĠĠĠĠĠĠĠ Ġ@ BeforeClass ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun ĠsetUp () Ġ= ĠMock K Annotations . init ( this ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġall List Items Have Notification Disabled Ġ= ĊĠĠĠĠĠĠĠ Ġ{ Ġass ault List Items : ĠList < Ass ault ListItem > Ġ-> Ġass ault List Items . all Ġ{ Ġ! it . is Notification Enabled Ġ} Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate Ass ault List Items With Automatic Notifications () Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmock AppConfig . are Notifications Enabled Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmock Notification Config . notification Mode Ġ} Ġreturns ĠNotification Mode . AUTO ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmock Ass ault State Provider . get Ass ault State ( any ()) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġass ault Ġ= Ġarg < Ass ault >( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ass ault . id Ġ== Ġ 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAss ault State . ACTIVE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAss ault State . IN COM ING ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmock Notification Config . automatic Notification Mode Preferences Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmocked Settings Ġ= Ġmutable Map Of < Region , ĠList < Ass ault Type >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmocked Settings [ Region . NA ] Ġ= ĠlistOf ( Ass ault Type . B FA , ĠAss ault Type . LEG ION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmocked Settings ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġvar Ġtest Observer Ġ= Ġass ault ListItem Mapper . map Ass ault sTo Ass ault List Items ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Test Ass ault s ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegion . EU , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAss ault Type . LEG ION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). test () ĊĠĠĠĠĠĠĠ Ġtest Observer . assert Value ( all List Items Have Notification Disabled ) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġonly First Ass ault Item Has Notification Enabled Func Ġ= Ġ{ Ġass ault List Items : ĠList < Ass ault ListItem > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Only First ListItem Has Enabled Notification Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġass ault List Items . forEach Indexed Ġ{ Ġindex , Ġass ault ListItem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Only First ListItem Has Enabled Notification Ġ= Ġif Ġ( index Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġass ault ListItem . is Notification Enabled ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! ass ault ListItem . is Notification Enabled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Only First ListItem Has Enabled Notification ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġenum Values < Ass ault Type >(). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Observer Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġass ault ListItem Mapper . map Ass ault sTo Ass ault List Items ( create Test Ass ault s ( Region . NA , Ġit , Ġ 2 )). test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Observer . assert Value ( only First Ass ault Item Has Notification Enabled Func ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate Ass ault List Items With Manual Notifications () Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmock AppConfig . are Notifications Enabled Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmock Notification Config . notification Mode Ġ} Ġreturns ĠNotification Mode . MAN UAL ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmock Manual Notifications Service . is Ass ault Selected For Notification ( any ()) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġass ault Ġ= Ġarg ( 0 ) Ġas ĠAss ault ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . just ( ass ault . id !! Ġ% Ġ 2 Ġ== Ġ 0 L ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Observer Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġass ault ListItem Mapper . map Ass ault sTo Ass ault List Items ( create Test Ass ault s ( count Ġ= Ġ 7 )). test () ĊĠĠĠĠĠĠĠ Ġtest Observer . assert Value Ġ{ Ġass ault List Items Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall Even List Items Have Selected Notification Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġass ault List Items . filter Ġ{ Ġit . ass ault . id !! Ġ% Ġ 2 Ġ== Ġ 0 L Ġ}. all Ġ{ Ġit . is Notification Enabled Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall Odd List Items Have Not Selected Notification Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġass ault List Items . filter Ġ{ Ġit . ass ault . id !! Ġ% Ġ 2 Ġ!= Ġ 0 L Ġ}. all Ġ{ Ġ! it . is Notification Enabled Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Even List Items Have Selected Notification Ġand Ġall Odd List Items Have Not Selected Notification ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate Ass ault List Items When Notifications Disabled () Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmock AppConfig . are Notifications Enabled Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġtest Observer Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġass ault ListItem Mapper . map Ass ault sTo Ass ault List Items ( create Test Ass ault s ( count Ġ= Ġ 2 )). test () ĊĠĠĠĠĠĠĠ Ġtest Observer . assert Value ( all List Items Have Notification Disabled ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Test Ass ault s ( ĊĠĠĠĠĠĠĠ Ġregion : ĠRegion Ġ= ĠRegion . EU , ĊĠĠĠĠĠĠĠ Ġass ault Type : ĠAss ault Type Ġ= ĠAss ault Type . LEG ION , ĊĠĠĠĠĠĠĠ Ġcount : ĠInt ĊĠĠĠ Ġ): ĠList < Ass ault > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Ass ault s Ġ= Ġmutable ListOf < Ass ault >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. count . to Long ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Ass ault s . add ( Ass ault ( DateTime . now (), ĠDateTime . now (), Ġregion , Ġass ault Type , Ġi )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtest Ass ault s ĊĠĠĠ Ġ} Ċ Ċ }