package Ġat . ac . tu w ien . wa ec m . ss 1 8 . group 0 9 . service Ċ Ċ /* Ġk tl int - disable Ġno - wildcard - imports Ġ*/ Ċ import Ġat . ac . tu w ien . wa ec m . ss 1 8 . group 0 9 . Abstract Test Ċ import Ġat . ac . tu w ien . wa ec m . ss 1 8 . group 0 9 . Backend Test Application Ċ import Ġat . ac . tu w ien . wa ec m . ss 1 8 . group 0 9 . Test DataProvider Ċ import Ġat . ac . tu w ien . wa ec m . ss 1 8 . group 0 9 . dto .* Ċ import Ġjunit . framework . TestCase .* Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . context . SpringBootTest Ċ import Ġorg . springframework . test . context . junit 4 . Spring Runner Ċ import Ġreactor . test . Step Verifier Ċ import Ġjava . time . Duration Ċ Ċ @ RunWith ( Spring Runner :: class ) Ċ @ SpringBootTest ( value Ġ= Ġ[" application . yml "], Ġclasses Ġ= Ġ[ Backend Test Application :: class ]) Ċ class ĠMedical Query Service Test Ġ: ĠAbstract Test () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġinit () Ġ{} ĊĊĠĠĠ Ġval Ġtest DataProvider Ġ= ĠTest DataProvider () ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar ĠuserService : ĠI UserService ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġmedical Query Service : ĠI Medical Query Service ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġmedical Information Service : ĠMedical Information Service ĊĊĠĠĠ Ġprivate Ġfun Ġget Medical Query With Research Reference (): ĠMedical Query Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresearch Facility Ġ= ĠuserService . create ( test DataProvider . get Dummy Research er ()). block () !! ĊĠĠĠĠĠĠĠ Ġval Ġmedical Query Ġ= Ġtest DataProvider . get Valid Medical Query () ĊĠĠĠĠĠĠĠ Ġmedical Query . research Facility Id Ġ= Ġresearch Facility . id ĊĠĠĠĠĠĠĠ Ġreturn Ġmedical Query ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate _ valid Create Of Medical Query _ should Persist And Return () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmedical Query Ġ= Ġget Medical Query With Research Reference () ĊĠĠĠĠĠĠĠ ĠassertNull (" the Ġid Ġof Ġthe Ġquery Id Ġmust Ġbe Ġnull Ġbefore Ġcreation ", Ġmedical Query . id ) ĊĠĠĠĠĠĠĠ Ġmedical Query Service . create ( medical Query ). block () ĊĠĠĠĠĠĠĠ ĠassertNotNull (" the Ġreturned Ġobject Ġmust Ġnot Ġbe Ġnull ", Ġmedical Query ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" the Ġid Ġof Ġthe Ġstored Ġobject Ġmust Ġnot Ġbe Ġnull Ġanymore ", Ġmedical Query . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠValidation Exception :: class ) ĊĠĠĠ Ġfun Ġcrate _ invalid Create With No Criteria _ should Throw Exception () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmedical Query Ġ= Ġget Medical Query With Research Reference () ĊĠĠĠĠĠĠĠ Ġmedical Query . min Age Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġmedical Query . max Age Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġmedical Query . gender Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġmedical Query . tags Ġ= Ġempty Array () ĊĠĠĠĠĠĠĠ Ġmedical Query Service . create ( medical Query ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfind Matching Queries Without Shared _ should Return () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġtest DataProvider . get Dummy User () ĊĠĠĠĠĠĠĠ ĠuserService . create ( user ). block () ĊĊĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġtest DataProvider . get Valid Medical Information () ĊĠĠĠĠĠĠĠ Ġinfo . userId Ġ= Ġuser . id ĊĠĠĠĠĠĠĠ Ġmedical Information Service . create ( info ). block () ĊĊĠĠĠĠĠĠĠ Ġval Ġmedical Query Ġ= Ġget Medical Query With Research Reference () ĊĠĠĠĠĠĠĠ Ġmedical Query Service . create ( medical Query ). block () ĊĊĠĠĠĠĠĠĠ Ġcreate Permission ( info . id , Ġmedical Query . id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmedical Query Service . find Matching Queries ( user . id , Ġfalse ) ĊĊĠĠĠĠĠĠĠ ĠStep Verifier . create ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Complete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify ( Duration . of Seconds ( 1 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfind Matching Queries In cluding Shared _ should Return () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġtest DataProvider . get Dummy User () ĊĠĠĠĠĠĠĠ ĠuserService . create ( user ). block () ĊĊĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġtest DataProvider . get Valid Medical Information () ĊĠĠĠĠĠĠĠ Ġinfo . userId Ġ= Ġuser . id ĊĠĠĠĠĠĠĠ Ġmedical Information Service . create ( info ). block () ĊĊĠĠĠĠĠĠĠ Ġval Ġmedical Query Ġ= Ġget Medical Query With Research Reference () ĊĠĠĠĠĠĠĠ Ġmedical Query Service . create ( medical Query ). block () ĊĊĠĠĠĠĠĠĠ Ġcreate Permission ( info . id , Ġmedical Query . id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmedical Query Service . find Matching Queries ( user . id , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġval Ġrelevant Query Data Ġ= ĠRe levant Query Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedical Query . id !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedical Query . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedical Query . description , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest DataProvider . get Dummy Research er (). username , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedical Query . financial Offer ing , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Pair ( info . id !! , Ġinfo . title )) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠStep Verifier . create ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Next ( relevant Query Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Complete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify ( Duration . of Seconds ( 1 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠfindAll Shared Information _ should Return () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprintln (" create Ġuser ") ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġtest DataProvider . get Dummy User () ĊĠĠĠĠĠĠĠ ĠuserService . create ( user ). block () ĊĊĠĠĠĠĠĠĠ Ġprintln (" create Ġinfos ") ĊĊĠĠĠĠĠĠĠ Ġval Ġinfo 1 Ġ= Ġcreate Info (" info Ġ 1 ", Ġuser ) ĊĠĠĠĠĠĠĠ Ġval Ġinfo 2 Ġ= Ġcreate Info (" info Ġ 2 ", Ġuser ) ĊĠĠĠĠĠĠĠ Ġval Ġinfo 3 Ġ= Ġcreate Info (" info Ġ 3 ", Ġuser ) ĊĊĠĠĠĠĠĠĠ Ġprintln (" create Ġquery ") ĊĊĠĠĠĠĠĠĠ Ġvar Ġmedical Query Ġ= Ġget Medical Query With Research Reference () ĊĠĠĠĠĠĠĠ Ġmedical Query Ġ= Ġmedical Query Service . create ( medical Query ). block () !! ĊĊĠĠĠĠĠĠĠ Ġprintln (" create Ġpermissions ") ĊĊĠĠĠĠĠĠĠ Ġcreate Permission ( info 1 . id , Ġmedical Query . id ) ĊĠĠĠĠĠĠĠ Ġcreate Permission ( info 2 . id , Ġmedical Query . id ) ĊĠĠĠĠĠĠĠ Ġcreate Permission ( info 3 . id , Ġmedical Query . id ) ĊĊĠĠĠĠĠĠĠ Ġprintln (" findAll Shared Information Of Research Facility ") ĊĊĠĠĠĠĠĠĠ Ġval Ġshared Ġ= Ġmedical Query Service ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. findAll Shared Information Of Research Facility ( medical Query . research Facility Id ). collect List (). block () !! ĊĊĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġinfo ) Ġin Ġshared [ 0 ]. medical Information . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( info . title ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo 1 . title Ġ-> Ġassert An on Info ( user , Ġshared [ 0 ], Ġinfo 1 , Ġindex , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo 2 . title Ġ-> Ġassert An on Info ( user , Ġshared [ 0 ], Ġinfo 2 , Ġindex , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo 3 . title Ġ-> Ġassert An on Info ( user , Ġshared [ 0 ], Ġinfo 3 , Ġindex , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfind Shared Information For Query _ should Return () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprintln (" create Ġuser ") ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠuserService . create ( test DataProvider . get Dummy User ()). block () !! Ġas ĠUser ĊĊĠĠĠĠĠĠĠ Ġprintln ( user ) ĊĊĠĠĠĠĠĠĠ Ġval Ġinfo 1 Ġ= Ġcreate Info (" info Ġ 1 ", Ġuser ) ĊĠĠĠĠĠĠĠ Ġval Ġinfo 2 Ġ= Ġcreate Info (" info Ġ 2 ", Ġuser ) ĊĠĠĠĠĠĠĠ Ġval Ġinfo 3 Ġ= Ġcreate Info (" info Ġ 3 ", Ġuser ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġmedical Query Ġ= Ġget Medical Query With Research Reference () ĊĠĠĠĠĠĠĠ Ġmedical Query Ġ= Ġmedical Query Service . create ( medical Query ). block () !! ĊĊĠĠĠĠĠĠĠ Ġcreate Permission ( info 1 . id , Ġmedical Query . id ) ĊĠĠĠĠĠĠĠ Ġcreate Permission ( info 2 . id , Ġmedical Query . id ) ĊĠĠĠĠĠĠĠ Ġcreate Permission ( info 3 . id , Ġmedical Query . id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġshared Ġ= Ġmedical Query Service ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Shared Information For Query ( medical Query . id !! ). collect List (). block () !! ĊĊĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġinfo ) Ġin Ġshared [ 0 ]. medical Information . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( info . title ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo 1 . title Ġ-> Ġassert An on Info ( user , Ġshared [ 0 ], Ġinfo 1 , Ġindex , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo 2 . title Ġ-> Ġassert An on Info ( user , Ġshared [ 0 ], Ġinfo 2 , Ġindex , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo 3 . title Ġ-> Ġassert An on Info ( user , Ġshared [ 0 ], Ġinfo 3 , Ġindex , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Permission ( info Id : ĠString ?, Ġquery Id : ĠString ?): ĠSh aring Permission Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpermission Ġ= ĠSh aring Permission ( null , Ġinfo Id !! , Ġquery Id !! ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmedical Query Service . create Sharing Permission ( permission ). block () !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Info ( title : ĠString , Ġuser : ĠUser ): ĠMedical Information Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġtest DataProvider . get Valid Medical Information () ĊĠĠĠĠĠĠĠ Ġinfo . title Ġ= Ġtitle ĊĠĠĠĠĠĠĠ Ġinfo . userId Ġ= Ġuser . id ĊĠĠĠĠĠĠĠ Ġreturn Ġmedical Information Service . create ( info ). block () !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert An on Info ( ĊĠĠĠĠĠĠĠ Ġuser : ĠUser , ĊĠĠĠĠĠĠĠ Ġan on Info : ĠAn onym ized User Information , ĊĠĠĠĠĠĠĠ Ġinfo : ĠMedical Information , ĊĠĠĠĠĠĠĠ Ġindex : ĠInt , ĊĠĠĠĠĠĠĠ Ġexpected List Size : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġan onym ized Ġinfo Ġshould Ġcontain Ġthe Ġinserted Ġ& Ġshared Ġinfo : Ġgender ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser . gender , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan on Info . gender ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġan onym ized Ġinfo Ġshould Ġcontain Ġthe Ġinserted Ġ& Ġshared Ġinfo : Ġbirthday ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser . birthday , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan on Info . birthday ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġan onym ized Ġinfo Ġshould Ġcontain Ġthe Ġinserted Ġ& Ġshared Ġmedical Ġinfo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected List Size , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan on Info . medical Information . size ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġan onym ized Ġinfo Ġshould Ġcontain Ġthe Ġinserted Ġ& Ġshared Ġinfo : Ġtitle ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo . title , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan on Info . medical Information [ index ]. title ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġan onym ized Ġinfo Ġshould Ġcontain Ġthe Ġinserted Ġ& Ġshared Ġinfo : description ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo . description , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan on Info . medical Information [ index ]. description ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġan onym ized Ġinfo Ġshould Ġcontain Ġthe Ġinserted Ġ& Ġshared Ġinfo : Ġtags ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo . tags Ġcontent Deep Equals Ġan on Info . medical Information [ index ]. tags ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// an ony im zed Ġpart ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġan onym ized Ġinfo Ġshould Ġhave Ġthe Ġsame Ġuserid Ġthan Ġthe Ġattached Ġmedical Ġinformation Ġuserid ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan on Info . userId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan on Info . medical Information [ index ]. userId ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġassert Not Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġan onym ized Ġinfo Ġshould Ġhave Ġa Ġdifferent Ġuserid Ġthen Ġthe Ġoriginal Ġuser \"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser . id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan on Info . medical Information [ index ]. userId ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Not Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġan onym ized Ġinfo Ġshould Ġhave Ġa Ġdifferent Ġuserid Ġthen Ġthe Ġoriginal Ġuser ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser . id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan on Info . userId ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }