diff options
Diffstat (limited to 'spec/services/wikis/create_attachment_service_spec.rb')
-rw-r--r-- | spec/services/wikis/create_attachment_service_spec.rb | 67 |
1 files changed, 7 insertions, 60 deletions
diff --git a/spec/services/wikis/create_attachment_service_spec.rb b/spec/services/wikis/create_attachment_service_spec.rb index 7a73a0a555f..4adfaa24874 100644 --- a/spec/services/wikis/create_attachment_service_spec.rb +++ b/spec/services/wikis/create_attachment_service_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' describe Wikis::CreateAttachmentService do - let(:project) { create(:project, :wiki_repo) } + let(:container) { create(:project, :wiki_repo) } let(:user) { create(:user) } let(:file_name) { 'filename.txt' } let(:file_path_regex) { %r{#{described_class::ATTACHMENT_PATH}/\h{32}/#{file_name}} } @@ -15,25 +15,21 @@ describe Wikis::CreateAttachmentService do end let(:opts) { file_opts } - subject(:service) { described_class.new(project, user, opts) } + subject(:service) { described_class.new(container: container, current_user: user, params: opts) } before do - project.add_developer(user) + container.add_developer(user) end describe 'initialization' do context 'author commit info' do it 'does not raise error if user is nil' do - service = described_class.new(project, nil, opts) + service = described_class.new(container: container, current_user: nil, params: opts) expect(service.instance_variable_get(:@author_email)).to be_nil expect(service.instance_variable_get(:@author_name)).to be_nil end - it 'fills file_path from the repository uploads folder' do - expect(service.instance_variable_get(:@file_path)).to match(file_path_regex) - end - context 'when no author info provided' do it 'fills author_email and author_name from current_user info' do expect(service.instance_variable_get(:@author_email)).to eq user.email @@ -73,7 +69,7 @@ describe Wikis::CreateAttachmentService do context 'branch name' do context 'when no branch provided' do it 'sets the branch from the wiki default_branch' do - expect(service.instance_variable_get(:@branch_name)).to eq project.wiki.default_branch + expect(service.instance_variable_get(:@branch_name)).to eq container.wiki.default_branch end end @@ -151,7 +147,7 @@ describe Wikis::CreateAttachmentService do context 'when user' do shared_examples 'wiki attachment user validations' do it 'returns error' do - result = described_class.new(project, user2, opts).execute + result = described_class.new(container: container, current_user: user2, params: opts).execute expect(result[:status]).to eq :error expect(result[:message]).to eq 'You are not allowed to push to the wiki' @@ -172,54 +168,5 @@ describe Wikis::CreateAttachmentService do end end - describe '#execute' do - let(:wiki) { project.wiki } - - subject(:service_execute) { service.execute[:result] } - - context 'creates branch if it does not exists' do - let(:branch_name) { 'new_branch' } - let(:opts) { file_opts.merge(branch_name: branch_name) } - - it do - expect(wiki.repository.branches).to be_empty - expect { service.execute }.to change { wiki.repository.branches.count }.by(1) - expect(wiki.repository.branches.first.name).to eq branch_name - end - end - - it 'adds file to the repository' do - expect(wiki.repository.ls_files('HEAD')).to be_empty - - service.execute - - files = wiki.repository.ls_files('HEAD') - expect(files.count).to eq 1 - expect(files.first).to match(file_path_regex) - end - - context 'returns' do - before do - allow(SecureRandom).to receive(:hex).and_return('fixed_hex') - - service_execute - end - - it 'returns the file name' do - expect(service_execute[:file_name]).to eq file_name - end - - it 'returns the path where file was stored' do - expect(service_execute[:file_path]).to eq 'uploads/fixed_hex/filename.txt' - end - - it 'returns the branch where the file was pushed' do - expect(service_execute[:branch]).to eq wiki.default_branch - end - - it 'returns the commit id' do - expect(service_execute[:commit]).not_to be_empty - end - end - end + it_behaves_like 'Wikis::CreateAttachmentService#execute', :project end |