f7163afb8a
This backports to CE changes that allow the recording of the repository_type in the table lfs_objects_projects. This is in order to allow future pruning of unreferenced LFS objects, as we will need to know which repository to look in for the LFS pointer file. The EE MR that contains the original code and a full explanation of the changes is https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/13894 EE Issue https://gitlab.com/gitlab-org/gitlab-ee/issues/9490 Note that there was a lot of CE code changed in the EE MR because we want to allow the wiki repository to also use LFS. See https://gitlab.com/gitlab-org/gitlab-ce/issues/43721. As the wiki is an unlicensed feature, a full backport is required to enable this.
45 lines
1.1 KiB
Ruby
45 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
describe LfsObjectsProject do
|
|
set(:project) { create(:project) }
|
|
|
|
subject do
|
|
create(:lfs_objects_project, project: project)
|
|
end
|
|
|
|
describe 'associations' do
|
|
it { is_expected.to belong_to(:project) }
|
|
it { is_expected.to belong_to(:lfs_object) }
|
|
end
|
|
|
|
describe 'validation' do
|
|
it { is_expected.to validate_presence_of(:lfs_object_id) }
|
|
it { is_expected.to validate_presence_of(:project_id) }
|
|
|
|
it 'validates object id' do
|
|
is_expected.to validate_uniqueness_of(:lfs_object_id)
|
|
.scoped_to(:project_id, :repository_type)
|
|
.with_message("already exists in repository")
|
|
end
|
|
end
|
|
|
|
describe '#update_project_statistics' do
|
|
it 'updates project statistics when the object is added' do
|
|
expect(ProjectCacheWorker).to receive(:perform_async)
|
|
.with(project.id, [], [:lfs_objects_size])
|
|
|
|
subject.save!
|
|
end
|
|
|
|
it 'updates project statistics when the object is removed' do
|
|
subject.save!
|
|
|
|
expect(ProjectCacheWorker).to receive(:perform_async)
|
|
.with(project.id, [], [:lfs_objects_size])
|
|
|
|
subject.destroy
|
|
end
|
|
end
|
|
end
|