summaryrefslogtreecommitdiff
path: root/spec/migrations/20210805192450_update_trial_plans_ci_daily_pipeline_schedule_triggers_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/migrations/20210805192450_update_trial_plans_ci_daily_pipeline_schedule_triggers_spec.rb')
-rw-r--r--spec/migrations/20210805192450_update_trial_plans_ci_daily_pipeline_schedule_triggers_spec.rb137
1 files changed, 137 insertions, 0 deletions
diff --git a/spec/migrations/20210805192450_update_trial_plans_ci_daily_pipeline_schedule_triggers_spec.rb b/spec/migrations/20210805192450_update_trial_plans_ci_daily_pipeline_schedule_triggers_spec.rb
new file mode 100644
index 00000000000..819120d43ef
--- /dev/null
+++ b/spec/migrations/20210805192450_update_trial_plans_ci_daily_pipeline_schedule_triggers_spec.rb
@@ -0,0 +1,137 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+require_migration!('update_trial_plans_ci_daily_pipeline_schedule_triggers')
+
+RSpec.describe UpdateTrialPlansCiDailyPipelineScheduleTriggers, :migration do
+ let!(:plans) { table(:plans) }
+ let!(:plan_limits) { table(:plan_limits) }
+ let!(:premium_trial_plan) { plans.create!(name: 'premium_trial', title: 'Premium Trial') }
+ let!(:ultimate_trial_plan) { plans.create!(name: 'ultimate_trial', title: 'Ultimate Trial') }
+
+ describe '#up' do
+ let!(:premium_trial_plan_limits) { plan_limits.create!(plan_id: premium_trial_plan.id, ci_daily_pipeline_schedule_triggers: 0) }
+ let!(:ultimate_trial_plan_limits) { plan_limits.create!(plan_id: ultimate_trial_plan.id, ci_daily_pipeline_schedule_triggers: 0) }
+
+ context 'when the environment is dev or com' do
+ before do
+ allow(Gitlab).to receive(:dev_env_or_com?).and_return(true)
+ end
+
+ it 'sets the trial plan limits for ci_daily_pipeline_schedule_triggers' do
+ disable_migrations_output { migrate! }
+
+ expect(ultimate_trial_plan_limits.reload.ci_daily_pipeline_schedule_triggers).to eq(288)
+ expect(premium_trial_plan_limits.reload.ci_daily_pipeline_schedule_triggers).to eq(288)
+ end
+
+ it 'does not change the plan limits if the ultimate trial plan is missing' do
+ ultimate_trial_plan.destroy!
+
+ expect { disable_migrations_output { migrate! } }.not_to change { plan_limits.count }
+ expect(premium_trial_plan_limits.reload.ci_daily_pipeline_schedule_triggers).to eq(0)
+ end
+
+ it 'does not change the plan limits if the ultimate trial plan limits is missing' do
+ ultimate_trial_plan_limits.destroy!
+
+ expect { disable_migrations_output { migrate! } }.not_to change { plan_limits.count }
+ expect(premium_trial_plan_limits.reload.ci_daily_pipeline_schedule_triggers).to eq(0)
+ end
+
+ it 'does not change the plan limits if the premium trial plan is missing' do
+ premium_trial_plan.destroy!
+
+ expect { disable_migrations_output { migrate! } }.not_to change { plan_limits.count }
+ expect(ultimate_trial_plan_limits.reload.ci_daily_pipeline_schedule_triggers).to eq(0)
+ end
+
+ it 'does not change the plan limits if the premium trial plan limits is missing' do
+ premium_trial_plan_limits.destroy!
+
+ expect { disable_migrations_output { migrate! } }.not_to change { plan_limits.count }
+ expect(ultimate_trial_plan_limits.reload.ci_daily_pipeline_schedule_triggers).to eq(0)
+ end
+ end
+
+ context 'when the environment is anything other than dev or com' do
+ before do
+ allow(Gitlab).to receive(:dev_env_or_com?).and_return(false)
+ end
+
+ it 'does not update the plan limits' do
+ disable_migrations_output { migrate! }
+
+ expect(premium_trial_plan_limits.reload.ci_daily_pipeline_schedule_triggers).to eq(0)
+ expect(ultimate_trial_plan_limits.reload.ci_daily_pipeline_schedule_triggers).to eq(0)
+ end
+ end
+ end
+
+ describe '#down' do
+ let!(:premium_trial_plan_limits) { plan_limits.create!(plan_id: premium_trial_plan.id, ci_daily_pipeline_schedule_triggers: 288) }
+ let!(:ultimate_trial_plan_limits) { plan_limits.create!(plan_id: ultimate_trial_plan.id, ci_daily_pipeline_schedule_triggers: 288) }
+
+ context 'when the environment is dev or com' do
+ before do
+ allow(Gitlab).to receive(:dev_env_or_com?).and_return(true)
+ end
+
+ it 'sets the trial plan limits ci_daily_pipeline_schedule_triggers to zero' do
+ migrate_down!
+
+ expect(ultimate_trial_plan_limits.reload.ci_daily_pipeline_schedule_triggers).to eq(0)
+ expect(premium_trial_plan_limits.reload.ci_daily_pipeline_schedule_triggers).to eq(0)
+ end
+
+ it 'does not change the plan limits if the ultimate trial plan is missing' do
+ ultimate_trial_plan.destroy!
+
+ expect { migrate_down! }.not_to change { plan_limits.count }
+ expect(premium_trial_plan_limits.reload.ci_daily_pipeline_schedule_triggers).to eq(288)
+ end
+
+ it 'does not change the plan limits if the ultimate trial plan limits is missing' do
+ ultimate_trial_plan_limits.destroy!
+
+ expect { migrate_down! }.not_to change { plan_limits.count }
+ expect(premium_trial_plan_limits.reload.ci_daily_pipeline_schedule_triggers).to eq(288)
+ end
+
+ it 'does not change the plan limits if the premium trial plan is missing' do
+ premium_trial_plan.destroy!
+
+ expect { migrate_down! }.not_to change { plan_limits.count }
+ expect(ultimate_trial_plan_limits.reload.ci_daily_pipeline_schedule_triggers).to eq(288)
+ end
+
+ it 'does not change the plan limits if the premium trial plan limits is missing' do
+ premium_trial_plan_limits.destroy!
+
+ expect { migrate_down! }.not_to change { plan_limits.count }
+ expect(ultimate_trial_plan_limits.reload.ci_daily_pipeline_schedule_triggers).to eq(288)
+ end
+ end
+
+ context 'when the environment is anything other than dev or com' do
+ before do
+ allow(Gitlab).to receive(:dev_env_or_com?).and_return(false)
+ end
+
+ it 'does not change the ultimate trial plan limits' do
+ migrate_down!
+
+ expect(ultimate_trial_plan_limits.reload.ci_daily_pipeline_schedule_triggers).to eq(288)
+ expect(premium_trial_plan_limits.reload.ci_daily_pipeline_schedule_triggers).to eq(288)
+ end
+ end
+ end
+
+ def migrate_down!
+ disable_migrations_output do
+ migrate!
+ described_class.new.down
+ end
+ end
+end