test with mysql8

Signed-off-by: Daniel Dias Branco Arthaud <arthaud@gmail.com>
This commit is contained in:
Daniel Dias Branco Arthaud
2022-08-18 22:12:01 -03:00
parent 243533ecdc
commit b5b24f7bf8
+39 -1
View File
@@ -14,9 +14,16 @@
* limitations under the License.
*/
import knexFactory, { Knex } from 'knex';
import { Duration } from 'luxon';
import { AbortController } from 'node-abort-controller';
import { delegateAbortController, sleep, validateId } from './util';
import { delegateAbortController, nowPlus, sleep, validateId } from './util';
class KnexBuilder {
public build(client: string): Knex {
return knexFactory({ client });
}
}
describe('util', () => {
describe('validateId', () => {
@@ -73,4 +80,35 @@ describe('util', () => {
expect(child.signal.aborted).toBe(true);
});
});
describe('nowPlus', () => {
describe('without duration', () => {
const databases = [
{ client: 'sqlite3', expected: 'CURRENT_TIMESTAMP' },
{ client: 'mysql2', expected: 'CURRENT_TIMESTAMP' },
{ client: 'pg', expected: 'CURRENT_TIMESTAMP' },
];
it.each(databases)('for client $client', ({ client, expected }) => {
const knex = new KnexBuilder().build(client);
const result = nowPlus(undefined, knex);
expect(result.toString()).toBe(expected);
});
});
describe('With duration', () => {
const databases = [
{ client: 'sqlite3', expected: "datetime('now', '20 seconds')" },
{ client: 'mysql2', expected: 'now() + interval 20 second' },
{ client: 'pg', expected: "now() + interval '20 seconds'" },
];
it.each(databases)('for client $client', ({ client, expected }) => {
const duration = Duration.fromObject({ seconds: 20 });
const knex = new KnexBuilder().build(client);
const result = nowPlus(duration, knex);
expect(result.toString()).toBe(expected);
});
});
});
});