Best JavaScript code snippet using cypress
sqlite3_test.js
Source:sqlite3_test.js
...23 .describe('sqlite3')24 .addBatch({25 createTable: {26 topic: function () {27 driver.connect(28 config,29 internals,30 function (err, db) {31 assert.isNull(err);32 db.createTable(33 'event',34 {35 id: {36 type: dataType.INTEGER,37 primaryKey: true,38 autoIncrement: true,39 notNull: true40 },41 str: { type: dataType.STRING, unique: true },42 txt: {43 type: dataType.TEXT,44 notNull: true,45 defaultValue: 'foo'46 },47 intg: dataType.INTEGER,48 rel: dataType.REAL,49 dt: dataType.DATE_TIME,50 bl: dataType.BOOLEAN,51 raw: {52 type: dataType.DATE_TIME,53 defaultValue: {54 raw: 'CURRENT_TIMESTAMP'55 }56 },57 special: {58 type: dataType.DATE_TIME,59 defaultValue: {60 special: 'CURRENT_TIMESTAMP'61 }62 }63 },64 this.callback.bind(this, null, db)65 );66 }.bind(this)67 );68 },69 teardown: function (db) {70 db.close()71 .then(function () {72 return unlink(config.filename);73 })74 .nodeify(this.callback);75 },76 'has resulting table metadata': {77 topic: function (db) {78 dbmeta(79 'sqlite3',80 { connection: db.connection },81 function (err, meta) {82 if (err) {83 return this.callback(err);84 }85 meta.getTables(this.callback);86 }.bind(this)87 );88 },89 'containing the event table': function (err, tables) {90 assert.isNull(err);91 var table = findByName(tables, 'event');92 assert.isNotNull(table);93 assert.strictEqual(table.getName(), 'event');94 }95 },96 'has column metadata for the event table': {97 topic: function (db) {98 dbmeta(99 'sqlite3',100 { connection: db.connection },101 function (err, meta) {102 if (err) {103 return this.callback(err);104 }105 meta.getColumns('event', this.callback);106 }.bind(this)107 );108 },109 'with 9 columns': function (err, columns) {110 assert.isNotNull(columns);111 assert.isNull(err);112 assert.strictEqual(columns.length, 9);113 },114 'that has integer id column that is primary key, non-nullable, and auto increments': function (115 err,116 columns117 ) {118 var column = findByName(columns, 'id');119 assert.isNull(err);120 assert.strictEqual(column.getDataType(), 'INTEGER');121 assert.strictEqual(column.isPrimaryKey(), true);122 assert.strictEqual(column.isNullable(), false);123 assert.strictEqual(column.isAutoIncrementing(), true);124 },125 'that has text str column that is unique': function (err, columns) {126 var column = findByName(columns, 'str');127 assert.isNull(err);128 assert.strictEqual(column.getDataType(), 'VARCHAR');129 assert.strictEqual(column.isUnique(), true);130 },131 'that has text txt column that is non-nullable': function (132 err,133 columns134 ) {135 var column = findByName(columns, 'txt');136 assert.isNull(err);137 assert.strictEqual(column.getDataType(), 'TEXT');138 assert.strictEqual(column.isNullable(), false);139 // assert.strictEqual(column.getDefaultValue(), 'foo');140 },141 'that has integer intg column': function (err, columns) {142 var column = findByName(columns, 'intg');143 assert.isNull(err);144 assert.strictEqual(column.getDataType(), 'INTEGER');145 assert.strictEqual(column.isNullable(), true);146 },147 'that has real rel column': function (err, columns) {148 var column = findByName(columns, 'rel');149 assert.isNull(err);150 assert.strictEqual(column.getDataType(), 'REAL');151 assert.strictEqual(column.isNullable(), true);152 },153 'that has integer dt column': function (err, columns) {154 var column = findByName(columns, 'dt');155 assert.isNull(err);156 assert.strictEqual(column.getDataType(), 'DATETIME');157 assert.strictEqual(column.isNullable(), true);158 },159 'that has boolean bl column': function (err, columns) {160 assert.isNull(err);161 var column = findByName(columns, 'bl');162 assert.strictEqual(column.getDataType(), 'BOOLEAN');163 assert.strictEqual(column.isNullable(), true);164 },165 'that has raw column': function (err, columns) {166 assert.isNull(err);167 var column = findByName(columns, 'raw');168 assert.strictEqual(column.getDefaultValue(), 'CURRENT_TIMESTAMP');169 },170 'that has special CURRENT_TIMESTAMP column': function (err, columns) {171 assert.isNull(err);172 var column = findByName(columns, 'special');173 assert.strictEqual(column.getDefaultValue(), 'CURRENT_TIMESTAMP');174 }175 }176 }177 })178 .addBatch({179 dropTable: {180 topic: function () {181 driver.connect(182 config,183 internals,184 function (err, db) {185 assert.isNull(err);186 db.createTable(187 'event',188 {189 id: {190 type: dataType.INTEGER,191 primaryKey: true,192 autoIncrement: true193 }194 },195 function (err) {196 if (err) {197 return this.callback(err);198 }199 db.dropTable('event', this.callback.bind(this, null, db));200 }.bind(this)201 );202 }.bind(this)203 );204 },205 teardown: function (db) {206 db.close()207 .then(function () {208 return unlink(config.filename);209 })210 .nodeify(this.callback);211 },212 'has table metadata': {213 topic: function (db) {214 dbmeta(215 'sqlite3',216 { connection: db.connection },217 function (err, meta) {218 if (err) {219 return this.callback(err);220 }221 meta.getTables(this.callback);222 }.bind(this)223 );224 },225 'containing no tables': function (err, tables) {226 assert.isNull(err);227 assert.isNotNull(tables);228 assert.strictEqual(tables.length, 1);229 }230 }231 }232 })233 .addBatch({234 renameTable: {235 topic: function () {236 driver.connect(237 config,238 internals,239 function (err, db) {240 assert.isNull(err);241 db.createTable(242 'event',243 {244 id: {245 type: dataType.INTEGER,246 primaryKey: true,247 autoIncrement: true248 }249 },250 function () {251 db.renameTable(252 'event',253 'functions',254 this.callback.bind(this, null, db)255 );256 }.bind(this)257 );258 }.bind(this)259 );260 },261 teardown: function (db) {262 db.close()263 .then(function () {264 return unlink(config.filename);265 })266 .nodeify(this.callback);267 },268 'has table metadata': {269 topic: function (db) {270 dbmeta(271 'sqlite3',272 { connection: db.connection },273 function (err, meta) {274 if (err) {275 return this.callback(err);276 }277 meta.getTables(this.callback);278 }.bind(this)279 );280 },281 'containing the functions table': function (err, tables) {282 assert.isNull(err);283 assert.isNotNull(tables);284 var table = findByName(tables, 'functions');285 assert.strictEqual(table.getName(), 'functions');286 assert.isNull(findByName(tables, 'event'));287 }288 }289 }290 })291 .addBatch({292 addColumn: {293 topic: function () {294 driver.connect(295 config,296 internals,297 function (err, db) {298 assert.isNull(err);299 db.createTable(300 'event',301 {302 id: {303 type: dataType.INTEGER,304 primaryKey: true,305 autoIncrement: true306 }307 },308 function () {309 db.addColumn(310 'event',311 'title',312 'string',313 this.callback.bind(this, null, db)314 );315 }.bind(this)316 );317 }.bind(this)318 );319 },320 teardown: function (db) {321 db.close()322 .then(function () {323 return unlink(config.filename);324 })325 .nodeify(this.callback);326 },327 'has column metadata': {328 topic: function (db) {329 dbmeta(330 'sqlite3',331 { connection: db.connection },332 function (err, meta) {333 if (err) {334 return this.callback(err);335 }336 meta.getColumns('event', this.callback);337 }.bind(this)338 );339 },340 'with additional title column': function (err, columns) {341 assert.isNull(err);342 assert.isNotNull(columns);343 assert.strictEqual(columns.length, 2);344 var column = findByName(columns, 'title');345 assert.strictEqual(column.getName(), 'title');346 assert.strictEqual(column.getDataType(), 'VARCHAR');347 }348 }349 }350 // removeColumn351 // renameColumn352 // changeColumn353 })354 .addBatch({355 addIndex: {356 topic: function () {357 driver.connect(358 config,359 internals,360 function (err, db) {361 assert.isNull(err);362 db.createTable(363 'event',364 {365 id: {366 type: dataType.INTEGER,367 primaryKey: true,368 autoIncrement: true369 },370 title: { type: dataType.STRING }371 },372 function () {373 db.addIndex(374 'event',375 'event_title',376 'title',377 this.callback.bind(this, null, db)378 );379 }.bind(this)380 );381 }.bind(this)382 );383 },384 teardown: function (db) {385 db.close()386 .then(function () {387 return unlink(config.filename);388 })389 .nodeify(this.callback);390 },391 'has resulting index metadata': {392 topic: function (db) {393 dbmeta(394 'sqlite3',395 { connection: db.connection },396 function (err, meta) {397 if (err) {398 return this.callback(err);399 }400 meta.getIndexes('event', this.callback);401 }.bind(this)402 );403 },404 'with additional index': function (err, indexes) {405 assert.isNull(err);406 assert.isNotNull(indexes);407 var index = findByName(indexes, 'event_title');408 assert.strictEqual(index.getName(), 'event_title');409 assert.strictEqual(index.getTableName(), 'event');410 assert.strictEqual(index.getColumnName(), 'title');411 }412 }413 }414 })415 .addBatch({416 insert: {417 topic: function () {418 driver.connect(419 config,420 internals,421 function (err, _db) {422 assert.isNull(err);423 db = _db;424 db.createTable('event', {425 id: {426 type: dataType.INTEGER,427 primaryKey: true,428 autoIncrement: true429 },430 title: { type: dataType.STRING }431 })432 .then(function () {433 return db.insert('event', ['id', 'title'], [2, 'title']);434 })435 .then(function () {436 return db.all('SELECT * from event;');437 })438 .then(function (data) {439 return data;440 })441 .nodeify(this.callback);442 }.bind(this)443 );444 },445 teardown: function () {446 db.close()447 .then(function () {448 return unlink(config.filename);449 })450 .nodeify(this.callback);451 },452 'with additional row': function (err, data) {453 assert.isNull(err);454 assert.strictEqual(data.length, 1);455 }456 }457 })458 .addBatch({459 insertWithSingleQuotes: {460 topic: function () {461 driver.connect(462 config,463 internals,464 function (err, _db) {465 assert.isNull(err);466 db = _db;467 db.createTable('event', {468 id: {469 type: dataType.INTEGER,470 primaryKey: true,471 autoIncrement: true472 },473 title: { type: dataType.STRING }474 })475 .then(function () {476 return db.insert(477 'event',478 ['id', 'title'],479 [2, "Bill's Mother's House"]480 );481 })482 .then(function () {483 return db.all('SELECT * from event;');484 })485 .nodeify(this.callback);486 }.bind(this)487 );488 },489 teardown: function () {490 db.close()491 .then(function () {492 return unlink(config.filename);493 })494 .nodeify(this.callback);495 },496 'with additional row': function (err, data) {497 assert.isNull(err);498 assert.strictEqual(data.length, 1);499 }500 }501 })502 .addBatch({503 removeIndex: {504 topic: function () {505 driver.connect(506 config,507 internals,508 function (err, db) {509 assert.isNull(err);510 db.createTable(511 'event',512 {513 id: {514 type: dataType.INTEGER,515 primaryKey: true,516 autoIncrement: true517 },518 title: { type: dataType.STRING }519 },520 function (err) {521 assert.isNull(err);522 db.addIndex(523 'event',524 'event_title',525 'title',526 function (err) {527 assert.isNull(err);528 db.removeIndex(529 'event_title',530 this.callback.bind(this, null, db)531 );532 }.bind(this)533 );534 }.bind(this)535 );536 }.bind(this)537 );538 },539 teardown: function (db) {540 db.close()541 .then(function () {542 return unlink(config.filename);543 })544 .nodeify(this.callback);545 },546 'has resulting index metadata': {547 topic: function (db) {548 dbmeta(549 'sqlite3',550 { connection: db.connection },551 function (err, meta) {552 if (err) {553 return this.callback(err);554 }555 meta.getIndexes('event', this.callback);556 }.bind(this)557 );558 },559 'without index': function (err, indexes) {560 assert.isNull(err);561 assert.isNotNull(indexes);562 assert.strictEqual(indexes.length, 0);563 }564 }565 }566 })567 .addBatch({568 removeIndexWithTableName: {569 topic: function () {570 driver.connect(571 config,572 internals,573 function (err, db) {574 assert.isNull(err);575 db.createTable(576 'event',577 {578 id: {579 type: dataType.INTEGER,580 primaryKey: true,581 autoIncrement: true582 },583 title: { type: dataType.STRING }584 },585 function (err) {586 assert.isNull(err);587 db.addIndex(588 'event',589 'event_title',590 'title',591 function (err) {592 assert.isNull(err);593 db.removeIndex(594 'event',595 'event_title',596 this.callback.bind(this, null, db)597 );598 }.bind(this)599 );600 }.bind(this)601 );602 }.bind(this)603 );604 },605 teardown: function (db) {606 db.close()607 .then(function () {608 return unlink(config.filename);609 })610 .nodeify(this.callback);611 },612 'has resulting index metadata': {613 topic: function (db) {614 dbmeta(615 'sqlite3',616 { connection: db.connection },617 function (err, meta) {618 if (err) {619 return this.callback(err);620 }621 meta.getIndexes('event', this.callback);622 }.bind(this)623 );624 },625 'without index': function (err, indexes) {626 assert.isNull(err);627 assert.isNotNull(indexes);628 assert.strictEqual(indexes.length, 0);629 }630 }631 }632 })633 .addBatch({634 createMigrationsTable: {635 topic: function () {636 driver.connect(637 config,638 internals,639 function (err, db) {640 assert.isNull(err);641 db.createMigrationsTable(this.callback.bind(this, null, db));642 }.bind(this)643 );644 },645 teardown: function (db) {646 db.close()647 .then(function () {648 return unlink(config.filename);649 })650 .nodeify(this.callback);...
util.js
Source:util.js
1const { suite } = require('uvu');2const semiver = require('semiver');3const assert = require('uvu/assert');4const { join, isAbsolute, resolve } = require('path');5const $ = require('../lib/util');6const fixtures = join(__dirname, 'fixtures');7const version = process.version.substring(1);8const hasImports = semiver(version, '12.0.0') > 0;9// ---10const glob = suite('$.glob', {11 dir: join(fixtures, 'pg', 'migrations')12});13glob('usage', async ctx => {14 const out = await $.glob(ctx.dir);15 assert.ok(Array.isArray(out), 'returns Promise<Array>');16 assert.is(out.length, 6, '~> has 6 items');17 const first = out[0];18 assert.type(first, 'object', 'items are objects');19 assert.type(first.name, 'string', '~> has "name" string');20 assert.type(first.abs, 'string', '~> has "abs" string');21 assert.ok(isAbsolute(first.abs), '~~> is absolute path');22 const names = out.map(x => x.name);23 const expects = ['001.js', '002.js', '003.js', '004.js', '005.js', '006.js'];24 assert.equal(names, expects, '~> file order is expected');25});26glob('throws', async ctx => {27 let caught = false;28 try {29 await $.glob(join(ctx.dir, 'foobar'));30 assert.unreachable('should not run');31 } catch (err) {32 assert.instance(err, Error, 'throws an Error');33 assert.is(err.code, 'ENOENT', '~> is "ENOENT" code');34 assert.ok(err.stack.includes('no such file or directory'), '~> has detail');35 caught = true;36 }37 assert.ok(caught);38});39glob.run();40// ---41const diff = suite('$.diff');42diff('usage', () => {43 const exists = ['001', '002', '003'].map(name => ({ name }));44 const locals = ['001', '002', '003', '004', '005'].map(name => ({ name }));45 const output = $.diff(exists, locals);46 assert.ok(Array.isArray(output), 'returns an Array');47 assert.ok(output.every(x => locals.includes(x)), '~> only returns items from `locals` list');48 assert.is(output.length, 2, '~> has 2 NEW items');49 const names = output.map(x => x.name);50 assert.equal(names, ['004', '005']);51});52diff('identical', () => {53 const exists = ['001', '002', '003'].map(name => ({ name }));54 const locals = ['001', '002', '003'].map(name => ({ name }));55 const output = $.diff(exists, locals);56 assert.ok(Array.isArray(output), 'returns an Array');57 assert.is(output.length, 0, '~> has 0 NEW items');58});59diff('throws sequence error', () => {60 let caught = false;61 try {62 const exists = ['001', '003'].map(name => ({ name }));63 const locals = ['001', '002', '003'].map(name => ({ name }));64 $.diff(exists, locals);65 assert.unreachable('SHOULD NOT REACH');66 } catch (err) {67 caught = true;68 assert.instance(err, Error, 'throws an Error');69 assert.is(err.message, `Cannot run "002" after "003" has been applied`);70 assert.ok(err.stack.length > err.message.length, '~> has "stack" details');71 }72 assert.ok(caught);73});74diff.run();75// ---76const pluck = suite('$.pluck');77// Note: Arrays are received in reverse78pluck('(utils) pluck', () => {79 // should return everything, in sync80 const foobar = ['003', '002', '001'];81 const exists = foobar.map(name => ({ name }));82 const locals = foobar.map(name => ({ name }));83 const output = $.pluck(exists, locals);84 assert.ok(Array.isArray(output), 'returns an Array');85 assert.ok(output.every(x => locals.includes(x)), '~> only returns items from `locals` list');86 assert.is(output.length, 3, '~> has 3 candidates');87 const names = output.map(x => x.name);88 assert.equal(names, foobar);89});90// Note: Arrays are received in reverse91pluck('locals >> exists', () => {92 // should NOT return items that don't exist yet93 const exists = ['003', '002', '001'].map(name => ({ name }));94 const locals = ['005', '004', '003', '002', '001'].map(name => ({ name }));95 const output = $.pluck(exists, locals);96 assert.ok(Array.isArray(output), 'returns an Array');97 assert.ok(output.every(x => locals.includes(x)), '~> only returns items from `locals` list');98 assert.is(output.length, 3, '~> has 3 candidates');99 const names = output.map(x => x.name);100 assert.equal(names, ['003', '002', '001']);101});102// Note: Arrays are received in reverse103pluck('exists >> locals :: throws', () => {104 let caught = false;105 try {106 // throws error because we don't have 005 definitions107 const exists = ['005', '004', '003', '002', '001'].map(name => ({ name }));108 const locals = ['003', '002', '001'].map(name => ({ name }));109 $.pluck(exists, locals);110 assert.unreachable('SHOULD NOT REACH');111 } catch (err) {112 caught = true;113 assert.instance(err, Error, 'throws an Error');114 assert.is(err.message, `Cannot find "005" migration file`);115 assert.ok(err.stack.length > err.message.length, '~> has "stack" details');116 }117 assert.ok(caught);118});119pluck.run();120// ---121const exists = suite('$.exists');122exists('success', () => {123 const output = $.exists('uvu');124 assert.type(output, 'string', 'returns string (success)');125 assert.is(output, require.resolve('uvu'))126});127exists('failure', () => {128 const output = $.exists('foobar');129 assert.type(output, 'boolean', 'returns boolean (fail)');130 assert.is(output, false)131});132exists('failure :: relative', () => {133 const output = $.exists('./foobar');134 assert.type(output, 'boolean', 'returns boolean (fail)');135 assert.is(output, false)136});137exists.run();138// ---139const detect = suite('$.detect');140detect('usage', () => {141 const ORDER = ['postgres', 'pg', 'mysql', 'mysql2', 'better-sqlite3'];142 const seen = [];143 const prev = $.exists;144 // @ts-ignore145 $.exists = x => {146 seen.push(x);147 }148 const foo = $.detect();149 assert.is(foo, undefined, 'returns undefined (failure)');150 assert.equal(seen, ORDER, '~> looks for drivers (ordered)');151 // @ts-ignore152 $.exists = x => x === 'pg';153 const bar = $.detect();154 assert.is(bar, 'pg', '~> found "pg" (mock)');155 $.exists = prev;156});157detect.run();158// ---159const load = suite('$.load');160load('success', async () => {161 const input = resolve('.', 'index.js'); // root/index.js162 const output = await $.load(input);163 assert.type(output, 'object', '~> returns _something_ if exists');164 assert.type(output.down, 'function', '~> had "down" export');165 assert.type(output.up, 'function', '~> had "up" export')166});167load('success w/ cwd', async () => {168 const input = resolve(__dirname, 'util.js'); // this file169 const output = await $.load(input);170 assert.type(output, 'object', '~> returns _something_ if exists')171});172load('failure', async () => {173 const foobar = resolve('.', 'foobar.ts'); // root dir174 try {175 await $.load(foobar);176 assert.unreachable();177 } catch (err) {178 assert.instance(err, Error);179 assert.is(err.code, 'MODULE_NOT_FOUND');180 assert.match(err.message, foobar);181 }182});183load.run();184// ---185const toConfig = suite('$.toConfig');186toConfig('direct :: CommonJS', async () => {187 const postgres = join(fixtures, 'postgres');188 const output = await $.toConfig('ley.config.js', postgres);189 // NOTE: interop handled190 assert.type(output, 'object');191 assert.is(output.database, 'ley_testing');192});193if (hasImports) {194 // gave ".mjs" -> no fuzzy matching195 toConfig('direct :: ES Module', async () => {196 const postgres = join(fixtures, 'postgres.esm');197 const output = await $.toConfig('ley.config.mjs', postgres);198 // NOTE: interop handled199 assert.type(output, 'object');200 assert.is(output.database, 'ley_testing');201 });202 // gave ".js" -> look for ".mjs" too203 toConfig('loose :: ES Module', async () => {204 const postgres = join(fixtures, 'postgres.esm');205 const output = await $.toConfig('ley.config.js', postgres);206 // NOTE: interop handled207 assert.type(output, 'object');208 assert.is(output.database, 'ley_testing');209 });210}211// gave ".cjs" -> does not exist; no fuzzy212toConfig('direct :: failure', async () => {213 const output = await $.toConfig('foobar.cjs', fixtures);214 assert.is(output, undefined);215});216toConfig.run();217// ---218const MigrationError = suite('$.MigrationError');219MigrationError('MigrationError', () => {220 const original = new Error('hello world');221 const migration = { name: '000.js', abs: 'path/to/000.js' };222 Object.assign(original, { code: 42703, position: 8, foobar: undefined });223 const error = new $.MigrationError(original, migration);224 assert.instance(error, $.MigrationError, 'is MigrationError');225 assert.instance(error, Error, '~> still inherits Error class');226 assert.ok(error.stack.length > 0, 'has "stack" trace');227 assert.ok(error.stack.length > original.stack.length, '~> is longer than original trace');228 assert.ok(error.stack.includes(original.stack), '~> contains original trace');229 assert.is(error.code, original.code, 'inherits original "code" property (custom)');230 assert.is(error.foobar, original.foobar, 'inherits original "foobar" property (custom)');231 assert.is(error.position, original.position, 'inherits original "position" property (custom)');232 assert.equal(error.migration, migration, 'attaches custom "migration" key w/ file data');233});234MigrationError.run();235// ---236const isDriver = suite('$.isDriver');237isDriver('connect', () => {238 assert.throws(239 () => $.isDriver({}),240 'Driver must have "connect" function'241 );242 assert.throws(243 () => $.isDriver({ connect: 123 }),244 'Driver must have "connect" function'245 );246});247isDriver('setup', () => {248 let noop = () => {};249 assert.throws(250 () => $.isDriver({ connect: noop }),251 'Driver must have "setup" function'252 );253 assert.throws(254 () => $.isDriver({ connect: noop, setup: 123 }),255 'Driver must have "setup" function'256 );257});258isDriver('loop', () => {259 let noop = () => {};260 assert.throws(261 () => $.isDriver({ connect: noop, setup: noop }),262 'Driver must have "loop" function'263 );264 assert.throws(265 () => $.isDriver({ connect: noop, setup: noop, loop: 123 }),266 'Driver must have "loop" function'267 );268});269isDriver('end', () => {270 let noop = () => {};271 assert.throws(272 () => $.isDriver({ connect: noop, setup: noop, loop: noop }),273 'Driver must have "end" function'274 );275 assert.throws(276 () => $.isDriver({ connect: noop, setup: noop, loop: noop, end: 123 }),277 'Driver must have "end" function'278 );279});...
2.connection.js
Source:2.connection.js
...11 before('open connection', function () {12 driver = new Driver();13 });14 it('2.1 properly opens and releases connections', function (done) {15 driver.connect(config, function (err, connection) {16 should.not.exist(err);17 connection.close(function (err) {18 should.not.exist(err);19 });20 done();21 });22 });23 it('2.2 raises an exception if calling method, commit(), after closed', function (done) {24 driver.connect(config, function (err, connection) {25 should.not.exist(err);26 connection.close(function (err) {27 should.not.exist(err);28 connection.commit(function (err) {29 should.exist(err);30 should.strictEqual(err.message, "connection closed");31 done();32 });33 });34 });35 });36 it('2.3 raises an exception if calling method, rollback(), after closed', function (done) {37 driver.connect(config, function (err, connection) {38 should.not.exist(err);39 connection.close(function (err) {40 should.not.exist(err);41 connection.rollback(function (err) {42 should.exist(err);43 should.strictEqual(err.message, "connection closed");44 done();45 });46 });47 });48 });49 it('2.4 raises an exception if calling method, close(), after closed', function (done) {50 driver.connect(config, function (err, connection) {51 should.not.exist(err);52 connection.close(function (err) {53 should.not.exist(err);54 connection.close(function (err) {55 should.exist(err);56 should.strictEqual(err.message, "failed to close connection [connection closed]");57 done();58 });59 });60 });61 });62 it('2.5 raises an exception if calling method, execute(), after closed', function (done) {63 driver.connect(config, function (err, connection) {64 should.not.exist(err);65 connection.close(function (err) {66 should.not.exist(err);67 connection.execute('SELECT * FROM SYSTEM.CONNECTIONS', function (err, results) {68 should.exist(err);69 should.not.exist(results);70 should.strictEqual(err.message, "connection closed");71 done();72 });73 });74 });75 });76 it('2.10 setting auto-commit', function () {77 driver.connect(config, function (err, connection) {78 should.not.exist(err);79 describe('2.10.1 with non-boolean values raises an exception', function () {80 var defaultValue;81 beforeEach('get auto-commit default', function () {82 defaultValue = connection.autoCommit;83 });84 afterEach('reset auto-commit to default', function () {85 connection.autoCommit = defaultValue;86 });87 var setAsGlobalOption = function (setValue, callback) {88 should.throws(89 function () {90 connection.autoCommit = setValue;91 },92 /invalid type in assignment/93 );94 callback();95 };96 it('2.10.1 Negative - 0', function (done) {97 setAsGlobalOption(0, done);98 });99 it('2.10.2 Negative - negative number', function (done) {100 setAsGlobalOption(-1, done);101 });102 it('2.10.3 Negative - positive number', function (done) {103 setAsGlobalOption(1, done);104 });105 it('2.10.4 Negative - NaN', function (done) {106 setAsGlobalOption(NaN, done);107 });108 it('2.10.5 Negative - undefined', function (done) {109 setAsGlobalOption(undefined, done);110 });111 });112 after(function () {113 connection.close(function (err) {114 should.not.exist(err);115 });116 })117 });118 });119 it('2.11 setting read-only', function () {120 driver.connect(config, function (err, connection) {121 should.not.exist(err);122 describe('2.11.1 with non-boolean values raises an exception', function () {123 var defaultValue;124 beforeEach('get read-only default', function () {125 defaultValue = connection.readOnly;126 });127 afterEach('reset read-only to default', function () {128 connection.readOnly = defaultValue;129 });130 var setAsGlobalOption = function (setValue, callback) {131 should.throws(132 function () {133 connection.readOnly = setValue;134 },...
driver.js
Source:driver.js
...15}16driver.insert = async function (table, data) {17 var status = false;18 try {19 var connection = await driver.connect();20 var database = connection.db;21 var collection = database.collection(table);22 data['created_at'] = new Date();23 var result = await collection.insertOne(data);24 status = true;25 } catch (e) {26 console.log(e);27 status = false;28 } finally {29 // Ensures that the client will close when you finish/error30 await connection.client.close();31 return status;32 }33}34driver.fetch = async function (table, query = {}) {35 var result = false;36 try {37 var connection = await driver.connect();38 var database = connection.db;39 var collection = database.collection(table);40 result = await collection.find(query).toArray();41 } catch (e) {42 console.log(e);43 result = false;44 } finally {45 // Ensures that the client will close when you finish/error46 await connection.client.close();47 return result;48 }49}50driver.update = async function (table, query, data) {51 var status = false;52 try {53 var connection = await driver.connect();54 var database = connection.db;55 var collection = database.collection(table);56 data['updated_at'] = new Date();57 data = {58 $set: data,59 $setOnInsert: {60 created_at: new Date()61 }62 };63 var options = {};64 await collection.updateOne(query, data, options);65 status = true;66 } catch (e) {67 console.log(e);68 status = false;69 } finally {70 // Ensures that the client will close when you finish/error71 await connection.client.close();72 return status;73 }74}75driver.delete = async function (table, query) {76 var status = false;77 try {78 var connection = await driver.connect();79 var database = connection.db;80 var collection = database.collection(table);81 await collection.deleteOne(query);82 status = true;83 } catch (e) {84 console.log(e);85 status = false;86 } finally {87 // Ensures that the client will close when you finish/error88 await connection.client.close();89 return status;90 }91}92driver.insertOrUpdate = async function (table, query, data) {93 var status = false;94 try {95 var connection = await driver.connect();96 var database = connection.db;97 var collection = database.collection(table);98 data['updated_at'] = new Date();99 data = {100 $set: data,101 $setOnInsert: {102 created_at: new Date()103 }104 };105 var options = { upsert: true };106 await collection.updateOne(query, data, options);107 status = true;108 } catch (e) {109 console.log(e);110 status = false;111 } finally {112 // Ensures that the client will close when you finish/error113 await connection.client.close();114 return status;115 }116}117driver.lookup = async function (table, joinTable, localField, foreignField, newCol, query = null) {118 var result = false;119 try {120 if(!newCol) newCol = localField;121 var connection = await driver.connect();122 var database = connection.db;123 var collection = database.collection(table);124 let aggregate = [125 { 126 $lookup: {127 from: joinTable,128 localField: localField,129 foreignField: foreignField,130 as: newCol131 }132 }133 ];134 if(query) {135 aggregate = [...
driver.spec.js
Source:driver.spec.js
1const assert = require('assert');2const { kinit, kdestroy } = require('./helpers/kerberos');3const { buildGssapiConnectionString } = require('./helpers/connection-string');4const driver = require('./helpers/driver');5const { USER_PRINCIPAL,6 SERVER_WITH_DEFAULT_NAME,7 SERVER_WITH_ALTERNATE_NAME,8 EXPECTED_USER,9 USER_NAME,10 REALM11} = require('./constants');12describe('driver', () => {13 beforeEach(async() => {14 await kdestroy();15 await kinit('mongodb.user@EXAMPLE.COM', 'password');16 });17 after(async() => {18 await kdestroy();19 });20 describe('?authMechanism=GSSAPI&authSource=$external', () => {21 it('connects with a complete connection string to mongodb/ service principal', async() => {22 const user = await driver.connectAndReturnUser(23 buildGssapiConnectionString(24 USER_PRINCIPAL,25 SERVER_WITH_DEFAULT_NAME26 )27 );28 assert.deepStrictEqual(user, EXPECTED_USER);29 });30 describe('?gssapiServiceName', () => {31 it('is not supported anymore', async() => {32 const error = await driver.connectAndReturnUser(33 buildGssapiConnectionString(34 USER_PRINCIPAL,35 SERVER_WITH_ALTERNATE_NAME,36 { gssapiServiceName: 'alternate' }37 )38 ).catch(err => err);39 assert.strictEqual(error.message, 'option gssapiservicename is not supported');40 });41 });42 describe('?authMechanismProperties', () => {43 describe('SERVICE_NAME', () => {44 it('connects with alternate service name', async() => {45 const user = await driver.connectAndReturnUser(46 buildGssapiConnectionString(47 USER_PRINCIPAL,48 SERVER_WITH_ALTERNATE_NAME,49 { authMechanismProperties: 'SERVICE_NAME:alternate' }50 )51 );52 assert.deepStrictEqual(user, EXPECTED_USER);53 });54 });55 describe('gssapiServiceName', () => {56 it('is not supported in authMechanismProperties', async() => {57 const errorOrUser = await driver.connectAndReturnUser(58 buildGssapiConnectionString(59 USER_PRINCIPAL,60 SERVER_WITH_ALTERNATE_NAME,61 { authMechanismProperties: 'gssapiServiceName:alternate' }62 )63 ).catch(err => err);64 assert.ok(errorOrUser instanceof Error);65 });66 });67 describe('SERVICE_REALM', () => {68 it('specifies a realm if missing', async() => {69 const user = await driver.connectAndReturnUser(70 buildGssapiConnectionString(71 USER_NAME,72 SERVER_WITH_DEFAULT_NAME,73 { authMechanismProperties: `SERVICE_REALM:${REALM}` }74 )75 );76 assert.deepStrictEqual(user, EXPECTED_USER);77 });78 // NOTE: this would require a cross-realm setup to be tested properly79 it('overrides only the service realm if a user already has a realm', async() => {80 const user = await driver.connectAndReturnUser(81 buildGssapiConnectionString(82 USER_PRINCIPAL,83 SERVER_WITH_DEFAULT_NAME,84 { authMechanismProperties: `SERVICE_REALM:${REALM}` }85 )86 );87 assert.deepStrictEqual(user, EXPECTED_USER);88 });89 });90 });91 });...
3.promises.js
Source:3.promises.js
...11 before('create driver', function () {12 driver = new Driver();13 });14 it('3.1 returns a promise from Connection.connect', function (done) {15 var promise = driver.connect(config);16 promise17 .then(function (connection) {18 connection.should.be.ok();19 connection.close(function (err) {20 if (err) {21 return done(err);22 } else {23 return done();24 }25 });26 })27 .catch(function (err) {28 should.not.exist(err);29 return done();30 });31 });32 it('3.2 returns a promise from connection.close', function (done) {33 driver.connect(config)34 .then(function (conn) {35 conn.should.be.ok();36 var promise = conn.close();37 return promise;38 })39 .then(function () {40 return done();41 })42 .catch(function (err) {43 should.not.exist(err);44 return done();45 });46 });47 it('3.2 returns a promise from connection.commit', function (done) {48 driver.connect(config)49 .then(function (conn) {50 conn.should.be.ok();51 var promise = conn.commit();52 return promise53 .then(function () {54 return conn.close()55 .then(done);56 });57 })58 .catch(function (err) {59 should.not.exist(err);60 return done();61 });62 });63 it('3.2 returns a promise from connection.rollback', function (done) {64 driver.connect(config)65 .then(function (conn) {66 conn.should.be.ok();67 var promise = conn.rollback();68 return promise69 .then(function () {70 return conn.close()71 .then(done);72 });73 })74 .catch(function (err) {75 should.not.exist(err);76 return done();77 });78 });79 it('3.3 can run the documentation promises sample', function (done) {80 driver.connect(config)81 .then(connection => {82 connection.execute('SELECT 1 FROM DUAL')83 .then(results => {84 results.getRows(1)85 .then(rows => console.log(rows))86 .catch(e => console.log(e.stack))87 })88 .catch(e => {89 console.log(e.stack());90 });91 })92 .catch(e => {93 console.log(e.stack());94 });...
app.js
Source:app.js
1'use strict';2const {Driver, Pool} = require('./lib');3async function test_driver(){4 let driver = new Driver();5 driver.connect();6 let res_one = await driver.query("SELECT NOW() AS res_one");7 console.log(res_one);8 let res_two = await driver.query("SELECT NOW() AS res_two");9 console.log(res_two);10 driver.end();11}12async function test_pool(){13 let pool = new Pool();14 let res = await pool.query("SELECT NOW() AS res");15 console.log(res);16 pool = new Pool();17 res = await pool.query("SELECT NOW() AS res");18 console.log(res);19}20//test_driver();21//test_pool();22async function get_data(){23 let driver = new Driver();24 driver.connect();25 let res = await driver.query("SELECT * from mydata");26 console.log('id | names | contact');27 for(let i = 0; i < res.length; i++){28 console.log(res[i].id + ' | ' + res[i].names + ' | ' + res[i].contact);29 }30 driver.end();31}32get_data();33async function in_data(){34 let driver = new Driver();35 driver.connect();36 let res = await driver.query("INSERT INTO mydata VALUES(null, 'Mayde','8733')");37 console.log(res);38 driver.end();39}...
driver.test.js
Source:driver.test.js
...8 driver.disconnect = disconnect9})10test('driver - does not disconnect if no active connection', async () => {11 driver.disconnect = jest.fn()12 await driver.connect(conn)13 expect(driver.disconnect).not.toBeCalled()14})15test('driver - disconnect if has active connection', async () => {16 driver.disconnect = jest.fn()17 await driver.connect(conn)18 await driver.connect(conn2)19 expect(driver.disconnect).toBeCalled()20})21test('driver - disconnect', async () => {22 const connection = await driver.connect(conn)23 await driver.disconnect()24 expect(connection.close).toBeCalled()25})26test('driver - return connection', async () => {27 await driver.connect(conn)28 const c = driver.getConnection()29 expect(c).toBeDefined()...
Using AI Code Generation
1describe('Google Search', () => {2 it('should search for the word Selenium', () => {3 const searchInput = $('input[name="q"]')4 searchInput.setValue('Selenium')5 browser.keys('Enter')6 })7})
Using AI Code Generation
1describe('My First Test', function() {2 it('Does not do much!', function() {3 cy.contains('type').click()4 cy.url().should('include', '/commands/actions')5 cy.get('.action-email')6 .type('
Using AI Code Generation
1Cypress.Commands.add('connect', (url) => {2 cy.window().then((window) => {3 window.driver.connect(url);4 });5});6Cypress.Commands.add('disconnect', () => {7 cy.window().then((window) => {8 window.driver.disconnect();9 });10});11Cypress.Commands.add('emit', (event, data) => {12 cy.window().then((window) => {13 window.driver.emit(event, data);14 });15});16Cypress.Commands.add('on', (event, callback) => {17 cy.window().then((window) => {18 window.driver.on(event, callback);19 });20});21Cypress.Commands.add('removeListener', (event, callback) => {22 cy.window().then((window) => {23 window.driver.removeListener(event, callback);24 });25});26Cypress.Commands.add('onConnect', (callback) => {27 cy.window().then((window) => {28 window.driver.onConnect(callback);29 });30});31Cypress.Commands.add('onDisconnect', (callback) => {32 cy.window().then((window) => {33 window.driver.onDisconnect(callback);34 });35});36Cypress.Commands.add('onEvent', (event, callback) => {37 cy.window().then((window) => {38 window.driver.onEvent(event, callback);39 });40});41Cypress.Commands.add('onMessage', (callback) => {42 cy.window().then((window) => {43 window.driver.onMessage(callback);44 });45});46Cypress.Commands.add('onReconnect', (callback) => {47 cy.window().then((window) => {48 window.driver.onReconnect(callback);49 });50});
Cypress is a renowned Javascript-based open-source, easy-to-use end-to-end testing framework primarily used for testing web applications. Cypress is a relatively new player in the automation testing space and has been gaining much traction lately, as evidenced by the number of Forks (2.7K) and Stars (42.1K) for the project. LambdaTest’s Cypress Tutorial covers step-by-step guides that will help you learn from the basics till you run automation tests on LambdaTest.
You can elevate your expertise with end-to-end testing using the Cypress automation framework and stay one step ahead in your career by earning a Cypress certification. Check out our Cypress 101 Certification.
Watch this 3 hours of complete tutorial to learn the basics of Cypress and various Cypress commands with the Cypress testing at LambdaTest.
Get 100 minutes of automation test minutes FREE!!