UNPKG

bmw-js

Version:

BMW javascript REST client for the BMW i3 hackathon.

225 lines (199 loc) 8.86 kB
MojioClient = require '../lib/nodejs/MojioClient' Observer = require '../lib/models/Observer' App = require '../lib/models/App' Mojio = require '../lib/models/Mojio' Vehicle = require '../lib/models/Vehicle' Event = require '../lib/models/Event' config = require './config/mojio-config.coffee' mojio_client = new MojioClient(config) assert = require('assert') testdata = require('./data/mojio-test-data') should = require('should') count = [0,0] app1=null app2=null observer = null theevent = null vehicle = null describe 'Observer', -> before( (done) -> mojio_client.login(testdata.username, testdata.password, (error, result) -> (error==null).should.be.true done() ) ) # # test Observer it 'can Observe Newly Created Object', (done) -> app = new App().mock() mojio_client.post(app, (error, result) -> (error==null).should.be.true app = new App(result) console.log("created app") mojio_client.observe(app, null, (entity) -> entity.should.be.an.instanceOf(Object) console.log("Observed change seen.") mojio_client.unobserve(observer, app, null, null, (error, result) -> mojio_client.delete(app, (error, result) -> (error==null).should.be.true console.log("App deleted.") done() ) ) , (error, result) -> result.Status.should.equal("Approved") app.Description = "Changed" console.log("changing app...") result.should.be.an.instanceOf(Observer) observer = result mojio_client.put(app, (error, result) -> (error==null).should.be.true console.log("App changed.") ) ) ) # test Observer it 'can Observe Events of Vehicle', (done) -> mojio = new Mojio().mock() mojio_client.create(mojio, (error, result) -> (error==null).should.be.true mojio = new Mojio(result) vehicle = new Vehicle().mock() vehicle.MojioId = mojio.id() mojio_client.create(vehicle, (error, result) -> (error==null).should.be.true vehicle = new Vehicle(result) console.log("created vehicle") mojio_client.observe(Event, vehicle, (entity) -> entity.should.be.an.instanceOf(Object) console.log("Observed change seen.") if (entity.Type == 'Vehicle') console.log("Vehicle Changed") else console.log("Event Added to Vehicle.") mojio_client.unobserve(observer, Event, vehicle, null, (error, result) -> # result.should.be.an.instanceOf(Observer) mojio_client.delete(theevent, (error, result) -> (error==null).should.be.true console.log("Event deleted.") mojio_client.delete(vehicle, (error, result) -> (error==null).should.be.true console.log("Vehicle deleted.") done() ) ) ) , (error, result) -> #result.Status.should.equal("Approved") result.should.be.an.instanceOf(Observer) observer = result event = new Event().mock() event.Type = 'Event' event.EventType = 'TripEvent' event.VehicleId = vehicle.id() event.MojioId = mojio.id() event.Time = new Date() event.Location = { Lat: 49.8, Lng: 112.0} console.log("creating event") mojio_client.create(event, (error, result) -> theevent = new Event(result) (error==null).should.be.true console.log("event created.") ) ) ) ) it 'can Observe Object', (done) -> mojio_client.get(App, {}, (error, result) -> (error==null).should.be.true mojio_client.should.be.an.instanceOf(MojioClient) result.Objects.should.be.an.instanceOf(Array) instance.should.be.an.instanceOf(App) for instance in result.Objects app = new App(result.Objects[0]) console.log("retreived app") mojio_client.observe(app, null, (entity) -> entity.should.be.an.instanceOf(Object) console.log("Observed change seen.") mojio_client.unobserve(observer, app, null, null, (error, result) -> # result.should.be.an.instanceOf(Observer) done() ) , (error, result) -> app.Description = "Changed" console.log("changing app...") result.should.be.an.instanceOf(Observer) observer = result mojio_client.put(app, (error, result) -> (error==null).should.be.true console.log("App changed.") ) app.Description = "An Anonymous Application" mojio_client.put(app, (error, result) -> (error==null).should.be.true console.log("App changed back.") ) ) ) it 'can Observe 2 Objects Separately.', (done) -> app = new App().mock() doubleDone = (which) -> count[which]++ if (count[0] > 1 && count[1] > 1) done() else if (count[0] > 2 || count[1] > 2) true.should.be.false mojio_client.get(App, {}, (error, result) -> (error==null).should.be.true mojio_client.should.be.an.instanceOf(MojioClient) result.Objects.should.be.an.instanceOf(Array) instance.should.be.an.instanceOf(App) for instance in result.Objects app1 = new App(result.Objects[0]) app2 = new App(result.Objects[1]) mojio_client.observe(app2, null, # Callback for app1. (entity) -> entity.should.be.an.instanceOf(Object) console.log("observed change app1") entity._id.should.be.equal(app2._id) doubleDone(0) , (error, result) -> (error==null).should.be.true result.Status.should.equal("Approved") mojio_client.observe(app1, null, # Callback for app2. (entity) -> entity.should.be.an.instanceOf(Object) console.log("observed change app2") entity._id.should.be.equal(app1._id) doubleDone(1) , (error, result) -> (error==null).should.be.true result.Status.should.equal("Approved") app1.Description = "Changed1" mojio_client.put(app1, (error, result) -> (error==null).should.be.true console.log("updated app1") app1.Description = "Default" mojio_client.put(app1, (error, result) -> (error==null).should.be.true app2.Description = "Changed2" mojio_client.put(app2, (error, result) -> (error==null).should.be.true console.log("updated app2") app2.Description = "Anonymous Application" mojio_client.put(app2, (error, result) -> (error==null).should.be.true ) ) ) ) ) ) )