import * as assert from "assert"; import * as sinon from "sinon"; import { dbUserCtor } from "."; import { dbProviderStub } from "./db-provider-stub"; import { value as byIdSql } from "./db-user-by-id_sql"; import { value as vivifySql } from "./db-user-vivify_sql"; describe("dbUser", async () => { it("vivify a user", async () => { const { dbProvider, dbWrite } = dbProviderStub(sinon); dbWrite.one.resolves({ user_id: "00055d6d-2322-43f2-affc-0145b25c5f09" }); const { api } = dbUserCtor(dbProvider); const result = await api.vivify({ email: "asdf@example.com", displayName: "bob" }); assert(dbWrite.one.calledWith(vivifySql, { email: "asdf@example.com", displayName: "bob" })); assert.equal(result, "00055d6d-2322-43f2-affc-0145b25c5f09"); }); it("vivify a user fails", async () => { const { dbProvider, dbWrite } = dbProviderStub(sinon); dbWrite.one.resolves(null); const { api } = dbUserCtor(dbProvider); const result = await api.vivify({ email: "asdf@example.com", displayName: "bob" }); assert.equal(result, null); }); it("byId user lookup", async () => { const { dbProvider, dbRead } = dbProviderStub(sinon); dbRead.one.resolves({ id: "00055d6d-2322-43f2-affc-0145b25c5f09", email: "asdf@example.com", display_name: "bob", }); const { api } = dbUserCtor(dbProvider); const result = await api.byId("00055d6d-2322-43f2-affc-0145b25c5f09"); assert(dbRead.one.calledWith(byIdSql, { userId: "00055d6d-2322-43f2-affc-0145b25c5f09" })); assert(result); if (result) { assert.equal(result.userId, "00055d6d-2322-43f2-affc-0145b25c5f09"); assert.equal(result.email, "asdf@example.com"); assert.equal(result.displayName, "bob"); } }); it("byId user lookup fails", async () => { const { dbProvider, dbRead } = dbProviderStub(sinon); dbRead.one.resolves(null); const { api } = dbUserCtor(dbProvider); const result = await api.byId("00055d6d-2322-43f2-affc-0145b25c5f09"); assert.equal(result, null); }); });