link-stack/packages/hapi-pg-promise/src/index.spec.ts

100 lines
2.3 KiB
TypeScript
Raw Normal View History

2023-03-13 10:20:29 +00:00
import * as Hapi from "@hapi/hapi";
2023-03-13 14:42:49 +00:00
import { makePlugin } from ".";
const plugin = makePlugin();
2023-03-13 10:20:29 +00:00
describe("plugin option validation", () => {
let server;
beforeEach(async () => {
server = new Hapi.Server();
});
it("should throw when no connection details defined", async () => {
2023-03-13 14:42:49 +00:00
expect(server.register(plugin)).rejects.toThrow();
2023-03-13 10:20:29 +00:00
});
});
const defaultOpts = {
connection: "postgresql://amigo:amigo@127.0.0.1:5432/postgres",
};
describe("basic plugin runtime", () => {
let server;
beforeEach(async () => {
server = new Hapi.Server({ port: 0 });
await server.register({
2023-03-13 14:42:49 +00:00
plugin,
2023-03-13 10:20:29 +00:00
options: defaultOpts,
});
await server.start();
});
afterEach(async () => {
await server.stop();
});
it("should decorate db and pgp into server and request", async () => {
expect.assertions(5);
server.route({
method: "GET",
path: "/",
handler(req) {
expect(req.db).toBeInstanceOf(Function);
expect(req.server.db).toBeInstanceOf(Function);
expect(req.pgp).toBeInstanceOf(Function);
expect(req.server.pgp).toBeInstanceOf(Function);
return "OK";
},
});
const { statusCode } = await server.inject({
method: "get",
url: "/",
});
expect(statusCode).toBe(200);
});
});
describe("plugin runtime", () => {
let server;
beforeEach(async () => {
server = new Hapi.Server({ port: 0 });
});
afterEach(async () => {
await server.stop();
});
it("should decorate db and pgp into server and request with custom name", async () => {
expect.assertions(5);
await server.register({
2023-03-13 14:42:49 +00:00
plugin,
2023-03-13 10:20:29 +00:00
options: {
...defaultOpts,
logSql: true,
decorateAs: {
pgp: "foobar",
db: "poprocks",
},
},
});
await server.start();
await server.route({
method: "GET",
path: "/",
handler(req) {
expect(req.poprocks).toBeInstanceOf(Function);
expect(req.server.poprocks).toBeInstanceOf(Function);
expect(req.foobar).toBeInstanceOf(Function);
expect(req.server.foobar).toBeInstanceOf(Function);
return "OK";
},
});
const { statusCode } = await server.inject({
method: "get",
url: "/",
});
expect(statusCode).toBe(200);
});
});