knex/test/unit/schema-builder/extensions.js
Dominic Vonk a4df3e3540
Implement extendable builders (#5041)
Co-authored-by: Olivier Cavadenti <olivier.cavadenti@gmail.com>
2022-05-17 13:07:26 +03:00

53 lines
1.5 KiB
JavaScript

'use strict';
const expect = require('chai').expect;
const MySQL_Client = require('../../../lib/dialects/mysql');
const knex = require('../../../knex');
describe('SchemaBuilder Extensions', () => {
const client = new MySQL_Client({ client: 'mysql' });
const equal = require('assert').equal;
const functionToExtend = () => true;
knex.SchemaBuilder.extend('tryCreateTable', functionToExtend);
knex.TableBuilder.extend('testCol', functionToExtend);
knex.ColumnBuilder.extend('testCol', functionToExtend);
knex.ViewBuilder.extend('testCol', functionToExtend);
it('schemabuilder has method', () => {
equal(client.schemaBuilder().tryCreateTable, functionToExtend);
expect(client.schemaBuilder().tryCreateTable()).to.be.true;
});
it('tablebuilder has method', () => {
client
.schemaBuilder()
.createTable('users', function (table) {
equal(table.testCol, functionToExtend);
})
.toSQL();
});
it('columnbuilder has method', () => {
client
.schemaBuilder()
.createTable('users', function (table) {
equal(table.string('t').testCol, functionToExtend);
})
.toSQL();
});
it('viewbuilder has method', () => {
client
.schemaBuilder()
.createView('users', function (view) {
equal(view.testCol, functionToExtend);
view.as(
knex('users')
.join('user_roles', 'users.user_id', 'user_roles.user_id')
.select('users.*', 'user_roles.role_code')
);
})
.toSQL();
});
});