Skip to content

Commit 189cdff

Browse files
committed
feat: Migrate to vitest for testing
This allows much better integration with ESM packages and should also be faster. Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
1 parent 1573aa1 commit 189cdff

9 files changed

Lines changed: 1284 additions & 978 deletions

.travis.yml

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

jest.config.mjs

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

package-lock.json

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

package.json

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,18 @@
2121
"dev:watch": "vite --mode development build --watch",
2222
"lint": "eslint lib",
2323
"lint:fix": "eslint lib --fix",
24-
"test": "jest",
25-
"test:coverage": "jest --coverage"
24+
"test": "vitest run",
25+
"test:coverage": "vitest run --coverage"
2626
},
2727
"keywords": [
2828
"nextcloud"
2929
],
30-
"homepage": "https://github.com/nextcloud/nextcloud-logger#readme",
30+
"homepage": "https://github.com/nextcloud-libraries/nextcloud-logger#readme",
3131
"author": "Christoph Wurst",
3232
"license": "GPL-3.0-or-later",
3333
"repository": {
3434
"type": "git",
35-
"url": "https://github.com/nextcloud/nextcloud-logger"
35+
"url": "https://github.com/nextcloud-libraries/nextcloud-logger"
3636
},
3737
"dependencies": {
3838
"@nextcloud/auth": "^2.3.0"
@@ -42,15 +42,14 @@
4242
"@nextcloud/eslint-config": "^8.3.0",
4343
"@nextcloud/typings": "^1.8.0",
4444
"@nextcloud/vite-config": "^1.2.3",
45-
"@types/jest": "^29.5.12",
4645
"@types/node": "^20.12.7",
46+
"@vitest/coverage-v8": "^1.5.1",
4747
"eslint": "^8.57.0",
48-
"jest": "^29.7.0",
49-
"jest-environment-jsdom": "^29.7.0",
50-
"ts-jest": "^29.1.2",
48+
"happy-dom": "^14.7.1",
5149
"typedoc": "^0.25.13",
5250
"typescript": "^5.4.5",
53-
"vite": "^5.2.10"
51+
"vite": "^5.2.10",
52+
"vitest": "^1.5.1"
5453
},
5554
"browserslist": [
5655
"extends @nextcloud/browserslist-config"

tests/ConsoleLogger.spec.ts

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { afterEach, describe, expect, it, test, vi } from 'vitest'
12
import { ConsoleLogger, buildConsoleLogger } from '../lib/ConsoleLogger'
23

34
// Dummy Error
@@ -11,28 +12,28 @@ class MyError extends Error {
1112
}
1213

1314
afterEach(() => {
14-
jest.resetAllMocks()
15+
vi.resetAllMocks()
1516
})
1617

1718
test('building the console logger', () => {
1819
const logger = buildConsoleLogger({ app: 'myapp' })
1920
expect(logger).toBeInstanceOf(ConsoleLogger)
2021

2122
// ensure initial context is preserved
22-
const consoleArgs = [] as any[]
23-
const warn = jest.spyOn(console, 'warn').mockImplementation((...args) => consoleArgs.push(...args))
23+
const consoleArgs = [] as unknown[]
24+
const warn = vi.spyOn(console, 'warn').mockImplementation((...args) => consoleArgs.push(...args))
2425
logger.warn('some message', { foo: 'bar' })
2526
expect(warn).toHaveBeenCalledTimes(1)
2627
expect(consoleArgs).toHaveLength(2)
2728
expect(consoleArgs[1]).toHaveProperty('app', 'myapp')
2829
})
2930

3031
describe('ConsoleLogger', () => {
31-
afterEach(() => jest.resetAllMocks())
32+
afterEach(() => { vi.resetAllMocks() })
3233

3334
it('logs debug messages', () => {
3435
const logger = new ConsoleLogger()
35-
const debug = jest.spyOn(window.console, 'debug').mockImplementation(() => {})
36+
const debug = vi.spyOn(window.console, 'debug').mockImplementation(() => {})
3637

3738
logger.debug('Should be logged')
3839
expect(debug).toHaveBeenCalledTimes(1)
@@ -41,7 +42,7 @@ describe('ConsoleLogger', () => {
4142

4243
it('logs info messages', () => {
4344
const logger = new ConsoleLogger()
44-
const info = jest.spyOn(window.console, 'info').mockImplementation(() => {})
45+
const info = vi.spyOn(window.console, 'info').mockImplementation(() => {})
4546

4647
logger.info('Should be logged')
4748
expect(info).toHaveBeenCalledTimes(1)
@@ -50,7 +51,7 @@ describe('ConsoleLogger', () => {
5051

5152
it('logs warn messages', () => {
5253
const logger = new ConsoleLogger()
53-
const warn = jest.spyOn(window.console, 'warn').mockImplementation(() => {})
54+
const warn = vi.spyOn(window.console, 'warn').mockImplementation(() => {})
5455

5556
logger.warn('Should be logged')
5657
expect(warn).toHaveBeenCalledTimes(1)
@@ -59,7 +60,7 @@ describe('ConsoleLogger', () => {
5960

6061
it('logs error messages', () => {
6162
const logger = new ConsoleLogger()
62-
const error = jest.spyOn(window.console, 'error').mockImplementation(() => {})
63+
const error = vi.spyOn(window.console, 'error').mockImplementation(() => {})
6364

6465
logger.error('Should be logged')
6566
expect(error).toHaveBeenCalledTimes(1)
@@ -68,7 +69,7 @@ describe('ConsoleLogger', () => {
6869

6970
it('logs fatal messages', () => {
7071
const logger = new ConsoleLogger()
71-
const error = jest.spyOn(window.console, 'error').mockImplementation(() => {})
72+
const error = vi.spyOn(window.console, 'error').mockImplementation(() => {})
7273

7374
logger.fatal('Should be logged')
7475
expect(error).toHaveBeenCalledTimes(1)
@@ -77,7 +78,7 @@ describe('ConsoleLogger', () => {
7778

7879
it('allows global context', () => {
7980
const logger = new ConsoleLogger({ foo: 'bar' })
80-
const debug = jest.spyOn(window.console, 'debug').mockImplementation(() => {})
81+
const debug = vi.spyOn(window.console, 'debug').mockImplementation(() => {})
8182

8283
logger.debug('Should be logged')
8384
expect(debug).toHaveBeenCalledTimes(1)
@@ -87,7 +88,7 @@ describe('ConsoleLogger', () => {
8788

8889
it('allows extending global context', () => {
8990
const logger = new ConsoleLogger({ one: 1, two: 2 })
90-
const debug = jest.spyOn(window.console, 'debug').mockImplementation(() => {})
91+
const debug = vi.spyOn(window.console, 'debug').mockImplementation(() => {})
9192

9293
logger.debug('Should be logged', { two: 3 })
9394
expect(debug).toHaveBeenCalledTimes(1)
@@ -97,7 +98,7 @@ describe('ConsoleLogger', () => {
9798

9899
it('allows extending empty global context', () => {
99100
const logger = new ConsoleLogger()
100-
const debug = jest.spyOn(window.console, 'debug').mockImplementation(() => {})
101+
const debug = vi.spyOn(window.console, 'debug').mockImplementation(() => {})
101102

102103
logger.debug('Should be logged', { one: 1 })
103104
expect(debug).toHaveBeenCalledTimes(1)
@@ -108,7 +109,7 @@ describe('ConsoleLogger', () => {
108109
it('only logs configured levels', () => {
109110
const logger = new ConsoleLogger({ level: 2 })
110111

111-
const debug = jest.spyOn(window.console, 'debug')
112+
const debug = vi.spyOn(window.console, 'debug')
112113

113114
logger.debug('Should not be logged')
114115
expect(debug).toHaveBeenCalledTimes(0)
@@ -119,7 +120,7 @@ describe('ConsoleLogger', () => {
119120
const logger = new ConsoleLogger({})
120121

121122
const console = [] as [string, unknown][]
122-
const warn = jest.spyOn(window.console, 'warn').mockImplementation((msg, ctx) => console.push([msg, ctx]))
123+
const warn = vi.spyOn(window.console, 'warn').mockImplementation((msg, ctx) => console.push([msg, ctx]))
123124

124125
logger.warn(error)
125126
expect(warn).toHaveBeenCalledTimes(1)
@@ -134,7 +135,7 @@ describe('ConsoleLogger', () => {
134135
const logger = new ConsoleLogger({})
135136

136137
const console = [] as [string, unknown][]
137-
const debug = jest.spyOn(window.console, 'debug').mockImplementation((msg, ctx) => console.push([msg, ctx]))
138+
const debug = vi.spyOn(window.console, 'debug').mockImplementation((msg, ctx) => console.push([msg, ctx]))
138139

139140
logger.debug(error)
140141
expect(debug).toHaveBeenCalledTimes(1)
@@ -148,7 +149,7 @@ describe('ConsoleLogger', () => {
148149
const logger = new ConsoleLogger({ error: 'none' })
149150

150151
const console = [] as [string, unknown][]
151-
const warn = jest.spyOn(window.console, 'warn').mockImplementation((msg, ctx) => console.push([msg, ctx]))
152+
const warn = vi.spyOn(window.console, 'warn').mockImplementation((msg, ctx) => console.push([msg, ctx]))
152153

153154
logger.warn(error)
154155
expect(warn).toHaveBeenCalledTimes(1)

0 commit comments

Comments
 (0)