package Ġnet . nem eros a . on track . extension . scm . catalog Ċ Ċ import Ġnet . nem eros a . on track . extension . scm . catalog . mock . Mock SC MC atalog Provider Ċ import Ġnet . nem eros a . on track . it . Abstract DSL Test Support Ċ import Ġnet . nem eros a . on track . model . structure . Project Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠS CM Catalog Project Filter Service IT Ġ: ĠAbstract DSL Test Support () Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsc m Catalog : ĠS CM Catalog ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcatalog Link Service : ĠCatalog Link Service ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsc m Catalog Filter Service : ĠS CM Catalog Filter Service ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsc m Catalog Provider : ĠMock SC MC atalog Provider ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġproject Linked : ĠProject ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġproject Linked Other : ĠProject ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġproject Or phan : ĠProject ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġprojects () Ġ{ ĊĠĠĠĠĠĠĠ Ġproject Linked Ġ= Ġproject Ġ{} ĊĠĠĠĠĠĠĠ Ġproject Linked Other Ġ= Ġproject Ġ{} ĊĠĠĠĠĠĠĠ Ġproject Or phan Ġ= Ġproject Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` All Ġentries `() Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( REPO _ LINK ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( REPO _ LINK ED _ OTHER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( REPO _ UN LINK ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorphan ( project Or phan ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` All Ġentries Ġwith Ġexplicit Ġfilter `() Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Test ( link Ġ= ĠS CM Catalog Project Filter Link . ALL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( REPO _ LINK ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( REPO _ LINK ED _ OTHER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( REPO _ UN LINK ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorphan ( project Or phan ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Filter Ġon ĠS CM `() Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Test ( scm Ġ= Ġ" test ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġexpect ( REPO _ LINK ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġexpect ( REPO _ LINK ED _ OTHER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġexpect ( REPO _ UN LINK ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorphan ( project Or phan ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Filter Ġon Ġconfiguration `() Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Test ( config Ġ= Ġ" config - 1 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( REPO _ LINK ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġexpect ( REPO _ LINK ED _ OTHER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġexpect ( REPO _ UN LINK ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorphan ( project Or phan ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Filter Ġon Ġrepository `() Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Test ( repository Ġ= Ġ" .* repo .* ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( REPO _ LINK ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( REPO _ LINK ED _ OTHER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( REPO _ UN LINK ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorphan ( project Or phan ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Filter Ġon Ġspecific Ġrepository `() Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Test ( repository Ġ= ĠRE PO _ LINK ED _ OTHER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġexpect ( REPO _ LINK ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( REPO _ LINK ED _ OTHER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġexpect ( REPO _ UN LINK ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorphan ( project Or phan ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Entries Ġonly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Test ( link Ġ= ĠS CM Catalog Project Filter Link . ENTRY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( REPO _ LINK ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( REPO _ LINK ED _ OTHER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( REPO _ UN LINK ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnot Or phan ( project Or phan ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Linked Ġentries Ġonly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Test ( link Ġ= ĠS CM Catalog Project Filter Link . LINK ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( REPO _ LINK ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( REPO _ LINK ED _ OTHER ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Un linked Ġentries Ġonly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Test ( link Ġ= ĠS CM Catalog Project Filter Link . UN LINK ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( REPO _ UN LINK ED ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Or phan Ġentries Ġonly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Test ( link Ġ= ĠS CM Catalog Project Filter Link . OR PH AN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorphan ( project Or phan ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Or phan Ġentries Ġonly Ġwith Ġpositive Ġregex `() Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Test ( link Ġ= ĠS CM Catalog Project Filter Link . OR PH AN , Ġproject Ġ= Ġ" .* ${ project Or phan . name } .* ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorphan ( project Or phan ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Or phan Ġentries Ġonly Ġwith Ġnegative Ġregex `() Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Test ( link Ġ= ĠS CM Catalog Project Filter Link . OR PH AN , Ġproject Ġ= Ġ" .* ${ project Or phan . name } not am atch .* ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnot Or phan ( project Or phan ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauthorized Projects : ĠList < Project >? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize : ĠInt Ġ= Ġ 2 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsc m : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlink : ĠS CM Catalog Project Filter Link Ġ= ĠS CM Catalog Project Filter Link . ALL , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpectations : ĠExpect ations . () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsc m Catalog Provider . clear () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAll Ġentries ĊĠĠĠĠĠĠĠ Ġval Ġentry Linked Ġ= ĠCatalog Fixtures . entry ( scm Ġ= Ġ" mock ing ", Ġrepository Ġ= ĠRE PO _ LINK ED , Ġconfig Ġ= Ġ" config - 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġentry Linked Other Ġ= ĠCatalog Fixtures . entry ( scm Ġ= Ġ" mock ing ", Ġrepository Ġ= ĠRE PO _ LINK ED _ OTHER , Ġconfig Ġ= Ġ" config - 2 ") ĊĠĠĠĠĠĠĠ Ġval Ġentry Un linked Ġ= ĠCatalog Fixtures . entry ( scm Ġ= Ġ" mock ing ", Ġrepository Ġ= ĠRE PO _ UN LINK ED , Ġconfig Ġ= Ġ" config - 3 ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠMock Ġdata ĊĠĠĠĠĠĠĠ Ġsc m Catalog Provider . store Entry ( entry Linked ) ĊĠĠĠĠĠĠĠ Ġsc m Catalog Provider . store Entry ( entry Linked Other ) ĊĠĠĠĠĠĠĠ Ġsc m Catalog Provider . store Entry ( entry Un linked ) ĊĠĠĠĠĠĠĠ Ġ// ĠMock Ġlinks ĊĠĠĠĠĠĠĠ Ġsc m Catalog Provider . link Entry ( entry Linked , Ġproject Linked ) ĊĠĠĠĠĠĠĠ Ġsc m Catalog Provider . link Entry ( entry Linked Other , Ġproject Linked Other ) ĊĊĠĠĠĠĠĠĠ Ġas Admin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCollection Ġof Ġentries ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsc m Catalog . collect SC MC atalog Ġ{ Ġprintln ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCollection Ġof Ġcatalog Ġlinks ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcatalog Link Service . compute Catalog Links () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠTesting Ġcontext ĊĠĠĠĠĠĠĠ Ġval Ġexpectations Context Ġ= ĠExpect ations () ĊĠĠĠĠĠĠĠ Ġexpectations Context . expect ations () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSecurity Ġcontext ĊĠĠĠĠĠĠĠ Ġval Ġsecurity Context : Ġ(() Ġ-> ĠUnit ) Ġ-> ĠUnit Ġ= Ġif Ġ( authorized Projects Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġas User With View (* authorized Projects . to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġas Admin ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsecurity Context Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġsc m Catalog Filter Service . find Catalog Project Entries ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS CM Catalog Project Filter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġoffset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġsize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsc m Ġ= Ġsc m , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Ġ= Ġconfig , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Ġ= Ġrepository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Ġ= Ġproject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink Ġ= Ġlink ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRe positories ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpectations Context . repos , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . map NotNull Ġ{ Ġit . entry ?. repository Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOr phan Ġprojects ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Or phan Project Names Ġ= Ġitems . filter Ġ{ Ġit . entry Ġ== Ġnull Ġ}. map NotNull Ġ{ Ġit . project ?. name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠActual Ġlist Ġof Ġorphan Ġprojects Ġcontains Ġthe Ġexpected Ġone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNote Ġthat Ġthe Ġlist Ġof Ġorphan Ġprojects Ġwill Ġgrow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmuch Ġlarger Ġthan Ġthe Ġexpected Ġones ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactual Ġ= Ġactual Or phan Project Names . contains All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpectations Context . orph ans . map NotNull Ġ{ Ġit . project ?. name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" Or phan Ġprojects " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNot Ġorphan Ġprojects ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠActual Ġlist Ġof Ġorphan Ġprojects ĠDO ES ĠNOT Ġcontains Ġany Ġof Ġthe Ġexpected Ġone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNote Ġthat Ġthe Ġlist Ġof Ġorphan Ġprojects Ġwill Ġgrow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmuch Ġlarger Ġthan Ġthe Ġexpected Ġones ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactual Ġ= Ġactual Or phan Project Names . intersect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpectations Context . not Or ph ans . map NotNull Ġ{ Ġit . project ?. name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). isEmpty (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" Not Ġin Ġorphan Ġprojects " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Dsl Marker ĊĠĠĠ Ġinternal Ġannotation Ġclass ĠExpect ations Dsl ĊĊĠĠĠ Ġ@ Expectations Dsl ĊĠĠĠ Ġinternal Ġclass ĠExpect ations Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġrepos Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġval Ġor ph ans Ġ= Ġmutable ListOf < Project >() ĊĠĠĠĠĠĠĠ Ġval Ġnot Or ph ans Ġ= Ġmutable ListOf < Project >() ĊĊĠĠĠĠĠĠĠ Ġfun Ġexpect ( repo : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepos Ġ+= Ġrepo ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġorphan ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġor ph ans Ġ+= Ġproject ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġnot Or phan ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnot Or ph ans Ġ+= Ġproject ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠRE PO _ LINK ED Ġ= Ġ" repo - 1 " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠRE PO _ LINK ED _ OTHER Ġ= Ġ" repo - 2 " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠRE PO _ UN LINK ED Ġ= Ġ" repo - 3 " ĊĠĠĠ Ġ} Ċ Ċ }