kysely-mapper
Version:
Flexible Kysely-based utility for mapping between tables and objects
99 lines • 4.44 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());
});
};
import { TableMapper } from '../mappers/table-mapper';
import { createDB, resetDB, destroyDB } from './utils/test-setup';
import { ignore } from './utils/test-utils';
let db;
beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
db = yield createDB();
}));
beforeEach(() => resetDB(db));
afterAll(() => destroyDB(db));
describe('table mapper setting type checks', () => {
ignore('detects invalid return columns configurations', () => {
new TableMapper(db, 'users', {
// @ts-expect-error - invalid return column configuration
insertReturnColumns: ['notThere'],
// @ts-expect-error - invalid return column configuration
updateReturnColumns: ['notThere'],
});
new TableMapper(db, 'users', {
// @ts-expect-error - actual and declared return types must match
insertReturnColumns: ['id', 'name'],
// @ts-expect-error - actual and declared return types must match
updateReturnColumns: ['id', 'name'],
});
new TableMapper(db, 'users', {});
new TableMapper(db, 'users', {});
new TableMapper(db, 'users', {
// @ts-expect-error - invalid return column configuration
insertReturnColumns: [''],
// @ts-expect-error - invalid return column configuration
updateReturnColumns: [''],
});
new TableMapper(db, 'users', {
// @ts-expect-error - invalid return column configuration
insertReturnColumns: ['notThere'],
// @ts-expect-error - invalid return column configuration
updateReturnColumns: ['notThere'],
});
class TestMapper6 extends TableMapper {
}
new TestMapper6(db, 'users', {
// @ts-expect-error - invalid return column configuration
insertReturnColumns: ['notThere'],
// @ts-expect-error - invalid return column configuration
updateReturnColumns: ['notThere'],
});
new TableMapper(db, 'users', {
// @ts-expect-error - actual and declared return types must match
insertReturnColumns: ['id'],
// @ts-expect-error - actual and declared return types must match
updateReturnColumns: ['id'],
});
new TableMapper(db, 'users', {
// @ts-expect-error - actual and declared return types must match
insertReturnColumns: ['id'],
// @ts-expect-error - actual and declared return types must match
updateReturnColumns: ['id'],
});
new TableMapper(db, 'users', {
// @ts-expect-error - actual and declared return types must match
insertReturnColumns: ['id'],
// @ts-expect-error - actual and declared return types must match
updateReturnColumns: ['id'],
});
});
ignore('detects invalid return count configuration', () => {
class TestMapper extends TableMapper {
}
new TestMapper(db, 'users', {
// @ts-expect-error - invalid return count
countTransform: (count) => BigInt(count),
});
});
it('accepts readonly KeyColumns', () => {
new TableMapper(db, 'users', {});
});
it('accepts readonly SelectedColumns', () => {
new TableMapper(db, 'users', {});
});
it('accepts readonly return columns', () => {
new TableMapper(db, 'users', {});
});
it('accepts readonly settings', () => {
const settings = {
insertReturnColumns: ['id'],
updateReturnColumns: ['name'],
};
new TableMapper(db, 'users', settings);
});
});
//# sourceMappingURL=setting-types.test.js.map