79 lines
2.8 KiB
Ruby
79 lines
2.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.shared_examples 'model with wiki' do
|
|
describe '#create_wiki' do
|
|
it 'returns true if the wiki repository already exists' do
|
|
expect(container.wiki_repository_exists?).to be(true)
|
|
expect(container.create_wiki).to be(true)
|
|
end
|
|
|
|
it 'returns true if the wiki repository was created' do
|
|
expect(container_without_wiki.wiki_repository_exists?).to be(false)
|
|
expect(container_without_wiki.create_wiki).to be(true)
|
|
expect(container_without_wiki.wiki_repository_exists?).to be(true)
|
|
end
|
|
|
|
context 'when the repository cannot be created' do
|
|
before do
|
|
expect(container.wiki).to receive(:wiki) { raise Wiki::CouldNotCreateWikiError }
|
|
end
|
|
|
|
it 'returns false and adds a validation error' do
|
|
expect(container.create_wiki).to be(false)
|
|
expect(container.errors[:base]).to contain_exactly('Failed to create wiki')
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#wiki_repository_exists?' do
|
|
it 'returns true when the wiki repository exists' do
|
|
expect(container.wiki_repository_exists?).to eq(true)
|
|
end
|
|
|
|
it 'returns false when the wiki repository does not exist' do
|
|
expect(container_without_wiki.wiki_repository_exists?).to eq(false)
|
|
end
|
|
end
|
|
|
|
describe 'wiki path conflict' do
|
|
context 'when the new path has been used by the wiki of other Project' do
|
|
it 'has an error on the name attribute' do
|
|
create(:project, namespace: container.parent, path: 'existing')
|
|
container.path = 'existing.wiki'
|
|
|
|
expect(container).not_to be_valid
|
|
expect(container.errors[:name].first).to eq(_('has already been taken'))
|
|
end
|
|
end
|
|
|
|
context 'when the new wiki path has been used by the path of other Project' do
|
|
it 'has an error on the name attribute' do
|
|
create(:project, namespace: container.parent, path: 'existing.wiki')
|
|
container.path = 'existing'
|
|
|
|
expect(container).not_to be_valid
|
|
expect(container.errors[:name].first).to eq(_('has already been taken'))
|
|
end
|
|
end
|
|
|
|
context 'when the new path has been used by the wiki of other Group' do
|
|
it 'has an error on the name attribute' do
|
|
create(:group, parent: container.parent, path: 'existing')
|
|
container.path = 'existing.wiki'
|
|
|
|
expect(container).not_to be_valid
|
|
expect(container.errors[:name].first).to eq(_('has already been taken'))
|
|
end
|
|
end
|
|
|
|
context 'when the new wiki path has been used by the path of other Group' do
|
|
it 'has an error on the name attribute' do
|
|
create(:group, parent: container.parent, path: 'existing.wiki')
|
|
container.path = 'existing'
|
|
|
|
expect(container).not_to be_valid
|
|
expect(container.errors[:name].first).to eq(_('has already been taken'))
|
|
end
|
|
end
|
|
end
|
|
end
|