2020-01-01 13:55:28 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2016-06-22 15:30:34 +05:30
|
|
|
require 'spec_helper'
|
|
|
|
|
2020-07-28 23:09:34 +05:30
|
|
|
RSpec.describe Gitlab::ImportExport::RepoSaver do
|
2016-06-22 15:30:34 +05:30
|
|
|
describe 'bundle a project Git repo' do
|
2020-04-08 14:13:33 +05:30
|
|
|
let_it_be(:user) { create(:user) }
|
2019-12-21 20:55:43 +05:30
|
|
|
let!(:project) { create(:project, :repository) }
|
2017-08-17 22:00:37 +05:30
|
|
|
let(:export_path) { "#{Dir.tmpdir}/project_tree_saver_spec" }
|
2018-03-27 19:54:05 +05:30
|
|
|
let(:shared) { project.import_export_shared }
|
2021-03-11 19:13:27 +05:30
|
|
|
let(:bundler) { described_class.new(exportable: project, shared: shared) }
|
2016-06-22 15:30:34 +05:30
|
|
|
|
|
|
|
before do
|
2018-11-18 11:00:15 +05:30
|
|
|
project.add_maintainer(user)
|
2020-01-01 13:55:28 +05:30
|
|
|
allow_next_instance_of(Gitlab::ImportExport) do |instance|
|
|
|
|
allow(instance).to receive(:storage_path).and_return(export_path)
|
|
|
|
end
|
2016-06-22 15:30:34 +05:30
|
|
|
end
|
|
|
|
|
|
|
|
after do
|
|
|
|
FileUtils.rm_rf(export_path)
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'bundles the repo successfully' do
|
|
|
|
expect(bundler.save).to be true
|
|
|
|
end
|
2019-12-21 20:55:43 +05:30
|
|
|
|
2021-03-11 19:13:27 +05:30
|
|
|
it 'creates the directory for the repository' do
|
|
|
|
allow(bundler).to receive(:bundle_full_path).and_return('/foo/bar/file.tar.gz')
|
|
|
|
|
|
|
|
expect(FileUtils).to receive(:mkdir_p).with('/foo/bar', anything)
|
|
|
|
|
|
|
|
bundler.save # rubocop:disable Rails/SaveBang
|
|
|
|
end
|
|
|
|
|
2019-12-21 20:55:43 +05:30
|
|
|
context 'when the repo is empty' do
|
|
|
|
let!(:project) { create(:project) }
|
|
|
|
|
|
|
|
it 'bundles the repo successfully' do
|
|
|
|
expect(bundler.save).to be true
|
|
|
|
end
|
|
|
|
end
|
2016-06-22 15:30:34 +05:30
|
|
|
end
|
|
|
|
end
|