package Ġorg . v accine impact . api . black box Tests . tests Ċ Ċ import Ġcom . be ust . kl ax on . json Ċ import Ġcom . openc sv . CSV Reader Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . Test Ċ import Ġorg . v accine impact . api . black box Tests . helpers . Request Helper Ċ import Ġorg . v accine impact . api . black box Tests . helpers . Test User Helper Ċ import Ġorg . v accine impact . api . black box Tests . helpers . to JsonObject Ċ import Ġorg . v accine impact . api . black box Tests . helpers . validate Ċ import Ġorg . v accine impact . api . black box Tests . schemas . CSV Schema Ċ import Ġorg . v accine impact . api . db . J oo q Context Ċ import Ġorg . v accine impact . api . db . direct .* Ċ import Ġorg . v accine impact . api . models . permissions . Permission Set Ċ import Ġorg . v accine impact . api . test _ helpers . Database Test Ċ import Ġspark . route . HttpMethod Ċ import Ġjava . io . String Reader Ċ import Ġjava . time . Instant Ċ Ċ class ĠResp ons ibility Comment Tests Ġ: ĠDatabase Test () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġnow Ġ= ĠInstant . now () ĊĠĠĠ Ġprivate Ġval Ġmode lling GroupId Ġ= Ġ" group - 1 " ĊĠĠĠ Ġprivate Ġval Ġscenario Id Ġ= Ġ" scenario - 1 " ĊĊĠĠĠ Ġprivate Ġfun ĠJ oo q Context . setup Respons ibilities () Ġ{ ĊĠĠĠĠĠĠĠ ĠTest User Helper . setup Test User () ĊĠĠĠĠĠĠĠ Ġadd Group ( mode lling GroupId ) ĊĠĠĠĠĠĠĠ Ġadd Scenario Description ( scenario Id , Ġ" description Ġ 1 ", Ġ" d isease - 1 ", Ġadd D isease Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġadd Touch stone Version (" touch stone ", Ġ 1 , Ġadd Touch stone Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġresponsibility Set Ġ= Ġadd Respons ibility Set ( mode lling GroupId , Ġ" touch stone - 1 ") ĊĠĠĠĠĠĠĠ Ġadd Respons ibility Set Comment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponsibility Set , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" comment Ġ 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest User Helper . username , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnow ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresponsibility Id Ġ= Ġadd Respons ibility ( respons ibility Set , Ġ" touch stone - 1 ", Ġscenario Id ) ĊĠĠĠĠĠĠĠ Ġadd Respons ibility Comment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponsibility Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" comment Ġ 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest User Helper . username , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnow ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġmodel Version Id Ġ= Ġadd Model (" model - 1 ", Ġmode lling GroupId , Ġ" d isease - 1 ", Ġversions Ġ= ĠlistOf (" version - 1 ")) ĊĠĠĠĠĠĠĠ Ġadd Expectations ( respons ibility Id ) ĊĠĠĠĠĠĠĠ Ġval Ġbur den Id Ġ= Ġadd Bur den Estimate Set ( respons ibility Id , Ġmodel Version Id , Ġ" test . user ", Ġ" invalid ", Ġset Type Details Ġ= Ġ" unknown ", Ġtimestamp Ġ= Ġnow ) ĊĠĠĠĠĠĠĠ Ġupdate Current Estimate ( respons ibility Id , Ġbur den Id ) ĊĠĠĠĠĠĠĠ Ġadd Bur den Estimate Problem (" 4 2 Ġmissing Ġestimate ( s )", Ġbur den Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` can Ġget Ġcomments `() Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate ("/ touch stones / touch stone - 1 / respons ibilities / comments /") Ġagainst Ġ" Respons ibility Set sWith Comments " Ġgiven Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . setup Respons ibilities () ĊĠĠĠĠĠĠĠ Ġ} Ġrequiring Permissions Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPermission Set (" */ touch stones . read ", Ġ" */ respons ibilities . review ") ĊĠĠĠĠĠĠĠ Ġ} Ġand Check Array Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it ). isEqualTo ( json Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" touch stone _ version " Ġto Ġ" touch stone - 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mode lling _ group _ id " Ġto Ġ" group - 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" comment " Ġto Ġobj ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" comment " Ġto Ġ" comment Ġ 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" added _ by " Ġto Ġ" test . user ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" added _ on " Ġto Ġnow . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" respons ibilities " Ġto Ġarray ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" scenario _ id " Ġto Ġ" scenario - 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" comment " Ġto Ġobj ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" comment " Ġto Ġ" comment Ġ 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" added _ by " Ġto Ġ" test . user ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" added _ on " Ġto Ġnow . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` can Ġadd Ġresponsibility Ġcomment `() Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate ("/ touch stones / touch stone - 1 / comments /$ mode lling GroupId /$ scenario Id /", ĠHttpMethod . post ) Ġgiven Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . setup Respons ibilities () ĊĠĠĠĠĠĠĠ Ġ} Ġsending JSON Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" comment " Ġto Ġ" comment Ġ 3 "). to JsonObject () ĊĠĠĠĠĠĠĠ Ġ} Ġwith Permissions Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPermission Set (" */ touch stones . read ", Ġ" */ respons ibilities . review ") ĊĠĠĠĠĠĠĠ Ġ} Ġwith Request Schema Ġ" Respons ibility Comment " Ġand Check String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it ). isEqualTo (" OK ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` can Ġadd Ġresponsibility Ġset Ġcomment `() Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate ("/ touch stones / touch stone - 1 / comments /$ mode lling GroupId /", ĠHttpMethod . post ) Ġgiven Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . setup Respons ibilities () ĊĠĠĠĠĠĠĠ Ġ} Ġsending JSON Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" comment " Ġto Ġ" comment Ġ 4 "). to JsonObject () ĊĠĠĠĠĠĠĠ Ġ} Ġwith Permissions Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPermission Set (" */ touch stones . read ", Ġ" */ respons ibilities . review ") ĊĠĠĠĠĠĠĠ Ġ} Ġwith Request Schema Ġ" Respons ibility Comment " Ġand Check String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it ). isEqualTo (" OK ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` can Ġget Ġrespons ibilities Ġdata Ġfor Ġtouch stone ` (){ ĊĠĠĠĠĠĠĠ ĠJ oo q Context (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . setup Respons ibilities () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrespons ibilities Url Ġ= Ġ"/ touch stones / touch stone - 1 / respons ibilities / csv /" ĊĠĠĠĠĠĠĠ Ġval Ġpermissions Ġ= ĠPermission Set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" */ can - login ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" */ touch stones . read ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" */ respons ibilities . review " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠRequest Helper (). get ( respons ibilities Url , Ġpermissions , Ġaccepts ContentType Ġ= Ġ" text / csv ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( response . headers [" Content - Type "]). isEqualTo (" text / csv ") ĊĠĠĠĠĠĠĠ ĠassertThat ( response . headers [" Content - Disposition "]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo (" attachment ; Ġfilename =\" respons ibilities _ touch stone - 1 . csv \" ") ĊĊĠĠĠĠĠĠĠ Ġval Ġschema Ġ= ĠCSV Schema (" Respons ibility Set sWith Comments ") ĊĠĠĠĠĠĠĠ Ġschema . validate ( response . text ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcsv Ġ= ĠString Reader ( response . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. use Ġ{ ĠCSV Reader ( it ). read All () Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdata Row Ġ= Ġcsv . drop ( 1 ). first (). toList () ĊĠĠĠĠĠĠĠ ĠassertThat ( dataRow ). isEqualTo ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" touch stone - 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" group - 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" comment Ġ 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnow . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" test . user ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" description Ġ 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" d isease - 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnow . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" test . user ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" central - single - run ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" unknown ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" invalid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 2 Ġmissing Ġestimate ( s )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" comment Ġ 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnow . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" test . user " ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} Ċ } Ċ