A happy beginning 🚪🔒

This commit is contained in:
Dana Woodman
2018-03-03 13:28:55 -08:00
commit 38c0bae242
21 changed files with 6001 additions and 0 deletions

24
src/boot.js Normal file
View File

@@ -0,0 +1,24 @@
const Door = require('./models/door')
Door.open()
// const server = require('./server')
// doorlock.updateCards()
// server()
// const HID = require('node-hid')
// choose driverType
// default is 'libusb' for Mac OSX & Windows
// default is 'hidraw', for Linux
// let type = null
// if (process.argv[2]) {
// type = process.argv[2]
// }
// disabled until prebuild gets multi-target, see issue node-hid#242
// console.log('driverType:', (type) ? type : 'default');
// HID.setDriverType( type );
// console.log('devices:', HID.devices())

7
src/models/access-log.js Normal file
View File

@@ -0,0 +1,7 @@
class AccessLog {
static log(member) {
console.log('LOGGING', member)
}
}
module.exports = AccessLog

11
src/models/display.js Normal file
View File

@@ -0,0 +1,11 @@
class Display {
static successMessage(msg) {
console.log('SUCCESS', msg)
}
static failureMessage(msg) {
console.log('FAILURE', msg)
}
}
module.exports = Display

67
src/models/door.js Normal file
View File

@@ -0,0 +1,67 @@
const tessel = require('tessel')
const constants = require('../../config/constants')
// const fs = require('fs')
// const path = require('path')
// const USB_MOUNT_PATH = '/mnt/sda1'
// const CARDS_PATH = path.join(USB_MOUNT_PATH, 'cards.json')
class Door {
static open() {
// TODO: trigger door opening...
tessel.led[2].on()
return new Promise(resolve => {
setTimeout(() => {
// TODO: trigger door closing
Door.close()
resolve()
}, constants.DOOR_OPEN_DELAY)
})
}
static close() {
console.log('CLOSE DOOR')
tessel.led[2].off()
}
}
module.exports = Door
// const doorlock = {}
// doorlock.updateCards = () => {
// console.log('fetch cards from API and update file')
// const cards = [{ card: '1234', name: 'John' }, { card: '5566', name: 'Jane' }]
// doorlock.writeCards(cards)
// }
// doorlock.readCards = cb => {
// fs.readFile(CARDS_PATH, function(err, data) {
// if (err) throw err
// console.log('data:', data.toString())
// cb(JSON.parse(data))
// })
// }
// doorlock.writeCards = cards => {
// const text = JSON.stringify(cards)
// fs.writeFile(CARDS_PATH, text, err => {
// if (err) throw err
// console.log('wrote:', cards)
// })
// }
// doorlock.open = () => {
// console.log('open!')
// tessel.led[2].on()
// setTimeout(() => tessel.led[2].off(), 3000)
// }
// doorlock.close = () => {
// console.log('close!')
// tessel.led[3].on()
// setTimeout(() => tessel.led[3].off(), 3000)
// }
// module.exports = doorlock

24
src/models/door.test.js Normal file
View File

@@ -0,0 +1,24 @@
const Door = require('./door')
const tessel = require('tessel')
jest.mock('tessel')
describe('models/door', () => {
describe('.open', () => {
test('opens door', () => {
jest.spyOn(Door, 'close')
// Door.close = jest.fn()
return Door.open().then(() => {
expect(tessel.led[2].on).toBeCalled()
expect(Door.close).toBeCalled()
})
})
})
describe('.close', () => {
test('closes door', () => {
Door.close()
expect(tessel.led[2].off).toBeCalled()
})
})
})