Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions app/lib/linear_cli/cli.ex
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ defmodule LinearCli.CLI do
"l" => "list",
"ls" => "list",
"s" => "status",
"st" => "status",
"stat" => "status",
"u" => "update",
"pull-request" => "pr"
},
Expand Down
66 changes: 66 additions & 0 deletions app/test/linear_cli/cli/issue_commands_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -880,6 +880,72 @@ defmodule LinearCli.CLI.IssueCommandsTest do

assert_received :updated
end

test "alias 'st' routes to issue status" do
test_pid = self()

Req.Test.stub(LinearCli.Api, fn conn ->
{:ok, body, conn} = Plug.Conn.read_body(conn)
%{"query" => query} = Jason.decode!(body)

cond do
String.contains?(query, "issue(id: $id)") ->
Req.Test.json(conn, %{"data" => %{"issue" => issue_map()}})

String.contains?(query, "states {") ->
Req.Test.json(conn, states_response())

String.contains?(query, "issueUpdate") ->
send(test_pid, :updated)

Req.Test.json(conn, %{
"data" => %{"issueUpdate" => %{"issue" => issue_with_state("s3", "Done")}}
})

true ->
raise "no stub matched query: #{query}"
end
end)

capture_io(fn ->
assert :ok = LinearCli.CLI.main(["issue", "st", "--status", "Done", "CRY-1"])
end)

assert_received :updated
end

test "alias 'stat' routes to issue status" do
test_pid = self()

Req.Test.stub(LinearCli.Api, fn conn ->
{:ok, body, conn} = Plug.Conn.read_body(conn)
%{"query" => query} = Jason.decode!(body)

cond do
String.contains?(query, "issue(id: $id)") ->
Req.Test.json(conn, %{"data" => %{"issue" => issue_map()}})

String.contains?(query, "states {") ->
Req.Test.json(conn, states_response())

String.contains?(query, "issueUpdate") ->
send(test_pid, :updated)

Req.Test.json(conn, %{
"data" => %{"issueUpdate" => %{"issue" => issue_with_state("s3", "Done")}}
})

true ->
raise "no stub matched query: #{query}"
end
end)

capture_io(fn ->
assert :ok = LinearCli.CLI.main(["issue", "stat", "--status", "Done", "CRY-1"])
end)

assert_received :updated
end
end

describe "issue update (Ruby: commands/issue/update.rb)" do
Expand Down
6 changes: 6 additions & 0 deletions app/test/linear_cli/cli_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,12 @@ defmodule LinearCli.CLITest do
assert LinearCli.CLI.normalize_subcommand_aliases(["i", "pull-request", "CRY-1"]) ==
["issue", "pr", "CRY-1"]

assert LinearCli.CLI.normalize_subcommand_aliases(["i", "st", "CRY-1"]) ==
["issue", "status", "CRY-1"]

assert LinearCli.CLI.normalize_subcommand_aliases(["i", "stat", "CRY-1"]) ==
["issue", "status", "CRY-1"]

# `take` has no alias in Ruby either - unaliased subcommands pass through.
assert LinearCli.CLI.normalize_subcommand_aliases(["issue", "take", "CRY-1"]) ==
["issue", "take", "CRY-1"]
Expand Down