From d046d56a5cdd2fb17c6f879b2ba20d99f63775ee Mon Sep 17 00:00:00 2001 From: Misha Kaletsky Date: Mon, 6 Nov 2023 11:52:55 -0500 Subject: [PATCH] fix vanilla-esm example + snapshot --- .../2023.11.03T16.52.04.users-table.mjs | 4 +- test/__snapshots__/examples.test.ts.snap | 65 +++++++++++++++++++ test/cli.test.ts | 2 +- test/examples.test.ts | 6 +- 4 files changed, 73 insertions(+), 4 deletions(-) diff --git a/examples/0.5-vanilla-esm/migrations/2023.11.03T16.52.04.users-table.mjs b/examples/0.5-vanilla-esm/migrations/2023.11.03T16.52.04.users-table.mjs index ecf4b06d..d2047b07 100644 --- a/examples/0.5-vanilla-esm/migrations/2023.11.03T16.52.04.users-table.mjs +++ b/examples/0.5-vanilla-esm/migrations/2023.11.03T16.52.04.users-table.mjs @@ -1,12 +1,12 @@ import { promises as fs } from 'fs'; /** @type {typeof import('../migrate.mjs').migrator['_types']['migration']} */ -exports.up = async ({ context }) => { +export const up = async ({ context }) => { await fs.mkdir(context.directory, { recursive: true }); await fs.writeFile(context.directory + '/users.json', JSON.stringify([], null, 2)); }; /** @type {typeof import('../migrate.mjs').migrator['_types']['migration']} */ -exports.down = async ({ context }) => { +export const down = async ({ context }) => { await fs.unlink(context.directory + '/users.json'); }; diff --git a/test/__snapshots__/examples.test.ts.snap b/test/__snapshots__/examples.test.ts.snap index c55e5068..353dada0 100644 --- a/test/__snapshots__/examples.test.ts.snap +++ b/test/__snapshots__/examples.test.ts.snap @@ -1,5 +1,70 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html +exports[`example 0.5-vanilla-esm 1`] = ` +"\`node migrate.mjs --help\` output: + +... + +\`node migrate.mjs up\` output: + +{ event: 'migrating', name: '<>.users-table.mjs' } +{ + event: 'migrated', + name: '<>.users-table.mjs', + durationSeconds: ??? +} +{ event: 'up', message: 'applied 1 migrations.' } + +\`node migrate.mjs down\` output: + +{ event: 'reverting', name: '<>.users-table.mjs' } +{ + event: 'reverted', + name: '<>.users-table.mjs', + durationSeconds: ??? +} +{ event: 'down', message: 'reverted 1 migrations.' } + +\`node migrate.mjs create --name new-migration.js\` output: + +{ + event: 'created', + path: '<>/examples/0.5-vanilla-esm/migrations/<>.new-migration.js' +} + +\`node migrate.mjs up\` output: + +{ event: 'migrating', name: '<>.users-table.mjs' } +{ + event: 'migrated', + name: '<>.users-table.mjs', + durationSeconds: ??? +} +{ event: 'migrating', name: '<>.new-migration.js' } +{ + event: 'migrated', + name: '<>.new-migration.js', + durationSeconds: ??? +} +{ event: 'up', message: 'applied 2 migrations.' } + +\`node migrate.mjs down --to 0\` output: + +{ event: 'reverting', name: '<>.new-migration.js' } +{ + event: 'reverted', + name: '<>.new-migration.js', + durationSeconds: ??? +} +{ event: 'reverting', name: '<>.users-table.mjs' } +{ + event: 'reverted', + name: '<>.users-table.mjs', + durationSeconds: ??? +} +{ event: 'down', message: 'reverted 2 migrations.' }" +`; + exports[`example 0-vanilla 1`] = ` "\`node migrate --help\` output: diff --git a/test/cli.test.ts b/test/cli.test.ts index ac4fedaa..58f0c1b4 100644 --- a/test/cli.test.ts +++ b/test/cli.test.ts @@ -278,7 +278,7 @@ describe('create migration file', () => { `); await expect(runCLI(['create', '--name', 'm4.txt'])).rejects.toThrowErrorMatchingInlineSnapshot( - `"Extension .txt not allowed. Allowed extensions are .js, .cjs, .mjs, .ts, .cts, .mts, .sql. See help for --allow-extension to avoid this error."` + '"Extension .txt not allowed. Allowed extensions are .js, .cjs, .mjs, .ts, .cts, .mts, .sql. See help for --allow-extension to avoid this error."' ); await expect(runCLI(['create', '--name', 'm4.txt', '--allow-extension', '.txt'])).rejects.toThrow( diff --git a/test/examples.test.ts b/test/examples.test.ts index ef145d31..1bf14179 100644 --- a/test/examples.test.ts +++ b/test/examples.test.ts @@ -2,7 +2,11 @@ import * as fs from 'fs'; import * as path from 'path'; import stripAnsi from 'strip-ansi'; import execa from 'execa'; -import { test, expect } from 'vitest'; +import { test, expect, beforeAll } from 'vitest'; + +beforeAll(async () => { + await execa('npm', ['run', 'compile']); +}); const examplesDir = path.join(__dirname, '../examples'); const examples = fs.readdirSync(examplesDir).filter(ex => /^\d/.exec(ex));