package Ġkotlin mud . action . impl Ċ Ċ import Ġassert k . assertThat Ċ import Ġassert k . assertions . isEqualTo Ċ import Ġkotlin mud . io . type . IO Status Ċ import Ġkotlin mud . room . type . Door Disposition Ċ import Ġkotlin mud . test . helper . create Test Service Ċ import Ġorg . junit . Test Ċ Ċ class ĠOpen Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Can Open Do ors () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsetup ĊĠĠĠĠĠĠĠ Ġval Ġtest Service Ġ= Ġcreate Test Service () ĊĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġroom Ġ= Ġtest Service . getStart Room () ĊĠĠĠĠĠĠĠ Ġroom . north Door Ġ= Ġtest Service . create Door () ĊĠĠĠĠĠĠĠ Ġroom . north Door !!. dis position Ġ= ĠDoor Disposition . CLOSED ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġtest Service . run Action (" open Ġdoor ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ ĠassertThat ( response . message . to Action Creator ). isEqualTo (" you Ġopen Ġ${ room . north Door }. ") ĊĠĠĠĠĠĠĠ ĠassertThat ( response . status ). isEqualTo ( IO Status . OK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Cannot Open Do ors That Are Open () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsetup ĊĠĠĠĠĠĠĠ Ġval Ġtest Service Ġ= Ġcreate Test Service () ĊĠĠĠĠĠĠĠ Ġval Ġroom Ġ= Ġtest Service . getStart Room () ĊĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġdoor Ġ= Ġtest Service . create Door () ĊĠĠĠĠĠĠĠ Ġroom . north Door Ġ= Ġdoor ĊĠĠĠĠĠĠĠ Ġdoor . dis position Ġ= ĠDoor Disposition . OPEN ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġtest Service . run Action (" open Ġdoor ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ ĠassertThat ( response . message . to Action Creator ). isEqualTo (" it Ġis Ġalready Ġopen .") ĊĠĠĠĠĠĠĠ ĠassertThat ( response . status ). isEqualTo ( IO Status . ERROR ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Cannot Open Do ors That Are Locked () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsetup ĊĠĠĠĠĠĠĠ Ġval Ġtest Service Ġ= Ġcreate Test Service () ĊĠĠĠĠĠĠĠ Ġval Ġroom Ġ= Ġtest Service . getStart Room () ĊĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġdoor Ġ= Ġtest Service . create Door () ĊĠĠĠĠĠĠĠ Ġroom . north Door Ġ= Ġdoor ĊĠĠĠĠĠĠĠ Ġdoor . dis position Ġ= ĠDoor Disposition . LOCK ED ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġtest Service . run Action (" open Ġdoor ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ ĠassertThat ( response . message . to Action Creator ). isEqualTo (" it Ġis Ġlocked .") ĊĠĠĠĠĠĠĠ ĠassertThat ( response . status ). isEqualTo ( IO Status . ERROR ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Cannot Open Door That DoesNotExist () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsetup ĊĠĠĠĠĠĠĠ Ġval Ġtest Service Ġ= Ġcreate Test Service () ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġtest Service . run Action (" open Ġgr ate ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ ĠassertThat ( response . message . to Action Creator ). isEqualTo (" you Ġdon 't Ġsee Ġthat Ġanywhere .") ĊĠĠĠĠĠĠĠ ĠassertThat ( response . status ). isEqualTo ( IO Status . ERROR ) ĊĠĠĠ Ġ} Ċ } Ċ