kysely-mapper
Version:
Flexible Kysely-based utility for mapping between tables and objects
80 lines • 3.83 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const test_setup_1 = require("./utils/test-setup");
const test_mappers_1 = require("./utils/test-mappers");
let db;
let userMapperReturningID;
let userMapperReturningNothing;
beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
db = yield (0, test_setup_1.createDB)();
userMapperReturningNothing = (0, test_mappers_1.createUserMapperReturningNothing)(db);
userMapperReturningID = (0, test_mappers_1.createUserMapperReturningID)(db);
}));
beforeEach(() => (0, test_setup_1.resetDB)(db));
afterAll(() => (0, test_setup_1.destroyDB)(db));
describe('inserting specific columns', () => {
it('subsets inserted columns, excluding ID', () => __awaiter(void 0, void 0, void 0, function* () {
const subsetQuery = userMapperReturningID
.insert()
.columns(['name', 'handle']); // allows readonly array
const insertReturn = yield subsetQuery.returnOne({
id: 10,
name: 'John Doe',
handle: 'johndoe',
email: 'jdoe@abc.def',
});
expect(insertReturn).toEqual({ id: expect.any(Number) });
const readUser = yield userMapperReturningID.select().returnAll();
expect(readUser).toEqual([
{ id: 1, name: 'John Doe', handle: 'johndoe', email: null },
]);
}));
it('subsets inserted columns, including ID', () => __awaiter(void 0, void 0, void 0, function* () {
const subsetQuery = userMapperReturningNothing
.insert()
.columns(['id', 'name', 'handle']);
yield subsetQuery.run({
id: 10,
name: 'John Doe',
handle: 'johndoe',
email: 'jdoe@abc.def',
});
const readUser = yield userMapperReturningID.select().returnAll();
expect(readUser).toEqual([
{ id: 10, name: 'John Doe', handle: 'johndoe', email: null },
]);
}));
it('requires all subsetted columns to be inserted', () => __awaiter(void 0, void 0, void 0, function* () {
const subsetQuery = userMapperReturningID
.insert()
.columns(['name', 'handle', 'email']);
const insertValues = { name: 'John Doe', handle: 'johndoe' };
expect(() => subsetQuery.returnOne(insertValues)).rejects.toThrow(`column 'email' missing`);
const success = yield subsetQuery.run(Object.assign(Object.assign({}, insertValues), { email: null }));
expect(success).toBe(true);
}));
it('provides insertTransform with column subset', () => __awaiter(void 0, void 0, void 0, function* () {
expect.assertions(1);
const mapper = userMapperReturningID.withTransforms({
insertTransform: (source, columns) => {
expect(columns).toEqual(['name', 'handle']);
return source;
},
});
yield mapper.insert().columns(['name', 'handle']).run({
name: 'John Doe',
handle: 'johndoe',
email: 'jdoe@abc.def',
});
}));
});
//# sourceMappingURL=insert-columns.test.js.map
;