0ff7fdf78a
#317 #317 #317 #317 #317 #317 Co-authored-by: miteruzo <miteruzo@naver.com> Reviewed-on: #333
63 lines
1.8 KiB
Ruby
63 lines
1.8 KiB
Ruby
require 'rails_helper'
|
|
|
|
RSpec.describe 'Wiki title collision', type: :request do
|
|
let!(:user) { create_member_user! }
|
|
|
|
def auth_headers user
|
|
{ 'X-Transfer-Code' => user.inheritance_code }
|
|
end
|
|
|
|
def create_wiki_page title:, body:
|
|
Wiki::Commit.create_content!(
|
|
tag_name: TagName.create!(name: title),
|
|
body:,
|
|
created_by_user: user,
|
|
message: 'init')
|
|
end
|
|
|
|
it 'returns 422 when renaming wiki title to existing title' do
|
|
source = create_wiki_page(title: 'wiki_collision_source', body: 'source body')
|
|
create_wiki_page(title: 'wiki_collision_target', body: 'target body')
|
|
|
|
source_revision_count = source.wiki_revisions.count
|
|
source_version_count = source.wiki_versions.count
|
|
old_title = source.title
|
|
old_body = source.body
|
|
|
|
put "/wiki/#{ source.id }",
|
|
params: {
|
|
title: 'wiki_collision_target',
|
|
body: 'new body',
|
|
message: 'rename collision',
|
|
base_revision_id: source.current_revision.id,
|
|
},
|
|
headers: auth_headers(user)
|
|
|
|
expect(response).to have_http_status(:unprocessable_entity)
|
|
|
|
source.reload
|
|
|
|
expect(source.title).to eq(old_title)
|
|
expect(source.body).to eq(old_body)
|
|
expect(source.wiki_revisions.count).to eq(source_revision_count)
|
|
expect(source.wiki_versions.count).to eq(source_version_count)
|
|
end
|
|
|
|
it 'returns 422 when creating wiki with existing title' do
|
|
create_wiki_page(title: 'wiki_collision_create', body: 'already exists')
|
|
|
|
expect {
|
|
post '/wiki',
|
|
params: {
|
|
title: 'wiki_collision_create',
|
|
body: 'new body',
|
|
message: 'duplicate create',
|
|
},
|
|
headers: auth_headers(user)
|
|
}
|
|
.not_to change(WikiPage, :count)
|
|
|
|
expect(response).to have_http_status(:unprocessable_entity)
|
|
end
|
|
end
|