summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/lib/gitlab/slash_commands/command_definition_spec.rb64
-rw-r--r--spec/lib/gitlab/slash_commands/dsl_spec.rb13
2 files changed, 48 insertions, 29 deletions
diff --git a/spec/lib/gitlab/slash_commands/command_definition_spec.rb b/spec/lib/gitlab/slash_commands/command_definition_spec.rb
index 2a75fab24b0..c9c2f314e57 100644
--- a/spec/lib/gitlab/slash_commands/command_definition_spec.rb
+++ b/spec/lib/gitlab/slash_commands/command_definition_spec.rb
@@ -24,7 +24,7 @@ describe Gitlab::SlashCommands::CommandDefinition do
describe "#noop?" do
context "when the command has an action block" do
before do
- subject.action_block = -> { }
+ subject.action_block = proc { }
end
it "returns false" do
@@ -44,7 +44,7 @@ describe Gitlab::SlashCommands::CommandDefinition do
context "when the command has a condition block" do
before do
- subject.condition_block = -> { go }
+ subject.condition_block = proc { go }
end
context "when the condition block returns true" do
@@ -78,7 +78,7 @@ describe Gitlab::SlashCommands::CommandDefinition do
it "doesn't execute the command" do
expect(context).not_to receive(:instance_exec)
- subject.execute(context, {})
+ subject.execute(context, {}, nil)
expect(context.run).to be false
end
@@ -86,52 +86,82 @@ describe Gitlab::SlashCommands::CommandDefinition do
context "when the command is not a noop" do
before do
- subject.action_block = -> { self.run = true }
+ subject.action_block = proc { self.run = true }
end
context "when the command is not available" do
before do
- subject.condition_block = -> { false }
+ subject.condition_block = proc { false }
end
it "doesn't execute the command" do
- subject.execute(context, {})
+ subject.execute(context, {}, nil)
expect(context.run).to be false
end
end
context "when the command is available" do
- context "when the command has an exact number of arguments" do
+ context "when the commnd has no arguments" do
before do
- subject.action_block = ->(arg) { self.run = arg }
+ subject.action_block = proc { self.run = true }
end
- context "when the command is provided a wrong number of arguments" do
- it "doesn't execute the command" do
- subject.execute(context, {}, true, true)
+ context "when the command is provided an argument" do
+ it "executes the command" do
+ subject.execute(context, {}, true)
- expect(context.run).to be false
+ expect(context.run).to be true
end
end
- context "when the command is provided the right number of arguments" do
+ context "when the command is not provided an argument" do
+ it "executes the command" do
+ subject.execute(context, {}, nil)
+
+ expect(context.run).to be true
+ end
+ end
+ end
+
+ context "when the command has 1 required argument" do
+ before do
+ subject.action_block = ->(arg) { self.run = arg }
+ end
+
+ context "when the command is provided an argument" do
it "executes the command" do
subject.execute(context, {}, true)
expect(context.run).to be true
end
end
+
+ context "when the command is not provided an argument" do
+ it "doesn't execute the command" do
+ subject.execute(context, {}, nil)
+
+ expect(context.run).to be false
+ end
+ end
end
- context "when the command has a variable number of arguments" do
+ context "when the command has 1 optional argument" do
before do
- subject.action_block = ->(*args) { self.run = args.first }
+ subject.action_block = proc { |arg = nil| self.run = arg || true }
+ end
+
+ context "when the command is provided an argument" do
+ it "executes the command" do
+ subject.execute(context, {}, true)
+
+ expect(context.run).to be true
+ end
end
- context "when the command is provided any number of arguments" do
+ context "when the command is not provided an argument" do
it "executes the command" do
- subject.execute(context, {}, true, true)
+ subject.execute(context, {}, nil)
expect(context.run).to be true
end
diff --git a/spec/lib/gitlab/slash_commands/dsl_spec.rb b/spec/lib/gitlab/slash_commands/dsl_spec.rb
index 9ec00c25787..26217a0e3b2 100644
--- a/spec/lib/gitlab/slash_commands/dsl_spec.rb
+++ b/spec/lib/gitlab/slash_commands/dsl_spec.rb
@@ -31,16 +31,12 @@ describe Gitlab::SlashCommands::Dsl do
command :cond_action do |arg|
arg
end
-
- command :wildcard do |*args|
- args
- end
end
end
describe '.command_definitions' do
it 'returns an array with commands definitions' do
- no_args_def, one_arg_def, two_args_def, cc_def, cond_action_def, wildcard_def = DummyClass.command_definitions
+ no_args_def, one_arg_def, two_args_def, cc_def, cond_action_def = DummyClass.command_definitions
expect(no_args_def.name).to eq(:no_args)
expect(no_args_def.aliases).to eq([:none])
@@ -76,13 +72,6 @@ describe Gitlab::SlashCommands::Dsl do
expect(cond_action_def.params).to eq([])
expect(cond_action_def.condition_block).to be_a_kind_of(Proc)
expect(cond_action_def.action_block).to be_a_kind_of(Proc)
-
- expect(wildcard_def.name).to eq(:wildcard)
- expect(wildcard_def.aliases).to eq([])
- expect(wildcard_def.description).to eq('')
- expect(wildcard_def.params).to eq([])
- expect(wildcard_def.condition_block).to be_nil
- expect(wildcard_def.action_block).to be_a_kind_of(Proc)
end
end
end