diff options
Diffstat (limited to 'deps/rabbitmq_cli/test/core/auto_complete_test.exs')
-rw-r--r-- | deps/rabbitmq_cli/test/core/auto_complete_test.exs | 85 |
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 |