kysely-mapper
Version:
Flexible Kysely-based utility for mapping between tables and objects
77 lines • 4.05 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 table_mapper_1 = require("../mappers/table-mapper");
const test_setup_1 = require("./utils/test-setup");
const test_types_1 = require("./utils/test-types");
const test_utils_1 = require("./utils/test-utils");
const test_mappers_1 = require("./utils/test-mappers");
let db;
beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
db = yield (0, test_setup_1.createDB)();
}));
beforeEach(() => (0, test_setup_1.resetDB)(db));
afterAll(() => (0, test_setup_1.destroyDB)(db));
describe('table mapper transform type checks', () => {
(0, test_utils_1.ignore)('detects invalid select transform configuration', () => {
new table_mapper_1.TableMapper(db, 'users').withTransforms({
// @ts-expect-error - invalid select transform
selectTransform: (user) => user,
});
});
(0, test_utils_1.ignore)('detects invalid insert transform configuration', () => {
new table_mapper_1.TableMapper(db, 'users').withTransforms({
// @ts-expect-error - invalid insert transform
insertTransform: (user) => user,
});
});
(0, test_utils_1.ignore)('detects invalid update transform configuration', () => {
new table_mapper_1.TableMapper(db, 'users').withTransforms({
// @ts-expect-error - invalid update transform
updateTransform: (_user) => ({ noId: 1 }),
});
});
(0, test_utils_1.ignore)('detects invalid update return transform return', () => __awaiter(void 0, void 0, void 0, function* () {
const mapper = new table_mapper_1.TableMapper(db, 'users', { keyColumns: ['id'] });
mapper.withTransforms({
selectTransform: (_user) => new test_types_1.User(1, 'John', 'Doe', 'jdoe', 'x@y.z'),
updateTransform: (user) => ({
id: user.id,
name: `${user.firstName} ${user.lastName}`,
handle: user.handle,
email: user.email,
}),
updateReturnTransform: (_user, returns) => returns,
});
(yield mapper
.update({ id: 1 })
// @ts-expect-error - ensure that return type is User
.returnOne(new test_types_1.User(1, 'John', 'Doe', 'jdoe', 'jdoe@abc.def'))).name;
}));
(0, test_utils_1.ignore)('detects insertion transformation type errors', () => __awaiter(void 0, void 0, void 0, function* () {
const insertTransformMapper = (0, test_mappers_1.createInsertTransformMapper)(db);
// @ts-expect-error - requires InsertedObject as input
yield insertTransformMapper.insert().returnOne(USERS[0]);
// @ts-expect-error - requires InsertedObject as input
yield insertTransformMapper.insert().run(USERS[0]);
// @ts-expect-error - requires InsertedObject as input
yield insertTransformMapper.insert().returnOne(selectedUser1);
// @ts-expect-error - requires InsertedObject as input
yield insertTransformMapper.insert().run(selectedUser1);
}));
it('accepts readonly transforms', () => {
const transforms = {
countTransform: (count) => count,
};
new table_mapper_1.TableMapper(db, 'users', {}).withTransforms(transforms);
});
});
//# sourceMappingURL=transform-types.test.js.map
;