diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-21 09:09:01 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-21 09:09:01 +0000 |
commit | a53d2c37c4934f564caa94543dd4cf5af1703e2d (patch) | |
tree | a028dc39771a4612a9845ab700a73af2d6f3f51b /spec/migrations | |
parent | 18b8435318887d3fc6e9f9d305967a953cdd7d3f (diff) | |
download | gitlab-ce-a53d2c37c4934f564caa94543dd4cf5af1703e2d.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/migrations')
-rw-r--r-- | spec/migrations/cleanup_optimistic_locking_nulls_spec.rb | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/spec/migrations/cleanup_optimistic_locking_nulls_spec.rb b/spec/migrations/cleanup_optimistic_locking_nulls_spec.rb new file mode 100644 index 00000000000..bec8435b2f0 --- /dev/null +++ b/spec/migrations/cleanup_optimistic_locking_nulls_spec.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +require 'spec_helper' +require Rails.root.join('db', 'post_migrate', '20200128210353_cleanup_optimistic_locking_nulls') + +describe CleanupOptimisticLockingNulls, :migration do + TABLES = %w(epics merge_requests issues).freeze + TABLES.each do |table| + let(table.to_sym) { table(table.to_sym) } + end + let(:tables) { TABLES.map { |t| method(t.to_sym).call } } + + let(:namespaces) { table(:namespaces) } + let(:projects) { table(:projects) } + let(:users) { table(:users)} + + before do + namespaces.create!(id: 123, name: 'gitlab1', path: 'gitlab1') + projects.create!(id: 123, name: 'gitlab1', path: 'gitlab1', namespace_id: 123) + users.create!(id: 123, username: 'author', projects_limit: 1000) + + # Create necessary rows + epics.create!(iid: 123, group_id: 123, author_id: 123, title: 'a', title_html: 'a') + merge_requests.create!(iid: 123, target_project_id: 123, source_project_id: 123, target_branch: 'master', source_branch: 'hmm', title: 'a', title_html: 'a') + issues.create!(iid: 123, project_id: 123, title: 'a', title_html: 'a') + + # Nullify `lock_version` column for all rows + # Needs to be done with a SQL fragment, otherwise Rails will coerce it to 0 + tables.each do |table| + table.update_all('lock_version = NULL') + end + end + + it 'correctly migrates nullified lock_version column', :sidekiq_inline do + tables.each do |table| + expect(table.where(lock_version: nil).count).to eq(1) + end + + tables.each do |table| + expect(table.where(lock_version: 0).count).to eq(0) + end + + migrate! + + tables.each do |table| + expect(table.where(lock_version: nil).count).to eq(0) + end + + tables.each do |table| + expect(table.where(lock_version: 0).count).to eq(1) + end + end +end |