%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/opti/workflow/node_modules/aws-sdk/test/
Upload File :
Create Path :
Current File : /home/opti/workflow/node_modules/aws-sdk/test/response.spec.coffee

helpers = require('./helpers')
EventEmitter = require('events').EventEmitter
AWS = helpers.AWS

describe 'AWS.Response', ->
  service = null; response = null

  beforeEach ->
    service = new AWS.Service apiConfig: new AWS.Model.Api operations: op: {}
    response = new AWS.Response(service.makeRequest('op'))

  makePageable = ->
    service.api.paginators.op = new AWS.Model.Paginator 'op',
      limit_key: 'Limit'
      input_token: 'Marker'
      output_token: 'Marker'
      result_key: 'Result'

  fill = (err, data, pageable) ->
    makePageable() if pageable
    response.error = err
    response.data = data

  describe 'hasNextPage', ->
    it 'returns undefined if the request is not pageable', ->
      fill(null, Marker: 'next_page')
      expect(response.hasNextPage()).toEqual(undefined)

    it 'returns false if there is no marker in the response', ->
      fill(null, {}, true)
      expect(response.hasNextPage()).toEqual(false)

    it 'returns false if the response returned an error', ->
      fill(new Error, null, true)
      expect(response.hasNextPage()).toEqual(false)

    it 'returns true if there is a marker in the response', ->
      fill(null, Marker: 'next_page', true)
      expect(response.hasNextPage()).toEqual(true)

  describe 'nextPage', ->
    it 'throws an exception if the operation has no pagination information', ->
      service.api.pagination = {}
      expect(-> response.nextPage()).toThrow('No pagination configuration for op')

    it 'returns null if there are no more pages', ->
      fill(null, {}, true)
      expect(response.nextPage()).toEqual(null)

    it 'returns a request object with the next page marker filled in params', ->
      fill(null, Marker: 'next_page', true)
      req = response.nextPage()
      expect(req.params.Marker).toEqual('next_page')
      expect(req.operation).toEqual(response.request.operation)

    it 'throws error if response returned an error and there is no callback', ->
      fill(new Error('error!'), null, true)
      expect(-> response.nextPage()).toThrow('error!')

    it 'sends the request if passed with a callback', ->
      err = null; data = null
      helpers.mockHttpResponse 200, {}, ['']
      fill(null, Marker: 'next_page', true)
      runs ->
        response.nextPage (e, d) -> err = e; data = d
      waitsFor -> err || data
      runs ->
        expect(err).toEqual(null)
        expect(data).toEqual({})

    it 'passes null to callback if there are no more pages', ->
      fill(null, {}, true)
      response.nextPage (err, data) ->
        expect(err).toEqual(null)
        expect(data).toEqual(null)

    it 'passes error through if original response returned an error', ->
      fill('error!', null, true)
      response.nextPage (err, data) ->
        expect(err).toEqual('error!')
        expect(data).toEqual(null)

Zerion Mini Shell 1.0