client_spec.rb 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. # frozen_string_literal: true
  2. require 'rails_helper'
  3. RSpec.describe PKParse::Client do
  4. let(:client) { described_class.new }
  5. let(:response) { '[{"pokedex_number":1}]' }
  6. before { allow(RestClient).to receive(:post).and_return(response) }
  7. describe '#parse_files' do
  8. subject(:parse) { client.parse_files(files) }
  9. let!(:files) { [] }
  10. context 'when succeeds as normal' do
  11. specify { expect(parse.pokemon.size).to eq 1 }
  12. end
  13. context 'when fails' do
  14. context 'when getting a response' do
  15. before do
  16. allow(RestClient)
  17. .to receive(:post).and_raise(RestClient::Exception.new)
  18. end
  19. it 'returns a more specific error' do
  20. expect { parse }.to raise_error(PKParse::ResponseError)
  21. end
  22. end
  23. context 'when processing a response' do
  24. before do
  25. allow(JSON)
  26. .to receive(:parse).and_raise(JSON::ParserError.new)
  27. end
  28. it 'returns a more specific error' do
  29. expect { parse }.to raise_error(PKParse::Error)
  30. end
  31. end
  32. end
  33. end
  34. describe '#parse_base64' do
  35. subject(:parse_base64) { client.parse_base64(base64_strings) }
  36. let!(:base64_strings) { ['dead'] }
  37. context 'when succeeds as normal' do
  38. specify { expect(parse_base64.pokemon.size).to eq 1 }
  39. end
  40. context 'when fails' do
  41. context 'when getting a response' do
  42. before do
  43. allow(RestClient)
  44. .to receive(:post).and_raise(RestClient::Exception.new)
  45. end
  46. it 'returns a more specific error' do
  47. expect { parse_base64 }.to raise_error(PKParse::ResponseError)
  48. end
  49. end
  50. context 'when processing a response' do
  51. before do
  52. allow(JSON)
  53. .to receive(:parse).and_raise(JSON::ParserError.new)
  54. end
  55. it 'returns a more specific error' do
  56. expect { parse_base64 }.to raise_error(PKParse::Error)
  57. end
  58. end
  59. end
  60. end
  61. end