clever
Version:
Node.js library for interacting with the Clever API
58 lines (52 loc) • 2.17 kB
text/coffeescript
async = require 'async'
assert = require 'assert'
_ = require 'underscore'
nock = require 'nock'
Clever = require "#{__dirname}/../index"
describe 'get/set properties', ->
before -> @clever = Clever 'DEMO_KEY', 'https://api.clever.com'
after -> nock.cleanAll()
it 'can hit second-level for properties', (done) ->
nock('https://api.clever.com:443')
.get('/v1.1/districts?where=%7B%22id%22%3A%224fd43cc56d11340000000005%22%7D&limit=1').reply(200,
data: [
data:
name: 'Test District'
id: '4fd43cc56d11340000000005'
uri: '/v1.1/districts/4fd43cc56d11340000000005'
]
).get('/v1.1/districts/4fd43cc56d11340000000005/properties').reply(200,
data:
some: { really: { nested: 'property' } }
).patch('/v1.1/districts/4fd43cc56d11340000000005/properties', { test: 'data' }).reply(200,
data:
some: { really: { nested: 'property' } }
test: 'data'
)
district = null
async.waterfall [
(cb_wf) =>
@clever.District.findById '4fd43cc56d11340000000005', cb_wf
(_district, cb_wf) =>
district = _district
assert (district instanceof @clever.District), "Incorrect type on district object"
assert.equal district.get('name'), 'Test District'
district.properties cb_wf
(properties, cb_wf) ->
assert.deepEqual { some: { really: { nested: 'property' } } }, properties
district.properties { test: 'data' }, cb_wf
(properties, cb_wf) ->
assert.deepEqual { test: 'data', some: { really: { nested: 'property' } } }, properties
cb_wf()
], done
it 'checks response codes on properties', (done) ->
scope = nock('https://api.clever.com')
.get('/v1.1/districts/1212121/properties')
.reply(504, {error: 'trolling'})
district = new @clever.District { name: 'Test', id: '1212121' }
district.properties (err, props) ->
assert not props, "found properties"
assert err, "didn't find an error"
assert.equal err.message, "received statusCode 504 instead of 200"
scope.done()
done()