Commit 5ac98f93 authored by Bob Van Landuyt's avatar Bob Van Landuyt

Create models directly in migration specs

Instead of using the factories. Since the factories might be using
columns that aren't available in the schema at version the particular
spec is running in.
parent ba731b2a
...@@ -2,19 +2,20 @@ require 'spec_helper' ...@@ -2,19 +2,20 @@ require 'spec_helper'
describe Gitlab::BackgroundMigration::CreateForkNetworkMembershipsRange, :migration, schema: 20170929131201 do describe Gitlab::BackgroundMigration::CreateForkNetworkMembershipsRange, :migration, schema: 20170929131201 do
let(:migration) { described_class.new } let(:migration) { described_class.new }
let(:projects) { table(:projects) }
let(:base1) { create(:project) } let(:base1) { projects.create }
let(:base1_fork1) { create(:project) } let(:base1_fork1) { projects.create }
let(:base1_fork2) { create(:project) } let(:base1_fork2) { projects.create }
let(:base2) { create(:project) } let(:base2) { projects.create }
let(:base2_fork1) { create(:project) } let(:base2_fork1) { projects.create }
let(:base2_fork2) { create(:project) } let(:base2_fork2) { projects.create }
let(:fork_of_fork) { create(:project) } let(:fork_of_fork) { projects.create }
let(:fork_of_fork2) { create(:project) } let(:fork_of_fork2) { projects.create }
let(:second_level_fork) { create(:project) } let(:second_level_fork) { projects.create }
let(:third_level_fork) { create(:project) } let(:third_level_fork) { projects.create }
let(:fork_network1) { fork_networks.find_by(root_project_id: base1.id) } let(:fork_network1) { fork_networks.find_by(root_project_id: base1.id) }
let(:fork_network2) { fork_networks.find_by(root_project_id: base2.id) } let(:fork_network2) { fork_networks.find_by(root_project_id: base2.id) }
...@@ -97,7 +98,7 @@ describe Gitlab::BackgroundMigration::CreateForkNetworkMembershipsRange, :migrat ...@@ -97,7 +98,7 @@ describe Gitlab::BackgroundMigration::CreateForkNetworkMembershipsRange, :migrat
end end
it 'does not miss members for forks of forks for which the root was deleted' do it 'does not miss members for forks of forks for which the root was deleted' do
forked_project_links.create(id: 9, forked_from_project_id: base1_fork1.id, forked_to_project_id: create(:project).id) forked_project_links.create(id: 9, forked_from_project_id: base1_fork1.id, forked_to_project_id: projects.create.id)
base1.destroy base1.destroy
expect(migration.missing_members?(7, 10)).to be_falsy expect(migration.missing_members?(7, 10)).to be_falsy
...@@ -105,8 +106,8 @@ describe Gitlab::BackgroundMigration::CreateForkNetworkMembershipsRange, :migrat ...@@ -105,8 +106,8 @@ describe Gitlab::BackgroundMigration::CreateForkNetworkMembershipsRange, :migrat
context 'with more forks' do context 'with more forks' do
before do before do
forked_project_links.create(id: 9, forked_from_project_id: fork_of_fork.id, forked_to_project_id: create(:project).id) forked_project_links.create(id: 9, forked_from_project_id: fork_of_fork.id, forked_to_project_id: projects.create.id)
forked_project_links.create(id: 10, forked_from_project_id: fork_of_fork.id, forked_to_project_id: create(:project).id) forked_project_links.create(id: 10, forked_from_project_id: fork_of_fork.id, forked_to_project_id: projects.create.id)
end end
it 'only processes a single batch of links at a time' do it 'only processes a single batch of links at a time' do
......
...@@ -225,7 +225,8 @@ describe Gitlab::BackgroundMigration::MigrateEventsToPushEventPayloads, :migrati ...@@ -225,7 +225,8 @@ describe Gitlab::BackgroundMigration::MigrateEventsToPushEventPayloads, :migrati
let(:user_class) { table(:users) } let(:user_class) { table(:users) }
let(:author) { build(:user).becomes(user_class).tap(&:save!).becomes(User) } let(:author) { build(:user).becomes(user_class).tap(&:save!).becomes(User) }
let(:namespace) { create(:namespace, owner: author) } let(:namespace) { create(:namespace, owner: author) }
let(:project) { create(:project_empty_repo, namespace: namespace, creator: author) } let(:projects) { table(:projects) }
let(:project) { projects.create(namespace_id: namespace.id, creator_id: author.id) }
# We can not rely on FactoryGirl as the state of Event may change in ways that # We can not rely on FactoryGirl as the state of Event may change in ways that
# the background migration does not expect, hence we use the Event class of # the background migration does not expect, hence we use the Event class of
......
...@@ -2,10 +2,11 @@ require 'spec_helper' ...@@ -2,10 +2,11 @@ require 'spec_helper'
describe Gitlab::BackgroundMigration::PopulateForkNetworksRange, :migration, schema: 20170929131201 do describe Gitlab::BackgroundMigration::PopulateForkNetworksRange, :migration, schema: 20170929131201 do
let(:migration) { described_class.new } let(:migration) { described_class.new }
let(:base1) { create(:project) } let(:projects) { table(:projects) }
let(:base1) { projects.create }
let(:base2) { create(:project) } let(:base2) { projects.create }
let(:base2_fork1) { create(:project) } let(:base2_fork1) { projects.create }
let!(:forked_project_links) { table(:forked_project_links) } let!(:forked_project_links) { table(:forked_project_links) }
let!(:fork_networks) { table(:fork_networks) } let!(:fork_networks) { table(:fork_networks) }
...@@ -18,10 +19,10 @@ describe Gitlab::BackgroundMigration::PopulateForkNetworksRange, :migration, sch ...@@ -18,10 +19,10 @@ describe Gitlab::BackgroundMigration::PopulateForkNetworksRange, :migration, sch
# A normal fork link # A normal fork link
forked_project_links.create(id: 1, forked_project_links.create(id: 1,
forked_from_project_id: base1.id, forked_from_project_id: base1.id,
forked_to_project_id: create(:project).id) forked_to_project_id: projects.create.id)
forked_project_links.create(id: 2, forked_project_links.create(id: 2,
forked_from_project_id: base1.id, forked_from_project_id: base1.id,
forked_to_project_id: create(:project).id) forked_to_project_id: projects.create.id)
forked_project_links.create(id: 3, forked_project_links.create(id: 3,
forked_from_project_id: base2.id, forked_from_project_id: base2.id,
forked_to_project_id: base2_fork1.id) forked_to_project_id: base2_fork1.id)
...@@ -29,10 +30,10 @@ describe Gitlab::BackgroundMigration::PopulateForkNetworksRange, :migration, sch ...@@ -29,10 +30,10 @@ describe Gitlab::BackgroundMigration::PopulateForkNetworksRange, :migration, sch
# create a fork of a fork # create a fork of a fork
forked_project_links.create(id: 4, forked_project_links.create(id: 4,
forked_from_project_id: base2_fork1.id, forked_from_project_id: base2_fork1.id,
forked_to_project_id: create(:project).id) forked_to_project_id: projects.create.id)
forked_project_links.create(id: 5, forked_project_links.create(id: 5,
forked_from_project_id: create(:project).id, forked_from_project_id: projects.create.id,
forked_to_project_id: create(:project).id) forked_to_project_id: projects.create.id)
# Stub out the calls to the other migrations # Stub out the calls to the other migrations
allow(BackgroundMigrationWorker).to receive(:perform_in) allow(BackgroundMigrationWorker).to receive(:perform_in)
...@@ -63,7 +64,7 @@ describe Gitlab::BackgroundMigration::PopulateForkNetworksRange, :migration, sch ...@@ -63,7 +64,7 @@ describe Gitlab::BackgroundMigration::PopulateForkNetworksRange, :migration, sch
end end
it 'creates a fork network for the fork of which the source was deleted' do it 'creates a fork network for the fork of which the source was deleted' do
fork = create(:project) fork = projects.create
forked_project_links.create(id: 6, forked_from_project_id: 99999, forked_to_project_id: fork.id) forked_project_links.create(id: 6, forked_from_project_id: 99999, forked_to_project_id: fork.id)
migration.perform(5, 8) migration.perform(5, 8)
......
...@@ -2,9 +2,10 @@ require 'spec_helper' ...@@ -2,9 +2,10 @@ require 'spec_helper'
require Rails.root.join('db', 'post_migrate', '20171013104327_migrate_gcp_clusters_to_new_clusters_architectures.rb') require Rails.root.join('db', 'post_migrate', '20171013104327_migrate_gcp_clusters_to_new_clusters_architectures.rb')
describe MigrateGcpClustersToNewClustersArchitectures, :migration do describe MigrateGcpClustersToNewClustersArchitectures, :migration do
let(:project) { create(:project) } let(:projects) { table(:projects) }
let(:project) { projects.create }
let(:user) { create(:user) } let(:user) { create(:user) }
let(:service) { create(:kubernetes_service, project: project) } let(:service) { create(:kubernetes_service, project_id: project.id) }
context 'when cluster is being created' do context 'when cluster is being created' do
let(:project_id) { project.id } let(:project_id) { project.id }
...@@ -56,8 +57,7 @@ describe MigrateGcpClustersToNewClustersArchitectures, :migration do ...@@ -56,8 +57,7 @@ describe MigrateGcpClustersToNewClustersArchitectures, :migration do
expect(cluster.provider_type).to eq('gcp') expect(cluster.provider_type).to eq('gcp')
expect(cluster.platform_type).to eq('kubernetes') expect(cluster.platform_type).to eq('kubernetes')
expect(cluster.project).to eq(project) expect(cluster.project_ids).to include(project.id)
expect(project.clusters).to include(cluster)
expect(cluster.provider_gcp.cluster).to eq(cluster) expect(cluster.provider_gcp.cluster).to eq(cluster)
expect(cluster.provider_gcp.status).to eq(status) expect(cluster.provider_gcp.status).to eq(status)
...@@ -133,8 +133,7 @@ describe MigrateGcpClustersToNewClustersArchitectures, :migration do ...@@ -133,8 +133,7 @@ describe MigrateGcpClustersToNewClustersArchitectures, :migration do
expect(cluster.provider_type).to eq('gcp') expect(cluster.provider_type).to eq('gcp')
expect(cluster.platform_type).to eq('kubernetes') expect(cluster.platform_type).to eq('kubernetes')
expect(cluster.project).to eq(project) expect(cluster.project_ids).to include(project.id)
expect(project.clusters).to include(cluster)
expect(cluster.provider_gcp.cluster).to eq(cluster) expect(cluster.provider_gcp.cluster).to eq(cluster)
expect(cluster.provider_gcp.status).to eq(status) expect(cluster.provider_gcp.status).to eq(status)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment