/* Ċ * Copyright Ġ 2 0 2 1 ĠK yle ĠD ah lin Ċ * Ċ * Licensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ * you Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ * You Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ * Ċ * ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ * Ċ * Unless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ * distributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ * WITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ * See Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ * limitations Ġunder Ġthe ĠLicense . Ċ */ Ċ package Ġcom . k yle da h lin . test utils Ċ Ċ import Ġcom . k yle da h lin . rule bot . Chat Input Interaction Context Ċ import Ġcom . k yle da h lin . rule bot . Guild Create Context Ċ import Ġcom . k yle da h lin . rule bot . bot . Rule Ċ import Ġdiscord 4 j . common . util . Snow flake Ċ import Ġdiscord 4 j . discord json . json . Application Command Request Ċ import Ġdiscord 4 k . builders . Interaction Application Command Callback Spec Kt Ċ import Ġdiscord 4 k . builders . Interaction Reply Edit Spec Kt Ċ import Ġdiscord 4 k . builders . Message Create Spec Kt Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . slot Ċ Ċ suspend Ġfun Ġtest Guild Creation ( rule : ĠRule ): ĠList < Application Command Request > Ġ{ ĊĠĠĠ Ġval Ġslot Ġ= Ġslot < Application Command Request >() ĊĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Application Command Request >() ĊĠĠĠ Ġval Ġcontext : ĠGuild Create Context Ġ= Ġmock k Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġregister Application Command ( request Ġ= Ġcapture ( slot )) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( slot . captured ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġrule . on Guild Create ( context ) ĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ class ĠTest Chat Input Interaction Context Ġ: ĊĠĠĠ ĠChat Input Interaction Context Ġ{ ĊĠĠĠ Ġval Ġreplies Ġ= Ġmutable ListOf < Interaction Application Command Callback Spec Kt >() ĊĠĠĠ Ġval Ġedits Ġ= Ġmutable ListOf < Interaction Reply Edit Spec Kt >() ĊĠĠĠ Ġval Ġoptions Ġ= Ġmutable Map Of < String , ĠString >() ĊĠĠĠ Ġvar Ġuser Message Spec : ĠMessage Create Spec Kt ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġwas Deferred : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġvar Ġwas Deferred E ph mer er ally : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" name " ĊĊĠĠĠ Ġoverride Ġval Ġchannel Id : ĠSnow flake ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠSnow flake . of (" 1 ") ĊĊĠĠĠ Ġoverride Ġval Ġguild Id : ĠSnow flake ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠSnow flake . of (" 1 ") ĊĊĠĠĠ Ġoverride Ġval ĠuserId : ĠSnow flake ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠSnow flake . of (" 1 ") ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Option ( name : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoptions [" name "] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġreply ( spec : ĠInteraction Application Command Callback Spec Kt . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreplies . add ( Interaction Application Command Callback Spec Kt (). apply ( spec )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdefer Reply ( with Ep hemeral : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwas Deferred Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġwas Deferred E ph mer er ally Ġ= Ġwith Ep hemeral ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġedit Reply ( spec : ĠInteraction Reply Edit Spec Kt . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġedits . add ( Interaction Reply Edit Spec Kt (). apply ( spec )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠsendMessage To User ( spec : ĠMessage Create Spec Kt . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Message Spec Ġ= ĠMessage Create Spec Kt (). apply ( spec ) ĊĠĠĠ Ġ} Ċ } Ċ