%PDF- %PDF-
| Direktori : /home/opti/workflow/node_modules/aws-sdk/test/ |
| 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)