debian-mirror-gitlab/spec/services/files/create_service_spec.rb

95 lines
2.4 KiB
Ruby
Raw Normal View History

2019-07-31 22:56:46 +05:30
# frozen_string_literal: true
2018-03-17 18:26:18 +05:30
require "spec_helper"
2023-05-27 22:25:52 +05:30
RSpec.describe Files::CreateService, feature_category: :source_code_management do
2018-03-17 18:26:18 +05:30
let(:project) { create(:project, :repository) }
let(:repository) { project.repository }
2018-12-05 23:21:45 +05:30
let(:user) { create(:user, :commit_email) }
2018-03-17 18:26:18 +05:30
let(:file_content) { 'Test file content' }
let(:branch_name) { project.default_branch }
let(:start_branch) { branch_name }
let(:commit_params) do
{
file_path: file_path,
commit_message: "Update File",
file_content: file_content,
file_content_encoding: "text",
start_project: project,
start_branch: start_branch,
branch_name: branch_name
}
end
2018-12-05 23:21:45 +05:30
let(:commit) { repository.head_commit }
2018-03-17 18:26:18 +05:30
subject { described_class.new(project, user, commit_params) }
before do
2018-11-18 11:00:15 +05:30
project.add_maintainer(user)
2018-03-17 18:26:18 +05:30
end
describe "#execute" do
context 'when file matches LFS filter' do
let(:file_path) { 'test_file.lfs' }
let(:branch_name) { 'lfs' }
context 'with LFS disabled' do
it 'skips gitattributes check' do
expect(repository).not_to receive(:attributes_at)
subject.execute
end
it "doesn't create LFS pointers" do
subject.execute
blob = repository.blob_at('lfs', file_path)
2018-05-09 12:01:36 +05:30
expect(blob.data).not_to start_with(Gitlab::Git::LfsPointerFile::VERSION_LINE)
2018-03-17 18:26:18 +05:30
expect(blob.data).to eq(file_content)
end
end
context 'with LFS enabled' do
before do
allow(project).to receive(:lfs_enabled?).and_return(true)
end
it 'creates an LFS pointer' do
subject.execute
blob = repository.blob_at('lfs', file_path)
2018-05-09 12:01:36 +05:30
expect(blob.data).to start_with(Gitlab::Git::LfsPointerFile::VERSION_LINE)
2018-03-17 18:26:18 +05:30
end
it "creates an LfsObject with the file's content" do
subject.execute
expect(LfsObject.last.file.read).to eq file_content
end
it 'links the LfsObject to the project' do
expect do
subject.execute
end.to change { project.lfs_objects.count }.by(1)
end
end
end
end
2018-12-05 23:21:45 +05:30
context 'commit attribute' do
let(:file_path) { 'test-commit-attributes.txt' }
it 'uses the commit email' do
subject.execute
expect(user.commit_email).not_to eq(user.email)
expect(commit.author_email).to eq(user.commit_email)
expect(commit.committer_email).to eq(user.commit_email)
end
end
2018-03-17 18:26:18 +05:30
end