summaryrefslogtreecommitdiff
path: root/spec/migrations/ensure_filled_file_store_on_package_files_spec.rb
blob: 5cfc3a6eeb8cb23e62559b63813aded34b3c0919 (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
40
# frozen_string_literal: true

require 'spec_helper'
require_migration!

RSpec.describe EnsureFilledFileStoreOnPackageFiles, schema: 20200910175553 do
  let!(:packages_package_files) { table(:packages_package_files) }
  let!(:packages_packages) { table(:packages_packages) }
  let!(:namespaces) { table(:namespaces) }
  let!(:projects) { table(:projects) }
  let!(:namespace) { namespaces.create!(name: 'foo', path: 'foo') }
  let!(:project) { projects.create!(namespace_id: namespace.id) }
  let!(:package) { packages_packages.create!(project_id: project.id, name: 'bar', package_type: 1) }

  before do
    constraint_name = 'check_4c5e6bb0b3'

    # In order to insert a row with a NULL to fill.
    ActiveRecord::Base.connection.execute "ALTER TABLE packages_package_files DROP CONSTRAINT #{constraint_name}"

    @file_store_1 = packages_package_files.create!(file_store: 1, file_name: 'foo_1', file: 'foo_1', package_id: package.id)
    @file_store_2 = packages_package_files.create!(file_store: 2, file_name: 'foo_2', file: 'foo_2', package_id: package.id)
    @file_store_nil = packages_package_files.create!(file_store: nil, file_name: 'foo_nil', file: 'foo_nil', package_id: package.id)

    # revert DB structure
    ActiveRecord::Base.connection.execute "ALTER TABLE packages_package_files ADD CONSTRAINT #{constraint_name} CHECK ((file_store IS NOT NULL)) NOT VALID"
  end

  it 'correctly migrates nil file_store to 1' do
    migrate!

    @file_store_1.reload
    @file_store_2.reload
    @file_store_nil.reload

    expect(@file_store_1.file_store).to eq(1)   # unchanged
    expect(@file_store_2.file_store).to eq(2)   # unchanged
    expect(@file_store_nil.file_store).to eq(1) # nil => 1
  end
end