package Ġch . d ifty . sc ip am ato . pub l . web . new st udies Ċ Ċ import Ġch . d ifty . sc ip am ato . pub l . config . Application Public Properties Ċ import Ġch . d ifty . sc ip am ato . pub l . config . Sc ip am ato Public Properties Ċ import Ġch . d ifty . sc ip am ato . pub l . entity . New Study Ċ import Ġch . d ifty . sc ip am ato . pub l . entity . New Study Page Link Ċ import Ġch . d ifty . sc ip am ato . pub l . entity . New Study Topic Ċ import Ġch . d ifty . sc ip am ato . pub l . entity . News letter Ċ import Ġch . d ifty . sc ip am ato . pub l . persistence . api . New Study Topic Service Ċ import Ġch . d ifty . sc ip am ato . pub l . web . Com mercial Font Resource Provider Ċ import Ġch . d ifty . sc ip am ato . pub l . web . Public Page Parameters Ċ import Ġch . d ifty . sc ip am ato . pub l . web . common . Base Page Test Ċ import Ġch . d ifty . sc ip am ato . pub l . web . paper . browse . Public Paper Detail Page Ċ import Ġch . d ifty . sc ip am ato . pub l . web . resources . I co Moon IconType Ċ import Ġcom . nin jas quad . spring mock k . Mock k Bean Ċ import Ġde . agile coders . wicket . core . markup . html . bootstrap . button . Bootstrap External Link Ċ import Ġde . agile coders . wicket . extensions . markup . html . bootstrap . icon . FontAwesome 5 IconType Ċ import Ġio . mock k . confirm Verified Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . verify Ċ import Ġorg . am sh ove . k lu ent . shouldBe EqualTo Ċ import Ġorg . apache . wicket . markup . head . I Header Response Ċ import Ġorg . apache . wicket . markup . html . basic . Label Ċ import Ġorg . apache . wicket . markup . html . link . External Link Ċ import Ġorg . apache . wicket . markup . html . link . Link Ċ import Ġorg . apache . wicket . markup . html . list . ListView Ċ import Ġorg . apache . wicket . request . mapper . parameter . Page Parameters Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . time . LocalDate Ċ import Ġjava . util . ArrayList Ċ Ċ @ Suppress (" unused ") Ċ class ĠNew Study List Page Test Ġ: ĠBase Page Test < New Study List Page >() Ġ{ ĊĊĠĠĠ Ġ@ Mock k Bean ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġservice Mock : ĠNew Study Topic Service ĊĊĠĠĠ Ġ@ Mock k Bean ( name Ġ= Ġ" simpl on Font Resource Provider ", Ġrelax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsimpl on Font Resource Provider : ĠCom mercial Font Resource Provider ĊĊĠĠĠ Ġ@ Mock k Bean ( name Ġ= Ġ" ico Moon Font Resource Provider ", Ġrelax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġ ico Moon Font Resource Provider : ĠCom mercial Font Resource Provider ĊĊĠĠĠ Ġprivate Ġval Ġtopics : ĠMutable List < New Study Topic > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġval Ġlinks : ĠMutable List < New Study Page Link > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġval Ġarchived : ĠMutable List < News letter > Ġ= ĠArrayList () ĊĊĠĠĠ Ġoverride Ġfun ĠsetUp Hook () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setUp Hook () ĊĠĠĠĠĠĠĠ Ġvar Ġtopic Index Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġstudy Index Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġnew St udies 1 : ĠMutable List < New Study > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġnew St udies 1 . add ( New Study ( study Index ++, Ġ 8 9 2 4 , Ġ 2 0 1 7 , Ġ" Foo Ġet Ġal .", Ġ" hl 1 ", Ġ" descr 1 ")) ĊĠĠĠĠĠĠĠ Ġnew St udies 1 . add ( New Study ( study Index , Ġ 8 9 9 3 , Ġ 2 0 1 7 , Ġ" Bar Ġet Ġal .", Ġ" hl 2 ", Ġ" descr 2 ")) ĊĠĠĠĠĠĠĠ Ġtopics . add ( New Study Topic ( topic Index ++, Ġ" Topic 1 ", Ġnew St udies 1 )) ĊĠĠĠĠĠĠĠ Ġval Ġnew St udies 2 : ĠMutable List < New Study > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġstudy Index Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġnew St udies 2 . add ( New Study ( study Index , Ġ 8 9 7 3 , Ġ 2 0 1 7 , Ġ" B az Ġet Ġal .", Ġ" hl 3 ", Ġ" descr 3 ")) ĊĠĠĠĠĠĠĠ Ġtopics . add ( New Study Topic ( topic Index , Ġ" Topic 2 ", Ġnew St udies 2 )) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġservice Mock . find Most Recent New Study Topics ( any ()) Ġ} Ġreturns Ġtopics ĊĊĠĠĠĠĠĠĠ Ġlinks . add ( New Study Page Link (" en ", Ġ 1 , Ġ" link Title 1 ", Ġ" link Url 1 ")) ĊĠĠĠĠĠĠĠ Ġlinks . add ( New Study Page Link (" en ", Ġ 2 , Ġ" link Title 2 ", Ġ" link Url 2 ")) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġservice Mock . find New Study Page Links ( any ()) Ġ} Ġreturns Ġlinks ĊĠĠĠĠĠĠĠ Ġarchived . add ( News letter ( 1 0 , Ġ" 2 0 1 8 / 0 2 ", ĠLocalDate . of ( 2 0 1 8 , Ġ 2 , Ġ 1 0 ))) ĊĠĠĠĠĠĠĠ Ġarchived . add ( News letter ( 9 , Ġ" 2 0 1 7 / 1 2 ", ĠLocalDate . of ( 2 0 1 7 , Ġ 1 2 , Ġ 1 2 ))) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġservice Mock . find Arch ived News letters ( any (), Ġany ()) Ġ} Ġreturns Ġarchived ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġservice Mock . find New Study Topics For News letter Issue ( any (), Ġany ()) Ġ} Ġreturns Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmake Page (): ĠNew Study List Page Ġ= ĠNew Study List Page ( Page Parameters ()) ĊĊĠĠĠ Ġoverride Ġval Ġpage Class : ĠClass < New Study List Page > ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠNew Study List Page :: class . java ĊĊĠĠĠ Ġoverride Ġfun Ġassert Specific Components () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . assert Specific Components () ĊĠĠĠĠĠĠĠ Ġassert Study Section () ĊĠĠĠĠĠĠĠ Ġassert Link Section () ĊĠĠĠĠĠĠĠ Ġassert Archive Section () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert Study Section () Ġ{ ĊĠĠĠĠĠĠĠ Ġtester . assert Label (" h 1 Title ", Ġ" New ĠSt udies ") ĊĠĠĠĠĠĠĠ Ġtester . assert Component (" intro Paragraph ", ĠLabel :: class . java ) ĊĠĠĠĠĠĠĠ Ġtester . assert Component (" db Link ", ĠExternal Link :: class . java ) ĊĠĠĠĠĠĠĠ Ġtester . assert Component (" topics ", ĠListView :: class . java ) ĊĠĠĠĠĠĠĠ Ġvar Ġtopic Ġ= Ġ" topics : 0 :" ĊĠĠĠĠĠĠĠ Ġtester . assert Label ( topic Ġ+ Ġ" topic Title ", Ġ" Topic 1 ") ĊĠĠĠĠĠĠĠ Ġassert New Study ( topic , Ġ 0 , Ġ" hl 1 ", Ġ" descr 1 ", Ġ"( Foo Ġet Ġal .; Ġ 2 0 1 7 )") ĊĠĠĠĠĠĠĠ Ġassert New Study ( topic , Ġ 1 , Ġ" hl 2 ", Ġ" descr 2 ", Ġ"( Bar Ġet Ġal .; Ġ 2 0 1 7 )") ĊĠĠĠĠĠĠĠ Ġtopic Ġ= Ġ" topics : 1 :" ĊĠĠĠĠĠĠĠ Ġtester . assert Label ( topic Ġ+ Ġ" topic Title ", Ġ" Topic 2 ") ĊĠĠĠĠĠĠĠ Ġassert New Study ( topic , Ġ 0 , Ġ" hl 3 ", Ġ" descr 3 ", Ġ"( B az Ġet Ġal .; Ġ 2 0 1 7 )") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert Link Section () Ġ{ ĊĠĠĠĠĠĠĠ Ġtester . assert Component (" links ", ĠListView :: class . java ) ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġassert Link ( index ++, Ġ" link Title 1 ", Ġ" link Url 1 ") ĊĠĠĠĠĠĠĠ Ġassert Link ( index , Ġ" link Title 2 ", Ġ" link Url 2 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert Link ( index : ĠInt , Ġtitle : ĠString , Ġurl : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġ" links :$ index : link " ĊĠĠĠĠĠĠĠ Ġtester . assert Component ( path , ĠBootstrap External Link :: class . java ) ĊĠĠĠĠĠĠĠ Ġtester . assert Model Value ( path , Ġurl ) ĊĠĠĠĠĠĠĠ Ġtester . assert Label ("$ path : label ", Ġtitle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert Archive Section () Ġ{ ĊĠĠĠĠĠĠĠ Ġtester . assert Label (" h 2 Archive Title ", Ġ" Archive ") ĊĠĠĠĠĠĠĠ Ġtester . assert Component (" archive ", ĠListView :: class . java ) ĊĠĠĠĠĠĠĠ Ġtester . assert Label (" archive : 0 : month Name : label ", Ġ" Feb Ġ 2 0 1 8 ") ĊĠĠĠĠĠĠĠ Ġtester . assert Label (" archive : 1 : month Name : label ", Ġ" Dec Ġ 2 0 1 7 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert New Study ( base : ĠString , Ġstudy Index : ĠInt , Ġheadline : ĠString , Ġdescription : ĠString , Ġreference : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġbase Ġ+ Ġ" topic St udies :" Ġ+ Ġstudy Index Ġ+ Ġ":" ĊĠĠĠĠĠĠĠ Ġtester . assert Label ( path Ġ+ Ġ" headline ", Ġheadline ) ĊĠĠĠĠĠĠĠ Ġtester . assert Label ( path Ġ+ Ġ" description ", Ġdescription ) ĊĠĠĠĠĠĠĠ Ġtester . assert Label ( path Ġ+ Ġ" reference : reference Label ", Ġreference ) ĊĠĠĠĠĠĠĠ Ġtester . assert Component ( path Ġ+ Ġ" reference ", ĠLink :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Verify () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . do Verify () ĊĠĠĠĠĠĠĠ Ġ// Ġloading Ġthe Ġpage Ġinitially ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 2 ) Ġ{ Ġservice Mock . find Most Recent New Study Topics (" en _ us ") Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 2 ) Ġ{ Ġservice Mock . find New Study Page Links (" en _ us ") Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 2 ) Ġ{ Ġservice Mock . find Arch ived News letters ( 1 4 , Ġ" en _ us ") Ġ} ĊĠĠĠĠĠĠĠ Ġconfirm Verified ( service Mock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcan Access Public Paper Detail Page For Specific Paper _ andReturn To New Study List Page From There () Ġ{ ĊĠĠĠĠĠĠĠ Ġtester . start Page ( make Page ()) ĊĠĠĠĠĠĠĠ Ġtester . assert Rendered Page ( page Class ) ĊĠĠĠĠĠĠĠ Ġtester . click Link (" topics : 1 : topic St udies : 0 : reference ") ĊĠĠĠĠĠĠĠ Ġtester . assert Rendered Page ( Public Paper Detail Page :: class . java ) ĊĠĠĠĠĠĠĠ Ġtester . new Form Tester (" form "). submit (" back ") ĊĠĠĠĠĠĠĠ Ġtester . assert Rendered Page ( New Study List Page :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrendering Com mercial Fonts () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġmake Page () ĊĠĠĠĠĠĠĠ Ġval Ġhr Ġ= Ġmock k < I Header Response >( relax Unit Fun Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġpage . render Additional Com mercial Fonts ( hr ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġnull , Ġas Ġcommercial Ġfont Ġis Ġconfigured Ġto Ġnot Ġbe Ġused ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 2 ) Ġ{ Ġhr . render ( any ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwith Issue Missing () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpp Ġ= ĠPage Parameters () ĊĠĠĠĠĠĠĠ Ġpage With Issue ( pp ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwith Issue Null () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpp Ġ= ĠPage Parameters () ĊĠĠĠĠĠĠĠ Ġpp [ Public Page Parameters . ISSUE . parameter Name ] Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġpage With Issue ( pp ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwith Issue Blank () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpp Ġ= ĠPage Parameters () ĊĠĠĠĠĠĠĠ Ġpp [ Public Page Parameters . ISSUE . parameter Name ] Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġpage With Issue ( pp ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpage With Issue ( pp : ĠPage Parameters ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= ĠNew Study List Page ( pp ) ĊĠĠĠĠĠĠĠ Ġtester . start Page ( page ) ĊĠĠĠĠĠĠĠ Ġtester . assert Rendered Page ( page Class ) ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 2 ) Ġ{ Ġservice Mock . find Most Recent New Study Topics (" en _ us ") Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġservice Mock . find New Study Topics For News letter Issue ( any (), Ġany ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwith Issue Present () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpp Ġ= ĠPage Parameters () ĊĠĠĠĠĠĠĠ Ġpp [ Public Page Parameters . ISSUE . parameter Name ] Ġ= Ġ" 1 8 0 6 " ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= ĠNew Study List Page ( pp ) ĊĠĠĠĠĠĠĠ Ġtester . start Page ( page ) ĊĠĠĠĠĠĠĠ Ġtester . assert Rendered Page ( page Class ) ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 2 ) Ġ{ Ġservice Mock . find New Study Topics For News letter Issue (" 1 8 0 6 ", Ġ" en _ us ") Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġservice Mock . find Most Recent New Study Topics ( any ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġicon _ with Free Font () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġmake Page () ĊĠĠĠĠĠĠĠ Ġval Ġicon Ġ= Ġpage . choose Icon ( FontAwesome 5 IconType . long _ arrow _ alt _ right _ s , ĠI co Moon IconType . arrow _ right ) ĊĠĠĠĠĠĠĠ Ġicon ĠshouldBe EqualTo ĠFont Awesome 5 IconType . long _ arrow _ alt _ right _ s ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġicon _ with Com mercial Font () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapplication Properties Ġ= Ġmock k < Sc ip am ato Public Properties > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġis Com mercial Font Present Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġis Navbar Visible ByDefault Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpage : ĠNew Study List Page Ġ= Ġobject Ġ: ĠNew Study List Page ( Page Parameters ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġproperties : ĠApplication Public Properties ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġapplication Properties ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġicon Ġ= Ġpage . choose Icon ( FontAwesome 5 IconType . long _ arrow _ alt _ right _ s , ĠI co Moon IconType . arrow _ right ) ĊĠĠĠĠĠĠĠ Ġicon ĠshouldBe EqualTo ĠI co Moon IconType . arrow _ right ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġclicking Link To Arch ived News letter () Ġ{ ĊĠĠĠĠĠĠĠ Ġtester . start Page ( make Page ()) ĊĠĠĠĠĠĠĠ Ġtester . assert Rendered Page ( page Class ) ĊĠĠĠĠĠĠĠ Ġtester . click Link (" archive : 1 : month Name ") ĊĠĠĠĠĠĠĠ Ġtester . assert Rendered Page ( New Study List Page :: class . java ) ĊĠĠĠĠĠĠĠ Ġtester . debug Component Trees () ĊĊĠĠĠĠĠĠĠ Ġ// Ġloading Ġthe Ġpage Ġinitially ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 2 ) Ġ{ Ġservice Mock . find Most Recent New Study Topics (" en _ us ") Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġredirect ing Ġafter Ġhaving Ġclicked Ġthe Ġlink ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġservice Mock . find New Study Topics For News letter Issue (" 2 0 1 7 / 1 2 ", Ġ" en _ us ") Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġother Ġservice Ġcalls Ġ( tw ice Ġat Ġinitial Ġpage Ġload , Ġone Ġeach Ġafter Ġredirect ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 2 Ġ+ Ġ 1 ) Ġ{ Ġservice Mock . find New Study Page Links (" en _ us ") Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 2 Ġ+ Ġ 1 ) Ġ{ Ġservice Mock . find Arch ived News letters ( 1 4 , Ġ" en _ us ") Ġ} ĊĠĠĠĠĠĠĠ Ġconfirm Verified ( service Mock ) ĊĠĠĠ Ġ} Ċ } Ċ