mirror of
https://github.com/lana-k/sqliteviz.git
synced 2025-12-07 02:28:54 +08:00
- Pivot support implementation - Rename queries into inquiries - Rename editor into workspace - Change result set format - New JSON format for inquiries - Redesign panels
67 lines
1.7 KiB
JavaScript
67 lines
1.7 KiB
JavaScript
import { expect } from 'chai'
|
|
import stmts from '@/lib/database/_statements'
|
|
|
|
describe('_statements.js', () => {
|
|
it('generateChunks', () => {
|
|
const source = {
|
|
id: ['1', '2', '3', '4', '5']
|
|
}
|
|
const size = 2
|
|
const chunks = stmts.generateChunks(source, size)
|
|
const output = []
|
|
for (const chunk of chunks) {
|
|
output.push(chunk)
|
|
}
|
|
expect(output[0]).to.eql([['1'], ['2']])
|
|
expect(output[1]).to.eql([['3'], ['4']])
|
|
expect(output[2]).to.eql([['5']])
|
|
})
|
|
|
|
it('getInsertStmt', () => {
|
|
const columns = ['id', 'name']
|
|
expect(stmts.getInsertStmt('foo', columns))
|
|
.to.equal('INSERT INTO "foo" ("id", "name") VALUES (?, ?);')
|
|
})
|
|
|
|
it('getCreateStatement', () => {
|
|
const data = {
|
|
id: [1, 2],
|
|
name: ['foo', 'bar'],
|
|
isAdmin: [true, false],
|
|
startDate: [new Date(), new Date()]
|
|
}
|
|
|
|
expect(stmts.getCreateStatement('foo', data)).to.equal(
|
|
'CREATE table "foo"("id" REAL, "name" TEXT, "isAdmin" INTEGER, "startDate" TEXT);'
|
|
)
|
|
})
|
|
|
|
it('getColumns', () => {
|
|
const sql = `CREATE TABLE test (
|
|
col1,
|
|
col2 integer,
|
|
col3 decimal(5,2),
|
|
col4 varchar(30)
|
|
)`
|
|
expect(stmts.getColumns(sql)).to.eql([
|
|
{ name: 'col1', type: 'N/A' },
|
|
{ name: 'col2', type: 'integer' },
|
|
{ name: 'col3', type: 'decimal(5, 2)' },
|
|
{ name: 'col4', type: 'varchar(30)' }
|
|
])
|
|
})
|
|
|
|
it('getColumns with virtual table', async () => {
|
|
const sql = `
|
|
CREATE VIRTUAL TABLE test_virtual USING fts4(
|
|
col1, col2,
|
|
notindexed=col1, notindexed=col2,
|
|
tokenize=unicode61 "tokenchars=.+#")
|
|
`
|
|
expect(stmts.getColumns(sql)).to.eql([
|
|
{ name: 'col1', type: 'N/A' },
|
|
{ name: 'col2', type: 'N/A' }
|
|
])
|
|
})
|
|
})
|