evrythng
Version:
Official Javascript SDK for the EVRYTHNG API.
39 lines (32 loc) • 1.21 kB
JavaScript
const { expect } = require('chai')
const { getScope, mockApi } = require('../util')
module.exports = (scopeType, url) => {
describe('streamPages', () => {
let scope, api
before(async () => {
scope = getScope(scopeType)
api = mockApi(url)
})
it('should stream pages of Thngs', (done) => {
const linkUrl = encodeURIComponent(url)
api.get('/thngs').reply(200, [{ name: 'Thng 1' }, { name: 'Thng 2' }], {
link: `<${linkUrl}%2Fthngs%3FperPage%3D30%26sortOrder%3DDESCENDING%26nextPageToken%3DU7hXyw5DVQ8QT7fYsbyEpdAp>; rel="next"`
})
api
.get('/thngs?perPage=30&sortOrder=DESCENDING&nextPageToken=U7hXyw5DVQ8QT7fYsbyEpdAp')
.reply(200, [{ name: 'Thng 3' }, { name: 'Thng 4' }], {
link: `<${linkUrl}%2Fthngs%3FperPage%3D2%26sortOrder%3DDESCENDING%26nextPageToken%3DUprntQaysgRph8aRwFTAKPtn>; rel="next"`
})
const eachPageCb = (page, totalSoFar) => {
expect(page.length).to.equal(2)
const [item] = page
expect(item.name).to.be.a('string')
if (totalSoFar === 2) {
done()
return true
}
}
scope.thng().streamPages(eachPageCb)
})
})
}