package Ġn erde ar la Ċ Ċ import Ġorg . jetbrains . spe k . api . Spe k Ċ import Ġorg . jetbrains . spe k . api . dsl .* Ċ import Ġio . rest ass ured . Rest Ass ured .*; Ċ import Ġorg . hamcrest . Matchers .*; Ċ Ċ class ĠWork shop Spe k : ĠSpe k ({ ĊĊĠ Ġdescribe (" TODO ĠAPI ") Ġ{ ĊĊĠĠĠ Ġ/** ĠStart / stop Ġapplication : Ġ*/ ĊĠĠĠ Ġval Ġapp Ġ= ĠApp () ĊĠĠĠ Ġbefore Group Ġ{ Ġapp . start (" server . join = false ") Ġ} ĊĠĠĠ Ġafter Group Ġ{ Ġapp . stop () Ġ} ĊĊĠĠĠ Ġgiven (" todo Ġitems ") Ġ{ ĊĠĠĠĠĠ Ġit (" should Ġlist Ġall Ġitems ") Ġ{ ĊĠĠĠĠĠĠĠ Ġget ("/ api / todo ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType (" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( equalTo (" [] ")) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġit (" should Ġcreate Ġa Ġtodo Ġitem ") Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType (" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (""" {" name ": Ġ" Learn ĠKotlin "} """) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ("/ api / todo ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType (" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( equalTo (""" {" id ": 1 ," name ":" Learn ĠKotlin "," done ": false } "" ")) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġit (" should Ġget Ġan Ġitem Ġby ĠID ") Ġ{ ĊĠĠĠĠĠĠĠ Ġget ("/ api / todo / 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType (" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( equalTo (""" {" id ": 1 ," name ":" Learn ĠKotlin "," done ": false } "" ")) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġit (" should Ġupdate Ġa Ġtodo Ġitem ") Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType (" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (""" {" id ": 1 ," name ":" Learn ĠKotlin "," done ": true } """) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put ("/ api / todo ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType (" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( equalTo (""" {" id ": 1 ," name ":" Learn ĠKotlin "," done ": true } "" ")) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġit (" should Ġget Ġ 4 0 4 Ġif Ġwe Ġtry Ġto Ġupdate Ġa Ġmissing Ġtodo Ġitem ") Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType (" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body (""" {" id ": 0 ," name ":" Missing "," done ": true } """) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put ("/ api / todo ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 4 0 4 ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġit (" should Ġget Ġan Ġitem Ġby ĠID ") Ġ{ ĊĠĠĠĠĠĠĠ Ġget ("/ api / todo / 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType (" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( equalTo (""" {" id ": 1 ," name ":" Learn ĠKotlin "," done ": true } "" ")) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġit (" should Ġget Ġ 4 0 4 Ġfor Ġinvalid Ġitems ") Ġ{ ĊĠĠĠĠĠĠĠ Ġget ("/ api / todo / 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 4 0 4 ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġit (" should Ġlist Ġall Ġitems ") Ġ{ ĊĠĠĠĠĠĠĠ Ġget ("/ api / todo ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType (" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( equalTo (""" [{" id ": 1 ," name ":" Learn ĠKotlin "," done ": false }] "" ")) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġit (" should Ġdelete Ġan Ġitem Ġby ĠID ") Ġ{ ĊĠĠĠĠĠĠĠ Ġdelete ("/ api / todo / 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 2 0 4 ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġit (" should Ġget Ġ 4 0 4 Ġfor Ġinvalid Ġitems ") Ġ{ ĊĠĠĠĠĠĠĠ Ġget ("/ api / todo / 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. statusCode ( 4 0 4 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ Ċ }) Ċ