// ĠCopyright Ġ 2 0 2 0 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ // ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ċ package Ġsoftware . aws . tool k its . jetbrains . services . sqs . tool window Ċ Ċ import Ġcom . intellij . test Framework . Disposable Rule Ċ import Ġcom . intellij . test Framework . Project Rule Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . Mockito Ċ import Ġorg . mockito . kotlin . wh enever Ċ import Ġsoftware . amazon . aw ssdk . services . sqs . S qs Client Ċ import Ġsoftware . amazon . aw ssdk . services . sqs . model . SendMessage Request Ċ import Ġsoftware . amazon . aw ssdk . services . sqs . model . SendMessage Response Ċ import Ġsoftware . aws . tool k its . core . region . Aws Region Ċ import Ġsoftware . aws . tool k its . core . utils . Rule Utils Ċ import Ġsoftware . aws . tool k its . jetbrains . core . Mock Client Manager Rule Ċ import Ġsoftware . aws . tool k its . jetbrains . core . region . Mock Region Provider Rule Ċ import Ġsoftware . aws . tool k its . jetbrains . services . sqs . MAX _ LENGTH _ OF _ FIFO _ ID Ċ import Ġsoftware . aws . tool k its . jetbrains . services . sqs . Queue Ċ import Ġsoftware . aws . tool k its . jetbrains . utils . waitFor True Ċ import Ġsoftware . aws . tool k its . resources . message Ċ Ċ class ĠSend Message Pane Test Ġ{ ĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġproject Rule Ġ= ĠProject Rule () ĊĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġmock Client Manager Rule Ġ= ĠMock Client Manager Rule () ĊĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġdis posable Rule Ġ= ĠDis posable Rule () ĊĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġmock Client Manager Ġ= ĠMock Client Manager Rule () ĊĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġregion Provider Ġ= ĠMock Region Provider Rule () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġclient : ĠS qs Client ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġregion : ĠAws Region ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstandard Queue : ĠQueue ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfifo Queue : ĠQueue ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstandard Pane : ĠSend Message Pane ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfifo Pane : ĠSend Message Pane ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġclient Ġ= Ġmock Client Manager . create () ĊĠĠĠĠĠĠĠ Ġregion Ġ= Ġregion Provider . default Region () ĊĠĠĠĠĠĠĠ Ġstandard Queue Ġ= ĠQueue (" https :// sqs . us - east - 1 . amazonaws . com / 1 2 3 4 5 6 7 8 9 0 1 2 / standard ", Ġregion ) ĊĠĠĠĠĠĠĠ Ġfifo Queue Ġ= ĠQueue (" https :// sqs . us - east - 1 . amazonaws . com / 1 2 3 4 5 6 7 8 9 0 1 2 / fifo . fifo ", Ġregion ) ĊĠĠĠĠĠĠĠ Ġstandard Pane Ġ= ĠSend Message Pane ( project Rule . project , Ġclient , Ġstandard Queue , Ġdis posable Rule . dis posable ) ĊĠĠĠĠĠĠĠ Ġfifo Pane Ġ= ĠSend Message Pane ( project Rule . project , Ġclient , Ġfifo Queue , Ġdis posable Rule . dis posable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` No Ġinput Ġfails Ġto Ġsend Ġfor Ġstandard `() Ġ{ ĊĠĠĠĠĠĠĠ Ġstandard Pane . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Text . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( run Blocking Ġ{ Ġstandard Pane . validate Fields () Ġ}). isFalse () ĊĠĠĠĠĠĠĠ ĠassertThat ( standard Pane . fifo Fields . component . isVisible ). isFalse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` No Ġinput Ġfails Ġto Ġsend Ġfor Ġfifo `() Ġ{ ĊĠĠĠĠĠĠĠ Ġfifo Pane . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Text . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfifo Fields . ded up lication Id . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfifo Fields . groupId . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( fifo Pane . validate Fields ()). isFalse () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` No Ġde dup lication ĠID Ġfails Ġto Ġsend Ġfor Ġfifo `() Ġ{ ĊĠĠĠĠĠĠĠ Ġfifo Pane . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Text . text Ġ= ĠMESSAGE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfifo Fields . ded up lication Id . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfifo Fields . groupId . text Ġ= ĠGROUP _ ID ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( run Blocking Ġ{ Ġfifo Pane . validate Fields () Ġ}). isFalse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` No Ġgroup ĠID Ġfails Ġto Ġsend Ġfor Ġfifo `() Ġ{ ĊĠĠĠĠĠĠĠ Ġfifo Pane . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Text . text Ġ= ĠMESSAGE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfifo Fields . ded up lication Id . text Ġ= ĠD ED UP LIC ATION _ ID ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfifo Fields . groupId . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ Ġfifo Pane . sendMessage () Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( run Blocking Ġ{ Ġfifo Pane . validate Fields () Ġ}). isFalse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ID Ġtoo Ġlong Ġfails `() Ġ{ ĊĠĠĠĠĠĠĠ Ġfifo Pane . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Text . text Ġ= ĠMESSAGE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfifo Fields . ded up lication Id . text Ġ= ĠRule Utils . random Name ( length Ġ= ĠMAX _ LENGTH _ OF _ FIFO _ ID Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfifo Fields . groupId . text Ġ= ĠGROUP _ ID ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ Ġfifo Pane . sendMessage () Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( run Blocking Ġ{ Ġfifo Pane . validate Fields () Ġ}). isFalse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Error Ġsending Ġmessage `() Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( client . sendMessage ( Mockito . any < SendMessage Request >() )). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Network ĠError ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstandard Pane . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Text . text Ġ= ĠMESSAGE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstandard Pane . sendMessage () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwaitFor True Ġ{ Ġstandard Pane . message Sent Label . isVisible Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( standard Pane . message Sent Label . text ). isEqualTo ( message (" sqs . failed _ to _ send _ message ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Message Ġsent Ġfor Ġstandard `() Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( client . sendMessage ( Mockito . any < SendMessage Request >() )). thenReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSend Message Response . builder (). message Id ( MESSAGE _ ID ). build () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġstandard Pane . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Text . text Ġ= ĠMESSAGE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstandard Pane . sendMessage () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwaitFor True Ġ{ Ġstandard Pane . message Sent Label . isVisible Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( standard Pane . message Sent Label . text ). isEqualTo ( message (" sqs . send . message . success ", ĠMESSAGE _ ID )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Message Ġsent Ġfor Ġfifo `() Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( client . sendMessage ( Mockito . any < SendMessage Request >() )). thenReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSend Message Response . builder (). message Id ( MESSAGE _ ID ). build () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfifo Pane . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Text . text Ġ= ĠMESSAGE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfifo Fields . ded up lication Id . text Ġ= ĠD ED UP LIC ATION _ ID ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfifo Fields . groupId . text Ġ= ĠGROUP _ ID ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfifo Pane . sendMessage () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwaitFor True Ġ{ Ġfifo Pane . message Sent Label . isVisible Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( fifo Pane . message Sent Label . text ). isEqualTo ( message (" sqs . send . message . success ", ĠMESSAGE _ ID )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMESSAGE _ ID Ġ= Ġ" 1 2 3 " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMESSAGE Ġ= Ġ" Message Ġbody " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠD ED UP LIC ATION _ ID Ġ= Ġ" Ded up lication ĠID " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠGROUP _ ID Ġ= Ġ" Group ĠId " ĊĠĠĠ Ġ} Ċ } Ċ