summaryrefslogtreecommitdiff
path: root/spec/migrations/move_limits_from_plans_spec.rb
blob: 92ac804733fdfbd109a7e2fccd5abadd4d211297 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# frozen_string_literal: true

require 'spec_helper'
require_migration!

RSpec.describe MoveLimitsFromPlans do
  let(:plans) { table(:plans) }
  let(:plan_limits) { table(:plan_limits) }

  let!(:gold_plan) { plans.create!(name: 'gold', title: 'Gold', active_pipelines_limit: 20, pipeline_size_limit: 21, active_jobs_limit: 22) }
  let!(:silver_plan) { plans.create!(name: 'silver', title: 'Silver', active_pipelines_limit: 30, pipeline_size_limit: 31, active_jobs_limit: 32) }
  let!(:bronze_plan) { plans.create!(name: 'bronze', title: 'Bronze', active_pipelines_limit: 40, pipeline_size_limit: 41, active_jobs_limit: 42) }
  let!(:free_plan) { plans.create!(name: 'free', title: 'Free', active_pipelines_limit: 50, pipeline_size_limit: 51, active_jobs_limit: 52) }
  let!(:other_plan) { plans.create!(name: 'other', title: 'Other', active_pipelines_limit: nil, pipeline_size_limit: nil, active_jobs_limit: 0) }

  describe 'migrate' do
    it 'populates plan_limits from all the records in plans' do
      expect { migrate! }.to change { plan_limits.count }.by 5
    end

    it 'copies plan limits and plan.id into to plan_limits table' do
      migrate!

      new_data = plan_limits.pluck(:plan_id, :ci_active_pipelines, :ci_pipeline_size, :ci_active_jobs)
      expected_data = [
        [gold_plan.id, 20, 21, 22],
        [silver_plan.id, 30, 31, 32],
        [bronze_plan.id, 40, 41, 42],
        [free_plan.id, 50, 51, 52],
        [other_plan.id, 0, 0, 0]
      ]
      expect(new_data).to contain_exactly(*expected_data)
    end
  end
end