Updating distribution
This commit is contained in:
109
spec/models/command_spec.rb
Normal file
109
spec/models/command_spec.rb
Normal file
@@ -0,0 +1,109 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
RSpec.describe Command do
|
||||
let(:command) { described_class.new(comment_body) }
|
||||
|
||||
describe "#command" do
|
||||
subject { command.command }
|
||||
|
||||
context "when no command is present" do
|
||||
let(:comment_body) do
|
||||
<<~COMMENT
|
||||
This is just a comment.
|
||||
COMMENT
|
||||
end
|
||||
|
||||
it { is_expected.to be_nil }
|
||||
end
|
||||
|
||||
context "when an unsupported comment is present" do
|
||||
let(:comment_body) do
|
||||
<<~COMMENT
|
||||
/do-something-unsupported
|
||||
COMMENT
|
||||
end
|
||||
|
||||
it { is_expected.to be_nil }
|
||||
end
|
||||
|
||||
described_class::VALID_COMMANDS.each do |c|
|
||||
context "when a supported command is present" do
|
||||
let(:comment_body) do
|
||||
<<~COMMENT
|
||||
/#{c}
|
||||
COMMENT
|
||||
end
|
||||
|
||||
it { is_expected.to eq(c) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#options" do
|
||||
subject { command.options }
|
||||
|
||||
context "when the command is not valid" do
|
||||
let(:comment_body) { "/do-something-unsupported --option-one value" }
|
||||
|
||||
it { is_expected.to be_nil }
|
||||
end
|
||||
|
||||
context "when no options are present" do
|
||||
let(:comment_body) { "/dry-run" }
|
||||
|
||||
it { is_expected.to be_blank }
|
||||
end
|
||||
|
||||
context "when options are present" do
|
||||
let(:comment_body) { "/dry-run --option-one value-one --option-two value-two" }
|
||||
|
||||
it { is_expected.to eq({ "option-one" => "value-one", "option-two" => "value-two" }) }
|
||||
end
|
||||
end
|
||||
|
||||
describe "#valid?" do
|
||||
subject { command.valid? }
|
||||
|
||||
context "when the command is supported" do
|
||||
let(:comment_body) { "/dry-run" }
|
||||
|
||||
it { is_expected.to be_truthy }
|
||||
end
|
||||
|
||||
context "when the command is not supported" do
|
||||
let(:comment_body) { "/run-something-else" }
|
||||
|
||||
it { is_expected.to be_falsey }
|
||||
end
|
||||
end
|
||||
|
||||
describe "#classify" do
|
||||
subject { command.classify }
|
||||
|
||||
[%w[audit Audit], %w[dry-run DryRun], %w[migrate Migrate]].each do |command, klass|
|
||||
context "when the command is #{command}" do
|
||||
let(:comment_body) { "/#{command}" }
|
||||
|
||||
it { is_expected.to eq(klass) }
|
||||
end
|
||||
end
|
||||
|
||||
context "when the command is invalid" do
|
||||
let(:comment_body) { "/do-something-unsupported" }
|
||||
|
||||
it { is_expected.to be_nil }
|
||||
end
|
||||
end
|
||||
|
||||
describe "to_output" do
|
||||
subject { command.to_output }
|
||||
|
||||
let(:comment_body) do
|
||||
<<~COMMENT
|
||||
/audit
|
||||
COMMENT
|
||||
end
|
||||
|
||||
it { expect { subject }.to output(/::set-output name=command::audit/).to_stdout }
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user