package Ġcom . examples . ab bas dgr 8 . model . service Ċ Ċ import Ġcom . examples . ab bas dgr 8 . model . data . Input Json Deserializer Ċ import Ġcom . examples . ab bas dgr 8 . model . domain . Organization Ċ import Ġcom . examples . ab bas dgr 8 . model . domain . Ticket Ċ import Ġcom . examples . ab bas dgr 8 . model . domain . User Ċ import Ġcom . examples . ab bas dgr 8 . model . service . exceptions . Organization Search Error Ċ import Ġorg . am sh ove . k lu ent .* Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ import Ġorg . spe k framework . spe k 2 . style . g her kin . Feature Ċ import Ġjava . io . File Ċ import Ġjava . lang . Exception Ċ import Ġjava . util . NoSuch ElementException Ċ Ċ class ĠOrganization Search Service Tests : ĠSpe k ({ ĊĊĠĠĠ Ġval Ġservice Ġ= ĠOrganization Search Service () ĊĊĊĠĠĠ ĠFeature (" Searching Ġon Ġ_ id ") Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Organization Ġ= ĠInput Json Deserializer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Organizations ( File (" src / test / resources / json / valid / organizations . json ")) [ 0 ] ĊĊĠĠĠĠĠĠĠ ĠScenario (" Searching Ġon Ġ_ id Ġfor Ġa Ġrecord Ġthat Ġexists ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġ 1 0 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġresults : ĠList < Organization > ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠWhen (" Search Ġby Ġ_ id Ġis Ġinvoked ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= Ġservice . findBy Field ("_ id ", Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠThen (" Valid Ġrecord Ġgets Ġreturned ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults . should Not BeNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults [ 0 ] ĠshouldBe EqualTo Ġexpected Organization ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠScenario (" Searching Ġon Ġ_ id Ġfor Ġa Ġrecord Ġthat Ġdoes Ġnot Ġexist ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġresults : ĠList < Organization > ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠWhen (" Search Ġby Ġ_ id Ġis Ġinvoked ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= Ġservice . findBy Field ("_ id ", Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠThen (" No Ġrecord Ġgets Ġreturned ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults . shouldBe Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ ĠFeature (" Searching Ġon Ġdetails ") Ġ{ ĊĊĠĠĠĠĠĠĠ ĠScenario (" Searching Ġon Ġdetails Ġfor Ġexisting Ġrecords ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdetails Ġ= Ġ" Me ga Cor p " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġresults : ĠList < Organization > ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠWhen (" Search Ġby Ġdetails Ġis Ġinvoked ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= Ġservice . findBy Field (" details ", Ġdetails ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠThen (" Multiple Ġrecords Ġget Ġreturned ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults . should Not BeNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults . size ĠshouldBe EqualTo Ġ 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠScenario (" Searching Ġon Ġdetails Ġfor Ġnon Ġexist ent Ġrecords ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdetails Ġ= Ġ" Random Ġstring " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġresults : ĠList < Organization > ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠWhen (" Search Ġby Ġdetails Ġis Ġinvoked ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= Ġservice . findBy Field (" details ", Ġdetails ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠThen (" No Ġrecord Ġgets Ġreturned ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults . shouldBe Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ ĠFeature (" Searching Ġon Ġa Ġfield Ġthat Ġdoes Ġnot Ġexist ") Ġ{ ĊĊĠĠĠĠĠĠĠ ĠScenario (" Se aching Ġon Ġfield Ġwith Ġname Ġxyz ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġexception : ĠException ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠWhen (" findBy Field () Ġusing Ġxyz Ġgets Ġinvoked ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice . findBy Field (" xyz ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception Ġ= Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠThen (" An ĠOrganization Search Error Ġgets Ġthrown ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception . should Not BeNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception ĠshouldBe InstanceOf ĠOrganization Search Error :: class ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception . cause ĠshouldBe InstanceOf ĠNoSuch ElementException :: class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ ĠFeature (" List Ġall Ġsearch able Ġfields ") Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Fields Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"_ id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" alias ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" details ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" external _ id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" shared _ tickets ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" url " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠScenario (" On ĠOrganization Ġobject ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġsearch able Fields : ĠList < String > ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠWhen (" list All Search able Fields Ġis Ġcalled ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch able Fields Ġ= Ġservice . getAll Search able Field Names () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠThen (" all Ġcorrect Ġsearch able Ġfields Ġare Ġreturned ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch able Fields ĠshouldBe EqualTo Ġexpected Fields ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ ĠFeature (" Get Ġassociated ĠTick ets Ġ& ĠUsers ") Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġorg Id Ġ= ĠInput Json Deserializer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Organizations ( File (" src / test / resources / json / valid / organizations . json ")) [ 0 ]._ id ĊĊĠĠĠĠĠĠĠ ĠScenario (" For Ġa Ġvalid , Ġexisting , Ġand Ġassociated ĠOrganization Ġobject ") Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġassociated Tickets And Users : ĠPair < Set < Ticket >, ĠSet < User >> ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠWhen (" Associations Ġare Ġqueried ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociated Tickets And Users Ġ= Ġservice . get Associated Tickets And Users ( org Id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠThen (" all Ġthe Ġcorrect Ġassociated Ġtickets Ġand Ġusers Ġare Ġreturned ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociated Tickets And Users . should Not BeNull () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġassociated Tickets Ġ= Ġassociated Tickets And Users . first ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociated Tickets . should Not BeNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociated Tickets . should Not Be Empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociated Tickets . size ĠshouldBe EqualTo Ġ 4 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġassociated Users Ġ= Ġassociated Tickets And Users . second ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociated Users . should Not BeNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociated Users . should Not Be Empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociated Users . size ĠshouldBe EqualTo Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ })