Skip to content

Commit

Permalink
answers
Browse files Browse the repository at this point in the history
  • Loading branch information
timcash committed Apr 25, 2016
1 parent e862de9 commit 87fae23
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 25 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"scripts": {
"test": "ava --timeout=3s",
"watch-test": "npm test -- --watch",
"transpile": "./node_modules/babel-cli/bin/babel.js --source-maps true src --out-dir lib",
"transpile": "./node_modules/babel-cli/bin/babel.js --source-maps inline src --out-dir lib",
"watch-transpile": "npm run transpile -- --watch"
},
"author": "Tim Cash",
Expand Down
18 changes: 18 additions & 0 deletions src/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,24 @@ export const userDB = {
'frankiestein': {name: 'frankie', color: 'grey', sides: 9}
}

export function getUserHandleP (token) {
return new Promise((resolve, reject) => {
getUserHandle(token, (err, res) => {
if (err) reject(err)
resolve(res)
})
})
}

export function getUserDataP (handle) {
return new Promise((resolve, reject) => {
getUserData(handle, (err, res) => {
if (err) reject(err)
resolve(res)
})
})
}

export function getUserHandle (token, cb) {
setTimeout(() => {
if (tokenDB[token]) {
Expand Down
29 changes: 20 additions & 9 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,29 @@
import R from 'ramda'
// import R from 'ramda'
import * as api from './api'

export function callbacker () {
return 0
export function callbacker (token, cb) {
api.getUserHandle(token, (err, data) => {
if (err) throw new Error(err)
api.getUserData(data.handle, (err, data) => {
if (err) throw new Error(err)
cb(null, data)
})
})
}

export function promiser () {
return 0
export function promiser (token) {
return api.getUserHandleP(token)
.then(result => api.getUserDataP(result.handle))
}

export function * yielder () {
return 0
export function * yielder (token) {
let r1 = yield api.getUserHandleP(token)
let r2 = yield api.getUserDataP(r1.handle)
return r2
}

export async function asyncer () {
return 0
export async function asyncer (token) {
let r1 = await api.getUserHandleP(token)
let r2 = await api.getUserDataP(r1.handle)
return r2
}
36 changes: 21 additions & 15 deletions test.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,29 @@ test.cb('callbacker', t => {
let cb = (err, res) => {
if (err) throw new Error(err)
t.deepEqual(res, expected)
t.end()
}

wshop.callbacker(token, cb)
})

// test('callbacker', async t => {
// let r = await wshop.asyncer()
// t.deepEqual(r, [0, 1, 2, 3, 4])
// })
//
// test('bar', async t => {
// const bar = Promise.resolve('bar')
// t.is(await bar, 'bar')
// })
//
// test('bilbo', t => {
// let a = 3
// t.is(a, 3)
// t.pass()
// })
test('promiser', t => {
let token = 'token2'
let expected = api.userDB['carlmemaybe']
return wshop.promiser(token)
.then(res => t.deepEqual(res, expected))
})

test('bar', function * (t) {
let token = 'token3'
let expected = api.userDB['meghanbacon']
let res = yield wshop.yielder(token)
t.deepEqual(res, expected)
})

test('bilbo', async t => {
let token = 'token4'
let expected = api.userDB['frankiestein']
let res = await wshop.asyncer(token)
t.deepEqual(res, expected)
})

0 comments on commit 87fae23

Please sign in to comment.