package Ġnet . nem eros a . on track . boot . search Ċ Ċ import Ġnet . nem eros a . on track . extension . general . META _ INFO _ SEARCH _ INDEX Ċ import Ġnet . nem eros a . on track . extension . general . Meta Info Property Ċ import Ġnet . nem eros a . on track . extension . general . Meta Info Property Item Ċ import Ġnet . nem eros a . on track . extension . general . Meta Info PropertyType Ċ import Ġnet . nem eros a . on track . model . structure . Build Ċ import Ġnet . nem eros a . on track . model . structure . Search Request Ċ import Ġnet . nem eros a . on track . test . TestUtils . uid Ċ import Ġorg . junit . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠMeta Info Search IT Ġ: ĠAbstract Search Test Support () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Looking Ġfor Ġbuilds Ġwith Ġmeta Ġinformation Ġafter Ġcreation `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġuid (" N ") ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġuid (" V ") ĊĠĠĠĠĠĠĠ Ġproject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbranch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuild 1 Ġ= Ġbuild Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Info ( name Ġto Ġ"${ value } 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuild 2 Ġ= Ġbuild Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Info ( name Ġto Ġ"${ value } 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLooks Ġfor Ġexact Ġmatch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexact Matches Ġ= Ġsearch Service . pag inated Search ( Search Request ("$ name :${ value } 1 ")). items ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexact Match Ġ= Ġexact Matches . find Ġ{ Ġit . title Ġ== Ġbuild 1 . entity DisplayName Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" Exact Ġmatch Ġnot Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvariant Match Ġ= Ġexact Matches . find Ġ{ Ġit . title Ġ== Ġbuild 2 . entity DisplayName Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" Variant Ġnot Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( exact Match . accuracy Ġ> Ġvariant Match . accuracy , Ġ" Exact Ġmatch Ġscope Ġis Ġhigher Ġthan Ġnon Ġexact Ġmatch ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLooks Ġfor Ġprefix ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefix Matches Ġ= Ġsearch Service . pag inated Search ( Search Request ("$ name :$ value ")). items ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( prefix Matches . any Ġ{ Ġit . title Ġ== Ġbuild 1 . entity DisplayName Ġ}, Ġ" Build Ġ 1 Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( prefix Matches . any Ġ{ Ġit . title Ġ== Ġbuild 2 . entity DisplayName Ġ}, Ġ" Build Ġ 2 Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Looking Ġfor Ġbuilds Ġwith Ġmeta Ġinformation Ġafter Ġupdate Ġof Ġproperty `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname 1 Ġ= Ġuid (" N ") ĊĠĠĠĠĠĠĠ Ġval Ġvalue 1 Ġ= Ġuid (" V ") ĊĠĠĠĠĠĠĠ Ġval Ġname 2 Ġ= Ġuid (" M ") ĊĠĠĠĠĠĠĠ Ġval Ġvalue 2 Ġ= Ġuid (" W ") ĊĠĠĠĠĠĠĠ Ġproject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbranch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuild Ġ= Ġbuild Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Info ( name 1 Ġto Ġvalue 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLooks Ġfor Ġexact Ġmatch Ġnow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Service . pag inated Search ( Search Request ("$ name 1 :$ value 1 ")). items . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( any Ġ{ Ġit . title Ġ== Ġbuild . entity DisplayName Ġ}, Ġ" Build Ġfound Ġwith Ġcurrent Ġmeta Ġinformation ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠChanging Ġthe Ġmeta Ġinfo ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild . meta Info ( name 2 Ġto Ġvalue 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLooks Ġfor Ġexact Ġmatch Ġnow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Service . pag inated Search ( Search Request ("$ name 2 :$ value 2 ")). items . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( any Ġ{ Ġit . title Ġ== Ġbuild . entity DisplayName Ġ}, Ġ" Build Ġfound Ġwith Ġnew Ġmeta Ġinformation ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Looking Ġfor Ġbuilds Ġwith Ġmeta Ġinformation Ġafter Ġdeletion Ġof Ġproperty `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġuid (" N ") ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġuid (" V ") ĊĠĠĠĠĠĠĠ Ġproject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbranch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuild Ġ= Ġbuild Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Info ( name Ġto Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLooks Ġfor Ġexact Ġmatch Ġnow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Service . pag inated Search ( Search Request ("$ name :$ value ")). items . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( any Ġ{ Ġit . title Ġ== Ġbuild . entity DisplayName Ġ}, Ġ" Build Ġfound Ġwith Ġmeta Ġinformation ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDe leting Ġthe Ġmeta Ġinfo ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Property ( build , ĠMeta Info PropertyType :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLooks Ġfor Ġexact Ġmatch Ġnow Ġshould Ġnot Ġreturn Ġthis Ġbuild ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Service . pag inated Search ( Search Request ("$ name :$ value ")). items . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( none Ġ{ Ġit . title Ġ== Ġbuild . entity DisplayName Ġ}, Ġ" Build Ġnot Ġfound Ġwith Ġmeta Ġinformation ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Looking Ġfor Ġbuilds Ġwith Ġmeta Ġinformation Ġafter Ġdeletion Ġof Ġbuild `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġuid (" N ") ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġuid (" V ") ĊĠĠĠĠĠĠĠ Ġproject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbranch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuild Ġ= Ġbuild Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Info ( name Ġto Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLooks Ġfor Ġexact Ġmatch Ġnow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Service . pag inated Search ( Search Request ("$ name :$ value ")). items . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( any Ġ{ Ġit . title Ġ== Ġbuild . entity DisplayName Ġ}, Ġ" Build Ġfound Ġwith Ġmeta Ġinformation ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDe leting Ġthe Ġbuild ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġas Admin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstructure Service . delete Build ( build . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLooks Ġfor Ġexact Ġmatch Ġnow Ġshould Ġnot Ġreturn Ġthis Ġbuild Ġ( and Ġnot Ġfail Ġhor rib ly ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Service . pag inated Search ( Search Request ("$ name :$ value ")). items . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( none Ġ{ Ġit . title Ġ== Ġbuild . entity DisplayName Ġ}, Ġ" Build Ġnot Ġfound Ġwith Ġmeta Ġinformation ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Looking Ġfor Ġbuilds Ġwith Ġseveral Ġmeta Ġinfo Ġitems `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname 1 Ġ= Ġuid (" N ") ĊĠĠĠĠĠĠĠ Ġval Ġname 2 Ġ= Ġuid (" N ") ĊĠĠĠĠĠĠĠ Ġval Ġvalue 1 Ġ= Ġuid (" V ") ĊĠĠĠĠĠĠĠ Ġval Ġvalue 2 Ġ= Ġuid (" V ") ĊĠĠĠĠĠĠĠ Ġproject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbranch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuild 1 Ġ= Ġbuild Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Info ( name 1 Ġto Ġvalue 1 , Ġname 2 Ġto Ġvalue 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuild 2 Ġ= Ġbuild Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Info ( name 1 Ġto Ġvalue 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIndex ation Ġof Ġmeta Ġinformation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex ( META _ INFO _ SEARCH _ INDEX ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSearch Ġshould Ġreturn Ġthose Ġtwo Ġbuilds ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġsearch Service . pag inated Search ( Search Request ("$ name 1 : value 1 ")). items ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( results . any Ġ{ Ġit . title Ġ== Ġbuild 1 . entity DisplayName Ġ}, Ġ" Build Ġ 1 Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( results . any Ġ{ Ġit . title Ġ== Ġbuild 2 . entity DisplayName Ġ}, Ġ" Build Ġ 2 Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Looking Ġfor Ġa Ġbuild Ġwith Ġmeta Ġinformation `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġuid (" N ") ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġuid (" V ") ĊĠĠĠĠĠĠĠ Ġproject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbranch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal Ġ= Ġbuild Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Info ( name Ġto Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBuild Ġwith Ġsame Ġvalue Ġprefix ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefixed Ġ= Ġbuild Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Info ( name Ġto Ġuid ( value )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBuild Ġwith Ġother Ġvalue Ġbut Ġsame Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġother Value Ġ= Ġbuild Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Info ( name Ġto Ġuid (" W ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOther Ġbuilds Ġwith Ġother Ġname / values ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Info ( uid (" N ") Ġto Ġuid (" W ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIndex ation Ġof Ġmeta Ġinformation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex ( META _ INFO _ SEARCH _ INDEX ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLooks Ġfor Ġthe Ġexact Ġmatch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġsearch Service . pag inated Search ( Search Request ("$ name :$ value ")). items ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( results . size Ġ> Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFirst Ġbuild Ġis Ġthe Ġoriginal Ġone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults [ 0 ]. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( original . entity DisplayName , Ġtitle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ("$ name Ġ-> Ġ$ value ", Ġdescription ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( results . map Ġ{ Ġit . accuracy Ġ}. max OrNull (), Ġaccuracy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPrefix ed Ġ& Ġother Ġvalues Ġare Ġalso Ġpresent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( results . any Ġ{ Ġit . title Ġ== Ġprefixed . entity DisplayName Ġ}, Ġ" Prefix ed Ġbuild Ġis Ġpresent ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( results . any Ġ{ Ġit . title Ġ== Ġother Value . entity DisplayName Ġ}, Ġ" Build Ġwith Ġother Ġvalue Ġbut Ġsame Ġname Ġis Ġalso Ġpresent ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠBuild . meta Info ( var arg Ġitems : ĠPair < String , ĠString >) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Property ( this , ĠMeta Info PropertyType :: class . java , ĠMeta Info Property ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . map Ġ{ Ġ( name , Ġvalue ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMeta Info Property Item ( name , Ġvalue , Ġcategory Ġ= Ġnull , Ġlink Ġ= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} Ċ Ċ }