Skip to content

Commit baa38c8

Browse files
authored
test: test abnormal IndexedDB close event (#502)
1 parent 6883443 commit baa38c8

File tree

4 files changed

+20
-8
lines changed

4 files changed

+20
-8
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@
9797
"emoji-picker-element-data": "^1.7.2",
9898
"emojibase-data": "^5.1.1",
9999
"express": "^5.1.0",
100-
"fake-indexeddb": "^6.0.1",
100+
"fake-indexeddb": "^6.2.2",
101101
"fast-glob": "^3.3.3",
102102
"fetch-mock": "^11.1.5",
103103
"flat-color-icons": "^1.1.0",

pnpm-lock.yaml

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/database/databaseLifecycle.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ async function createDatabase (dbName) {
3434
// Handle abnormal closes, e.g. "delete database" in chrome dev tools.
3535
// No need for removeEventListener, because once the DB can no longer
3636
// fire "close" events, it will auto-GC.
37-
// Unfortunately cannot test in fakeIndexedDB: https://github.com/dumbmatter/fakeIndexedDB/issues/50
38-
/* istanbul ignore next */
3937
db.onclose = () => closeDatabase(dbName)
4038
performance.measure('createDatabase', 'createDatabase')
4139
return db

test/spec/database/Database.test.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
} from '../shared'
1616
import trimEmojiData from '../../../src/trimEmojiData'
1717
import { mockFetch, mockGetAndHead } from '../mockFetch.js'
18+
import { forceCloseDatabase } from 'fake-indexeddb'
1819

1920
describe('database tests', () => {
2021
beforeEach(basicBeforeEach)
@@ -301,4 +302,17 @@ describe('database tests', () => {
301302

302303
await db.delete()
303304
})
305+
306+
test('abnormal indexeddb close event', async () => {
307+
const dataSource = ALL_EMOJI
308+
const db = new Database({ dataSource })
309+
await db.ready()
310+
311+
// should be handled gracefully by 'close' event listener
312+
forceCloseDatabase(db._db)
313+
314+
await tick(20)
315+
316+
await db.delete()
317+
})
304318
})

0 commit comments

Comments
 (0)