Commit 7babc59e authored by Grzegorz Bizon's avatar Grzegorz Bizon

Use parameterized RSpec to improve variables expressions specs

parent 65f4e7b2
require 'fast_spec_helper'
require 'rspec-parameterized'
describe Gitlab::Ci::Pipeline::Expression::Statement do
subject do
......@@ -82,56 +83,56 @@ describe Gitlab::Ci::Pipeline::Expression::Statement do
end
describe '#evaluate' do
statements = [
['$PRESENT_VARIABLE == "my variable"', true],
['"my variable" == $PRESENT_VARIABLE', true],
['$PRESENT_VARIABLE == null', false],
['$EMPTY_VARIABLE == null', false],
['"" == $EMPTY_VARIABLE', true],
['$EMPTY_VARIABLE', ''],
['$UNDEFINED_VARIABLE == null', true],
['null == $UNDEFINED_VARIABLE', true],
['$PRESENT_VARIABLE', 'my variable'],
['$UNDEFINED_VARIABLE', nil],
["$PRESENT_VARIABLE =~ /var.*e$/", true],
["$PRESENT_VARIABLE =~ /^var.*/", false],
["$EMPTY_VARIABLE =~ /var.*/", false],
["$UNDEFINED_VARIABLE =~ /var.*/", false]
]
statements.each do |expression, value|
context "when using expression `#{expression}`" do
using RSpec::Parameterized::TableSyntax
where(:expression, :value) do
'$PRESENT_VARIABLE == "my variable"' | true
'"my variable" == $PRESENT_VARIABLE' | true
'$PRESENT_VARIABLE == null' | false
'$EMPTY_VARIABLE == null' | false
'"" == $EMPTY_VARIABLE' | true
'$EMPTY_VARIABLE' | ''
'$UNDEFINED_VARIABLE == null' | true
'null == $UNDEFINED_VARIABLE' | true
'$PRESENT_VARIABLE' | 'my variable'
'$UNDEFINED_VARIABLE' | nil
"$PRESENT_VARIABLE =~ /var.*e$/" | true
"$PRESENT_VARIABLE =~ /^var.*/" | false
"$EMPTY_VARIABLE =~ /var.*/" | false
"$UNDEFINED_VARIABLE =~ /var.*/" | false
end
with_them do
let(:text) { expression }
it "evaluates to `#{value.inspect}`" do
it "evaluates to `#{params[:value].inspect}`" do
expect(subject.evaluate).to eq value
end
end
end
end
describe '#truthful?' do
statements = [
['$PRESENT_VARIABLE == "my variable"', true],
["$PRESENT_VARIABLE == 'no match'", false],
['$UNDEFINED_VARIABLE == null', true],
['$PRESENT_VARIABLE', true],
['$UNDEFINED_VARIABLE', false],
['$EMPTY_VARIABLE', false],
['$INVALID = 1', false],
["$PRESENT_VARIABLE =~ /var.*/", true],
["$UNDEFINED_VARIABLE =~ /var.*/", false]
]
using RSpec::Parameterized::TableSyntax
statements.each do |expression, value|
context "when using expression `#{expression}`" do
where(:expression, :value) do
'$PRESENT_VARIABLE == "my variable"' | true
"$PRESENT_VARIABLE == 'no match'" | false
'$UNDEFINED_VARIABLE == null' | true
'$PRESENT_VARIABLE' | true
'$UNDEFINED_VARIABLE' | false
'$EMPTY_VARIABLE' | false
'$INVALID = 1' | false
"$PRESENT_VARIABLE =~ /var.*/" | true
"$UNDEFINED_VARIABLE =~ /var.*/" | false
end
with_them do
let(:text) { expression }
it "returns `#{value.inspect}`" do
it "returns `#{params[:value].inspect}`" do
expect(subject.truthful?).to eq value
end
end
end
context 'when evaluating expression raises an error' do
let(:text) { '$PRESENT_VARIABLE' }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment