Sha256: c1e5d7b537858e80ccccc55819d6f6fccad23a9c09926d085cc3243841d6579c

Contents?: true

Size: 1.28 KB

Versions: 2

Compression:

Stored size: 1.28 KB

Contents

describe PlayTime::Runner do
  describe '.run!' do
    let(:response) { double(:response, data: {success: true}) }
    let(:client) { double(:client, execute: response) }
    let(:options) { {foo: :bar} }

    subject { PlayTime::Runner.run!(client, options) }

    it 'executes an api' do
      subject

      expect(client).to have_received(:execute).with(options)
    end

    context 'when success' do
      it 'returns a response' do
        expect(subject).to eq response
      end
    end

    context 'when failure' do
      context 'when no response' do
        let(:response) { nil }

        it 'raises an error' do
          expect {
            subject
          }.to raise_error PlayTime::Runner::IOError
        end
      end

      context 'when data is nil' do
        let(:response) { double(:response, data: nil) }

        it 'raises an error' do
          expect {
            subject
          }.to raise_error PlayTime::Runner::IOError
        end
      end

      context 'when data has an error' do
        let(:response) { double(:response, data: {'error' => 'Something went wrong'}) }

        it 'raises an error' do
          expect {
            subject
          }.to raise_error PlayTime::Runner::ResponseError, 'Something went wrong'
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
play_time-0.0.2 spec/runner_spec.rb
play_time-0.0.1 spec/runner_spec.rb