summaryrefslogtreecommitdiff
path: root/spec/migrations/add_foreign_key_to_merge_requests_spec.rb
blob: d9ad9a585f0ae6fd0f05612679a25418a0affbbf (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
36
37
38
39
require 'spec_helper'
require Rails.root.join('db', 'migrate', '20170713104829_add_foreign_key_to_merge_requests.rb')

describe AddForeignKeyToMergeRequests, :migration do
  let(:projects) { table(:projects) }
  let(:merge_requests) { table(:merge_requests) }
  let(:pipelines) { table(:ci_pipelines) }

  before do
    projects.create!(name: 'gitlab', path: 'gitlab-org/gitlab-ce')
    pipelines.create!(project_id: projects.first.id,
                      ref: 'some-branch',
                      sha: 'abc12345')

    # merge request without a pipeline
    create_merge_request(head_pipeline_id: nil)

    # merge request with non-existent pipeline
    create_merge_request(head_pipeline_id: 1234)

    # merge reqeust with existing pipeline assigned
    create_merge_request(head_pipeline_id: pipelines.first.id)
  end

  it 'correctly adds a foreign key to head_pipeline_id' do
    migrate!

    expect(merge_requests.first.head_pipeline_id).to be_nil
    expect(merge_requests.second.head_pipeline_id).to be_nil
    expect(merge_requests.third.head_pipeline_id).to eq pipelines.first.id
  end

  def create_merge_request(**opts)
    merge_requests.create!(source_project_id: projects.first.id,
                           target_project_id: projects.first.id,
                           source_branch: 'some-branch',
                           target_branch: 'master', **opts)
  end
end