2021-08-04 21:09:04 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
require 'spec_helper'
|
|
|
|
|
2021-10-19 00:10:29 +00:00
|
|
|
require_migration!
|
2021-08-04 21:09:04 +00:00
|
|
|
|
|
|
|
RSpec.describe OperationsFeatureFlagsCorrectFlexibleRolloutValues, :migration do
|
|
|
|
let_it_be(:strategies) { table(:operations_strategies) }
|
|
|
|
|
|
|
|
let(:namespace) { table(:namespaces).create!(name: 'feature_flag', path: 'feature_flag') }
|
|
|
|
let(:project) { table(:projects).create!(namespace_id: namespace.id) }
|
|
|
|
let(:feature_flag) { table(:operations_feature_flags).create!(project_id: project.id, active: true, name: 'foo', iid: 1) }
|
|
|
|
|
|
|
|
describe "#up" do
|
|
|
|
described_class::STICKINESS.each do |old, new|
|
|
|
|
it "corrects parameters for flexible rollout stickiness #{old}" do
|
|
|
|
reversible_migration do |migration|
|
|
|
|
parameters = { groupId: "default", rollout: "100", stickiness: old }
|
|
|
|
strategy = create_strategy(parameters)
|
|
|
|
|
|
|
|
migration.before -> {
|
|
|
|
expect(strategy.reload.parameters).to eq({ "groupId" => "default", "rollout" => "100", "stickiness" => old })
|
|
|
|
}
|
|
|
|
|
|
|
|
migration.after -> {
|
|
|
|
expect(strategy.reload.parameters).to eq({ "groupId" => "default", "rollout" => "100", "stickiness" => new })
|
|
|
|
}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'ignores other strategies' do
|
|
|
|
reversible_migration do |migration|
|
|
|
|
parameters = { "groupId" => "default", "rollout" => "100", "stickiness" => "USERID" }
|
|
|
|
strategy = create_strategy(parameters, name: 'default')
|
|
|
|
|
|
|
|
migration.before -> {
|
|
|
|
expect(strategy.reload.parameters).to eq(parameters)
|
|
|
|
}
|
|
|
|
|
|
|
|
migration.after -> {
|
|
|
|
expect(strategy.reload.parameters).to eq(parameters)
|
|
|
|
}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'ignores other stickiness' do
|
|
|
|
reversible_migration do |migration|
|
|
|
|
parameters = { "groupId" => "default", "rollout" => "100", "stickiness" => "FOO" }
|
|
|
|
strategy = create_strategy(parameters)
|
|
|
|
|
|
|
|
migration.before -> {
|
|
|
|
expect(strategy.reload.parameters).to eq(parameters)
|
|
|
|
}
|
|
|
|
|
|
|
|
migration.after -> {
|
|
|
|
expect(strategy.reload.parameters).to eq(parameters)
|
|
|
|
}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def create_strategy(params, name: 'flexibleRollout')
|
|
|
|
strategies.create!(name: name, parameters: params, feature_flag_id: feature_flag.id)
|
|
|
|
end
|
|
|
|
end
|