package Ġch . y vu . test store . integration . revision Ċ Ċ import Ġch . y vu . test store . integration . Base IntegrationTest Ċ import Ġch . y vu . test store . revision . Revision Ċ import Ġch . y vu . test store . revision . Revision Dto Ċ import Ġch . y vu . test store . revision . Revision Repository Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġio . rest ass ured . Rest Ass ured . given Ċ import Ġio . rest ass ured . http . ContentType . JSON Ċ import Ġorg . hamcrest . Description Ċ import Ġorg . hamcrest . Matchers . equalTo Ċ import Ġorg . hamcrest . Matchers . has Item Ċ import Ġorg . hamcrest . Type Safe Matcher Ċ import Ġorg . junit . Assert . assertThat Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġjava . util . UUID . randomUUID Ċ Ċ class ĠRevision Controller Test Ġ: ĠBase IntegrationTest () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠDate ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġiso Format Ġ= Ġ" yyyy - MM - dd ' T ' HH : mm : ss . SS SZ " ĊĠĠĠĠĠĠĠ Ġval Ġnow String Ġ= ĠSimpleDateFormat ( iso Format ). format ( now ) ĊĠĠĠĠĠĠĠ Ġval Ġrun Id Ġ= Ġrandom UUID () ĊĠĠĠĠĠĠĠ Ġval Ġrevision Hash Ġ= Ġrandom UUID (). toString () ĊĠĠĠĠĠĠĠ Ġval Ġauthor Ġ= Ġ" Y ves ĠBon j our " ĊĠĠĠĠĠĠĠ Ġval Ġcomment Ġ= Ġ" Some Ġcomment " ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" https :// github . com / y bon j our / test - store " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Autowired Ġlateinit Ġvar Ġrevision Repository : ĠRevision Repository ĊĊĠĠĠ Ġ@ Before Ġoverride Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setUp () ĊĊĠĠĠĠĠĠĠ Ġrevision Repository . delete All () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġcreate Revision Returns Correct StatusCode () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrevision Ġ= ĠRevision Dto ( revision Hash , Ġnow , Ġauthor , Ġcomment , Ġurl ) ĊĠĠĠĠĠĠĠ Ġval Ġmapper Ġ= ĠObjectMapper () ĊĠĠĠĠĠĠĠ Ġmapper . date Format Ġ= ĠSimpleDateFormat ( Revision Controller Test . iso Format ) ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġmapper . writeValue AsString ( revision ) ĊĊĠĠĠĠĠĠĠ Ġgiven (). contentType ( JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ("/ runs /$ run Id / revisions ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then (). statusCode ( 2 0 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġcreate Revision Stores Revision Correct ly () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrevision Ġ= ĠRevision Dto ( revision Hash , Ġnow , Ġauthor , Ġcomment , Ġurl ) ĊĠĠĠĠĠĠĠ Ġval Ġmapper Ġ= ĠObjectMapper () ĊĠĠĠĠĠĠĠ Ġmapper . date Format Ġ= ĠSimpleDateFormat ( Revision Controller Test . iso Format ) ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġmapper . writeValue AsString ( revision ) ĊĊĠĠĠĠĠĠĠ Ġgiven (). contentType ( JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ("/ runs /$ run Id / revisions ") ĊĊĠĠĠĠĠĠĠ Ġval Ġrevisions Ġ= Ġrevision Repository . findAll () ĊĠĠĠĠĠĠĠ ĠassertThat ( revisions , Ġhas Item ( revision With ( run Id , Ġnow , Ġrevision Hash , Ġauthor , Ġcomment , Ġurl ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġcreate Revision Stores Revision With Only Mandatory Fields Correct ly () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrevision Ġ= ĠRevision Dto ( revision Hash , Ġnow ) ĊĠĠĠĠĠĠĠ Ġval Ġmapper Ġ= ĠObjectMapper () ĊĠĠĠĠĠĠĠ Ġmapper . date Format Ġ= ĠSimpleDateFormat ( Revision Controller Test . iso Format ) ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġmapper . writeValue AsString ( revision ) ĊĊĠĠĠĠĠĠĠ Ġgiven (). contentType ( JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ("/ runs /$ run Id / revisions ") ĊĊĠĠĠĠĠĠĠ Ġval Ġrevisions Ġ= Ġrevision Repository . findAll () ĊĠĠĠĠĠĠĠ ĠassertThat ( revisions , Ġhas Item ( revision With ( run Id , Ġnow , Ġrevision Hash , Ġnull , Ġnull , Ġnull ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġcreate Revision Returns 4 0 0 StatusCode If No Time Provided () Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġgiven (). contentType ( JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("{ \" revision \": Ġ\" ${ revision Hash }\" }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ("/ runs /$ run Id / revisions ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then (). statusCode ( 5 0 0 ) Ġ// ĠTODO : ĠFix Ġto Ġreturn Ġ 4 0 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġcreate Revision R returns 4 0 0 StatusCode If No Revision Provided () Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven (). contentType ( JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("{ \" time \": Ġ\" ${ now String }\" }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ("/ runs /$ run Id / revisions ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then (). statusCode ( 5 0 0 ) Ġ// ĠTODO : ĠFix Ġto Ġreturn Ġ 4 0 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġget Re visions By Run Returns Revision () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrevision Ġ= ĠRevision ( run Id , Ġnow , Ġrevision Hash , Ġauthor , Ġcomment , Ġurl ) ĊĠĠĠĠĠĠĠ Ġrevision Repository . save ( revision ) ĊĊĠĠĠĠĠĠĠ Ġgiven () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ("/ runs /$ run Id / revisions ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. run ", ĠequalTo ( run Id . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. time ", ĠequalTo ( now . time . toInt ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. revision ", ĠequalTo ( revision Hash )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. author ", ĠequalTo ( author )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. comment ", ĠequalTo ( comment )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ("[ 0 ]. url ", ĠequalTo ( url )) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġrevision With ( run : ĠUUID , Ġtime : ĠDate , Ġrevision : ĠString , Ġauthor : ĠString ?, Ġcomment : ĠString ?, Ġurl : ĠString ?) Ġ= Ġobject Ġ: ĠType Safe Matcher < Revision >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmatches S af ely ( item : ĠRevision ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġ== Ġnull ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitem . run Ġ== Ġrun Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . time Ġ== Ġtime Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . revision Ġ== Ġrevision Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . author Ġ== Ġauthor Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . comment Ġ== Ġcomment Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . url Ġ== Ġurl ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescribe To ( description : ĠDescription ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( description Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" Revision Ġwith Ġ{ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" run =" ). append Value ( run ). append Text (", Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" time =" ). append Value ( time ). append Text (", Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" revision =" ). append Value ( revision ). append Text (", Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" author =" ). append Value ( author ). append Text (", Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" comment =" ). append Value ( comment ). append Text (", Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" url =" ). append Value ( url ). append Text (", Ġ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" }") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }