package Ġru . registration . bot . engine . commands . flow Ċ Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . any Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . argument Captor Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . do Return Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . times Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Assertions . assertTrue Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . mockito . Answers . RET URNS _ DE EP _ ST UB S Ċ import Ġorg . telegram . telegram bots . meta . api . methods . send . SendMessage Ċ import Ġorg . telegram . telegram bots . meta . api . objects . Update Ċ import Ġorg . telegram . telegram bots . meta . bots . Abs Sender Ċ import Ġru . registration . bot . Message Service Ċ import Ġru . registration . bot . engine . chat Id Ċ import Ġru . registration . bot . engine . commands . Request Ċ import Ġru . registration . bot . engine . commands . flow . State Type . EXPORT ED Ċ import Ġru . registration . bot . engine . commands . flow . State Type . REQUEST _ APPRO VED Ċ import Ġru . registration . bot . engine . commands . flow . states . Export Request State Ċ import Ġru . registration . bot . engine . user Ċ import Ġru . registration . bot . engine . userId Ċ import Ġru . registration . bot . google . Google Sheet s Service Ċ import Ġru . registration . bot . repositories . Bot Repository Ċ import Ġru . registration . bot . repositories . Exec Specification Ċ import Ġru . registration . bot . repositories . spec ifications . Set User Status Ċ import Ġru . registration . bot . repositories . spec ifications . Set User Status By Req Id Ċ import Ġru . registration . bot . repositories . spec ifications . Update Request Field Ċ Ċ class ĠExport Request State Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` export Ġrequest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġarrange ĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġ 2 1 3 ĊĠĠĠĠĠĠĠ Ġval Ġchat Id Ġ= Ġ 1 L ĊĠĠĠĠĠĠĠ Ġval ĠuserName Ġ= Ġ" some _ tg _ login " ĊĠĠĠĠĠĠĠ Ġval Ġabs Sender : ĠAbs Sender Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 , Ġnull , Ġnull , Ġnull , Ġnull , Ġnull , Ġnull , Ġnull , Ġnull , Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġrepo : ĠBot Repository Ġ= Ġmock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġquery < Request >( any ()) Ġ} Ġdo Return ĠlistOf ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġgoogle Sheet s : ĠGoogle Sheet s Service Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġval Ġmessages : ĠMessage Service Ġ= Ġmock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ ĠgetMessage ( any ()) Ġ} Ġdo Return Ġ" some - message " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġexport Request State Ġ= ĠExport Request State ( messages , Ġrepo , Ġgoogle Sheet s ) ĊĠĠĠĠĠĠĠ Ġval Ġupdate : ĠUpdate Ġ= Ġmock ( default Answer Ġ= ĠRET URNS _ DE EP _ ST UB S ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġthis . userId Ġ} Ġdo Return ĠuserId ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġthis . chat Id Ġ} Ġdo Return Ġchat Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġthis . user ?. userName Ġ} Ġdo Return ĠuserName ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġact ĊĠĠĠĠĠĠĠ Ġexport Request State . handle ( update , Ġabs Sender ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġassert ĊĊĠĠĠĠĠĠĠ Ġval Ġrepo Captor Ġ= Ġargument Captor < Exec Specification >() ĊĠĠĠĠĠĠĠ Ġverify ( repo , Ġtimes ( 3 )). execute ( repo Captor . capture ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate Request Field ( update . userId , ĠPair (" telegram _ login ", Ġupdate . user ?. userName )). sql Parameter Source , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( repo Captor . first Value Ġas ĠUpdate Request Field ). sql Parameter Source ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSet User Status ( userId , ĠREQUEST _ APPRO VED ). sql Parameter Source , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( repo Captor . second Value Ġas ĠSet User Status ). sql Parameter Source ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSet User Status By Req Id ( 1 , ĠEX PORT ED ). sql Parameter Source , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( repo Captor . third Value Ġas ĠSet User Status By Req Id ). sql Parameter Source ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmessage Captor Ġ= Ġargument Captor < SendMessage >() ĊĠĠĠĠĠĠĠ Ġverify ( abs Sender , Ġtimes ( 2 )). execute ( message Captor . capture ()) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġmessage Captor . first Value . chat Id . toInt ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( message Captor . first Value . text . startsWith (" some - message ")) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġmessage Captor . second Value . chat Id . toInt ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( message Captor . second Value . text . startsWith (" some - message ")) ĊĊĠĠĠĠĠĠĠ Ġverify ( google Sheet s ). send ( any ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` ask ing Ġfor Ġexport `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġarrange ĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġ 2 1 3 ĊĠĠĠĠĠĠĠ Ġval Ġchat Id Ġ= Ġ 1 L ĊĠĠĠĠĠĠĠ Ġval Ġabs Sender : ĠAbs Sender Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġval Ġrequest Repo : ĠBot Repository Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġval Ġgoogle Sheet s : ĠGoogle Sheet s Service Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġval Ġmessages : ĠMessage Service Ġ= Ġmock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ ĠgetMessage ( any ()) Ġ} Ġdo Return Ġ" some - message " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġexport Request State Ġ= ĠExport Request State ( messages , Ġrequest Repo , Ġgoogle Sheet s ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġact ĊĠĠĠĠĠĠĠ Ġexport Request State . ask ( userId , Ġchat Id , Ġabs Sender ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġassert ĊĠĠĠĠĠĠĠ Ġval Ġmessage Captor Ġ= Ġargument Captor < SendMessage >() ĊĠĠĠĠĠĠĠ Ġverify ( abs Sender ). execute ( message Captor . capture ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( chat Id , Ġmessage Captor . first Value . chat Id . to Long ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( message Captor . first Value . text , Ġ" some - message ") ĊĠĠĠ Ġ} Ċ } Ċ