summaryrefslogtreecommitdiff
path: root/deps/rabbitmq_cli/test/core/auto_complete_test.exs
diff options
context:
space:
mode:
Diffstat (limited to 'deps/rabbitmq_cli/test/core/auto_complete_test.exs')
-rw-r--r--deps/rabbitmq_cli/test/core/auto_complete_test.exs85
1 files changed, 85 insertions, 0 deletions
diff --git a/deps/rabbitmq_cli/test/core/auto_complete_test.exs b/deps/rabbitmq_cli/test/core/auto_complete_test.exs
new file mode 100644
index 0000000000..d410ec6640
--- /dev/null
+++ b/deps/rabbitmq_cli/test/core/auto_complete_test.exs
@@ -0,0 +1,85 @@
+## This Source Code Form is subject to the terms of the Mozilla Public
+## License, v. 2.0. If a copy of the MPL was not distributed with this
+## file, You can obtain one at https://mozilla.org/MPL/2.0/.
+##
+## Copyright (c) 2007-2020 VMware, Inc. or its affiliates. All rights reserved.
+
+
+defmodule AutoCompleteTest do
+ use ExUnit.Case, async: false
+
+ @subject RabbitMQ.CLI.AutoComplete
+
+
+ test "Auto-completes a command" do
+ ["canis_aureus", "canis_latrans", "canis_lupus"] = @subject.complete("rabbitmqctl", ["canis"])
+ ["canis_aureus", "canis_latrans", "canis_lupus"] = @subject.complete("rabbitmqctl", ["canis_"])
+ ["canis_latrans", "canis_lupus"] = @subject.complete("rabbitmqctl", ["canis_l"])
+ ["canis_latrans"] = @subject.complete("rabbitmqctl", ["canis_la"])
+ ["canis_aureus"] = @subject.complete("rabbitmqctl", ["canis_a"])
+ ["canis_aureus"] = @subject.complete("rabbitmqctl", ["--node", "foo", "--quet", "canis_a"])
+ end
+
+ test "Auto-completes default options if command is not specified" do
+ ["--vhost"] = @subject.complete("rabbitmqctl", ["--vh"])
+ ## Prints script_name as script-name
+ ["--script-name"] = @subject.complete("rabbitmqctl", ["--script"])
+ ["--script-name"] = @subject.complete("rabbitmqctl", ["--node", "foo", "--script"])
+ end
+
+ test "Auto-completes the command options if full command is specified" do
+ ["--colour", "--dingo", "--dog"] = @subject.complete("rabbitmqctl", ["canis_lupus", "-"])
+ ["--colour", "--dingo", "--dog"] = @subject.complete("rabbitmqctl", ["canis_lupus", "--"])
+ ["--dingo", "--dog"] = @subject.complete("rabbitmqctl", ["canis_lupus", "--d"])
+ end
+
+ test "Auto-completes scoped command" do
+ ["enable"] = @subject.complete("rabbitmq-plugins", ["enab"])
+ scopes = Application.get_env(:rabbitmqctl, :scopes)
+ scopes_with_wolf = Keyword.put(scopes, :rabbitmq_wolf, :wolf)
+ Application.put_env(:rabbitmqctl, :scopes, scopes_with_wolf)
+ on_exit(fn() ->
+ Application.put_env(:rabbitmqctl, :scopes, scopes)
+ end)
+
+ ["canis_aureus", "canis_latrans", "canis_lupus"] = @subject.complete("rabbitmq_wolf", ["canis"])
+ end
+
+ test "Auto-completes scoped command with --script-name flag" do
+ ["enable"] = @subject.complete("rabbitmqctl", ["--script-name", "rabbitmq-plugins", "enab"])
+ end
+end
+
+defmodule RabbitMQ.CLI.Wolf.Commands.CanisLupusCommand do
+ @behaviour RabbitMQ.CLI.CommandBehaviour
+ use RabbitMQ.CLI.DefaultOutput
+ def usage(), do: ["canis_lupus"]
+ def validate(_,_), do: :ok
+ def merge_defaults(_,_), do: {[], %{}}
+ def banner(_,_), do: ""
+ def run(_,_), do: :ok
+ def switches(), do: [colour: :string, dingo: :boolean, dog: :boolean]
+ def scopes, do: [:ctl, :wolf]
+end
+
+defmodule RabbitMQ.CLI.Wolf.Commands.CanisLatransCommand do
+ @behaviour RabbitMQ.CLI.CommandBehaviour
+ use RabbitMQ.CLI.DefaultOutput
+ def usage(), do: ["canis_latrans"]
+ def validate(_,_), do: :ok
+ def merge_defaults(_,_), do: {[], %{}}
+ def banner(_,_), do: ""
+ def run(_,_), do: :ok
+ def scopes, do: [:ctl, :wolf]
+end
+
+defmodule RabbitMQ.CLI.Wolf.Commands.CanisAureusCommand do
+ @behaviour RabbitMQ.CLI.CommandBehaviour
+ use RabbitMQ.CLI.DefaultOutput
+ def usage(), do: ["canis_aureus"]
+ def validate(_,_), do: :ok
+ def merge_defaults(_,_), do: {[], %{}}
+ def banner(_,_), do: ""
+ def run(_,_), do: :ok
+ def scopes, do: [:ctl, :wolf]
+end