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
8 changes: 4 additions & 4 deletions allure-ruby-commons/lib/allure-ruby-commons.rb
Original file line number Diff line number Diff line change
Expand Up @@ -118,9 +118,9 @@ def description_html(description_html)
# @param [String] name
# @param [String] value
# @return [void]
def parameter(name, value)
def parameter(name, value, excluded: false, mode: Allure::Parameter::DEFAULT)
lifecycle.update_test_case do |test_case|
test_case.parameters.push(Parameter.new(name, value))
test_case.parameters.push(Parameter.new(name, value, excluded: excluded, mode: mode))
end
end

Expand Down Expand Up @@ -239,9 +239,9 @@ def run_step(name)
# @param [String] name
# @param [String] value
# @return [void]
def step_parameter(name, value)
def step_parameter(name, value, excluded: false, mode: Allure::Parameter::DEFAULT)
lifecycle.update_test_step do |step|
step.parameters.push(Parameter.new(name, value))
step.parameters.push(Parameter.new(name, value, excluded: excluded, mode: mode))
end
end
end
Expand Down
20 changes: 18 additions & 2 deletions allure-ruby-commons/lib/allure_ruby_commons/model/parameter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,29 @@
module Allure
# Allure model parameter object
class Parameter < JSONable
def initialize(name, value)
DEFAULT = "default"
MASKED = "masked"
HIDDEN = "hidden"

def initialize(name, value, excluded: false, mode: DEFAULT)
super()

@name = name
@value = value
@excluded = excluded
@mode = validate_mode!(mode)
end

attr_reader :name, :value
attr_reader :name, :value, :excluded, :mode

private

def validate_mode!(mode)
modes = [DEFAULT, MASKED, HIDDEN]
return mode if modes.include?(mode)

Allure.configuration.logger.error "Parameter mode '#{mode}' is invalid. Valid modes are: #{modes.join(', ')}"
DEFAULT
end
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def history_id
#
# @return [String]
def parameters_string
parameters.map { |p| "#{p.name}=#{p.value}" }.join(";")
parameters.reject(&:excluded).map { |p| "#{p.name}=#{p.value}" }.join(";")
end
end
end
24 changes: 20 additions & 4 deletions allure-ruby-commons/spec/unit/allure_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,9 @@ def lifecycle

context "with parameter helpers" do
it "adds test parameter" do
allure.parameter("name", "value")
expect(@test_case.parameters.last).to eq(Allure::Parameter.new("name", "value"))
allure.parameter("name", "value", excluded: true, mode: Allure::Parameter::MASKED)
parameter = Allure::Parameter.new("name", "value", excluded: true, mode: Allure::Parameter::MASKED)
expect(@test_case.parameters.last).to eq(parameter)
end
end

Expand Down Expand Up @@ -167,9 +168,24 @@ def lifecycle

it "adds parameter" do
allure.run_step("New step") do
allure.step_parameter("name", "value")
allure.step_parameter("name", "value", excluded: true, mode: Allure::Parameter::HIDDEN)
end
expect(last_step.parameters.last).to eq(Allure::Parameter.new("name", "value"))
parameter = Allure::Parameter.new("name", "value", excluded: true, mode: Allure::Parameter::HIDDEN)
expect(last_step.parameters.last).to eq(parameter)
end

it "uses default mode when invalid mode parameter is set" do
modes = [Allure::Parameter::DEFAULT, Allure::Parameter::MASKED, Allure::Parameter::HIDDEN]
allow(Allure.configuration.logger).to receive(:error)

allure.run_step("New step") do
allure.step_parameter("name", "value", excluded: true, mode: "jiberish")
end

msg = "Parameter mode 'jiberish' is invalid. Valid modes are: #{modes.join(', ')}"
expect(Allure.configuration.logger).to have_received(:error).with(msg)
parameter = Allure::Parameter.new("name", "value", mode: Allure::Parameter::DEFAULT, excluded: true)
expect(last_step.parameters.last).to eq(parameter)
end
end

Expand Down
33 changes: 33 additions & 0 deletions allure-ruby-commons/spec/unit/test_result_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

let!(:result_container) { @result_container = start_test_container("Test Container") }
let!(:test_case) { start_test_case(name: "Test Case", environment: environment) }
let(:environment) { "test" }

context "without allure environment" do
let(:environment) { nil }
Expand Down Expand Up @@ -47,6 +48,38 @@
end
end

context "history id" do
it "History id is different for different non-excluded parameters" do
test_case1 = start_test_case(name: "Test Case", history_id: 1)
lifecycle.update_test_case do |test_case|
test_case.parameters.push(Allure::Parameter.new("name", "value1"))
end
test_case1.stop

test_case2 = start_test_case(name: "Test Case", history_id: 1)
lifecycle.update_test_case do |test_case|
test_case.parameters.push(Allure::Parameter.new("name", "value2"))
end
test_case2.stop
expect(test_case1.history_id).not_to eq(test_case2.history_id)
end

it "History id is the same for excluded parameters" do
test_case1 = start_test_case(name: "Test Case", history_id: 1)
lifecycle.update_test_case do |test_case|
test_case.parameters.push(Allure::Parameter.new("name", "value1", excluded: true))
end
test_case1.stop

test_case2 = start_test_case(name: "Test Case", history_id: 1)
lifecycle.update_test_case do |test_case|
test_case.parameters.push(Allure::Parameter.new("name", "value2", excluded: true))
end
test_case2.stop
expect(test_case1.history_id).to eq(test_case2.history_id)
end
end

context "with allure environment" do
let(:environment) { "test" }

Expand Down