ぼざクリタグ広場 https://hub.nizika.monster
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

63 lines
1.8 KiB

  1. require 'rails_helper'
  2. RSpec.describe 'Wiki title collision', type: :request do
  3. let!(:user) { create_member_user! }
  4. def auth_headers user
  5. { 'X-Transfer-Code' => user.inheritance_code }
  6. end
  7. def create_wiki_page title:, body:
  8. Wiki::Commit.create_content!(
  9. tag_name: TagName.create!(name: title),
  10. body:,
  11. created_by_user: user,
  12. message: 'init')
  13. end
  14. it 'returns 422 when renaming wiki title to existing title' do
  15. source = create_wiki_page(title: 'wiki_collision_source', body: 'source body')
  16. create_wiki_page(title: 'wiki_collision_target', body: 'target body')
  17. source_revision_count = source.wiki_revisions.count
  18. source_version_count = source.wiki_versions.count
  19. old_title = source.title
  20. old_body = source.body
  21. put "/wiki/#{ source.id }",
  22. params: {
  23. title: 'wiki_collision_target',
  24. body: 'new body',
  25. message: 'rename collision',
  26. base_revision_id: source.current_revision.id,
  27. },
  28. headers: auth_headers(user)
  29. expect(response).to have_http_status(:unprocessable_entity)
  30. source.reload
  31. expect(source.title).to eq(old_title)
  32. expect(source.body).to eq(old_body)
  33. expect(source.wiki_revisions.count).to eq(source_revision_count)
  34. expect(source.wiki_versions.count).to eq(source_version_count)
  35. end
  36. it 'returns 422 when creating wiki with existing title' do
  37. create_wiki_page(title: 'wiki_collision_create', body: 'already exists')
  38. expect {
  39. post '/wiki',
  40. params: {
  41. title: 'wiki_collision_create',
  42. body: 'new body',
  43. message: 'duplicate create',
  44. },
  45. headers: auth_headers(user)
  46. }
  47. .not_to change(WikiPage, :count)
  48. expect(response).to have_http_status(:unprocessable_entity)
  49. end
  50. end