1
0
mirror of https://github.com/lana-k/sqliteviz.git synced 2025-12-07 18:48:55 +08:00
This commit is contained in:
lana-k
2025-03-20 22:04:15 +01:00
parent 5e2b34a856
commit 0c1b91ab2f
146 changed files with 3317 additions and 2438 deletions

View File

@@ -18,8 +18,12 @@ describe('SqlEditor.vue', () => {
plugins: [store]
}
})
await wrapper.findComponent({ ref: 'cm' }).setValue('SELECT * FROM foo', 'value')
expect(wrapper.emitted()['update:modelValue'][0]).to.eql(['SELECT * FROM foo'])
await wrapper
.findComponent({ ref: 'cm' })
.setValue('SELECT * FROM foo', 'value')
expect(wrapper.emitted()['update:modelValue'][0]).to.eql([
'SELECT * FROM foo'
])
})
it('Run is disabled if there is no db or no query or is getting result set', async () => {
@@ -28,11 +32,13 @@ describe('SqlEditor.vue', () => {
}
const store = createStore({ state })
const wrapper = mount(SqlEditor, {
const wrapper = mount(SqlEditor, {
global: { plugins: [store] },
props: { isGettingResults: false }
})
await wrapper.findComponent({ ref: 'cm' }).setValue('SELECT * FROM foo', 'value')
await wrapper
.findComponent({ ref: 'cm' })
.setValue('SELECT * FROM foo', 'value')
const runButton = wrapper.findComponent({ ref: 'runBtn' })
expect(runButton.props('disabled')).to.equal(true)
@@ -44,7 +50,9 @@ describe('SqlEditor.vue', () => {
await wrapper.findComponent({ ref: 'cm' }).setValue('', 'value')
expect(runButton.props('disabled')).to.equal(true)
await wrapper.findComponent({ ref: 'cm' }).setValue('SELECT * FROM foo', 'value')
await wrapper
.findComponent({ ref: 'cm' })
.setValue('SELECT * FROM foo', 'value')
expect(runButton.props('disabled')).to.equal(false)
await wrapper.setProps({ isGettingResults: true })

View File

@@ -1,7 +1,9 @@
import { expect } from 'chai'
import sinon from 'sinon'
import state from '@/store/state'
import showHint, { getHints } from '@/views/Main/Workspace/Tabs/Tab/SqlEditor/hint'
import showHint, {
getHints
} from '@/views/Main/Workspace/Tabs/Tab/SqlEditor/hint'
import CM from 'codemirror'
describe('hint.js', () => {
@@ -22,9 +24,7 @@ describe('hint.js', () => {
},
{
name: 'bar',
columns: [
{ name: 'barId', type: 'INTEGER' }
]
columns: [{ name: 'barId', type: 'INTEGER' }]
}
]
}
@@ -33,7 +33,7 @@ describe('hint.js', () => {
// mock showHint and editor
sinon.stub(CM, 'showHint')
const editor = {
getTokenAt () {
getTokenAt() {
return {
string: 'SELECT',
type: 'keyword'
@@ -70,7 +70,7 @@ describe('hint.js', () => {
// mock showHint and editor
sinon.stub(CM, 'showHint')
const editor = {
getTokenAt () {
getTokenAt() {
return {
string: 'SELECT',
type: 'keyword'
@@ -87,7 +87,7 @@ describe('hint.js', () => {
// mock showHint and editor
sinon.stub(CM, 'showHint')
const editor = {
getTokenAt () {
getTokenAt() {
return {
string: 'foo',
type: 'string'
@@ -104,7 +104,7 @@ describe('hint.js', () => {
// mock showHint and editor
sinon.stub(CM, 'showHint')
const editor = {
getTokenAt () {
getTokenAt() {
return {
string: ' ',
type: null
@@ -121,7 +121,7 @@ describe('hint.js', () => {
// mock showHint and editor
sinon.stub(CM, 'showHint')
const editor = {
getTokenAt () {
getTokenAt() {
return {
string: ';',
type: 'punctuation'
@@ -134,30 +134,27 @@ describe('hint.js', () => {
expect(CM.showHint.called).to.equal(false)
})
it(
'getHints returns [ ] if there is only one option and token is completed with this option',
() => {
// mock CM.hint.sql and editor
sinon.stub(CM.hint, 'sql').returns({
list: [{ text: 'SELECT' }],
from: null, // from/to doesn't metter because getRange is mocked
to: null
})
it('getHints returns [ ] if there is only one option and token is completed with this option', () => {
// mock CM.hint.sql and editor
sinon.stub(CM.hint, 'sql').returns({
list: [{ text: 'SELECT' }],
from: null, // from/to doesn't metter because getRange is mocked
to: null
})
const editor = {
getRange () {
return 'select'
}
const editor = {
getRange() {
return 'select'
}
const hints = getHints(editor, {})
expect(hints.list).to.eql([])
}
)
const hints = getHints(editor, {})
expect(hints.list).to.eql([])
})
it(
'getHints returns [ ] if there is only one string option and token ' +
'is completed with this option',
'is completed with this option',
() => {
// mock CM.hint.sql and editor
sinon.stub(CM.hint, 'sql').returns({
@@ -166,7 +163,7 @@ describe('hint.js', () => {
to: null
})
const editor = {
getRange () {
getRange() {
return 'house.name'
}
}
@@ -178,13 +175,10 @@ describe('hint.js', () => {
it('getHints returns hints as is when there are more than one option', () => {
// mock CM.hint.sql and editor
const list = [
{ text: 'SELECT' },
{ text: 'ST' }
]
const list = [{ text: 'SELECT' }, { text: 'ST' }]
sinon.stub(CM.hint, 'sql').returns({ list, from: null, to: null })
const editor = {
getRange () {
getRange() {
return 'se'
}
}
@@ -195,22 +189,19 @@ describe('hint.js', () => {
sinon.restore()
})
it(
'getHints returns hints as is when there only one option but the token is not completed',
() => {
// mock CM.hint.sql and editor
const list = [{ text: 'SELECT' }]
sinon.stub(CM.hint, 'sql').returns({ list, from: null, to: null })
const editor = {
getRange () {
return 'sele'
}
it('getHints returns hints as is when there only one option but the token is not completed', () => {
// mock CM.hint.sql and editor
const list = [{ text: 'SELECT' }]
sinon.stub(CM.hint, 'sql').returns({ list, from: null, to: null })
const editor = {
getRange() {
return 'sele'
}
const hints = getHints(editor, {})
expect(hints.list).to.eql(list)
}
)
const hints = getHints(editor, {})
expect(hints.list).to.eql(list)
})
it('tables is empty object when schema is null', () => {
// mock store state
@@ -219,7 +210,7 @@ describe('hint.js', () => {
// mock showHint and editor
sinon.stub(CM, 'showHint')
const editor = {
getTokenAt () {
getTokenAt() {
return {
string: 'SELECT',
type: 'keyword'