diff --git a/.gitignore b/.gitignore index db94fec2dc..1bf2706e43 100644 --- a/.gitignore +++ b/.gitignore @@ -50,7 +50,8 @@ bundle.mobile.js.map !.yarn/versions # VSCode -.vscode +.vscode/* +!.vscode/settings.default.json # IntelliJ IDEA .idea diff --git a/.oxlintrc.json b/.oxlintrc.json index ed2c0a9e05..2b26a5b5b2 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -4,8 +4,8 @@ "jsPlugins": ["./packages/eslint-plugin-actual/lib/index.js"], "env": { "browser": true, - "jest": true, - "node": true + "node": true, + "vitest": true }, "globals": { "vi": "readonly", diff --git a/.vscode/settings.default.json b/.vscode/settings.default.json new file mode 100644 index 0000000000..dd1a72cc52 --- /dev/null +++ b/.vscode/settings.default.json @@ -0,0 +1,7 @@ +{ + "typescript.tsdk": "node_modules/typescript/lib", + "editor.defaultFormatter": "oxc.oxc-vscode", + "vitest.nodeEnv": { + "NODE_OPTIONS": "--experimental-vm-modules --import ./packages/sync-server/register-loader.mjs --trace-warnings" + } +} diff --git a/packages/crdt/package.json b/packages/crdt/package.json index 6b5d88ec07..445b34f196 100644 --- a/packages/crdt/package.json +++ b/packages/crdt/package.json @@ -12,7 +12,7 @@ "build:node": "tsc --p tsconfig.dist.json", "proto:generate": "./bin/generate-proto", "build": "rm -rf dist && yarn run build:node", - "test": "vitest --run --globals" + "test": "vitest --run" }, "dependencies": { "google-protobuf": "^3.21.4", diff --git a/packages/crdt/vitest.config.mts b/packages/crdt/vitest.config.mts new file mode 100644 index 0000000000..f13a7fbc70 --- /dev/null +++ b/packages/crdt/vitest.config.mts @@ -0,0 +1,11 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + globals: true, + include: ['src/**/*.test.(js|ts)'], + environment: 'node', + maxWorkers: 1, + isolate: false, + }, +}); diff --git a/packages/eslint-plugin-actual/vitest.config.mts b/packages/eslint-plugin-actual/vitest.config.mts new file mode 100644 index 0000000000..c15a265401 --- /dev/null +++ b/packages/eslint-plugin-actual/vitest.config.mts @@ -0,0 +1,11 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + globals: true, + include: ['**/*.test.(js|ts)', '**/__tests__/*'], + environment: 'node', + maxWorkers: 1, + isolate: false, + }, +}); diff --git a/packages/loot-core/vitest.config.ts b/packages/loot-core/vitest.config.ts index 4ac95de5d9..d7287868a6 100644 --- a/packages/loot-core/vitest.config.ts +++ b/packages/loot-core/vitest.config.ts @@ -30,7 +30,7 @@ export default defineConfig({ alias: [ { find: /^@actual-app\/crdt(\/.*)?$/, - replacement: path.resolve('../crdt/src$1'), + replacement: path.resolve(path.join(__dirname, '../crdt/src$1')), }, ], extensions: resolveExtensions, diff --git a/packages/sync-server/src/app-sync.test.ts b/packages/sync-server/src/app-sync.test.ts index 116dc3c220..82c99edadb 100644 --- a/packages/sync-server/src/app-sync.test.ts +++ b/packages/sync-server/src/app-sync.test.ts @@ -18,6 +18,10 @@ const createUser = (userId, userName, role, owner = 0, enabled = 1) => { ); }; +const deleteUser = (userId: string) => { + getAccountDb().mutate('DELETE FROM users WHERE id = ?', [userId]); +}; + describe('/user-get-key', () => { it('returns 401 if the user is not authenticated', async () => { const res = await request(app).post('/user-get-key'); @@ -536,6 +540,8 @@ describe('/list-user-files', () => { it('returns a list of user files for an authenticated user', async () => { createUser('fileListAdminId', 'admin', ADMIN_ROLE, 1); + onTestFinished(() => deleteUser('fileListAdminId')); + const fileId1 = crypto.randomBytes(16).toString('hex'); const fileId2 = crypto.randomBytes(16).toString('hex'); const fileName1 = 'file1.txt'; diff --git a/upcoming-release-notes/6505.md b/upcoming-release-notes/6505.md new file mode 100644 index 0000000000..802986c82d --- /dev/null +++ b/upcoming-release-notes/6505.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [jfdoming] +--- + +Add configuration to use built-in test explorer in VS Code diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000000..c1665c22f5 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + projects: [ + 'packages/*/vitest.config.{ts,mts}', + 'packages/component-library/vitest.web.config.ts', + { + extends: 'packages/loot-core/vitest.web.config.ts', + test: { name: 'loot-core-web', dir: 'packages/loot-core' }, + }, + ], + onConsoleLog: (log, type) => { + // print only console.error + return type === 'stderr'; + }, + }, +});