File size: 1,462 Bytes
5c2ed06
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
"use strict";
const { SQL } = require('../../dist/lib/sql');
const assert = require('../assert').strict;
const common = require('../common');

const database = SQL(module, { file: `:memory:`, processes: 1 });

(common.hasModule('better-sqlite3') ? describe : describe.skip)(`SQLite worker wrapper`, () => {
	// prepare statements and set up table
	let select, insert;
	before(async () => {
		await database.exec(`CREATE TABLE IF NOT EXISTS test (col TEXT, col2 TEXT)`);
		select = await database.prepare(`SELECT * FROM test`);
		insert = await database.prepare(`INSERT INTO test (col, col2) VALUES (?, ?)`);
	});
	it(`should require you to prepare a statement before running`, async () => {
		database.get('SELECT col FROM test').then(() => {
			assert(false, 'expected error');
		}).catch(() => {
			assert(true, 'received error');
		});
	});
	it(`should support both statement strings and corresponding statement classes`, async () => {
		await database.run(`INSERT INTO test (col, col2) VALUES (?, ?)`, ['a', 'b']);
		await database.run(insert, ['a', 'b']);
	});
	it(`should support both inline and object params`, async () => {
		const num = await database.prepare(`INSERT INTO test (col, col2) VALUES($col, $col2)`);
		await database.run(insert, ['a', 'b']);
		await database.run(num, { col: 'a', col2: 'b' });
	});
	it(`should retrieve one line from Database.get`, async () => {
		const result = await database.get(select);
		assert(!!result, 1);
	});
});