Skip to content

Commit 609dfea

Browse files
committed
fix tests
1 parent ad7e49b commit 609dfea

33 files changed

+886
-546
lines changed

README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
- removed several checks that are handled by typescript
1717
- removed check for `preventChanges(true, ...fieldNames)`
1818

19-
- switch `true` to second argument
19+
- switch `true` to second argument options
20+
- async
2021

2122
- renamed 'keepQuery' to 'pickQuery', added alias
2223
- renamed 'required' to 'checkRequired', added alias
@@ -40,6 +41,10 @@
4041

4142
- rm 'actOnDispatch' & 'actOnDefault'
4243

44+
- rm 'validate', 'validateSchema', 'setNow', 'sequelizeConvert', 'serialize', 'required', 'runHook', 'populate', 'pick', 'omit', 'mongoKeys', 'lowercase', 'lowerCase', 'keepQuery', 'keepQueryInArray', 'isNot', fgraphql', 'fastJoin', 'discard...', 'dePopulate', 'actOnDefault', 'actOnDispatch', 'sifter'
45+
46+
- softDelete: need to pass 'deletedQuery' and 'removeData'
47+
4348
#### predicates
4449

4550
- renamed 'isNot' to 'not' (added alias for 'isNot')

src/hooks/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ export * from './set-now/set-now-data.js'
3535
export * from './set-now/set-now-result.js'
3636

3737
export * from './set-slug/set-slug.js'
38-
export * from './sifter/sifter.js'
3938
export * from './soft-delete/soft-delete.js'
4039
export * from './stash-before/stash-before.js'
4140
export * from './traverse/traverse.js'

src/hooks/lowercase/lowercase-data.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ describe('lowercaseData', () => {
3636
assert.deepEqual(hook.data, { first: null, last: 'doe' })
3737
})
3838

39-
it('throws if field is not a string', () => {
39+
it('throws if field is not a string', async () => {
4040
const hook: any = { type: 'before', method: 'create', data: { first: 1, last: 'Doe' } }
41-
assert.throws(() => {
42-
lowercaseData(['first', 'last'])(hook)
43-
})
41+
await expect(async () => {
42+
await lowercaseData(['first', 'last'])(hook)
43+
}).rejects.toThrow('Expected string data. (lowercase first)')
4444
})
4545
})
4646

src/hooks/lowercase/lowercase-data.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { toArray } from '../../internal.utils.js'
1111
*/
1212
export const lowercaseData = (fieldNames: MaybeArray<string>) => {
1313
const fieldNamesArr = toArray(fieldNames)
14+
1415
return transformData(item => {
1516
for (let i = 0; i < fieldNamesArr.length; i++) {
1617
const fieldName = fieldNamesArr[i]

src/hooks/prevent-changes/prevent-changes.test.ts

Lines changed: 37 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { assert } from 'vitest'
1+
import { assert, expect } from 'vitest'
22
import { preventChanges } from './prevent-changes.js'
33
import { clone } from '../../common/index.js'
44

@@ -15,17 +15,27 @@ describe('preventChanges', () => {
1515
}
1616
})
1717

18-
it('does not throw if props not found', () => {
19-
preventChanges(['name', 'address'], { error: true })(hookBefore)
20-
preventChanges(['name.x', 'x.y.z'], { error: true })(hookBefore)
18+
it('does not throw if props not found', async () => {
19+
await preventChanges(['name', 'address'], { error: true })(hookBefore)
20+
await preventChanges(['name.x', 'x.y.z'], { error: true })(hookBefore)
2121
})
2222

23-
it('throw if props found', () => {
24-
assert.throw(() => preventChanges(['name', 'first'], { error: true })(hookBefore))
25-
assert.throw(() => preventChanges(['name', 'a'], { error: true })(hookBefore))
26-
assert.throw(() => preventChanges(['name', 'a.b'], { error: true })(hookBefore))
27-
assert.throw(() => preventChanges(['name', 'a.c'], { error: true })(hookBefore))
28-
assert.throw(() => preventChanges(['name', 'a.c.d.e'], { error: true })(hookBefore))
23+
it('throw if props found', async () => {
24+
await expect(() =>
25+
preventChanges(['name', 'first'], { error: true })(hookBefore),
26+
).rejects.toThrow()
27+
await expect(() =>
28+
preventChanges(['name', 'a'], { error: true })(hookBefore),
29+
).rejects.toThrow()
30+
await expect(() =>
31+
preventChanges(['name', 'a.b'], { error: true })(hookBefore),
32+
).rejects.toThrow()
33+
await expect(() =>
34+
preventChanges(['name', 'a.c'], { error: true })(hookBefore),
35+
).rejects.toThrow()
36+
await expect(() =>
37+
preventChanges(['name', 'a.c.d.e'], { error: true })(hookBefore),
38+
).rejects.toThrow()
2939
})
3040
})
3141

@@ -39,38 +49,44 @@ describe('preventChanges', () => {
3949
}
4050
})
4151

42-
it('does not delete if props not found', () => {
43-
let context: any = preventChanges(['name', 'address'], { error: false })(clone(hookBefore))
52+
it('does not delete if props not found', async () => {
53+
let context: any = await preventChanges(['name', 'address'], { error: false })(
54+
clone(hookBefore),
55+
)
4456
assert.deepEqual(context, hookBefore)
4557

46-
context = preventChanges(['name.x', 'x.y.z'], { error: false })(clone(hookBefore))
58+
context = await preventChanges(['name.x', 'x.y.z'], { error: false })(clone(hookBefore))
4759
assert.deepEqual(context, hookBefore)
4860
})
4961

50-
it('deletes if props found', () => {
51-
let context: any = preventChanges(['name', 'first'], { error: false })(clone(hookBefore))
62+
it('deletes if props found', async () => {
63+
let context: any = await preventChanges(['name', 'first'], { error: false })(
64+
clone(hookBefore),
65+
)
5266
assert.deepEqual(context.data, { last: 'Doe', a: { b: 'john', c: { d: { e: 1 } } } }, '1')
5367

54-
context = preventChanges(['name', 'a'], { error: false })(clone(hookBefore))
68+
context = await preventChanges(['name', 'a'], { error: false })(clone(hookBefore))
5569
assert.deepEqual(context.data, { first: 'John', last: 'Doe' }, '2')
5670

57-
context = preventChanges(['name', 'a.b'], { error: false })(clone(hookBefore))
71+
context = await preventChanges(['name', 'a.b'], { error: false })(clone(hookBefore))
5872
assert.deepEqual(context.data, { first: 'John', last: 'Doe', a: { c: { d: { e: 1 } } } }, '3')
5973

60-
context = preventChanges(['name', 'a.c'], { error: false })(clone(hookBefore))
74+
context = await preventChanges(['name', 'a.c'], { error: false })(clone(hookBefore))
6175
assert.deepEqual(context.data, { first: 'John', last: 'Doe', a: { b: 'john' } }, '4')
6276

63-
context = preventChanges(['name', 'a.c.d.e'], { error: false })(clone(hookBefore))
77+
context = await preventChanges(['name', 'a.c.d.e'], { error: false })(clone(hookBefore))
6478
assert.deepEqual(
6579
context.data,
6680
{ first: 'John', last: 'Doe', a: { b: 'john', c: { d: {} } } },
6781
'5',
6882
)
6983

70-
context = preventChanges(['first', 'last'], { error: false })(clone(hookBefore))
84+
context = await preventChanges(['first', 'last'], { error: false })(clone(hookBefore))
7185
assert.deepEqual(context.data, { a: { b: 'john', c: { d: { e: 1 } } } })
7286

73-
context = preventChanges(['first', 'a.b', 'a.c.d.e'], { error: false })(clone(hookBefore))
87+
context = await preventChanges(['first', 'a.b', 'a.c.d.e'], { error: false })(
88+
clone(hookBefore),
89+
)
7490
assert.deepEqual(context.data, { last: 'Doe', a: { c: { d: {} } } })
7591
})
7692
})

src/hooks/prevent-changes/prevent-changes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export const preventChanges = (fieldNames: MaybeArray<string>, options?: Prevent
3131
throw error
3232
}
3333
}
34-
34+
} else {
3535
item = _omit(item, fieldNamesArr)
3636
}
3737

src/hooks/set-field/set-field.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export const setField =
3434

3535
context = _setWith(context, as, value, _clone)
3636

37-
if (next) return next().then(() => context)
37+
if (next) return next()
3838

3939
return context
4040
}

src/hooks/set-now/set-now-data.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ describe('setNowData', () => {
2121
})
2222

2323
it('supports multiple field names', () => {
24-
setNowData('createdAt1', 'createdAt2')(hookBefore)
24+
setNowData(['createdAt1', 'createdAt2'])(hookBefore)
2525
checkHook(hookBefore.data, { first: 'John', last: 'Doe' }, ['createdAt1', 'createdAt2'])
2626
})
2727
})
@@ -54,7 +54,7 @@ describe('setNowData', () => {
5454
})
5555

5656
it('props with no dots', () => {
57-
setNowData('madeAt', 'builtAt')(hookBefore)
57+
setNowData(['madeAt', 'builtAt'])(hookBefore)
5858
checkHook(
5959
hookBefore.data,
6060
{ empl: { name: { first: 'John', last: 'Doe' }, status: 'AA' }, dept: 'Acct' },

src/hooks/set-now/set-now-data.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import type { MaybeArray } from '../../internal.utils.js'
2+
import { toArray } from '../../internal.utils.js'
13
import { transformData } from '../transform/transform-data.js'
24
import _set from 'lodash/set.js'
35

@@ -6,11 +8,14 @@ import _set from 'lodash/set.js'
68
*
79
* @see https://hooks-common.feathersjs.com/hooks.html#setnow
810
*/
9-
export const setNowData = (...fieldNames: string[]) =>
10-
transformData(data => {
11-
for (let i = 0; i < fieldNames.length; i++) {
12-
const key = fieldNames[i]
11+
export const setNowData = (fieldNames: MaybeArray<string>) => {
12+
const fieldNamesArr = toArray(fieldNames)
13+
14+
return transformData(data => {
15+
for (let i = 0; i < fieldNamesArr.length; i++) {
16+
const key = fieldNamesArr[i]
1317

1418
_set(data, key, new Date())
1519
}
1620
})
21+
}

src/hooks/set-slug/set-slug.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,21 @@ import type { HookContext, NextFunction } from '@feathersjs/feathers'
66
*
77
* @see https://hooks-common.feathersjs.com/hooks.html#setslug
88
*/
9-
export const setSlug =
10-
<H extends HookContext = HookContext>(slug: string, fieldName?: string) =>
11-
(context: H, next?: NextFunction) => {
12-
if (typeof fieldName !== 'string') {
13-
fieldName = `query.${slug}`
14-
}
9+
export const setSlug = <H extends HookContext = HookContext>(slug: string, fieldName?: string) => {
10+
if (typeof fieldName !== 'string') {
11+
fieldName = `query.${slug}`
12+
}
1513

14+
return (context: H, next?: NextFunction) => {
1615
if (context.params && context.params.provider === 'rest') {
1716
const value = context.params.route[slug]
1817
if (typeof value === 'string' && value[0] !== ':') {
1918
_set(context.params, fieldName, value)
2019
}
2120
}
2221

23-
if (next) return next().then(() => context)
22+
if (next) return next()
2423

2524
return context
2625
}
26+
}

src/hooks/sifter/sifter.test.ts

Lines changed: 0 additions & 50 deletions
This file was deleted.

src/hooks/sifter/sifter.ts

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)