ぼざクリタグ広場 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.
 
 
 
 

48 lines
1.5 KiB

  1. require 'rails_helper'
  2. RSpec.describe 'error responses', type: :request do
  3. describe 'manual input errors' do
  4. it 'returns a stable errors array for bad requests' do
  5. user = create(:user)
  6. sign_in_as(user)
  7. put "/users/#{ user.id }", params: { name: ' ' }
  8. expect(response).to have_http_status(:bad_request)
  9. expect(json.fetch('errors')).to contain_exactly(
  10. include('code' => 'bad_request',
  11. 'field' => 'name',
  12. 'message' => be_present))
  13. end
  14. it 'returns a stable errors array for unprocessable requests' do
  15. member = create(:user, :member)
  16. tag = create(:tag, :general, name: 'error_response_tag')
  17. sign_in_as(member)
  18. patch "/tags/#{ tag.id }", params: { category: 'nico' }
  19. expect(response).to have_http_status(:unprocessable_entity)
  20. expect(json.fetch('errors')).to contain_exactly(
  21. include('code' => 'invalid',
  22. 'field' => 'category',
  23. 'message' => be_present))
  24. end
  25. end
  26. describe 'model validation errors' do
  27. it 'returns field, code, and message for model errors' do
  28. user = create(:user)
  29. sign_in_as(user)
  30. put "/users/#{ user.id }", params: { name: 'a' * 256 }
  31. expect(response).to have_http_status(:unprocessable_entity)
  32. expect(json.fetch('errors')).to include(
  33. include('code' => 'too_long',
  34. 'field' => 'name',
  35. 'message' => be_present))
  36. end
  37. end
  38. end