Skip to content

Commit

Permalink
feat(to-promise): added toPromise function
Browse files Browse the repository at this point in the history
  • Loading branch information
dggluz committed Aug 14, 2018
1 parent 56344e7 commit 74c8978
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 0 deletions.
32 changes: 32 additions & 0 deletions src/to-promise.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { toPromise } from './to-promise'
import { Task } from '@acamica/task'

describe('toPromise', () => {
it('toPromise works with resolved Tasks', () => {
// GIVEN: a Task resolved with a value
const value = 9
const task = Task.resolve(value)

// WHEN: calling `toPromise` with that Task
const promise = toPromise(task)

// THEN: a promise is returned
expect(promise).toBeInstanceOf(Promise)
// ...and it's resolved with the Tasks resolution value
return expect(promise).resolves.toBe(value)
})

it('toPromise works with rejected Tasks', () => {
// GIVEN: a Task reject with an error
const error = new Error('Boo!')
const task = Task.reject(error)

// WHEN: calling `toPromise` with that Task
const promise = toPromise(task)

// THEN: a promise is returned
expect(promise).toBeInstanceOf(Promise)
// ...and it's rejecte with the Tasks resolution value
return expect(promise).rejects.toBe(error)
})
})
5 changes: 5 additions & 0 deletions src/to-promise.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { Task } from '@acamica/task'

export function toPromise<T>(task: Task<T, any>) {
return new Promise<T>((resolve, reject) => task.fork(reject, resolve))
}
1 change: 1 addition & 0 deletions src/ts-task-utils.ts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export * from './case-error'
export * from './to-promise'

0 comments on commit 74c8978

Please sign in to comment.