lib/runbox/scenario/type.ex

defmodule Runbox.Scenario.Type do
  @moduledoc """
  Defines supported scenario types.

  You can use this in Manifest instead of hard-coding the particular value.

  ```
  %Runbox.Scenario.Manifest{
    type: Runbox.Scenario.Type.stage(),
    ...
  }
  ```
  """

  @type t :: String.t()

  @doc "Type for GenStage-based scenario runtime."
  def stage, do: "StageBased"

  @doc """
  Simple scenario.

  See `Runbox.Scenario.Simple` for details about this scenario type.
  """
  def simple, do: "Simple"

  @doc "Returns all available types."
  def all_types, do: [stage(), simple()]
end