kysely-mapper
Version:
Flexible Kysely-based utility for mapping between tables and objects
101 lines • 4.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 table_mapper_1 = require("../mappers/table-mapper");
const test_setup_1 = require("./utils/test-setup");
const test_utils_1 = require("./utils/test-utils");
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 setting type checks', () => {
(0, test_utils_1.ignore)('detects invalid return columns configurations', () => {
new table_mapper_1.TableMapper(db, 'users', {
// @ts-expect-error - invalid return column configuration
insertReturnColumns: ['notThere'],
// @ts-expect-error - invalid return column configuration
updateReturnColumns: ['notThere'],
});
new table_mapper_1.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 table_mapper_1.TableMapper(db, 'users', {});
new table_mapper_1.TableMapper(db, 'users', {});
new table_mapper_1.TableMapper(db, 'users', {
// @ts-expect-error - invalid return column configuration
insertReturnColumns: [''],
// @ts-expect-error - invalid return column configuration
updateReturnColumns: [''],
});
new table_mapper_1.TableMapper(db, 'users', {
// @ts-expect-error - invalid return column configuration
insertReturnColumns: ['notThere'],
// @ts-expect-error - invalid return column configuration
updateReturnColumns: ['notThere'],
});
class TestMapper6 extends table_mapper_1.TableMapper {
}
new TestMapper6(db, 'users', {
// @ts-expect-error - invalid return column configuration
insertReturnColumns: ['notThere'],
// @ts-expect-error - invalid return column configuration
updateReturnColumns: ['notThere'],
});
new table_mapper_1.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 table_mapper_1.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 table_mapper_1.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'],
});
});
(0, test_utils_1.ignore)('detects invalid return count configuration', () => {
class TestMapper extends table_mapper_1.TableMapper {
}
new TestMapper(db, 'users', {
// @ts-expect-error - invalid return count
countTransform: (count) => BigInt(count),
});
});
it('accepts readonly KeyColumns', () => {
new table_mapper_1.TableMapper(db, 'users', {});
});
it('accepts readonly SelectedColumns', () => {
new table_mapper_1.TableMapper(db, 'users', {});
});
it('accepts readonly return columns', () => {
new table_mapper_1.TableMapper(db, 'users', {});
});
it('accepts readonly settings', () => {
const settings = {
insertReturnColumns: ['id'],
updateReturnColumns: ['name'],
};
new table_mapper_1.TableMapper(db, 'users', settings);
});
});
//# sourceMappingURL=setting-types.test.js.map
;