{-# options_haddock prune, hide #-}

-- |An example for the docs.
module Ribosome.Test.Examples.Example1 where

import Polysemy.Test

import Ribosome
import Ribosome.Api
import Ribosome.Test

store ::
  Member (Rpc !! RpcError) r =>
  Args ->
  Handler r ()
store :: forall (r :: EffectRow).
Member (Resumable RpcError Rpc) r =>
Args -> Handler r ()
store (Args Text
msg) =
  Sem (Rpc : Stop Report : r) () -> Sem (Stop Report : r) ()
forall (r :: EffectRow) a.
Member (Resumable RpcError Rpc) r =>
Sem (Rpc : r) a -> Sem r ()
ignoreRpcError do
    Text -> Text -> Sem (Rpc : Stop Report : r) ()
forall p_1 (r :: EffectRow).
(Member Rpc r, MsgpackEncode p_1) =>
Text -> p_1 -> Sem r ()
nvimSetVar Text
"message" Text
msg

test_direct :: UnitTest
test_direct :: UnitTest
test_direct =
  HasCallStack => Sem EmbedStack () -> UnitTest
Sem EmbedStack () -> UnitTest
testEmbed_ do
    Args
-> Handler
     '[Stop RpcError, Scratch, Settings, Rpc,
       Resumable RpcError Scratch, Resumable SettingError Settings,
       Resumable Report VariableWatcher, Resumable Report Handlers, Log,
       DataLog LogReport, Resumable RpcError Rpc,
       Resumable RpcError (Responses RequestId Response),
       Events (OutChan Event) Event,
       PScoped () (EventChan Event) (Consume Event), Reports,
       Events (OutChan RpcMessage) RpcMessage,
       PScoped () (EventChan RpcMessage) (Consume RpcMessage),
       Process RpcMessage (Either Text RpcMessage), UserError,
       Reader PluginName, Log, Tagged "stderr" Log, Tagged "file" Log,
       Reader LogConfig, Reader HostConfig, Time Time Date, Log,
       Mask Restoration, Mask Restoration, GatesIO, Race, Async,
       Error BootError, Test, Fail, Error TestError, Hedgehog IO,
       Error Failure, Embed IO, Resource, Final IO]
     ()
forall (r :: EffectRow).
Member (Resumable RpcError Rpc) r =>
Args -> Handler r ()
store Args
"test directly"
    Text
-> Text
-> Handler
     '[Stop RpcError, Scratch, Settings, Rpc,
       Resumable RpcError Scratch, Resumable SettingError Settings,
       Resumable Report VariableWatcher, Resumable Report Handlers, Log,
       DataLog LogReport, Resumable RpcError Rpc,
       Resumable RpcError (Responses RequestId Response),
       Events (OutChan Event) Event,
       PScoped () (EventChan Event) (Consume Event), Reports,
       Events (OutChan RpcMessage) RpcMessage,
       PScoped () (EventChan RpcMessage) (Consume RpcMessage),
       Process RpcMessage (Either Text RpcMessage), UserError,
       Reader PluginName, Log, Tagged "stderr" Log, Tagged "file" Log,
       Reader LogConfig, Reader HostConfig, Time Time Date, Log,
       Mask Restoration, Mask Restoration, GatesIO, Race, Async,
       Error BootError, Test, Fail, Error TestError, Hedgehog IO,
       Error Failure, Embed IO, Resource, Final IO]
     ()
forall a (m :: * -> *) (r :: EffectRow).
(Monad m, Eq a, Show a, HasCallStack, Member (Hedgehog m) r) =>
a -> a -> Sem r ()
assertEq Text
"test directly" (Text
 -> Handler
      '[Stop RpcError, Scratch, Settings, Rpc,
        Resumable RpcError Scratch, Resumable SettingError Settings,
        Resumable Report VariableWatcher, Resumable Report Handlers, Log,
        DataLog LogReport, Resumable RpcError Rpc,
        Resumable RpcError (Responses RequestId Response),
        Events (OutChan Event) Event,
        PScoped () (EventChan Event) (Consume Event), Reports,
        Events (OutChan RpcMessage) RpcMessage,
        PScoped () (EventChan RpcMessage) (Consume RpcMessage),
        Process RpcMessage (Either Text RpcMessage), UserError,
        Reader PluginName, Log, Tagged "stderr" Log, Tagged "file" Log,
        Reader LogConfig, Reader HostConfig, Time Time Date, Log,
        Mask Restoration, Mask Restoration, GatesIO, Race, Async,
        Error BootError, Test, Fail, Error TestError, Hedgehog IO,
        Error Failure, Embed IO, Resource, Final IO]
      ())
-> Sem
     '[Stop Report, Stop RpcError, Scratch, Settings, Rpc,
       Resumable RpcError Scratch, Resumable SettingError Settings,
       Resumable Report VariableWatcher, Resumable Report Handlers, Log,
       DataLog LogReport, Resumable RpcError Rpc,
       Resumable RpcError (Responses RequestId Response),
       Events (OutChan Event) Event,
       PScoped () (EventChan Event) (Consume Event), Reports,
       Events (OutChan RpcMessage) RpcMessage,
       PScoped () (EventChan RpcMessage) (Consume RpcMessage),
       Process RpcMessage (Either Text RpcMessage), UserError,
       Reader PluginName, Log, Tagged "stderr" Log, Tagged "file" Log,
       Reader LogConfig, Reader HostConfig, Time Time Date, Log,
       Mask Restoration, Mask Restoration, GatesIO, Race, Async,
       Error BootError, Test, Fail, Error TestError, Hedgehog IO,
       Error Failure, Embed IO, Resource, Final IO]
     Text
-> Handler
     '[Stop RpcError, Scratch, Settings, Rpc,
       Resumable RpcError Scratch, Resumable SettingError Settings,
       Resumable Report VariableWatcher, Resumable Report Handlers, Log,
       DataLog LogReport, Resumable RpcError Rpc,
       Resumable RpcError (Responses RequestId Response),
       Events (OutChan Event) Event,
       PScoped () (EventChan Event) (Consume Event), Reports,
       Events (OutChan RpcMessage) RpcMessage,
       PScoped () (EventChan RpcMessage) (Consume RpcMessage),
       Process RpcMessage (Either Text RpcMessage), UserError,
       Reader PluginName, Log, Tagged "stderr" Log, Tagged "file" Log,
       Reader LogConfig, Reader HostConfig, Time Time Date, Log,
       Mask Restoration, Mask Restoration, GatesIO, Race, Async,
       Error BootError, Test, Fail, Error TestError, Hedgehog IO,
       Error Failure, Embed IO, Resource, Final IO]
     ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< forall a (r :: EffectRow).
(Member Rpc r, MsgpackDecode a) =>
Text -> Sem r a
nvimGetVar @Text Text
"message"

test_rpc :: UnitTest
test_rpc :: UnitTest
test_rpc =
  HasCallStack =>
[RpcHandler EmbedHandlerStack] -> Sem EmbedStack () -> UnitTest
[RpcHandler EmbedHandlerStack] -> Sem EmbedStack () -> UnitTest
testPlugin_ [RpcName
-> Execution
-> (Args
    -> Handler
         '[Resumable RpcError Scratch, Resumable SettingError Settings,
           Resumable Report VariableWatcher, Resumable Report Handlers, Log,
           DataLog LogReport, Resumable RpcError Rpc,
           Resumable RpcError (Responses RequestId Response),
           Events (OutChan Event) Event,
           PScoped () (EventChan Event) (Consume Event), Reports,
           Events (OutChan RpcMessage) RpcMessage,
           PScoped () (EventChan RpcMessage) (Consume RpcMessage),
           Process RpcMessage (Either Text RpcMessage), UserError,
           Reader PluginName, Log, Tagged "stderr" Log, Tagged "file" Log,
           Reader LogConfig, Reader HostConfig, Time Time Date, Log,
           Mask Restoration, Mask Restoration, GatesIO, Race, Async,
           Error BootError, Test, Fail, Error TestError, Hedgehog IO,
           Error Failure, Embed IO, Resource, Final IO]
         ())
-> RpcHandler
     '[Resumable RpcError Scratch, Resumable SettingError Settings,
       Resumable Report VariableWatcher, Resumable Report Handlers, Log,
       DataLog LogReport, Resumable RpcError Rpc,
       Resumable RpcError (Responses RequestId Response),
       Events (OutChan Event) Event,
       PScoped () (EventChan Event) (Consume Event), Reports,
       Events (OutChan RpcMessage) RpcMessage,
       PScoped () (EventChan RpcMessage) (Consume RpcMessage),
       Process RpcMessage (Either Text RpcMessage), UserError,
       Reader PluginName, Log, Tagged "stderr" Log, Tagged "file" Log,
       Reader LogConfig, Reader HostConfig, Time Time Date, Log,
       Mask Restoration, Mask Restoration, GatesIO, Race, Async,
       Error BootError, Test, Fail, Error TestError, Hedgehog IO,
       Error Failure, Embed IO, Resource, Final IO]
forall (r :: EffectRow) h.
(HandlerCodec h r, CommandHandler OptionStateZero h) =>
RpcName -> Execution -> h -> RpcHandler r
rpcCommand RpcName
"Store" Execution
Sync Args
-> Handler
     '[Resumable RpcError Scratch, Resumable SettingError Settings,
       Resumable Report VariableWatcher, Resumable Report Handlers, Log,
       DataLog LogReport, Resumable RpcError Rpc,
       Resumable RpcError (Responses RequestId Response),
       Events (OutChan Event) Event,
       PScoped () (EventChan Event) (Consume Event), Reports,
       Events (OutChan RpcMessage) RpcMessage,
       PScoped () (EventChan RpcMessage) (Consume RpcMessage),
       Process RpcMessage (Either Text RpcMessage), UserError,
       Reader PluginName, Log, Tagged "stderr" Log, Tagged "file" Log,
       Reader LogConfig, Reader HostConfig, Time Time Date, Log,
       Mask Restoration, Mask Restoration, GatesIO, Race, Async,
       Error BootError, Test, Fail, Error TestError, Hedgehog IO,
       Error Failure, Embed IO, Resource, Final IO]
     ()
forall (r :: EffectRow).
Member (Resumable RpcError Rpc) r =>
Args -> Handler r ()
store] do
    Text
-> Handler
     '[Stop RpcError, Scratch, Settings, Rpc,
       Resumable RpcError Scratch, Resumable SettingError Settings,
       Resumable Report VariableWatcher, Resumable Report Handlers, Log,
       DataLog LogReport, Resumable RpcError Rpc,
       Resumable RpcError (Responses RequestId Response),
       Events (OutChan Event) Event,
       PScoped () (EventChan Event) (Consume Event), Reports,
       Events (OutChan RpcMessage) RpcMessage,
       PScoped () (EventChan RpcMessage) (Consume RpcMessage),
       Process RpcMessage (Either Text RpcMessage), UserError,
       Reader PluginName, Log, Tagged "stderr" Log, Tagged "file" Log,
       Reader LogConfig, Reader HostConfig, Time Time Date, Log,
       Mask Restoration, Mask Restoration, GatesIO, Race, Async,
       Error BootError, Test, Fail, Error TestError, Hedgehog IO,
       Error Failure, Embed IO, Resource, Final IO]
     ()
forall (r :: EffectRow). Member Rpc r => Text -> Sem r ()
nvimCommand Text
"Store test RPC"
    Text
-> Text
-> Handler
     '[Stop RpcError, Scratch, Settings, Rpc,
       Resumable RpcError Scratch, Resumable SettingError Settings,
       Resumable Report VariableWatcher, Resumable Report Handlers, Log,
       DataLog LogReport, Resumable RpcError Rpc,
       Resumable RpcError (Responses RequestId Response),
       Events (OutChan Event) Event,
       PScoped () (EventChan Event) (Consume Event), Reports,
       Events (OutChan RpcMessage) RpcMessage,
       PScoped () (EventChan RpcMessage) (Consume RpcMessage),
       Process RpcMessage (Either Text RpcMessage), UserError,
       Reader PluginName, Log, Tagged "stderr" Log, Tagged "file" Log,
       Reader LogConfig, Reader HostConfig, Time Time Date, Log,
       Mask Restoration, Mask Restoration, GatesIO, Race, Async,
       Error BootError, Test, Fail, Error TestError, Hedgehog IO,
       Error Failure, Embed IO, Resource, Final IO]
     ()
forall a (m :: * -> *) (r :: EffectRow).
(Monad m, Eq a, Show a, HasCallStack, Member (Hedgehog m) r) =>
a -> a -> Sem r ()
assertEq Text
"test RPC" (Text
 -> Handler
      '[Stop RpcError, Scratch, Settings, Rpc,
        Resumable RpcError Scratch, Resumable SettingError Settings,
        Resumable Report VariableWatcher, Resumable Report Handlers, Log,
        DataLog LogReport, Resumable RpcError Rpc,
        Resumable RpcError (Responses RequestId Response),
        Events (OutChan Event) Event,
        PScoped () (EventChan Event) (Consume Event), Reports,
        Events (OutChan RpcMessage) RpcMessage,
        PScoped () (EventChan RpcMessage) (Consume RpcMessage),
        Process RpcMessage (Either Text RpcMessage), UserError,
        Reader PluginName, Log, Tagged "stderr" Log, Tagged "file" Log,
        Reader LogConfig, Reader HostConfig, Time Time Date, Log,
        Mask Restoration, Mask Restoration, GatesIO, Race, Async,
        Error BootError, Test, Fail, Error TestError, Hedgehog IO,
        Error Failure, Embed IO, Resource, Final IO]
      ())
-> Sem
     '[Stop Report, Stop RpcError, Scratch, Settings, Rpc,
       Resumable RpcError Scratch, Resumable SettingError Settings,
       Resumable Report VariableWatcher, Resumable Report Handlers, Log,
       DataLog LogReport, Resumable RpcError Rpc,
       Resumable RpcError (Responses RequestId Response),
       Events (OutChan Event) Event,
       PScoped () (EventChan Event) (Consume Event), Reports,
       Events (OutChan RpcMessage) RpcMessage,
       PScoped () (EventChan RpcMessage) (Consume RpcMessage),
       Process RpcMessage (Either Text RpcMessage), UserError,
       Reader PluginName, Log, Tagged "stderr" Log, Tagged "file" Log,
       Reader LogConfig, Reader HostConfig, Time Time Date, Log,
       Mask Restoration, Mask Restoration, GatesIO, Race, Async,
       Error BootError, Test, Fail, Error TestError, Hedgehog IO,
       Error Failure, Embed IO, Resource, Final IO]
     Text
-> Handler
     '[Stop RpcError, Scratch, Settings, Rpc,
       Resumable RpcError Scratch, Resumable SettingError Settings,
       Resumable Report VariableWatcher, Resumable Report Handlers, Log,
       DataLog LogReport, Resumable RpcError Rpc,
       Resumable RpcError (Responses RequestId Response),
       Events (OutChan Event) Event,
       PScoped () (EventChan Event) (Consume Event), Reports,
       Events (OutChan RpcMessage) RpcMessage,
       PScoped () (EventChan RpcMessage) (Consume RpcMessage),
       Process RpcMessage (Either Text RpcMessage), UserError,
       Reader PluginName, Log, Tagged "stderr" Log, Tagged "file" Log,
       Reader LogConfig, Reader HostConfig, Time Time Date, Log,
       Mask Restoration, Mask Restoration, GatesIO, Race, Async,
       Error BootError, Test, Fail, Error TestError, Hedgehog IO,
       Error Failure, Embed IO, Resource, Final IO]
     ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< forall a (r :: EffectRow).
(Member Rpc r, MsgpackDecode a) =>
Text -> Sem r a
nvimGetVar @Text Text
"message"