f73193c328
Prior to this commit the refreshing of authorized projects was done in two steps: 1. Remove existing authorizations 2. Insert a new list of all authorizations This can lead to a high amount of dead tuples as every time all rows are being replaced. For example, if a user with 100 authorizations is given access to a new project this would lead to: * 100 rows being removed * 101 new rows being inserted This commit changes the way this system works so it only removes/inserts what is necessary. Using the above example this would lead to only 1 new row being inserted, with the initial 100 being left untouched. Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/25257
25 lines
706 B
Ruby
25 lines
706 B
Ruby
require 'spec_helper'
|
|
|
|
describe ProjectAuthorization do
|
|
let(:user) { create(:user) }
|
|
let(:project1) { create(:empty_project) }
|
|
let(:project2) { create(:empty_project) }
|
|
|
|
describe '.insert_authorizations' do
|
|
it 'inserts the authorizations' do
|
|
described_class.
|
|
insert_authorizations([[user.id, project1.id, Gitlab::Access::MASTER]])
|
|
|
|
expect(user.project_authorizations.count).to eq(1)
|
|
end
|
|
|
|
it 'inserts rows in batches' do
|
|
described_class.insert_authorizations([
|
|
[user.id, project1.id, Gitlab::Access::MASTER],
|
|
[user.id, project2.id, Gitlab::Access::MASTER],
|
|
], 1)
|
|
|
|
expect(user.project_authorizations.count).to eq(2)
|
|
end
|
|
end
|
|
end
|