Skip to content
Snippets Groups Projects
Commit 0eafe8d3 authored by Heinrich Lee Yu's avatar Heinrich Lee Yu
Browse files

Merge branch '338003-fix-existing-specs' into 'master'

Fix specs to set work_item_type on all issue creations

See merge request !91750
parents d692e273 e8f09be9
No related branches found
No related tags found
1 merge request!91750Fix specs to set work_item_type on all issue creations
Pipeline #583002118 failed
......@@ -3,6 +3,9 @@
require 'spec_helper'
RSpec.describe Gitlab::BackgroundMigration::DeleteInvalidEpicIssues do
let_it_be(:issue_base_type_enum) { 0 }
let_it_be(:issue_type_id) { table(:work_item_types).find_by(base_type: issue_base_type_enum).id }
# rubocop:disable RSpec/MultipleMemoizedHelpers
let!(:users) { table(:users) }
let!(:namespaces) { table(:namespaces) }
......@@ -89,19 +92,19 @@
group_id: group.id, author_id: user.id)
end
let!(:issue) { issues.create!(iid: 1, project_id: project.id, title: 'issue 1', author_id: user.id) }
let!(:issue2) { issues.create!(iid: 2, project_id: project.id, title: 'issue 2', author_id: user.id) }
let!(:issue3) { issues.create!(iid: 3, project_id: project.id, title: 'issue 3', author_id: user.id) }
let!(:issue4) { issues.create!(iid: 4, project_id: project.id, title: 'issue 4', author_id: user.id) }
let!(:issue5) { issues.create!(iid: 5, project_id: project.id, title: 'issue 5', author_id: user.id) }
let!(:issue_root) { issues.create!(iid: 6, project_id: project_root.id, title: 'issue_root', author_id: user.id) }
let!(:issue_sub) { issues.create!(iid: 7, project_id: project_sub.id, title: 'issue_sub', author_id: user.id) }
let!(:issue_sub2) { issues.create!(iid: 8, project_id: project_sub.id, title: 'issue_sub 2', author_id: user.id) }
let!(:issue_sub3) { issues.create!(iid: 9, project_id: project_sub.id, title: 'issue_sub 3', author_id: user.id) }
let!(:issue_other) { issues.create!(iid: 10, project_id: project_other.id, title: 'other', author_id: user.id) }
let!(:issue_other_2) { issues.create!(iid: 11, project_id: project_other.id, title: 'other 2', author_id: user.id) }
let!(:issue_other_3) { issues.create!(iid: 12, project_id: project_other.id, title: 'other 3', author_id: user.id) }
let!(:issue_other_4) { issues.create!(iid: 13, project_id: project_other.id, title: 'other 4', author_id: user.id) }
let!(:issue) { create_issue(iid: 1, project: project, title: 'issue 1', author: user) }
let!(:issue2) { create_issue(iid: 2, project: project, title: 'issue 2', author: user) }
let!(:issue3) { create_issue(iid: 3, project: project, title: 'issue 3', author: user) }
let!(:issue4) { create_issue(iid: 4, project: project, title: 'issue 4', author: user) }
let!(:issue5) { create_issue(iid: 5, project: project, title: 'issue 5', author: user) }
let!(:issue_root) { create_issue(iid: 6, project: project_root, title: 'issue_root', author: user) }
let!(:issue_sub) { create_issue(iid: 7, project: project_sub, title: 'issue_sub', author: user) }
let!(:issue_sub2) { create_issue(iid: 8, project: project_sub, title: 'issue_sub 2', author: user) }
let!(:issue_sub3) { create_issue(iid: 9, project: project_sub, title: 'issue_sub 3', author: user) }
let!(:issue_other) { create_issue(iid: 10, project: project_other, title: 'other', author: user) }
let!(:issue_other_2) { create_issue(iid: 11, project: project_other, title: 'other 2', author: user) }
let!(:issue_other_3) { create_issue(iid: 12, project: project_other, title: 'other 3', author: user) }
let!(:issue_other_4) { create_issue(iid: 13, project: project_other, title: 'other 4', author: user) }
let!(:valid_and_invalid_epic_issues) do
invalid_epic_issues = []
......@@ -175,12 +178,18 @@
epic_issues.create!(issue_id: issue5.id, epic_id: epic_other.id)
# create new records to delete
issue6 = issues.create!(iid: 14, project_id: project.id, title: 'issue 6', author_id: user.id)
issue7 = issues.create!(iid: 15, project_id: project.id, title: 'issue 7', author_id: user.id)
issue6 = create_issue(iid: 14, title: 'issue 6', author: user, project: project)
issue7 = create_issue(iid: 15, title: 'issue 7', author: user, project: project)
epic_issues.create!(issue_id: issue6.id, epic_id: epic_other.id)
epic_issues.create!(issue_id: issue7.id, epic_id: epic_other.id)
expect { subject }.not_to exceed_all_query_limit(control)
end
end
def create_issue(iid:, title:, author:, project:)
issues.create!(
iid: iid, project_id: project.id, title: title, author_id: author.id, work_item_type_id: issue_type_id
)
end
end
......@@ -3,6 +3,9 @@
require 'spec_helper'
RSpec.describe Gitlab::BackgroundMigration::MigrateRequirementsToWorkItems do
let_it_be(:issue_base_type_enum) { 0 }
let_it_be(:issue_type_id) { table(:work_item_types).find_by(base_type: issue_base_type_enum).id }
let(:issues) { table(:issues) }
let(:requirements) { table(:requirements) }
let(:namespaces) { table(:namespaces) }
......@@ -17,7 +20,7 @@
let(:project2) { projects.create!(namespace_id: group.id, name: 'gitlab2', path: 'gitlab2', project_namespace_id: project_namespace_2.id) }
let(:user1) { users.create!(email: 'author@example.com', notification_email: 'author@example.com', name: 'author', username: 'author', projects_limit: 10, state: 'active') }
let(:user2) { users.create!(email: 'author2@example.com', notification_email: 'author2@example.com', name: 'author2', username: 'author2', projects_limit: 10, state: 'active') }
let(:issue) { issues.create!(iid: 5, state_id: 1, project_id: project2.id) }
let(:issue) { issues.create!(iid: 5, state_id: 1, project_id: project2.id, work_item_type_id: issue_type_id) }
let!(:requirement_1) { create_requirement(iid: 1, project_id: project.id, author_id: user1.id, title: 'r 1', state: 1, created_at: 2.days.ago, updated_at: 1.day.ago) }
......
......@@ -2477,6 +2477,9 @@ def self.name
describe '#backfill_iids' do
include MigrationsHelpers
let_it_be(:issue_base_type_enum) { 0 }
let_it_be(:issue_type) { table(:work_item_types).find_by(base_type: issue_base_type_enum) }
let(:issue_class) do
Class.new(ActiveRecord::Base) do
include AtomicInternalId
......@@ -2490,6 +2493,8 @@ def self.name
scope: :project,
init: ->(s, _scope) { s&.project&.issues&.maximum(:iid) },
presence: false
before_validation -> { self.work_item_type_id = ::WorkItems::Type.default_issue_type.id }
end
end
......@@ -2515,7 +2520,7 @@ def setup
it 'generates iids properly for models created after the migration when iids are backfilled' do
project = setup
issue_a = issues.create!(project_id: project.id)
issue_a = issues.create!(project_id: project.id, work_item_type_id: issue_type.id)
model.backfill_iids('issues')
......@@ -2528,14 +2533,14 @@ def setup
it 'generates iids properly for models created after the migration across multiple projects' do
project_a = setup
project_b = setup
issues.create!(project_id: project_a.id)
issues.create!(project_id: project_b.id)
issues.create!(project_id: project_b.id)
issues.create!(project_id: project_a.id, work_item_type_id: issue_type.id)
issues.create!(project_id: project_b.id, work_item_type_id: issue_type.id)
issues.create!(project_id: project_b.id, work_item_type_id: issue_type.id)
model.backfill_iids('issues')
issue_a = issue_class.create!(project_id: project_a.id)
issue_b = issue_class.create!(project_id: project_b.id)
issue_a = issue_class.create!(project_id: project_a.id, work_item_type_id: issue_type.id)
issue_b = issue_class.create!(project_id: project_b.id, work_item_type_id: issue_type.id)
expect(issue_a.iid).to eq(2)
expect(issue_b.iid).to eq(3)
......@@ -2545,7 +2550,7 @@ def setup
it 'generates an iid' do
project_a = setup
project_b = setup
issue_a = issues.create!(project_id: project_a.id)
issue_a = issues.create!(project_id: project_a.id, work_item_type_id: issue_type.id)
model.backfill_iids('issues')
......@@ -2559,8 +2564,8 @@ def setup
context 'when a row already has an iid set in the database' do
it 'backfills iids' do
project = setup
issue_a = issues.create!(project_id: project.id, iid: 1)
issue_b = issues.create!(project_id: project.id, iid: 2)
issue_a = issues.create!(project_id: project.id, work_item_type_id: issue_type.id, iid: 1)
issue_b = issues.create!(project_id: project.id, work_item_type_id: issue_type.id, iid: 2)
model.backfill_iids('issues')
......@@ -2571,9 +2576,9 @@ def setup
it 'backfills for multiple projects' do
project_a = setup
project_b = setup
issue_a = issues.create!(project_id: project_a.id, iid: 1)
issue_b = issues.create!(project_id: project_b.id, iid: 1)
issue_c = issues.create!(project_id: project_a.id, iid: 2)
issue_a = issues.create!(project_id: project_a.id, work_item_type_id: issue_type.id, iid: 1)
issue_b = issues.create!(project_id: project_b.id, work_item_type_id: issue_type.id, iid: 1)
issue_c = issues.create!(project_id: project_a.id, work_item_type_id: issue_type.id, iid: 2)
model.backfill_iids('issues')
......
......@@ -11,6 +11,8 @@
attribute :author
attribute :project
before_validation -> { self.work_item_type_id = ::WorkItems::Type.default_issue_type.id }
end
end
......
......@@ -9,6 +9,8 @@
include CacheMarkdownField
cache_markdown_field :title, pipeline: :single_line
cache_markdown_field :description
before_validation -> { self.work_item_type_id = ::WorkItems::Type.default_issue_type.id }
end
end
......
......@@ -14,6 +14,8 @@
belongs_to :project
has_one :search_data, class_name: 'Issues::SearchData'
before_validation -> { self.work_item_type_id = ::WorkItems::Type.default_issue_type.id }
def persist_pg_full_text_search_vector(search_vector)
Issues::SearchData.upsert({ project_id: project_id, issue_id: id, search_vector: search_vector }, unique_by: %i(project_id issue_id))
end
......@@ -185,6 +187,8 @@ def self.name
belongs_to :project
has_one :search_data, class_name: 'Issues::SearchData'
before_validation -> { self.work_item_type_id = ::WorkItems::Type.default_issue_type.id }
def self.name
'Issue'
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment