test: create lib function for getting mocked env variables
This commit is contained in:
8
.vscode/test.code-snippets
vendored
8
.vscode/test.code-snippets
vendored
@@ -45,15 +45,13 @@
|
|||||||
"",
|
"",
|
||||||
"import app from \"~/index\";",
|
"import app from \"~/index\";",
|
||||||
"import { server } from \"~/mocks\";",
|
"import { server } from \"~/mocks\";",
|
||||||
"import { getDb, resetDb } from \"~/models/db\";",
|
"import { resetDb } from \"~/models/db\";",
|
||||||
|
"import { getTestDb } from \"~/libs/test/getTestDb\";",
|
||||||
"",
|
"",
|
||||||
"server.listen();",
|
"server.listen();",
|
||||||
"",
|
"",
|
||||||
"describe(\"requests the /$1 route\", () => {",
|
"describe(\"requests the /$1 route\", () => {",
|
||||||
" const db = getDb({",
|
" const db = getTestDb();",
|
||||||
" TURSO_URL: process.env.TURSO_URL ?? \"http://127.0.0.1:3000\",",
|
|
||||||
" TURSO_AUTH_TOKEN: process.env.TURSO_AUTH_TOKEN ?? \"asd\",",
|
|
||||||
" });",
|
|
||||||
"",
|
"",
|
||||||
" beforeEach(async () => {",
|
" beforeEach(async () => {",
|
||||||
" await resetDb();",
|
" await resetDb();",
|
||||||
|
|||||||
@@ -4,17 +4,15 @@ import { DateTime } from "luxon";
|
|||||||
import { beforeEach, describe, expect, it } from "bun:test";
|
import { beforeEach, describe, expect, it } from "bun:test";
|
||||||
|
|
||||||
import app from "~/index";
|
import app from "~/index";
|
||||||
|
import { getTestDb } from "~/libs/test/getTestDb";
|
||||||
import { server } from "~/mocks";
|
import { server } from "~/mocks";
|
||||||
import { getDb, resetDb } from "~/models/db";
|
import { resetDb } from "~/models/db";
|
||||||
import { deviceTokensTable } from "~/models/schema";
|
import { deviceTokensTable } from "~/models/schema";
|
||||||
|
|
||||||
server.listen();
|
server.listen();
|
||||||
|
|
||||||
describe("requests the /token route", () => {
|
describe("requests the /token route", () => {
|
||||||
const db = getDb({
|
const db = getTestDb();
|
||||||
TURSO_URL: process.env.TURSO_URL ?? "http://127.0.0.1:3000",
|
|
||||||
TURSO_AUTH_TOKEN: process.env.TURSO_AUTH_TOKEN ?? "asd",
|
|
||||||
});
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await resetDb();
|
await resetDb();
|
||||||
|
|||||||
@@ -1,17 +1,16 @@
|
|||||||
import { beforeEach, describe, expect, it } from "bun:test";
|
import { beforeEach, describe, expect, it } from "bun:test";
|
||||||
|
|
||||||
import app from "~/index";
|
import app from "~/index";
|
||||||
|
import { getTestDb } from "~/libs/test/getTestDb";
|
||||||
|
import { getTestEnv } from "~/libs/test/getTestEnv";
|
||||||
import { server } from "~/mocks";
|
import { server } from "~/mocks";
|
||||||
import { getDb, resetDb } from "~/models/db";
|
import { resetDb } from "~/models/db";
|
||||||
import { deviceTokensTable } from "~/models/schema";
|
import { deviceTokensTable } from "~/models/schema";
|
||||||
|
|
||||||
server.listen();
|
server.listen();
|
||||||
|
|
||||||
describe("requests the /watch-status route", () => {
|
describe("requests the /watch-status route", () => {
|
||||||
const db = getDb({
|
const db = getTestDb();
|
||||||
TURSO_URL: process.env.TURSO_URL ?? "http://127.0.0.1:3000",
|
|
||||||
TURSO_AUTH_TOKEN: process.env.TURSO_AUTH_TOKEN ?? "asd",
|
|
||||||
});
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await resetDb();
|
await resetDb();
|
||||||
@@ -36,10 +35,7 @@ describe("requests the /watch-status route", () => {
|
|||||||
titleId: 10,
|
titleId: 10,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
{
|
getTestEnv(),
|
||||||
TURSO_URL: process.env.TURSO_URL,
|
|
||||||
TURSO_AUTH_TOKEN: process.env.TURSO_AUTH_TOKEN,
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(res.json()).resolves.toEqual({ success: true });
|
expect(res.json()).resolves.toEqual({ success: true });
|
||||||
@@ -61,10 +57,7 @@ describe("requests the /watch-status route", () => {
|
|||||||
titleId: 10,
|
titleId: 10,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
{
|
getTestEnv(),
|
||||||
TURSO_URL: process.env.TURSO_URL,
|
|
||||||
TURSO_AUTH_TOKEN: process.env.TURSO_AUTH_TOKEN,
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(res.json()).resolves.toEqual({ success: false });
|
expect(res.json()).resolves.toEqual({ success: false });
|
||||||
@@ -90,10 +83,7 @@ describe("requests the /watch-status route", () => {
|
|||||||
titleId: -1,
|
titleId: -1,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
{
|
getTestEnv(),
|
||||||
TURSO_URL: process.env.TURSO_URL,
|
|
||||||
TURSO_AUTH_TOKEN: process.env.TURSO_AUTH_TOKEN,
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(res.json()).resolves.toEqual({ success: true });
|
expect(res.json()).resolves.toEqual({ success: true });
|
||||||
|
|||||||
7
src/libs/test/getTestDb.ts
Normal file
7
src/libs/test/getTestDb.ts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import { getDb } from "~/models/db";
|
||||||
|
|
||||||
|
import { getTestEnv } from "./getTestEnv";
|
||||||
|
|
||||||
|
export function getTestDb() {
|
||||||
|
return getDb(getTestEnv());
|
||||||
|
}
|
||||||
22
src/libs/test/getTestEnv.ts
Normal file
22
src/libs/test/getTestEnv.ts
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
import type { Env } from "~/types/env";
|
||||||
|
|
||||||
|
/** Should only be used when it doesn't make sense for 'Bindings' or 'Variables' to be set. Otherwise, use getTestEnv(). */
|
||||||
|
export function getTestEnvVariables(): Omit<Env, "Bindings" | "Variables"> {
|
||||||
|
return getTestEnv();
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getTestEnv({
|
||||||
|
ADMIN_SDK_JSON = '{"clientEmail": "test@test.com"}',
|
||||||
|
ENABLE_ANIFY = "true",
|
||||||
|
QSTASH_URL = "https://qstash.com",
|
||||||
|
TURSO_AUTH_TOKEN = "123",
|
||||||
|
TURSO_URL = "http://127.0.0.1:3001",
|
||||||
|
}: Partial<Env> = {}): Env {
|
||||||
|
return {
|
||||||
|
ADMIN_SDK_JSON,
|
||||||
|
ENABLE_ANIFY,
|
||||||
|
QSTASH_URL,
|
||||||
|
TURSO_AUTH_TOKEN,
|
||||||
|
TURSO_URL,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
import { formatCmd } from "node_modules/zx/build/util";
|
import { formatCmd } from "node_modules/zx/build/util";
|
||||||
import { $, minimist } from "zx";
|
import { $, minimist } from "zx";
|
||||||
|
|
||||||
|
import { getTestEnvVariables } from "./libs/test/getTestEnv";
|
||||||
|
|
||||||
const args = minimist(process.argv.slice(2));
|
const args = minimist(process.argv.slice(2));
|
||||||
if (!args.dbCommand) {
|
if (!args["dbCommand"]) {
|
||||||
throw new Error("dbCommand is required");
|
throw new Error("dbCommand is required");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -18,15 +20,14 @@ const positionalArgs = Object.entries(args)
|
|||||||
})
|
})
|
||||||
.concat(args._);
|
.concat(args._);
|
||||||
|
|
||||||
console.log(formatCmd(args.dbCommand));
|
console.log(formatCmd(args["dbCommand"]));
|
||||||
const dbProcess = $({ quote: (arg) => arg })`${args.dbCommand}`.nothrow();
|
const dbProcess = $({ quote: (arg) => arg })`${args["dbCommand"]}`.nothrow();
|
||||||
|
|
||||||
$.env = {
|
$.env = {
|
||||||
PATH: process.env.PATH,
|
...getTestEnvVariables(),
|
||||||
HOME: process.env.HOME,
|
PATH: process.env["PATH"],
|
||||||
TURSO_URL: process.env.TURSO_URL ?? "http://127.0.0.1:3001",
|
HOME: process.env["HOME"],
|
||||||
TURSO_AUTH_TOKEN: process.env.TURSO_AUTH_TOKEN ?? "asd",
|
SHOULD_LOG_ERRORS: process.env["SHOULD_LOG_ERRORS"] ?? "true",
|
||||||
SHOULD_LOG_ERRORS: process.env.SHOULD_LOG_ERRORS ?? "true",
|
|
||||||
};
|
};
|
||||||
await $`bun db:migrate`.nothrow();
|
await $`bun db:migrate`.nothrow();
|
||||||
await $({
|
await $({
|
||||||
|
|||||||
Reference in New Issue
Block a user