assertron 7.1.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/README.md +56 -23
  2. package/{dist-es2015 → cjs}/assert-order/AssertOrder.d.ts +3 -2
  3. package/cjs/assert-order/AssertOrder.d.ts.map +1 -0
  4. package/cjs/assert-order/AssertOrder.js +148 -0
  5. package/cjs/assert-order/InvalidOrder.d.ts +10 -0
  6. package/cjs/assert-order/InvalidOrder.d.ts.map +1 -0
  7. package/cjs/assert-order/InvalidOrder.js +44 -0
  8. package/{dist-es5 → cjs}/assert-order/StateMachine.d.ts +4 -5
  9. package/cjs/assert-order/StateMachine.d.ts.map +1 -0
  10. package/cjs/assert-order/StateMachine.js +111 -0
  11. package/{dist-es2015 → cjs}/assert-order/index.d.ts +1 -0
  12. package/cjs/assert-order/index.d.ts.map +1 -0
  13. package/cjs/assert-order/index.js +6 -0
  14. package/{dist-es2015 → cjs}/assert-order/interfaces.d.ts +1 -0
  15. package/cjs/assert-order/interfaces.d.ts.map +1 -0
  16. package/cjs/assert-order/interfaces.js +3 -0
  17. package/{dist-es2015 → cjs}/assertron/assertron.d.ts +1 -0
  18. package/cjs/assertron/assertron.d.ts.map +1 -0
  19. package/cjs/assertron/assertron.js +32 -0
  20. package/{dist-es2015 → cjs}/assertron/falsy.d.ts +1 -0
  21. package/cjs/assertron/falsy.d.ts.map +1 -0
  22. package/cjs/assertron/falsy.js +11 -0
  23. package/cjs/assertron/index.d.ts +2 -0
  24. package/cjs/assertron/index.d.ts.map +1 -0
  25. package/cjs/assertron/index.js +5 -0
  26. package/{dist-es2015 → cjs}/assertron/pathEqual.d.ts +1 -0
  27. package/cjs/assertron/pathEqual.d.ts.map +1 -0
  28. package/cjs/assertron/pathEqual.js +13 -0
  29. package/{dist-es2015 → cjs}/assertron/rejects.d.ts +1 -0
  30. package/cjs/assertron/rejects.d.ts.map +1 -0
  31. package/cjs/assertron/rejects.js +14 -0
  32. package/{dist-es2015 → cjs}/assertron/repeat.d.ts +9 -0
  33. package/cjs/assertron/repeat.d.ts.map +1 -0
  34. package/cjs/assertron/repeat.js +44 -0
  35. package/{dist-es2015 → cjs}/assertron/resolves.d.ts +1 -0
  36. package/cjs/assertron/resolves.d.ts.map +1 -0
  37. package/cjs/assertron/resolves.js +17 -0
  38. package/cjs/assertron/satisfies.d.ts +10 -0
  39. package/cjs/assertron/satisfies.d.ts.map +1 -0
  40. package/cjs/assertron/satisfies.js +19 -0
  41. package/{dist-es2015 → cjs}/assertron/throws.d.ts +2 -0
  42. package/cjs/assertron/throws.d.ts.map +1 -0
  43. package/cjs/assertron/throws.js +62 -0
  44. package/{dist-es2015 → cjs}/assertron/truthy.d.ts +1 -0
  45. package/cjs/assertron/truthy.d.ts.map +1 -0
  46. package/cjs/assertron/truthy.js +11 -0
  47. package/{dist-es2015 → cjs}/errors/NotSatisfied.d.ts +1 -0
  48. package/cjs/errors/NotSatisfied.d.ts.map +1 -0
  49. package/cjs/errors/NotSatisfied.js +28 -0
  50. package/{dist-es5 → cjs}/errors/index.d.ts +1 -0
  51. package/cjs/errors/index.d.ts.map +1 -0
  52. package/cjs/errors/index.js +11 -0
  53. package/{dist-es2015 → cjs}/errors/interfaces.d.ts +1 -0
  54. package/cjs/errors/interfaces.d.ts.map +1 -0
  55. package/cjs/errors/interfaces.js +3 -0
  56. package/{dist-es2015 → cjs}/errors/notEqualMessage.d.ts +1 -0
  57. package/cjs/errors/notEqualMessage.d.ts.map +1 -0
  58. package/cjs/errors/notEqualMessage.js +8 -0
  59. package/{dist-es2015 → cjs}/errors/notRejectedMessage.d.ts +1 -0
  60. package/cjs/errors/notRejectedMessage.d.ts.map +1 -0
  61. package/cjs/errors/notRejectedMessage.js +8 -0
  62. package/{dist-es2015 → cjs}/errors/notThrownMessage.d.ts +1 -0
  63. package/cjs/errors/notThrownMessage.d.ts.map +1 -0
  64. package/cjs/errors/notThrownMessage.js +9 -0
  65. package/{dist-es2015 → cjs}/errors/returnNotRejectedMessage.d.ts +1 -0
  66. package/cjs/errors/returnNotRejectedMessage.d.ts.map +1 -0
  67. package/cjs/errors/returnNotRejectedMessage.js +8 -0
  68. package/{dist-es2015 → cjs}/errors/unexpectedErrorMessage.d.ts +1 -0
  69. package/cjs/errors/unexpectedErrorMessage.d.ts.map +1 -0
  70. package/cjs/errors/unexpectedErrorMessage.js +10 -0
  71. package/{dist-es2015 → cjs}/errors/util.d.ts +1 -0
  72. package/cjs/errors/util.d.ts.map +1 -0
  73. package/cjs/errors/util.js +8 -0
  74. package/{dist-es5 → cjs}/index.d.ts +1 -0
  75. package/cjs/index.d.ts.map +1 -0
  76. package/cjs/index.js +8 -0
  77. package/esm/assert-order/AssertOrder.js +132 -0
  78. package/esm/assert-order/InvalidOrder.js +31 -0
  79. package/esm/assert-order/StateMachine.js +103 -0
  80. package/esm/assert-order/index.js +3 -0
  81. package/esm/assert-order/interfaces.js +2 -0
  82. package/esm/assertron/assertron.js +28 -0
  83. package/esm/assertron/falsy.js +6 -0
  84. package/esm/assertron/index.js +2 -0
  85. package/esm/assertron/pathEqual.js +8 -0
  86. package/esm/assertron/rejects.js +9 -0
  87. package/esm/assertron/repeat.js +35 -0
  88. package/esm/assertron/resolves.js +12 -0
  89. package/esm/assertron/satisfies.js +14 -0
  90. package/esm/assertron/throws.js +57 -0
  91. package/esm/assertron/truthy.js +6 -0
  92. package/esm/errors/NotSatisfied.js +23 -0
  93. package/esm/errors/index.js +8 -0
  94. package/esm/errors/interfaces.js +2 -0
  95. package/esm/errors/notEqualMessage.js +4 -0
  96. package/esm/errors/notRejectedMessage.js +4 -0
  97. package/esm/errors/notThrownMessage.js +5 -0
  98. package/esm/errors/returnNotRejectedMessage.js +4 -0
  99. package/esm/errors/unexpectedErrorMessage.js +6 -0
  100. package/esm/errors/util.js +4 -0
  101. package/esm/index.js +5 -0
  102. package/package.json +63 -24
  103. package/src/assert-order/AssertOrder.spec.ts +0 -1
  104. package/src/assert-order/AssertOrder.ts +3 -3
  105. package/src/assert-order/InvalidOrder.ts +5 -8
  106. package/src/assert-order/StateMachine.ts +24 -28
  107. package/src/assert-order/interfaces.ts +5 -5
  108. package/src/assert-order/internalInterfaces.ts +3 -3
  109. package/src/assertron/assertron.spec.ts +3 -4
  110. package/src/assertron/assertron.ts +9 -9
  111. package/src/assertron/falsy.spec.ts +2 -2
  112. package/src/assertron/pathEqual.spec.ts +3 -3
  113. package/src/assertron/pathEqual.ts +3 -3
  114. package/src/assertron/rejects.spec.ts +7 -7
  115. package/src/assertron/rejects.ts +4 -6
  116. package/src/assertron/repeat.spec.ts +27 -1
  117. package/src/assertron/repeat.ts +27 -10
  118. package/src/assertron/resolves.spec.ts +4 -4
  119. package/src/assertron/resolves.ts +7 -10
  120. package/src/assertron/satisfies.spec.ts +8 -9
  121. package/src/assertron/satisfies.ts +15 -5
  122. package/src/assertron/throws.spec.ts +33 -13
  123. package/src/assertron/throws.ts +8 -5
  124. package/src/assertron/truthy.spec.ts +3 -3
  125. package/src/errors/NotSatisfied.ts +1 -1
  126. package/src/errors/interfaces.ts +1 -1
  127. package/src/errors/notThrownMessage.ts +3 -1
  128. package/src/errors/util.ts +2 -2
  129. package/src/testUtils.ts +17 -13
  130. package/dist-es2015/assert-order/AssertOrder.js +0 -132
  131. package/dist-es2015/assert-order/AssertOrder.js.map +0 -1
  132. package/dist-es2015/assert-order/InvalidOrder.d.ts +0 -8
  133. package/dist-es2015/assert-order/InvalidOrder.js +0 -31
  134. package/dist-es2015/assert-order/InvalidOrder.js.map +0 -1
  135. package/dist-es2015/assert-order/StateMachine.d.ts +0 -23
  136. package/dist-es2015/assert-order/StateMachine.js +0 -106
  137. package/dist-es2015/assert-order/StateMachine.js.map +0 -1
  138. package/dist-es2015/assert-order/index.js +0 -2
  139. package/dist-es2015/assert-order/index.js.map +0 -1
  140. package/dist-es2015/assert-order/interfaces.js +0 -1
  141. package/dist-es2015/assert-order/interfaces.js.map +0 -1
  142. package/dist-es2015/assertron/assertron.js +0 -28
  143. package/dist-es2015/assertron/assertron.js.map +0 -1
  144. package/dist-es2015/assertron/falsy.js +0 -6
  145. package/dist-es2015/assertron/falsy.js.map +0 -1
  146. package/dist-es2015/assertron/index.d.ts +0 -1
  147. package/dist-es2015/assertron/index.js +0 -2
  148. package/dist-es2015/assertron/index.js.map +0 -1
  149. package/dist-es2015/assertron/pathEqual.js +0 -8
  150. package/dist-es2015/assertron/pathEqual.js.map +0 -1
  151. package/dist-es2015/assertron/rejects.js +0 -10
  152. package/dist-es2015/assertron/rejects.js.map +0 -1
  153. package/dist-es2015/assertron/repeat.js +0 -21
  154. package/dist-es2015/assertron/repeat.js.map +0 -1
  155. package/dist-es2015/assertron/resolves.js +0 -12
  156. package/dist-es2015/assertron/resolves.js.map +0 -1
  157. package/dist-es2015/assertron/satisfies.d.ts +0 -5
  158. package/dist-es2015/assertron/satisfies.js +0 -14
  159. package/dist-es2015/assertron/satisfies.js.map +0 -1
  160. package/dist-es2015/assertron/throws.js +0 -55
  161. package/dist-es2015/assertron/throws.js.map +0 -1
  162. package/dist-es2015/assertron/truthy.js +0 -6
  163. package/dist-es2015/assertron/truthy.js.map +0 -1
  164. package/dist-es2015/errors/NotSatisfied.js +0 -23
  165. package/dist-es2015/errors/NotSatisfied.js.map +0 -1
  166. package/dist-es2015/errors/index.d.ts +0 -7
  167. package/dist-es2015/errors/index.js +0 -7
  168. package/dist-es2015/errors/index.js.map +0 -1
  169. package/dist-es2015/errors/interfaces.js +0 -1
  170. package/dist-es2015/errors/interfaces.js.map +0 -1
  171. package/dist-es2015/errors/notEqualMessage.js +0 -4
  172. package/dist-es2015/errors/notEqualMessage.js.map +0 -1
  173. package/dist-es2015/errors/notRejectedMessage.js +0 -4
  174. package/dist-es2015/errors/notRejectedMessage.js.map +0 -1
  175. package/dist-es2015/errors/notThrownMessage.js +0 -4
  176. package/dist-es2015/errors/notThrownMessage.js.map +0 -1
  177. package/dist-es2015/errors/returnNotRejectedMessage.js +0 -4
  178. package/dist-es2015/errors/returnNotRejectedMessage.js.map +0 -1
  179. package/dist-es2015/errors/unexpectedErrorMessage.js +0 -6
  180. package/dist-es2015/errors/unexpectedErrorMessage.js.map +0 -1
  181. package/dist-es2015/errors/util.js +0 -4
  182. package/dist-es2015/errors/util.js.map +0 -1
  183. package/dist-es2015/index.d.ts +0 -4
  184. package/dist-es2015/index.js +0 -5
  185. package/dist-es2015/index.js.map +0 -1
  186. package/dist-es5/assert-order/AssertOrder.d.ts +0 -40
  187. package/dist-es5/assert-order/AssertOrder.js +0 -147
  188. package/dist-es5/assert-order/AssertOrder.js.map +0 -1
  189. package/dist-es5/assert-order/InvalidOrder.d.ts +0 -8
  190. package/dist-es5/assert-order/InvalidOrder.js +0 -58
  191. package/dist-es5/assert-order/InvalidOrder.js.map +0 -1
  192. package/dist-es5/assert-order/StateMachine.js +0 -115
  193. package/dist-es5/assert-order/StateMachine.js.map +0 -1
  194. package/dist-es5/assert-order/index.d.ts +0 -2
  195. package/dist-es5/assert-order/index.js +0 -7
  196. package/dist-es5/assert-order/index.js.map +0 -1
  197. package/dist-es5/assert-order/interfaces.d.ts +0 -7
  198. package/dist-es5/assert-order/interfaces.js +0 -3
  199. package/dist-es5/assert-order/interfaces.js.map +0 -1
  200. package/dist-es5/assertron/assertron.d.ts +0 -20
  201. package/dist-es5/assertron/assertron.js +0 -33
  202. package/dist-es5/assertron/assertron.js.map +0 -1
  203. package/dist-es5/assertron/falsy.d.ts +0 -1
  204. package/dist-es5/assertron/falsy.js +0 -12
  205. package/dist-es5/assertron/falsy.js.map +0 -1
  206. package/dist-es5/assertron/index.d.ts +0 -1
  207. package/dist-es5/assertron/index.js +0 -7
  208. package/dist-es5/assertron/index.js.map +0 -1
  209. package/dist-es5/assertron/pathEqual.d.ts +0 -1
  210. package/dist-es5/assertron/pathEqual.js +0 -14
  211. package/dist-es5/assertron/pathEqual.js.map +0 -1
  212. package/dist-es5/assertron/rejects.d.ts +0 -1
  213. package/dist-es5/assertron/rejects.js +0 -16
  214. package/dist-es5/assertron/rejects.js.map +0 -1
  215. package/dist-es5/assertron/repeat.d.ts +0 -5
  216. package/dist-es5/assertron/repeat.js +0 -27
  217. package/dist-es5/assertron/repeat.js.map +0 -1
  218. package/dist-es5/assertron/resolves.d.ts +0 -1
  219. package/dist-es5/assertron/resolves.js +0 -18
  220. package/dist-es5/assertron/resolves.js.map +0 -1
  221. package/dist-es5/assertron/satisfies.d.ts +0 -5
  222. package/dist-es5/assertron/satisfies.js +0 -20
  223. package/dist-es5/assertron/satisfies.js.map +0 -1
  224. package/dist-es5/assertron/throws.d.ts +0 -4
  225. package/dist-es5/assertron/throws.js +0 -61
  226. package/dist-es5/assertron/throws.js.map +0 -1
  227. package/dist-es5/assertron/truthy.d.ts +0 -1
  228. package/dist-es5/assertron/truthy.js +0 -12
  229. package/dist-es5/assertron/truthy.js.map +0 -1
  230. package/dist-es5/errors/NotSatisfied.d.ts +0 -2
  231. package/dist-es5/errors/NotSatisfied.js +0 -26
  232. package/dist-es5/errors/NotSatisfied.js.map +0 -1
  233. package/dist-es5/errors/index.js +0 -12
  234. package/dist-es5/errors/index.js.map +0 -1
  235. package/dist-es5/errors/interfaces.d.ts +0 -2
  236. package/dist-es5/errors/interfaces.js +0 -3
  237. package/dist-es5/errors/interfaces.js.map +0 -1
  238. package/dist-es5/errors/notEqualMessage.d.ts +0 -1
  239. package/dist-es5/errors/notEqualMessage.js +0 -7
  240. package/dist-es5/errors/notEqualMessage.js.map +0 -1
  241. package/dist-es5/errors/notRejectedMessage.d.ts +0 -1
  242. package/dist-es5/errors/notRejectedMessage.js +0 -7
  243. package/dist-es5/errors/notRejectedMessage.js.map +0 -1
  244. package/dist-es5/errors/notThrownMessage.d.ts +0 -1
  245. package/dist-es5/errors/notThrownMessage.js +0 -7
  246. package/dist-es5/errors/notThrownMessage.js.map +0 -1
  247. package/dist-es5/errors/returnNotRejectedMessage.d.ts +0 -1
  248. package/dist-es5/errors/returnNotRejectedMessage.js +0 -7
  249. package/dist-es5/errors/returnNotRejectedMessage.js.map +0 -1
  250. package/dist-es5/errors/unexpectedErrorMessage.d.ts +0 -2
  251. package/dist-es5/errors/unexpectedErrorMessage.js +0 -9
  252. package/dist-es5/errors/unexpectedErrorMessage.js.map +0 -1
  253. package/dist-es5/errors/util.d.ts +0 -2
  254. package/dist-es5/errors/util.js +0 -7
  255. package/dist-es5/errors/util.js.map +0 -1
  256. package/dist-es5/index.js +0 -10
  257. package/dist-es5/index.js.map +0 -1
@@ -1,7 +1,7 @@
1
- import t from 'assert';
2
- import AssertionError from 'assertion-error';
3
- import a from '..';
4
- import { assertAsyncThrows, assertIsError, assertIsPromise, assertThrows, noStackTraceFor } from '../testUtils';
1
+ import t from 'assert'
2
+ import AssertionError from 'assertion-error'
3
+ import a from '..'
4
+ import { assertAsyncThrows, assertIsError, assertIsPromise, assertThrows, noStackTraceFor } from '../testUtils'
5
5
 
6
6
  test('when value is PromiseLike returns Promise', async () => {
7
7
  let actual = a.throws(Promise.reject(new Error()), Error)
@@ -78,26 +78,32 @@ test('passes with throwing function', () => {
78
78
  })
79
79
 
80
80
  test('throws if function does not', () => {
81
- const err = assertThrows<AssertionError<{ value: string }>>(() => a.throws(
82
- () => { return 'foo' }, AssertionError),
83
- AssertionError)
81
+ const err = assertThrows<AssertionError<{ value: string }>>(
82
+ () => a.throws(() => { return 'foo' }, AssertionError),
83
+ AssertionError
84
+ )
84
85
  t.strictEqual(err.value, 'foo')
85
86
  })
86
87
 
87
88
  test('thrown error does not contain internal stack track if function does not', () => {
88
- const err = assertThrows<AssertionError<{ value: string }>>(() => a.throws(
89
- () => { return 'foo' }, AssertionError),
90
- AssertionError)
89
+ const err = assertThrows<AssertionError<{ value: string }>>(
90
+ () => a.throws(() => { return 'foo' }, AssertionError),
91
+ AssertionError
92
+ )
91
93
  noStackTraceFor('throws.ts', err)
92
94
  })
93
95
 
94
96
  test('throws if function returns resolved promise', async () => {
95
- const err = await assertAsyncThrows<AssertionError<{ value: string }>>(() => a.throws(() => Promise.resolve('ok')), AssertionError)
97
+ const err = await assertAsyncThrows<AssertionError<{ value: string }>>(
98
+ () => a.throws(() => Promise.resolve('ok')),
99
+ AssertionError)
96
100
  t.strictEqual(err.value, 'ok')
97
101
  })
98
102
 
99
103
  test('thrown error does not contain internal stack trace if function returns resolved promise', async () => {
100
- const err = await assertAsyncThrows<AssertionError<{ value: string }>>(() => a.throws(() => Promise.resolve('ok')), AssertionError)
104
+ const err = await assertAsyncThrows<AssertionError<{ value: string }>>(
105
+ () => a.throws(() => Promise.resolve('ok')),
106
+ AssertionError)
101
107
  noStackTraceFor('throws.ts', err)
102
108
  })
103
109
 
@@ -117,7 +123,10 @@ test('throws if function returns rejected promise not passing valdation', async
117
123
  })
118
124
 
119
125
  test('thrown error does not contain stack trace if function returns rejected promise not passing valdation', async () => {
120
- const err = await assertAsyncThrows<AssertionError<{ actual: any }>>(() => a.throws(() => Promise.reject('ok'), err => err !== 'ok'))
126
+ const err = await assertAsyncThrows<
127
+ AssertionError<{ actual: any }>
128
+ >(() => a.throws(() => Promise.reject('ok'), err => err !== 'ok'))
129
+ // console.log('got err', err)
121
130
  noStackTraceFor('throws.ts', err)
122
131
  })
123
132
 
@@ -158,3 +167,14 @@ test('validate () => throw using Error constructor', async () => {
158
167
  test('validate () => throw using another Error constructor will throw', async () => {
159
168
  return t.throws(() => a.throws((() => { throw new FakeError() }) as any, AssertionError))
160
169
  })
170
+
171
+ test(`a.throws(() => never) returns error of type Error`, () => {
172
+ const err = a.throws(() => { throw new Error('failure') })
173
+ expect(err.message).toBe('failure')
174
+ })
175
+
176
+ test('throw if function returns an object', () => {
177
+ class Dummy { a = 1; foo() { } }
178
+ const err = assertThrows(() => a.throws(() => new Dummy()), AssertionError)
179
+ expect(err.message).toBe(`Expect function to throw, but it returned 'Dummy { a: 1 }' instead.`)
180
+ })
@@ -4,15 +4,16 @@ import { ErrorConstructor, ErrorValidator, notRejectedMessage, notThrownMessage,
4
4
  import { isErrorConstructor } from '../errors/util';
5
5
 
6
6
  export function throws<E extends Error>(value: PromiseLike<any>, error?: ErrorValidator | ErrorConstructor<E>): Promise<E>
7
+ export function throws<E extends Error>(value: (...args: any[]) => never, error?: ErrorValidator | ErrorConstructor<E>): E
7
8
  export function throws<E extends Error, R = any>(value: (...args: any[]) => R, error?: ErrorValidator | ErrorConstructor<E>): R extends Promise<any> ? Promise<E> : E
8
9
  export function throws<T, R = any>(value: (...args: any[]) => R, validator?: ErrorValidator): R extends Promise<any> ? Promise<T> : T
9
10
  export function throws(value: PromiseLike<any> | (() => any | PromiseLike<any>), validator?: ErrorValidator | ErrorConstructor<any>): any {
10
11
  if (typeof value !== 'function' && !isPromise(value)) {
11
12
  throw new AssertionError(
12
- '`assertron.throws()` must be called with a functio n or promise.',
13
+ '`assertron.throws()` must be called with a function or promise.',
13
14
  undefined,
14
15
  throws
15
- )
16
+ )
16
17
  }
17
18
 
18
19
  if (isPromise(value)) {
@@ -56,7 +57,7 @@ export function throws(value: PromiseLike<any> | (() => any | PromiseLike<any>),
56
57
  )
57
58
  }
58
59
 
59
- function tryCatch(fn) {
60
+ function tryCatch(fn: () => any) {
60
61
  let result
61
62
  let err
62
63
  let threw = false
@@ -70,7 +71,7 @@ function tryCatch(fn) {
70
71
  return { threw, err, result }
71
72
  }
72
73
 
73
- function validateError(validator, error) {
74
+ function validateError(validator: ErrorValidator | ErrorConstructor<any> | undefined, error: any) {
74
75
  if (validator) {
75
76
  if (isErrorConstructor(validator)) {
76
77
  if (!(error instanceof validator))
@@ -80,11 +81,13 @@ function validateError(validator, error) {
80
81
  throws
81
82
  )
82
83
  }
83
- else if (!validator(error))
84
+ else if (!validator(error)) {
85
+ // console.log('msg:', unexpectedErrorMessage(error, validator))
84
86
  throw new AssertionError(
85
87
  unexpectedErrorMessage(error, validator),
86
88
  { actual: error, expected: validator },
87
89
  throws
88
90
  )
91
+ }
89
92
  }
90
93
  }
@@ -1,6 +1,6 @@
1
- import AssertionError from 'assertion-error';
2
- import a from '..';
3
- import { assertThrows, noStackTraceFor } from '../testUtils';
1
+ import AssertionError from 'assertion-error'
2
+ import a from '..'
3
+ import { assertThrows, noStackTraceFor } from '../testUtils'
4
4
 
5
5
  test('falsy statement throws', () => {
6
6
  assertThrows(() => a.truthy(false), AssertionError)
@@ -22,6 +22,6 @@ function isIndice(node: string | number): node is number {
22
22
  return typeof node === 'number'
23
23
  }
24
24
 
25
- function formatValue(value) {
25
+ function formatValue(value: any) {
26
26
  return tersify(value)
27
27
  }
@@ -1,3 +1,3 @@
1
1
 
2
- export type ErrorValidator = (value) => boolean
2
+ export type ErrorValidator = (value: any) => boolean
3
3
  export type ErrorConstructor<E extends Error> = new (...args: any[]) => E
@@ -1,3 +1,5 @@
1
+ import { tersify } from 'tersify'
2
+
1
3
  export function notThrownMessage(value: any) {
2
- return `Expect function to throw, but it returned '${value}' instead.`
4
+ return `Expect function to throw, but it returned '${tersify(value)}' instead.`
3
5
  }
@@ -1,5 +1,5 @@
1
1
  import { ErrorConstructor } from './interfaces'
2
2
 
3
- export function isErrorConstructor(validator): validator is ErrorConstructor<any> {
4
- return Error.prototype.isPrototypeOf(validator.prototype)
3
+ export function isErrorConstructor(validator: any): validator is ErrorConstructor<any> {
4
+ return Object.prototype.isPrototypeOf.call(Error.prototype, validator.prototype)
5
5
  }
package/src/testUtils.ts CHANGED
@@ -1,11 +1,13 @@
1
1
  // istanbul ignore file
2
- import t from 'assert';
3
- import AssertionError from 'assertion-error';
4
- import isPromise from 'is-promise';
5
- import { isError } from 'lodash';
6
- import { ErrorConstructor } from './errors';
2
+ import t from 'assert'
3
+ import AssertionError from 'assertion-error'
4
+ import isPromise from 'is-promise'
5
+ import { isError } from 'lodash'
6
+ import { ErrorConstructor } from './errors'
7
7
 
8
- export function runAsync(fn) {
8
+ export type AnyFunction = (...args: any[]) => any
9
+
10
+ export function runAsync(fn: AnyFunction) {
9
11
  return new Promise((resolve, reject) => {
10
12
  setTimeout(() => {
11
13
  try {
@@ -18,7 +20,7 @@ export function runAsync(fn) {
18
20
  })
19
21
  }
20
22
 
21
- export function runSequentialAsync(...fns) {
23
+ export function runSequentialAsync(...fns: AnyFunction[]) {
22
24
  return new Promise((resolve, reject) => {
23
25
  setTimeout(() => {
24
26
  try {
@@ -35,7 +37,7 @@ export function runSequentialAsync(...fns) {
35
37
  })
36
38
  }
37
39
 
38
- export function runParallelAsync(...fns) {
40
+ export function runParallelAsync(...fns: AnyFunction[]) {
39
41
  return Promise.all(fns.map(fn => runAsync(fn)))
40
42
  }
41
43
 
@@ -48,11 +50,11 @@ export function assertIsError(err: Error) {
48
50
  t(isError(err))
49
51
  }
50
52
 
51
- export function assertThrows<E extends Error>(fn, ErrorType?: ErrorConstructor<E>): E {
53
+ export function assertThrows<E extends Error>(fn: AnyFunction, ErrorType?: ErrorConstructor<E>): E {
52
54
  try {
53
55
  fn()
54
56
  }
55
- catch (e) {
57
+ catch (e: any) {
56
58
  if (ErrorType && !(e instanceof ErrorType)) {
57
59
  throw new Error(`thrown error ${e} is not of expected type ${ErrorType}`)
58
60
  }
@@ -61,21 +63,23 @@ export function assertThrows<E extends Error>(fn, ErrorType?: ErrorConstructor<E
61
63
  throw new Error(`${fn} does not throw as expected`)
62
64
  }
63
65
 
64
- export async function assertAsyncThrows<E extends Error>(fn, ErrorType?: ErrorConstructor<E>): Promise<E> {
66
+ export async function assertAsyncThrows<E extends Error>(fn: AnyFunction, ErrorType?: ErrorConstructor<E>): Promise<E> {
65
67
  try {
66
68
  await fn()
67
69
  }
68
- catch (e) {
70
+ catch (e: any) {
71
+ // console.log('catch clause', e)
69
72
  if (ErrorType && !(e instanceof ErrorType)) {
70
73
  throw new Error(`thrown error ${e} is not of expected type ${ErrorType}`)
71
74
  }
75
+ // console.log('returning e')
72
76
  return e
73
77
  }
74
78
  throw new Error(`${fn} does not throw as expected`)
75
79
  }
76
80
 
77
81
 
78
- export function noStackTraceFor(filename: string, err: AssertionError) {
82
+ export function noStackTraceFor(filename: string, err: AssertionError<any>) {
79
83
  if (err.stack && RegExp(filename).test(err.stack))
80
84
  throw new Error(`contains internal stack: \n${err.stack}`)
81
85
  }
@@ -1,132 +0,0 @@
1
- import { InvalidOrder } from './InvalidOrder';
2
- import { StateMachine } from './StateMachine';
3
- // order.atLeast(step, count) // expected to be executed at least `count` times
4
- // order.atMost(step, count) // exected to be executed at most `count` times
5
- export class AssertOrder {
6
- /**
7
- * Gets the current expecting step.
8
- */
9
- get currentStep() {
10
- return this.state.step;
11
- }
12
- constructor(plan) {
13
- this.state = new StateMachine(plan);
14
- }
15
- /**
16
- * Asserts the current step is `step`.
17
- * @param step expected step.
18
- */
19
- is(step) {
20
- this.assert('is', step);
21
- }
22
- /**
23
- * Asserts the current step is not `step`.
24
- * @param step not expected step.
25
- */
26
- not(step) {
27
- if (this.state.isValid(step)) {
28
- throw new InvalidOrder(this.state.get(), 'not', this.not, step);
29
- }
30
- }
31
- /**
32
- * Reset to specified step.
33
- */
34
- jump(step) {
35
- this.state.jump(step);
36
- }
37
- /**
38
- * Move to next step.
39
- */
40
- move() {
41
- this.state.move();
42
- }
43
- /**
44
- * Asserts the specified step will run once.
45
- */
46
- once(step) {
47
- this.assert('once', step);
48
- this.state.move();
49
- }
50
- on(step, assert) {
51
- this.state.on(step, () => {
52
- assert(step);
53
- });
54
- }
55
- atLeastOnce(step) {
56
- const nextStep = step + 1;
57
- if (this.state.step === step) {
58
- this.state.move();
59
- return this.state.moveSubStep();
60
- }
61
- else if (this.state.step === nextStep && this.state.subStep > 0) {
62
- return this.state.moveSubStep();
63
- }
64
- else
65
- throw new InvalidOrder(this.state.get(), 'atLeastOnce', this.atLeastOnce, step);
66
- }
67
- any(steps) {
68
- const index = steps.indexOf(this.state.step);
69
- if (index === -1)
70
- throw new InvalidOrder(this.state.get(), 'any', this.any, steps);
71
- this.state.move();
72
- return steps[index];
73
- }
74
- onAny(steps, ...asserts) {
75
- steps.forEach(step => {
76
- this.state.on(step, () => {
77
- let firstError;
78
- let hasPass = false;
79
- asserts.forEach(assert => {
80
- try {
81
- assert(step);
82
- hasPass = true;
83
- }
84
- catch (err) {
85
- if (!firstError)
86
- firstError = err;
87
- }
88
- });
89
- if (!hasPass)
90
- throw firstError;
91
- });
92
- });
93
- return;
94
- }
95
- end(timeout) {
96
- if (timeout) {
97
- return new Promise(r => {
98
- setTimeout(r, timeout);
99
- }).then(() => {
100
- return this.end();
101
- });
102
- }
103
- if (!this.state.isMaxStepDefined()) {
104
- this.state.stopAccepting();
105
- return this.state.getTimeTaken();
106
- }
107
- if (this.state.isAccepting()) {
108
- throw new InvalidOrder(this.state.get(), 'end', this.end);
109
- }
110
- }
111
- exactly(step, times) {
112
- if (this.state.isNotValid(step))
113
- throw new InvalidOrder(this.state.get(), 'exactly', this.exactly, step, times);
114
- if (this.state.maxSubStep === undefined) {
115
- this.state.maxSubStep = times;
116
- this.state.minSubStep = times;
117
- }
118
- return this.state.moveSubStep();
119
- }
120
- wait(step, callback) {
121
- if (callback)
122
- this.on(step, callback);
123
- else
124
- return new Promise(a => { this.on(step, a); });
125
- }
126
- assert(method, step) {
127
- if (this.state.isNotValid(step)) {
128
- throw new InvalidOrder(this.state.get(), method, this[method], step);
129
- }
130
- }
131
- }
132
- //# sourceMappingURL=AssertOrder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AssertOrder.js","sourceRoot":"","sources":["../../src/assert-order/AssertOrder.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import AssertionError from 'assertion-error';
2
- import { State } from './interfaces';
3
- export declare class InvalidOrder extends AssertionError {
4
- method: string;
5
- args: any[];
6
- state: State;
7
- constructor(state: State, method: string, ssf: Function, ...args: any[]);
8
- }
@@ -1,31 +0,0 @@
1
- import AssertionError from 'assertion-error';
2
- export class InvalidOrder extends AssertionError {
3
- constructor(state, method, ssf, ...args) {
4
- const message = method === 'end' ? getEndMessage(state) : getExpectingMessage(state, method, args);
5
- super(message, { method, state, args }, ssf);
6
- }
7
- }
8
- function getEndMessage(state) {
9
- return `Planned for ${state.maxStep} step but expecting step ${state.step} when 'end()' is called`;
10
- }
11
- function getExpectingMessage(state, method, args) {
12
- return `Expecting ${getExpectingCalls(state)}, but received '${method}(${getMethodArgs(args)})'`;
13
- }
14
- function getExpectingCalls(state) {
15
- let message;
16
- if (state.subStep === 0) {
17
- const methods = ['is', 'once', 'any'];
18
- message = methods.map(m => ['any'].indexOf(m) === -1 ?
19
- `'${m}(${state.step})'` :
20
- `'${m}([${state.step}])'`).join(', ');
21
- }
22
- else {
23
- const methods = ['exactly'];
24
- message = methods.map(m => `'${m}(${state.step}, ${state.maxSubStep})'`).join(', ');
25
- }
26
- return message;
27
- }
28
- function getMethodArgs(args) {
29
- return args.map(a => Array.isArray(a) ? `[${a.join(', ')}]` : a).join(', ');
30
- }
31
- //# sourceMappingURL=InvalidOrder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InvalidOrder.js","sourceRoot":"","sources":["../../src/assert-order/InvalidOrder.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAG7C,MAAM,OAAO,YAAa,SAAQ,cAAc;IAI9C,YAAY,KAAY,EAAE,MAAc,EAAE,GAAa,EAAE,GAAG,IAAW;QACrE,MAAM,OAAO,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QAClG,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;IAC9C,CAAC;CACF;AAED,SAAS,aAAa,CAAC,KAAY;IACjC,OAAO,eAAe,KAAK,CAAC,OAAO,4BAA4B,KAAK,CAAC,IAAI,yBAAyB,CAAA;AACpG,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI;IAC9C,OAAO,aAAa,iBAAiB,CAAC,KAAK,CAAC,mBAAmB,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAA;AAClG,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAY;IACrC,IAAI,OAAe,CAAA;IACnB,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE;QACvB,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;QACrC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,CAC1B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KACb;SACI;QACH,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAA;QAC3B,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KACpF;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,IAAW;IAChC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC7E,CAAC"}
@@ -1,23 +0,0 @@
1
- import { State } from './interfaces';
2
- export declare class StateMachine {
3
- listeners: {};
4
- step: number;
5
- maxStep?: number;
6
- subStep: number;
7
- minSubStep?: number;
8
- maxSubStep?: number;
9
- private startTick;
10
- constructor(maxStep?: number);
11
- jump(step: number): number;
12
- move(): number;
13
- moveSubStep(): number;
14
- get(): State;
15
- on(step: number, listener: any): void;
16
- isNotValid(step: number): boolean;
17
- isValid(step: number): boolean;
18
- isMaxStepDefined(): boolean;
19
- stopAccepting(): void;
20
- isAccepting(): boolean;
21
- getTimeTaken(): any;
22
- private getStartTick;
23
- }
@@ -1,106 +0,0 @@
1
- import isNode from 'is-node';
2
- // istanbul ignore next
3
- function nodeVersionIsOrAbove(major, minor = 0, patch = 0) {
4
- // without this, systemjs will complain `process is not defined`
5
- if (!global.process)
6
- return false;
7
- const versionString = process.version.startsWith('v') ? process.version.slice(1) : process.version;
8
- const [actualMajor, actualMinor, actualPatch] = versionString.split('.').map(s => parseInt(s, 10));
9
- const checking = major * 1000 * 1000 + minor * 1000 + patch;
10
- const actual = actualMajor * 1000 * 1000 + actualMinor * 1000 + actualPatch;
11
- return actual >= checking;
12
- }
13
- // istanbul ignore next
14
- const performance = isNode && nodeVersionIsOrAbove(8, 5) ? require('perf_hooks').performance : undefined;
15
- let startTick;
16
- let timeTaken;
17
- // istanbul ignore else
18
- // tslint:disable-next-line
19
- if (process && typeof process.hrtime === 'function') {
20
- startTick = process.hrtime;
21
- timeTaken = function (startTick) {
22
- const [second, nanoSecond] = process.hrtime(startTick);
23
- return second * 1000 + nanoSecond / 1e6;
24
- };
25
- }
26
- // tslint:disable-next-line
27
- else if (performance && typeof performance.now === 'function') {
28
- startTick = performance.now;
29
- timeTaken = function (startTick) {
30
- const end = performance.now();
31
- return end - startTick;
32
- };
33
- }
34
- else {
35
- startTick = function () {
36
- return new Date().valueOf();
37
- };
38
- timeTaken = function (startTick) {
39
- return new Date().valueOf() - startTick;
40
- };
41
- }
42
- export class StateMachine {
43
- constructor(maxStep) {
44
- this.listeners = {};
45
- this.step = 1;
46
- this.subStep = 0;
47
- this.maxStep = maxStep;
48
- this.startTick = this.getStartTick();
49
- }
50
- jump(step) {
51
- this.step = step;
52
- this.subStep = 0;
53
- return this.step;
54
- }
55
- move() {
56
- const listeners = this.listeners[this.step];
57
- this.step = this.step + 1;
58
- this.subStep = 0;
59
- if (listeners) {
60
- listeners.forEach(l => l());
61
- }
62
- return this.step;
63
- }
64
- moveSubStep() {
65
- const subStep = ++this.subStep;
66
- if (this.maxSubStep === this.subStep)
67
- this.move();
68
- return subStep;
69
- }
70
- get() {
71
- const { step, subStep, maxStep, minSubStep, maxSubStep } = this;
72
- return {
73
- step,
74
- maxStep,
75
- subStep,
76
- minSubStep,
77
- maxSubStep
78
- };
79
- }
80
- on(step, listener) {
81
- this.listeners[step] = [listener];
82
- }
83
- isNotValid(step) {
84
- return step !== this.step || (this.maxStep !== undefined && this.maxStep < step);
85
- }
86
- isValid(step) {
87
- return step === this.step;
88
- }
89
- isMaxStepDefined() {
90
- return this.maxStep !== undefined;
91
- }
92
- stopAccepting() {
93
- this.maxStep = this.step - 1;
94
- }
95
- isAccepting() {
96
- // istanbul ignore next
97
- return this.maxStep ? this.maxStep >= this.step : true;
98
- }
99
- getTimeTaken() {
100
- return timeTaken(this.startTick);
101
- }
102
- getStartTick() {
103
- return startTick();
104
- }
105
- }
106
- //# sourceMappingURL=StateMachine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StateMachine.js","sourceRoot":"","sources":["../../src/assert-order/StateMachine.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export * from './AssertOrder';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assert-order/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=interfaces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/assert-order/interfaces.ts"],"names":[],"mappings":""}
@@ -1,28 +0,0 @@
1
- import AssertionError from 'assertion-error';
2
- import { falsy } from './falsy';
3
- import { pathEqual } from './pathEqual';
4
- import { rejects } from './rejects';
5
- import { repeat } from './repeat';
6
- import { resolves } from './resolves';
7
- import { satisfies } from './satisfies';
8
- import { throws } from './throws';
9
- import { truthy } from './truthy';
10
- export const assertron = {
11
- false(value) {
12
- if (value !== false)
13
- throw new AssertionError(`Expected value to equal false, but received ${value}`, { value }, assertron.false);
14
- },
15
- falsy,
16
- pathEqual,
17
- rejects,
18
- repeat,
19
- resolves,
20
- satisfies,
21
- throws,
22
- true(value) {
23
- if (value !== true)
24
- throw new AssertionError(`Expected value to equal true, but received ${value}`, { value }, assertron.true);
25
- },
26
- truthy
27
- };
28
- //# sourceMappingURL=assertron.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"assertron.js","sourceRoot":"","sources":["../../src/assertron/assertron.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,KAAK,CAAC,KAAU;QACd,IAAI,KAAK,KAAK,KAAK;YACjB,MAAM,IAAI,cAAc,CACtB,+CAA+C,KAAK,EAAE,EACtD,EAAE,KAAK,EAAE,EACT,SAAS,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IACD,KAAK;IACL,SAAS;IACT,OAAO;IACP,MAAM;IACN,QAAQ;IACR,SAAS;IACT,MAAM;IACN,IAAI,CAAC,KAAU;QACb,IAAI,KAAK,KAAK,IAAI;YAAE,MAAM,IAAI,cAAc,CAAC,8CAA8C,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;IAChI,CAAC;IACD,MAAM;CACP,CAAA"}
@@ -1,6 +0,0 @@
1
- import AssertionError from 'assertion-error';
2
- export function falsy(value) {
3
- if (value)
4
- throw new AssertionError(`Expected value to be falsy, but received ${value}`, { value }, falsy);
5
- }
6
- //# sourceMappingURL=falsy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"falsy.js","sourceRoot":"","sources":["../../src/assertron/falsy.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,iBAAiB,CAAA;AAE5C,MAAM,UAAU,KAAK,CAAC,KAAU;IAC9B,IAAI,KAAK;QACP,MAAM,IAAI,cAAc,CACtB,4CAA4C,KAAK,EAAE,EACnD,EAAE,KAAK,EAAE,EACT,KAAK,CACN,CAAA;AACL,CAAC"}
@@ -1 +0,0 @@
1
- export * from './assertron';
@@ -1,2 +0,0 @@
1
- export * from './assertron';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assertron/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}