Skip to content

Commit aec8134

Browse files
committed
test: fix debounced events
1 parent 917af6e commit aec8134

File tree

1 file changed

+37
-49
lines changed

1 file changed

+37
-49
lines changed

test/service-module/service-module.test.ts

Lines changed: 37 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { makeTodos } from '../fixtures/todos'
1919
import Vuex from 'vuex'
2020
import { performance } from 'perf_hooks'
2121
import enableServiceEvents from '../../src/service-module/service-module.events'
22+
import { Service } from '@feathersjs/feathers'
2223

2324
interface Options {
2425
idField: string
@@ -1191,15 +1192,17 @@ describe('Service Module', function () {
11911192
})
11921193

11931194
describe('Updates the Store on Events', function () {
1194-
const {
1195-
feathersSocketioClient,
1196-
BaseModel,
1197-
Thing,
1198-
ThingDebounced,
1199-
TodoDebounced,
1195+
let feathersSocketioClient,
12001196
debouncedQueue,
1201-
store
1202-
} = makeSocketIoContext()
1197+
store,
1198+
debouncedService: Service<any>
1199+
beforeEach(() => {
1200+
const context = makeSocketIoContext()
1201+
feathersSocketioClient = context.feathersSocketioClient
1202+
debouncedQueue = context.debouncedQueue
1203+
store = context.store
1204+
debouncedService = feathersSocketioClient.service('things-debounced')
1205+
})
12031206

12041207
it('created', function (done) {
12051208
// eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -1233,15 +1236,12 @@ describe('Service Module', function () {
12331236
store.state['things-debounced'].keyedById[0].test,
12341237
'the item received from the socket event was added to the store'
12351238
)
1236-
feathersSocketioClient
1237-
.service('things-debounced')
1238-
.off('created', listener)
1239+
debouncedService.off('created', listener)
12391240
done()
12401241
}, debounceEventsTime * 2)
12411242
}
1242-
feathersSocketioClient.service('things-debounced').on('created', listener)
1243-
1244-
feathersSocketioClient.service('things-debounced').create({ test: true })
1243+
debouncedService.on('created', listener)
1244+
debouncedService.create({ test: true })
12451245
})
12461246

12471247
it('patched', function (done) {
@@ -1277,17 +1277,12 @@ describe('Service Module', function () {
12771277
'the item received from the socket event was updated in the store'
12781278
)
12791279
}, debounceEventsTime * 2)
1280-
feathersSocketioClient
1281-
.service('things-debounced')
1282-
.off('patched', listener)
1280+
debouncedService.off('patched', listener)
12831281
done()
12841282
}
12851283

1286-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
1287-
feathersSocketioClient.service('things-debounced').on('patched', listener)
1288-
feathersSocketioClient
1289-
.service('things-debounced')
1290-
.patch(1, { test: true })
1284+
debouncedService.on('patched', listener)
1285+
debouncedService.patch(1, { test: true })
12911286
})
12921287

12931288
it('updated', function (done) {
@@ -1324,17 +1319,11 @@ describe('Service Module', function () {
13241319
)
13251320
done()
13261321
}, debounceEventsTime * 2)
1327-
feathersSocketioClient
1328-
.service('things-debounced')
1329-
.off('updated', listener)
1322+
debouncedService.off('updated', listener)
13301323
}
13311324

1332-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
1333-
feathersSocketioClient.service('things-debounced').on('updated', listener)
1334-
1335-
feathersSocketioClient
1336-
.service('things-debounced')
1337-
.update(1, { test: true })
1325+
debouncedService.on('updated', listener)
1326+
debouncedService.update(1, { test: true })
13381327
})
13391328

13401329
it('removed', function (done) {
@@ -1372,21 +1361,19 @@ describe('Service Module', function () {
13721361
)
13731362
done()
13741363
}, debounceEventsTime * 2)
1375-
1376-
feathersSocketioClient
1377-
.service('things-debounced')
1378-
.off('removed', listener)
1364+
debouncedService.off('removed', listener)
13791365
}
13801366

1381-
feathersSocketioClient.service('things-debounced').on('removed', listener)
1382-
1383-
feathersSocketioClient.service('things-debounced').remove(1)
1367+
debouncedService.on('removed', listener)
1368+
debouncedService.remove(1)
13841369
})
13851370

13861371
it('debounce works with plenty items', function (done) {
13871372
store.commit('things-debounced/clearAll')
13881373

1389-
const { debounceEventsTime } = store.state['things-debounced']
1374+
const { debounceEventsTime, debounceEventsMaxWait } = store.state[
1375+
'things-debounced'
1376+
]
13901377

13911378
const itemsCount = 100
13921379
let i = 0
@@ -1396,17 +1383,20 @@ describe('Service Module', function () {
13961383
'no items at start'
13971384
)
13981385

1386+
const now = performance.now()
1387+
13991388
const setTimeoutCreate = () => {
14001389
setTimeout(() => {
1401-
feathersSocketioClient
1402-
.service('things-debounced')
1403-
.create({ test: true, i })
1390+
debouncedService.create({ test: true, i })
14041391
i++
1405-
assert(
1406-
Object.keys(store.state['things-debounced'].keyedById).length === 0,
1407-
`no items at i: ${i}`
1408-
)
14091392
if (i < itemsCount) {
1393+
if (performance.now() - now < debounceEventsMaxWait) {
1394+
assert(
1395+
Object.keys(store.state['things-debounced'].keyedById)
1396+
.length === 0,
1397+
`no items at i: ${i}`
1398+
)
1399+
}
14101400
setTimeoutCreate()
14111401
} else {
14121402
setTimeout(() => {
@@ -1443,9 +1433,7 @@ describe('Service Module', function () {
14431433

14441434
const setTimeoutCreate = () => {
14451435
setTimeout(() => {
1446-
feathersSocketioClient
1447-
.service('things-debounced')
1448-
.create({ test: true, i })
1436+
debouncedService.create({ test: true, i })
14491437
i++
14501438
const timePassed = Math.floor(
14511439
performance.now() - startedAt - debounceEventsTime

0 commit comments

Comments
 (0)