48 lines
1.4 KiB
Ruby
48 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
require_migration!
|
|
|
|
RSpec.describe RemoveDuplicateProjectTagReleases do
|
|
let(:namespaces) { table(:namespaces) }
|
|
let(:projects) { table(:projects) }
|
|
let(:users) { table(:users) }
|
|
let(:releases) { table(:releases) }
|
|
|
|
let(:namespace) { namespaces.create!(name: 'gitlab', path: 'gitlab-org') }
|
|
let(:project) { projects.create!(namespace_id: namespace.id, name: 'foo') }
|
|
|
|
let(:dup_releases) do
|
|
Array.new(4).fill do |i|
|
|
rel = releases.new(project_id: project.id,
|
|
tag: "duplicate tag",
|
|
released_at: (DateTime.now + i.days))
|
|
rel.save!(validate: false)
|
|
rel
|
|
end
|
|
end
|
|
|
|
let(:valid_release) do
|
|
releases.create!(
|
|
project_id: project.id,
|
|
tag: "valid tag",
|
|
released_at: DateTime.now
|
|
)
|
|
end
|
|
|
|
describe '#up' do
|
|
it "correctly removes duplicate tags from the same project" do
|
|
expect(dup_releases.length).to eq 4
|
|
expect(valid_release).not_to be nil
|
|
expect(releases.where(tag: 'duplicate tag').count).to eq 4
|
|
expect(releases.where(tag: 'valid tag').count).to eq 1
|
|
|
|
migrate!
|
|
|
|
expect(releases.where(tag: 'duplicate tag').count).to eq 1
|
|
expect(releases.where(tag: 'valid tag').count).to eq 1
|
|
expect(releases.all.map(&:tag)).to match_array ['valid tag', 'duplicate tag']
|
|
end
|
|
end
|
|
end
|