1
0
mirror of https://github.com/lana-k/sqliteviz.git synced 2025-12-06 18:18:53 +08:00
Files
sqliteviz/tests/unit/database.spec.js
2021-01-01 18:47:16 +01:00

144 lines
4.2 KiB
JavaScript

/* import { expect } from 'chai'
import { shallowMount } from '@vue/test-utils'
import HelloWorld from '@/components/HelloWorld.vue'
describe('HelloWorld.vue', () => {
it('renders props.msg when passed', () => {
const msg = 'new message'
const wrapper = shallowMount(HelloWorld, {
propsData: { msg }
})
expect(wrapper.text()).to.include(msg)
})
})
*/
import { expect } from 'chai'
import initSqlJs from 'sql.js'
import db from '@/database.js'
const config = {
locateFile: filename => `js/sql-wasm.wasm`
}
describe('database.js', () => {
it('creates schema', () => {
return initSqlJs(config)
.then(SQL => {
const database = new SQL.Database()
database.run(`
CREATE TABLE test (
col1,
col2 integer,
col3 decimal(5,2),
col4 varchar(30)
)
`)
const data = database.export()
const buffer = new Blob([data])
return db.loadDb(buffer)
})
.then(({dbName, schema}) => {
expect(schema.length).to.equal(1)
expect(schema[0].name).to.equal('test')
expect(schema[0].columns[0].name).to.equal('col1')
expect(schema[0].columns[0].type).to.equal('N/A')
expect(schema[0].columns[1].name).to.equal('col2')
expect(schema[0].columns[1].type).to.equal('integer')
expect(schema[0].columns[2].name).to.equal('col3')
expect(schema[0].columns[2].type).to.equal('decimal(5, 2)')
expect(schema[0].columns[3].name).to.equal('col4')
expect(schema[0].columns[3].type).to.equal('varchar(30)')
})
})
it('creates schema with virtual table', () => {
return initSqlJs(config)
.then(SQL => {
const database = new SQL.Database()
database.run(`
CREATE VIRTUAL TABLE test_virtual USING fts4(
col1, col2,
notindexed=col1, notindexed=col2,
tokenize=unicode61 "tokenchars=.+#")
`)
const data = database.export()
const buffer = new Blob([data])
return db.loadDb(buffer)
})
.then(({dbName, schema}) => {
expect(schema[0].name).to.equal('test_virtual')
expect(schema[0].columns[0].name).to.equal('col1')
expect(schema[0].columns[0].type).to.equal('N/A')
expect(schema[0].columns[1].name).to.equal('col2')
expect(schema[0].columns[1].type).to.equal('N/A')
})
})
it('returns a query result', () => {
return initSqlJs(config)
.then(SQL => {
const database = new SQL.Database()
database.run(`
CREATE TABLE test (
id integer,
name varchar(100),
faculty varchar(100)
);
INSERT INTO test (id, name, faculty)
VALUES
( 1, 'Harry Potter', 'Griffindor'),
( 2, 'Draco Malfoy', 'Slytherin');
`)
const data = database.export()
const buffer = new Blob([data])
return db.loadDb(buffer)
})
.then(({dbName, schema}) => {
return db.execute('SELECT * from test')
})
.then(result => {
expect(result.columns.length).to.equal(3)
expect(result.columns[0]).to.equal('id')
expect(result.columns[1]).to.equal('name')
expect(result.columns[2]).to.equal('faculty')
expect(result.values.length).to.equal(2)
expect(result.values[0][0]).to.equal(1)
expect(result.values[0][1]).to.equal('Harry Potter')
expect(result.values[0][2]).to.equal('Griffindor')
expect(result.values[1][0]).to.equal(2)
expect(result.values[1][1]).to.equal('Draco Malfoy')
expect(result.values[1][2]).to.equal('Slytherin')
})
})
it('returns an error', () => {
return initSqlJs(config)
.then(SQL => {
const database = new SQL.Database()
database.run(`
CREATE TABLE test (
id integer,
name varchar(100),
faculty varchar(100)
);
INSERT INTO test (id, name, faculty)
VALUES
( 1, 'Harry Potter', 'Griffindor'),
( 2, 'Draco Malfoy', 'Slytherin');
`)
const data = database.export()
const buffer = new Blob([data])
return db.loadDb(buffer)
})
.then(() => {
return db.execute('SELECT * from foo')
})
.catch(result => {
console.log(result)
expect(result).to.equal('no such table: foo')
})
})
})