structure-event-collector
Version:
Collect arbitrary events
170 lines (113 loc) • 3.27 kB
JavaScript
import express from 'express'
import Plugin from '../../src/index'
import request from 'supertest-as-promised'
const props = {
Controller: class RootController {
constructor(options = {}) {
this.name = options.name
}
},
Model: class RootModel {
create(pkg = {}) {
return Promise.resolve(pkg)
}
deleteById(id) {
return Promise.resolve({
id,
deleted: true
})
}
getAll() {
return Promise.resolve([])
}
getById(id) {
return Promise.resolve({id})
}
updateById(id, pkg = {}) {
return Promise.resolve(Object.assign(pkg, {id}))
}
}
}
describe.skip('Plugin', function() {
it('should initialize', function() {
const plugin = new Plugin(props)
expect(plugin.routeName).to.equal('events')
})
it('should create an event', async function() {
const plugin = new Plugin(props)
const route = `/${plugin.routeName}`
const server = express()
server.use(route, plugin.routes)
const res = await request(server)
.post('/events')
.send({
label: 'click'
})
const event = res.body.pkg
expect(event).to.be.an('object')
})
it('should get an event by Id', async function() {
const plugin = new Plugin(props)
const route = `/${plugin.routeName}`
const server = express()
server.use(route, plugin.routes)
const res = await request(server)
.post('/events')
.send({
label: 'click'
})
const event = res.body.pkg
const res2 = await request(server).get(`/events/${event.id}`)
const event2 = res2.body.pkg
expect(event2).to.be.an('object')
})
it('should get all events', async function() {
const plugin = new Plugin(props)
const route = `/${plugin.routeName}`
const server = express()
server.use(route, plugin.routes)
const res = await request(server).get('/events')
const events = res.body.pkg.events
expect(events).to.be.an('array')
})
it('should update an event by Id', async function() {
const plugin = new Plugin(props)
const route = `/${plugin.routeName}`
const server = express()
server.use(route, plugin.routes)
const res = await request(server)
.post('/events')
.send({
label: 'click'
})
const event = res.body.pkg
const res2 = await request(server)
.patch(`/events/${event.id}`)
.send({
label: 'touch'
})
const res3 = await request(server).get(`/events/${event.id}`)
const event2 = res3.body.pkg
expect(event2).to.be.an('object')
})
it('should delete an event by Id', async function() {
const plugin = new Plugin(props)
const route = `/${plugin.routeName}`
const server = express()
server.use(route, plugin.routes)
const res = await request(server)
.post('/events')
.send({
label: 'click'
})
const event = res.body.pkg
const res2 = await request(server)
.patch(`/events/${event.id}`)
.send({
label: 'touch'
})
const res3 = await request(server).delete(`/events/${event.id}`)
const event2 = res3.body.pkg
expect(event2.deleted).to.be.true
})
})