1
0
mirror of https://github.com/lana-k/sqliteviz.git synced 2025-12-06 10:08:52 +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

@@ -19,7 +19,7 @@ describe('CheckBox', () => {
})
expect(wrapperChecked.find('img.checked').isVisible()).to.equal(true)
wrapperChecked.unmount()
const wrapperUnchecked = shallowMount(CheckBox, {
props: { init: false },
attachTo: document.body
@@ -50,9 +50,13 @@ describe('CheckBox', () => {
props: { disabled: true }
})
expect(wrapper.find('.checkbox-container').classes()).to.include('disabled')
expect(wrapper.find('.checkbox-container').classes()).to.not.include('checked')
expect(wrapper.find('.checkbox-container').classes()).to.not.include(
'checked'
)
await wrapper.trigger('click')
expect(wrapper.emitted().click).to.equal(undefined)
expect(wrapper.find('.checkbox-container').classes()).to.not.include('checked')
expect(wrapper.find('.checkbox-container').classes()).to.not.include(
'checked'
)
})
})

View File

@@ -6,7 +6,6 @@ import CsvJsonImport from '@/components/CsvJsonImport'
import csv from '@/lib/csv'
import { nextTick } from 'vue'
describe('CsvJsonImport.vue', () => {
let state = {}
let actions = {}
@@ -74,13 +73,15 @@ describe('CsvJsonImport.vue', () => {
}
},
rowCount: 2,
messages: [{
code: 'UndetectableDelimiter',
message: 'Comma was used as a standart delimiter',
row: 0,
type: 'info',
hint: undefined
}]
messages: [
{
code: 'UndetectableDelimiter',
message: 'Comma was used as a standart delimiter',
row: 0,
type: 'info',
hint: undefined
}
]
})
wrapper.vm.preview()
@@ -89,24 +90,34 @@ describe('CsvJsonImport.vue', () => {
await nextTick()
expect(wrapper.find('.dialog.vfm').exists()).to.equal(true)
expect(wrapper.find('.dialog-header').text()).to.equal('CSV import')
expect(wrapper.find('#csv-json-table-name input').element.value).to.equal('my_data')
expect(wrapper.findComponent({ name: 'delimiter-selector' }).props('modelValue')).to.equal('|')
expect(wrapper.find('#csv-json-table-name input').element.value).to.equal(
'my_data'
)
expect(
wrapper.findComponent({ name: 'delimiter-selector' }).props('modelValue')
).to.equal('|')
expect(wrapper.find('#quote-char input').element.value).to.equal('"')
expect(wrapper.find('#escape-char input').element.value).to.equal('"')
expect(wrapper.findComponent({ name: 'check-box' }).vm.checked).to.equal(true)
expect(wrapper.findComponent({ name: 'check-box' }).vm.checked).to.equal(
true
)
const rows = wrapper.findAll('tbody tr')
expect(rows).to.have.lengthOf(2)
expect(rows[0].findAll('td')[0].text()).to.equal('foo')
expect(rows[0].findAll('td')[1].text()).to.equal('1')
expect(rows[1].findAll('td')[0].text()).to.equal('bar')
expect(rows[1].findAll('td')[1].text()).to.equal('2')
expect(wrapper.findComponent({ name: 'logs' }).text())
.to.include('Information about row 0. Comma was used as a standart delimiter.')
expect(wrapper.findComponent({ name: 'logs' }).text())
.to.include('Preview parsing is completed in')
expect(wrapper.findComponent({ name: 'logs' }).text()).to.include(
'Information about row 0. Comma was used as a standart delimiter.'
)
expect(wrapper.findComponent({ name: 'logs' }).text()).to.include(
'Preview parsing is completed in'
)
expect(wrapper.find('#import-finish').isVisible()).to.equal(false)
expect(wrapper.find('#import-start').isVisible()).to.equal(true)
expect(wrapper.find('#import-start').attributes().disabled).to.equal(undefined)
expect(wrapper.find('#import-start').attributes().disabled).to.equal(
undefined
)
})
it('disables import if no rows found', async () => {
@@ -129,8 +140,9 @@ describe('CsvJsonImport.vue', () => {
await nextTick()
const rows = wrapper.findAll('tbody tr')
expect(rows).to.have.lengthOf(0)
expect(wrapper.findComponent({ name: 'logs' }).text())
.to.include('No rows to import.')
expect(wrapper.findComponent({ name: 'logs' }).text()).to.include(
'No rows to import.'
)
expect(wrapper.find('.no-data').isVisible()).to.equal(true)
expect(wrapper.find('#import-finish').isVisible()).to.equal(false)
expect(wrapper.find('#import-start').isVisible()).to.equal(true)
@@ -177,8 +189,9 @@ describe('CsvJsonImport.vue', () => {
expect(rows).to.have.lengthOf(1)
expect(rows[0].findAll('td')[0].text()).to.equal('bar')
expect(rows[0].findAll('td')[1].text()).to.equal('2')
expect(wrapper.findComponent({ name: 'logs' }).text())
.to.include('Preview parsing is completed in')
expect(wrapper.findComponent({ name: 'logs' }).text()).to.include(
'Preview parsing is completed in'
)
parse.onCall(2).resolves({
delimiter: ',',
@@ -191,13 +204,15 @@ describe('CsvJsonImport.vue', () => {
},
rowCount: 1,
hasErrors: true,
messages: [{
code: 'MissingQuotes',
message: 'Quote is missed',
row: 0,
type: 'error',
hint: 'Edit your CSV so that the field has a closing quote char.'
}]
messages: [
{
code: 'MissingQuotes',
message: 'Quote is missed',
row: 0,
type: 'error',
hint: 'Edit your CSV so that the field has a closing quote char.'
}
]
})
await wrapper.find('#quote-char input').setValue("'")
@@ -207,13 +222,13 @@ describe('CsvJsonImport.vue', () => {
expect(rows).to.have.lengthOf(1)
expect(rows[0].findAll('td')[0].text()).to.equal('baz')
expect(rows[0].findAll('td')[1].text()).to.equal('3')
expect(wrapper.findComponent({ name: 'logs' }).text())
.to.contain(
'Error in row 0. Quote is missed. ' +
expect(wrapper.findComponent({ name: 'logs' }).text()).to.contain(
'Error in row 0. Quote is missed. ' +
'Edit your CSV so that the field has a closing quote char.'
)
expect(wrapper.findComponent({ name: 'logs' }).text())
.to.not.contain('Preview parsing is completed in')
)
expect(wrapper.findComponent({ name: 'logs' }).text()).to.not.contain(
'Preview parsing is completed in'
)
parse.onCall(3).resolves({
delimiter: ',',
@@ -234,8 +249,9 @@ describe('CsvJsonImport.vue', () => {
expect(rows).to.have.lengthOf(1)
expect(rows[0].findAll('td')[0].text()).to.equal('qux')
expect(rows[0].findAll('td')[1].text()).to.equal('4')
expect(wrapper.findComponent({ name: 'logs' }).text())
.to.contain('Preview parsing is completed in')
expect(wrapper.findComponent({ name: 'logs' }).text()).to.contain(
'Preview parsing is completed in'
)
parse.onCall(4).resolves({
delimiter: ',',
@@ -257,8 +273,9 @@ describe('CsvJsonImport.vue', () => {
expect(rows[0].findAll('td')[0].text()).to.equal('corge')
expect(rows[0].findAll('td')[1].text()).to.equal('5')
expect(wrapper.findComponent({ name: 'logs' }).text())
.to.include('Preview parsing is completed in')
expect(wrapper.findComponent({ name: 'logs' }).text()).to.include(
'Preview parsing is completed in'
)
})
it('has proper state before parsing is complete', async () => {
@@ -282,42 +299,55 @@ describe('CsvJsonImport.vue', () => {
await nextTick()
let resolveParsing
parse.onCall(1).returns(new Promise(resolve => {
resolveParsing = () => resolve({
delimiter: '|',
data: {
columns: ['col1', 'col2'],
values: {
col1: [1],
col2: ['foo']
}
},
rowCount: 1,
messages: []
parse.onCall(1).returns(
new Promise(resolve => {
resolveParsing = () =>
resolve({
delimiter: '|',
data: {
columns: ['col1', 'col2'],
values: {
col1: [1],
col2: ['foo']
}
},
rowCount: 1,
messages: []
})
})
}))
)
await wrapper.find('#csv-json-table-name input').setValue('foo')
await wrapper.find('#import-start').trigger('click')
// "Parsing CSV..." in the logs
expect(wrapper.findComponent({ name: 'logs' }).findAll('.msg')[1].text())
.to.equal('Parsing CSV...')
expect(
wrapper.findComponent({ name: 'logs' }).findAll('.msg')[1].text()
).to.equal('Parsing CSV...')
// After 1 second - loading indicator is shown
await clock.tick(1000)
expect(
wrapper.findComponent({ name: 'logs' }).findComponent({ name: 'LoadingIndicator' }).exists()
wrapper
.findComponent({ name: 'logs' })
.findComponent({ name: 'LoadingIndicator' })
.exists()
).to.equal(true)
// All the dialog controls are disabled
expect(wrapper.findComponent({ name: 'delimiter-selector' }).vm.disabled).to.equal(true)
expect(
wrapper.findComponent({ name: 'delimiter-selector' }).vm.disabled
).to.equal(true)
expect(wrapper.find('#quote-char input').element.disabled).to.equal(true)
expect(wrapper.find('#escape-char input').element.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'check-box' }).vm.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'check-box' }).vm.disabled).to.equal(
true
)
expect(wrapper.find('#import-cancel').element.disabled).to.equal(true)
expect(wrapper.find('#import-finish').element.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(
true
)
expect(wrapper.find('#import-finish').isVisible()).to.equal(false)
expect(wrapper.find('#import-start').isVisible()).to.equal(true)
await resolveParsing()
@@ -325,7 +355,10 @@ describe('CsvJsonImport.vue', () => {
// Loading indicator is not shown when parsing is compete
expect(
wrapper.findComponent({ name: 'logs' }).findComponent({ name: 'LoadingIndicator' }).exists()
wrapper
.findComponent({ name: 'logs' })
.findComponent({ name: 'LoadingIndicator' })
.exists()
).to.equal(false)
})
@@ -365,26 +398,35 @@ describe('CsvJsonImport.vue', () => {
await nextTick()
let resolveImport
wrapper.vm.db.addTableFromCsv.onCall(0).returns(new Promise(resolve => {
resolveImport = resolve
}))
wrapper.vm.db.addTableFromCsv.onCall(0).returns(
new Promise(resolve => {
resolveImport = resolve
})
)
await wrapper.find('#csv-json-table-name input').setValue('foo')
await wrapper.find('#import-start').trigger('click')
await csv.parse.returnValues[1]
// Parsing success in the logs
expect(wrapper.findComponent({ name: 'logs' }).findAll('.msg')[1].text())
.to.include('2 rows are parsed successfully in')
expect(
wrapper.findComponent({ name: 'logs' }).findAll('.msg')[1].text()
).to.include('2 rows are parsed successfully in')
// All the dialog controls are disabled
expect(wrapper.findComponent({ name: 'delimiter-selector' }).vm.disabled).to.equal(true)
expect(
wrapper.findComponent({ name: 'delimiter-selector' }).vm.disabled
).to.equal(true)
expect(wrapper.find('#quote-char input').element.disabled).to.equal(true)
expect(wrapper.find('#escape-char input').element.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'check-box' }).vm.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'check-box' }).vm.disabled).to.equal(
true
)
expect(wrapper.find('#import-cancel').element.disabled).to.equal(true)
expect(wrapper.find('#import-finish').element.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(
true
)
expect(wrapper.find('#import-finish').isVisible()).to.equal(false)
expect(wrapper.find('#import-start').isVisible()).to.equal(true)
await resolveImport()
@@ -417,18 +459,22 @@ describe('CsvJsonImport.vue', () => {
},
rowCount: 2,
hasErrors: false,
messages: [{
code: 'UndetectableDelimiter',
message: 'Comma was used as a standart delimiter',
type: 'info',
hint: undefined
}]
messages: [
{
code: 'UndetectableDelimiter',
message: 'Comma was used as a standart delimiter',
type: 'info',
hint: undefined
}
]
})
let resolveImport
wrapper.vm.db.addTableFromCsv.onCall(0).returns(new Promise(resolve => {
resolveImport = resolve
}))
wrapper.vm.db.addTableFromCsv.onCall(0).returns(
new Promise(resolve => {
resolveImport = resolve
})
)
wrapper.vm.preview()
wrapper.vm.open()
@@ -446,13 +492,19 @@ describe('CsvJsonImport.vue', () => {
expect(logs[2].text()).to.equals('Comma was used as a standart delimiter.')
// All the dialog controls are disabled
expect(wrapper.findComponent({ name: 'delimiter-selector' }).vm.disabled).to.equal(true)
expect(
wrapper.findComponent({ name: 'delimiter-selector' }).vm.disabled
).to.equal(true)
expect(wrapper.find('#quote-char input').element.disabled).to.equal(true)
expect(wrapper.find('#escape-char input').element.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'check-box' }).vm.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'check-box' }).vm.disabled).to.equal(
true
)
expect(wrapper.find('#import-cancel').element.disabled).to.equal(true)
expect(wrapper.find('#import-finish').element.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(
true
)
expect(wrapper.find('#import-finish').isVisible()).to.equal(false)
expect(wrapper.find('#import-start').isVisible()).to.equal(true)
await resolveImport()
@@ -485,12 +537,14 @@ describe('CsvJsonImport.vue', () => {
},
rowCount: 2,
hasErrors: true,
messages: [{
code: 'Error',
message: 'Something is wrong',
type: 'error',
hint: undefined
}]
messages: [
{
code: 'Error',
message: 'Something is wrong',
type: 'error',
hint: undefined
}
]
})
wrapper.vm.preview()
@@ -509,13 +563,19 @@ describe('CsvJsonImport.vue', () => {
expect(logs[2].text()).to.equals('Something is wrong.')
// All the dialog controls are enabled
expect(wrapper.findComponent({ name: 'delimiter-selector' }).vm.disabled).to.equal(false)
expect(
wrapper.findComponent({ name: 'delimiter-selector' }).vm.disabled
).to.equal(false)
expect(wrapper.find('#quote-char input').element.disabled).to.equal(false)
expect(wrapper.find('#escape-char input').element.disabled).to.equal(false)
expect(wrapper.findComponent({ name: 'check-box' }).vm.disabled).to.equal(false)
expect(wrapper.findComponent({ name: 'check-box' }).vm.disabled).to.equal(
false
)
expect(wrapper.find('#import-cancel').element.disabled).to.equal(false)
expect(wrapper.find('#import-finish').element.disabled).to.equal(false)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(false)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(
false
)
expect(wrapper.find('#import-finish').isVisible()).to.equal(false)
expect(wrapper.find('#import-start').isVisible()).to.equal(true)
})
@@ -551,8 +611,11 @@ describe('CsvJsonImport.vue', () => {
})
let resolveImport = sinon.stub()
wrapper.vm.db.addTableFromCsv = sinon.stub()
.resolves(new Promise(resolve => { resolveImport = resolve }))
wrapper.vm.db.addTableFromCsv = sinon.stub().resolves(
new Promise(resolve => {
resolveImport = resolve
})
)
wrapper.vm.preview()
wrapper.vm.open()
@@ -564,23 +627,33 @@ describe('CsvJsonImport.vue', () => {
await csv.parse.returnValues[1]
// Parsing success in the logs
expect(wrapper.findComponent({ name: 'logs' }).findAll('.msg')[2].text())
.to.equal('Importing CSV into a SQLite database...')
expect(
wrapper.findComponent({ name: 'logs' }).findAll('.msg')[2].text()
).to.equal('Importing CSV into a SQLite database...')
// After 1 second - loading indicator is shown
await clock.tick(1000)
expect(
wrapper.findComponent({ name: 'logs' }).findComponent({ name: 'LoadingIndicator' }).exists()
wrapper
.findComponent({ name: 'logs' })
.findComponent({ name: 'LoadingIndicator' })
.exists()
).to.equal(true)
// All the dialog controls are disabled
expect(wrapper.findComponent({ name: 'delimiter-selector' }).vm.disabled).to.equal(true)
expect(
wrapper.findComponent({ name: 'delimiter-selector' }).vm.disabled
).to.equal(true)
expect(wrapper.find('#quote-char input').element.disabled).to.equal(true)
expect(wrapper.find('#escape-char input').element.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'check-box' }).vm.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'check-box' }).vm.disabled).to.equal(
true
)
expect(wrapper.find('#import-cancel').element.disabled).to.equal(true)
expect(wrapper.find('#import-finish').element.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(
true
)
expect(wrapper.find('#import-finish').isVisible()).to.equal(false)
expect(wrapper.find('#import-start').isVisible()).to.equal(true)
expect(wrapper.vm.db.addTableFromCsv.getCall(0).args[0]).to.equal('foo') // table name
@@ -589,7 +662,10 @@ describe('CsvJsonImport.vue', () => {
await resolveImport()
await wrapper.vm.db.addTableFromCsv.returnValues[0]
expect(
wrapper.findComponent({ name: 'logs' }).findComponent({ name: 'LoadingIndicator' }).exists()
wrapper
.findComponent({ name: 'logs' })
.findComponent({ name: 'LoadingIndicator' })
.exists()
).to.equal(false)
})
@@ -635,16 +711,24 @@ describe('CsvJsonImport.vue', () => {
// Import success in the logs
const logs = wrapper.findComponent({ name: 'logs' }).findAll('.msg')
expect(logs).to.have.lengthOf(3)
expect(logs[2].text()).to.contain('Importing CSV into a SQLite database is completed in')
expect(logs[2].text()).to.contain(
'Importing CSV into a SQLite database is completed in'
)
// All the dialog controls are enabled
expect(wrapper.findComponent({ name: 'delimiter-selector' }).vm.disabled).to.equal(false)
expect(
wrapper.findComponent({ name: 'delimiter-selector' }).vm.disabled
).to.equal(false)
expect(wrapper.find('#quote-char input').element.disabled).to.equal(false)
expect(wrapper.find('#escape-char input').element.disabled).to.equal(false)
expect(wrapper.findComponent({ name: 'check-box' }).vm.disabled).to.equal(false)
expect(wrapper.findComponent({ name: 'check-box' }).vm.disabled).to.equal(
false
)
expect(wrapper.find('#import-cancel').element.disabled).to.equal(false)
expect(wrapper.find('#import-finish').element.disabled).to.equal(false)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(false)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(
false
)
expect(wrapper.find('#import-finish').isVisible()).to.equal(true)
})
@@ -696,13 +780,19 @@ describe('CsvJsonImport.vue', () => {
expect(logs[3].text()).to.equal('Error: fail.')
// All the dialog controls are enabled
expect(wrapper.findComponent({ name: 'delimiter-selector' }).vm.disabled).to.equal(false)
expect(
wrapper.findComponent({ name: 'delimiter-selector' }).vm.disabled
).to.equal(false)
expect(wrapper.find('#quote-char input').element.disabled).to.equal(false)
expect(wrapper.find('#escape-char input').element.disabled).to.equal(false)
expect(wrapper.findComponent({ name: 'check-box' }).vm.disabled).to.equal(false)
expect(wrapper.findComponent({ name: 'check-box' }).vm.disabled).to.equal(
false
)
expect(wrapper.find('#import-cancel').element.disabled).to.equal(false)
expect(wrapper.find('#import-finish').element.disabled).to.equal(false)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(false)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(
false
)
expect(wrapper.find('#import-finish').isVisible()).to.equal(false)
})
@@ -733,7 +823,9 @@ describe('CsvJsonImport.vue', () => {
await clock.tick(100)
expect(actions.addTab.calledOnce).to.equal(true)
await actions.addTab.returnValues[0]
expect(mutations.setCurrentTabId.calledOnceWith(state, newTabId)).to.equal(true)
expect(mutations.setCurrentTabId.calledOnceWith(state, newTabId)).to.equal(
true
)
expect(wrapper.find('.dialog.vfm').exists()).to.equal(false)
expect(wrapper.emitted('finish')).to.have.lengthOf(1)
})
@@ -764,7 +856,9 @@ describe('CsvJsonImport.vue', () => {
await wrapper.find('#import-cancel').trigger('click')
await clock.tick(100)
expect(wrapper.find('.dialog.vfm').exists()).to.equal(false)
expect(wrapper.vm.db.execute.calledOnceWith('DROP TABLE "my_data"')).to.equal(true)
expect(
wrapper.vm.db.execute.calledOnceWith('DROP TABLE "my_data"')
).to.equal(true)
expect(wrapper.vm.db.refreshSchema.calledOnce).to.equal(true)
expect(wrapper.emitted('cancel')).to.have.lengthOf(1)
})
@@ -783,23 +877,31 @@ describe('CsvJsonImport.vue', () => {
await wrapper.find('#csv-json-table-name input').setValue('foo')
await clock.tick(400)
await nextTick()
expect(wrapper.find('#csv-json-table-name .text-field-error').text()).to.equal('')
expect(
wrapper.find('#csv-json-table-name .text-field-error').text()
).to.equal('')
wrapper.vm.db.validateTableName = sinon.stub().rejects(new Error('this is a bad table name'))
wrapper.vm.db.validateTableName = sinon
.stub()
.rejects(new Error('this is a bad table name'))
await wrapper.find('#csv-json-table-name input').setValue('bar')
await clock.tick(400)
await nextTick()
expect(wrapper.find('#csv-json-table-name .text-field-error').text())
.to.equal('this is a bad table name. Try another table name.')
expect(
wrapper.find('#csv-json-table-name .text-field-error').text()
).to.equal('this is a bad table name. Try another table name.')
await wrapper.find('#csv-json-table-name input').setValue('')
await clock.tick(400)
await nextTick()
expect(wrapper.find('#csv-json-table-name .text-field-error').text()).to.equal('')
expect(
wrapper.find('#csv-json-table-name .text-field-error').text()
).to.equal('')
await wrapper.find('#import-start').trigger('click')
expect(wrapper.find('#csv-json-table-name .text-field-error').text())
.to.equal("Table name can't be empty")
expect(
wrapper.find('#csv-json-table-name .text-field-error').text()
).to.equal("Table name can't be empty")
expect(wrapper.vm.db.addTableFromCsv.called).to.equal(false)
})
})
@@ -812,12 +914,14 @@ describe('CsvJsonImport.vue - json', () => {
let wrapper
const newTabId = 1
const file = new File(
[new Blob(
[JSON.stringify({ foo: [1, 2, 3] }, null, 2)],
{ type: 'application/json' }
)],
[
new Blob([JSON.stringify({ foo: [1, 2, 3] }, null, 2)], {
type: 'application/json'
})
],
'my data.json',
{ type: 'application/json' })
{ type: 'application/json' }
)
beforeEach(() => {
clock = sinon.useFakeTimers()
@@ -845,7 +949,7 @@ describe('CsvJsonImport.vue - json', () => {
// mount the component
wrapper = mount(CsvJsonImport, {
global: {
global: {
plugins: [store],
stubs: {
teleport: true,
@@ -873,25 +977,25 @@ describe('CsvJsonImport.vue - json', () => {
await nextTick()
expect(wrapper.find('.dialog.vfm').exists()).to.equal(true)
expect(wrapper.find('.dialog-header').text()).to.equal('JSON import')
expect(wrapper.find('#csv-json-table-name input').element.value).to.equal('my_data')
expect(wrapper.findComponent({ name: 'delimiter-selector' }).exists()).to.equal(false)
expect(wrapper.find('#csv-json-table-name input').element.value).to.equal(
'my_data'
)
expect(
wrapper.findComponent({ name: 'delimiter-selector' }).exists()
).to.equal(false)
expect(wrapper.find('#quote-char input').exists()).to.equal(false)
expect(wrapper.find('#escape-char input').exists()).to.equal(false)
expect(wrapper.findComponent({ name: 'check-box' }).exists()).to.equal(false)
expect(wrapper.findComponent({ name: 'check-box' }).exists()).to.equal(
false
)
const rows = wrapper.findAll('tbody tr')
expect(rows).to.have.lengthOf(1)
expect(rows[0].findAll('td')[0].text()).to.equal([
'{',
' "foo": [',
' 1,',
' 2,',
' 3',
' ]',
'}'
].join('\n')
expect(rows[0].findAll('td')[0].text()).to.equal(
['{', ' "foo": [', ' 1,', ' 2,', ' 3', ' ]', '}'].join('\n')
)
expect(wrapper.findComponent({ name: 'logs' }).text()).to.include(
'Preview parsing is completed in'
)
expect(wrapper.findComponent({ name: 'logs' }).text())
.to.include('Preview parsing is completed in')
expect(wrapper.find('#import-finish').isVisible()).to.equal(false)
expect(wrapper.find('#import-start').isVisible()).to.equal(true)
})
@@ -912,20 +1016,23 @@ describe('CsvJsonImport.vue - json', () => {
})
let resolveParsing
getJsonParseResult.onCall(1).returns(new Promise(resolve => {
resolveParsing = () => resolve({
delimiter: '|',
data: {
columns: ['doc'],
values: {
doc: ['{ "foo": [ 1, 2, 3 ] }']
}
},
rowCount: 1,
hasErrors: false,
messages: []
getJsonParseResult.onCall(1).returns(
new Promise(resolve => {
resolveParsing = () =>
resolve({
delimiter: '|',
data: {
columns: ['doc'],
values: {
doc: ['{ "foo": [ 1, 2, 3 ] }']
}
},
rowCount: 1,
hasErrors: false,
messages: []
})
})
}))
)
await wrapper.vm.preview()
await wrapper.vm.open()
@@ -937,19 +1044,25 @@ describe('CsvJsonImport.vue - json', () => {
await nextTick()
// "Parsing JSON..." in the logs
expect(wrapper.findComponent({ name: 'logs' }).findAll('.msg')[1].text())
.to.equal('Parsing JSON...')
expect(
wrapper.findComponent({ name: 'logs' }).findAll('.msg')[1].text()
).to.equal('Parsing JSON...')
// After 1 second - loading indicator is shown
await clock.tick(1000)
expect(
wrapper.findComponent({ name: 'logs' }).findComponent({ name: 'LoadingIndicator' }).exists()
wrapper
.findComponent({ name: 'logs' })
.findComponent({ name: 'LoadingIndicator' })
.exists()
).to.equal(true)
// All the dialog controls are disabled
expect(wrapper.find('#import-cancel').element.disabled).to.equal(true)
expect(wrapper.find('#import-finish').element.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(
true
)
expect(wrapper.find('#import-finish').isVisible()).to.equal(false)
expect(wrapper.find('#import-start').isVisible()).to.equal(true)
await resolveParsing()
@@ -957,7 +1070,10 @@ describe('CsvJsonImport.vue - json', () => {
// Loading indicator is not shown when parsing is compete
expect(
wrapper.findComponent({ name: 'logs' }).findComponent({ name: 'LoadingIndicator' }).exists()
wrapper
.findComponent({ name: 'logs' })
.findComponent({ name: 'LoadingIndicator' })
.exists()
).to.equal(false)
})
@@ -965,8 +1081,11 @@ describe('CsvJsonImport.vue - json', () => {
const getJsonParseResult = sinon.spy(wrapper.vm, 'getJsonParseResult')
let resolveImport = sinon.stub()
wrapper.vm.db.addTableFromCsv = sinon.stub()
.resolves(new Promise(resolve => { resolveImport = resolve }))
wrapper.vm.db.addTableFromCsv = sinon.stub().resolves(
new Promise(resolve => {
resolveImport = resolve
})
)
await wrapper.vm.preview()
await wrapper.vm.open()
@@ -979,19 +1098,25 @@ describe('CsvJsonImport.vue - json', () => {
await nextTick()
// Parsing success in the logs
expect(wrapper.findComponent({ name: 'logs' }).findAll('.msg')[2].text())
.to.equal('Importing JSON into a SQLite database...')
expect(
wrapper.findComponent({ name: 'logs' }).findAll('.msg')[2].text()
).to.equal('Importing JSON into a SQLite database...')
// After 1 second - loading indicator is shown
await clock.tick(1000)
expect(
wrapper.findComponent({ name: 'logs' }).findComponent({ name: 'LoadingIndicator' }).exists()
wrapper
.findComponent({ name: 'logs' })
.findComponent({ name: 'LoadingIndicator' })
.exists()
).to.equal(true)
// All the dialog controls are disabled
expect(wrapper.find('#import-cancel').element.disabled).to.equal(true)
expect(wrapper.find('#import-finish').element.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(
true
)
expect(wrapper.find('#import-finish').isVisible()).to.equal(false)
expect(wrapper.find('#import-start').isVisible()).to.equal(true)
expect(wrapper.vm.db.addTableFromCsv.getCall(0).args[0]).to.equal('foo') // table name
@@ -1000,7 +1125,10 @@ describe('CsvJsonImport.vue - json', () => {
await resolveImport()
await wrapper.vm.db.addTableFromCsv.returnValues[0]
expect(
wrapper.findComponent({ name: 'logs' }).findComponent({ name: 'LoadingIndicator' }).exists()
wrapper
.findComponent({ name: 'logs' })
.findComponent({ name: 'LoadingIndicator' })
.exists()
).to.equal(false)
})
@@ -1021,12 +1149,16 @@ describe('CsvJsonImport.vue - json', () => {
// Import success in the logs
const logs = wrapper.findComponent({ name: 'logs' }).findAll('.msg')
expect(logs).to.have.lengthOf(3)
expect(logs[2].text()).to.contain('Importing JSON into a SQLite database is completed in')
expect(logs[2].text()).to.contain(
'Importing JSON into a SQLite database is completed in'
)
// All the dialog controls are enabled
expect(wrapper.find('#import-cancel').element.disabled).to.equal(false)
expect(wrapper.find('#import-finish').element.disabled).to.equal(false)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(false)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(
false
)
expect(wrapper.find('#import-finish').isVisible()).to.equal(true)
})
})
@@ -1106,16 +1238,23 @@ describe('CsvJsonImport.vue - ndjson', () => {
await nextTick()
expect(wrapper.find('.dialog.vfm').exists()).to.equal(true)
expect(wrapper.find('.dialog-header').text()).to.equal('JSON import')
expect(wrapper.find('#csv-json-table-name input').element.value).to.equal('my_data')
expect(wrapper.findComponent({ name: 'delimiter-selector' }).exists()).to.equal(false)
expect(wrapper.find('#csv-json-table-name input').element.value).to.equal(
'my_data'
)
expect(
wrapper.findComponent({ name: 'delimiter-selector' }).exists()
).to.equal(false)
expect(wrapper.find('#quote-char input').exists()).to.equal(false)
expect(wrapper.find('#escape-char input').exists()).to.equal(false)
expect(wrapper.findComponent({ name: 'check-box' }).exists()).to.equal(false)
expect(wrapper.findComponent({ name: 'check-box' }).exists()).to.equal(
false
)
const rows = wrapper.findAll('tbody tr')
expect(rows).to.have.lengthOf(1)
expect(rows[0].findAll('td')[0].text()).to.equal('{ "foo": [ 1, 2, 3 ] }')
expect(wrapper.findComponent({ name: 'logs' }).text())
.to.include('Preview parsing is completed in')
expect(wrapper.findComponent({ name: 'logs' }).text()).to.include(
'Preview parsing is completed in'
)
expect(wrapper.find('#import-finish').isVisible()).to.equal(false)
expect(wrapper.find('#import-start').isVisible()).to.equal(true)
})
@@ -1139,38 +1278,47 @@ describe('CsvJsonImport.vue - ndjson', () => {
await nextTick()
let resolveParsing
parse.onCall(1).returns(new Promise(resolve => {
resolveParsing = () => resolve({
delimiter: '|',
data: {
columns: ['doc'],
values: {
doc: ['{ "foo": [ 1, 2, 3 ] }']
}
},
rowCount: 1,
messages: []
parse.onCall(1).returns(
new Promise(resolve => {
resolveParsing = () =>
resolve({
delimiter: '|',
data: {
columns: ['doc'],
values: {
doc: ['{ "foo": [ 1, 2, 3 ] }']
}
},
rowCount: 1,
messages: []
})
})
}))
)
await wrapper.find('#csv-json-table-name input').setValue('foo')
await wrapper.find('#import-start').trigger('click')
await nextTick()
// "Parsing JSON..." in the logs
expect(wrapper.findComponent({ name: 'logs' }).findAll('.msg')[1].text())
.to.equal('Parsing JSON...')
expect(
wrapper.findComponent({ name: 'logs' }).findAll('.msg')[1].text()
).to.equal('Parsing JSON...')
// After 1 second - loading indicator is shown
await clock.tick(1000)
expect(
wrapper.findComponent({ name: 'logs' }).findComponent({ name: 'LoadingIndicator' }).exists()
wrapper
.findComponent({ name: 'logs' })
.findComponent({ name: 'LoadingIndicator' })
.exists()
).to.equal(true)
// All the dialog controls are disabled
expect(wrapper.find('#import-cancel').element.disabled).to.equal(true)
expect(wrapper.find('#import-finish').element.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(
true
)
expect(wrapper.find('#import-finish').isVisible()).to.equal(false)
expect(wrapper.find('#import-start').isVisible()).to.equal(true)
await resolveParsing()
@@ -1178,7 +1326,10 @@ describe('CsvJsonImport.vue - ndjson', () => {
// Loading indicator is not shown when parsing is compete
expect(
wrapper.findComponent({ name: 'logs' }).findComponent({ name: 'LoadingIndicator' }).exists()
wrapper
.findComponent({ name: 'logs' })
.findComponent({ name: 'LoadingIndicator' })
.exists()
).to.equal(false)
})
@@ -1211,8 +1362,11 @@ describe('CsvJsonImport.vue - ndjson', () => {
})
let resolveImport = sinon.stub()
wrapper.vm.db.addTableFromCsv = sinon.stub()
.resolves(new Promise(resolve => { resolveImport = resolve }))
wrapper.vm.db.addTableFromCsv = sinon.stub().resolves(
new Promise(resolve => {
resolveImport = resolve
})
)
wrapper.vm.preview()
wrapper.vm.open()
@@ -1225,19 +1379,25 @@ describe('CsvJsonImport.vue - ndjson', () => {
await nextTick()
// Parsing success in the logs
expect(wrapper.findComponent({ name: 'logs' }).findAll('.msg')[2].text())
.to.equal('Importing JSON into a SQLite database...')
expect(
wrapper.findComponent({ name: 'logs' }).findAll('.msg')[2].text()
).to.equal('Importing JSON into a SQLite database...')
// After 1 second - loading indicator is shown
await clock.tick(1000)
expect(
wrapper.findComponent({ name: 'logs' }).findComponent({ name: 'LoadingIndicator' }).exists()
wrapper
.findComponent({ name: 'logs' })
.findComponent({ name: 'LoadingIndicator' })
.exists()
).to.equal(true)
// All the dialog controls are disabled
expect(wrapper.find('#import-cancel').element.disabled).to.equal(true)
expect(wrapper.find('#import-finish').element.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(true)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(
true
)
expect(wrapper.find('#import-finish').isVisible()).to.equal(false)
expect(wrapper.find('#import-start').isVisible()).to.equal(true)
expect(wrapper.vm.db.addTableFromCsv.getCall(0).args[0]).to.equal('foo') // table name
@@ -1246,7 +1406,10 @@ describe('CsvJsonImport.vue - ndjson', () => {
await resolveImport()
await wrapper.vm.db.addTableFromCsv.returnValues[0]
expect(
wrapper.findComponent({ name: 'logs' }).findComponent({ name: 'LoadingIndicator' }).exists()
wrapper
.findComponent({ name: 'logs' })
.findComponent({ name: 'LoadingIndicator' })
.exists()
).to.equal(false)
})
@@ -1291,12 +1454,16 @@ describe('CsvJsonImport.vue - ndjson', () => {
// Import success in the logs
const logs = wrapper.findComponent({ name: 'logs' }).findAll('.msg')
expect(logs).to.have.lengthOf(3)
expect(logs[2].text()).to.contain('Importing JSON into a SQLite database is completed in')
expect(logs[2].text()).to.contain(
'Importing JSON into a SQLite database is completed in'
)
// All the dialog controls are enabled
expect(wrapper.find('#import-cancel').element.disabled).to.equal(false)
expect(wrapper.find('#import-finish').element.disabled).to.equal(false)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(false)
expect(wrapper.findComponent({ name: 'close-icon' }).vm.disabled).to.equal(
false
)
expect(wrapper.find('#import-finish').isVisible()).to.equal(true)
})
})

View File

@@ -37,9 +37,9 @@ describe('DelimiterSelector', async () => {
it('changes value by typing', async () => {
const wrapper = shallowMount(DelimiterSelector, {
props: {
props: {
modelValue: ',',
'onUpdate:modelValue': (e) => wrapper.setProps({ modelValue: e })
'onUpdate:modelValue': e => wrapper.setProps({ modelValue: e })
}
})
@@ -51,7 +51,7 @@ describe('DelimiterSelector', async () => {
const wrapper = mount(DelimiterSelector, {
props: {
modelValue: '|',
'onUpdate:modelValue': (e) => wrapper.setProps({ modelValue: e })
'onUpdate:modelValue': e => wrapper.setProps({ modelValue: e })
},
attachTo: document.body
})
@@ -66,9 +66,9 @@ describe('DelimiterSelector', async () => {
it("doesn't change value when becomes empty", async () => {
const wrapper = mount(DelimiterSelector, {
props: {
props: {
modelValue: '|',
'onUpdate:modelValue': (e) => wrapper.setProps({ modelValue: e })
'onUpdate:modelValue': e => wrapper.setProps({ modelValue: e })
}
})
@@ -96,7 +96,7 @@ describe('DelimiterSelector', async () => {
props: {
modelValue: '|',
disabled: true,
'onUpdate:modelValue': (e) => wrapper.setProps({ modelValue: e })
'onUpdate:modelValue': e => wrapper.setProps({ modelValue: e })
},
attachTo: document.body
})

View File

@@ -7,7 +7,6 @@ import fu from '@/lib/utils/fileIo'
import database from '@/lib/database'
import { nextTick } from 'vue'
describe('DbUploader.vue', () => {
let state = {}
let mutations = {}

View File

@@ -19,7 +19,8 @@ describe('LoadingIndicator.vue', () => {
})
// The lendth of circle in the component is 50.24. If progress is 50% then resulting arc
// should be 25.12
expect(wrapper.find('.loader-svg.front').element.style.strokeDasharray)
.to.equal('25.12px, 25.12px')
expect(
wrapper.find('.loader-svg.front').element.style.strokeDasharray
).to.equal('25.12px, 25.12px')
})
})

View File

@@ -31,8 +31,9 @@ describe('Logs.vue', () => {
})
await nextTick()
const height = wrapper.find('.logs-container').element.scrollHeight
expect(wrapper.find('.logs-container').element.scrollTop)
.to.equal(height - viewHeight)
expect(wrapper.find('.logs-container').element.scrollTop).to.equal(
height - viewHeight
)
wrapper.unmount()
})
@@ -58,8 +59,9 @@ describe('Logs.vue', () => {
await nextTick()
await nextTick()
const height = wrapper.find('.logs-container').element.scrollHeight
expect(wrapper.find('.logs-container').element.scrollTop)
.to.equal(height - viewHeight)
expect(wrapper.find('.logs-container').element.scrollTop).to.equal(
height - viewHeight
)
wrapper.unmount()
})

View File

@@ -18,8 +18,12 @@ describe('Splitpanes.vue', () => {
})
expect(wrapper.findAll('.splitpanes-pane')).to.have.lengthOf(2)
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal('60%')
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal('40%')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal(
'60%'
)
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal(
'40%'
)
})
it('renders correctly - horizontal', () => {
@@ -37,8 +41,12 @@ describe('Splitpanes.vue', () => {
})
expect(wrapper.findAll('.splitpanes-pane')).to.have.lengthOf(2)
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.height).to.equal('60%')
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.height).to.equal('40%')
expect(
wrapper.findAll('.splitpanes-pane')[0].element.style.height
).to.equal('60%')
expect(
wrapper.findAll('.splitpanes-pane')[1].element.style.height
).to.equal('40%')
})
it('toggles correctly - no maximized initially', async () => {
@@ -55,20 +63,36 @@ describe('Splitpanes.vue', () => {
})
await wrapper.find('.toggle-btn').trigger('click')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal('0%')
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal('100%')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal(
'0%'
)
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal(
'100%'
)
await wrapper.find('.toggle-btn').trigger('click')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal('60%')
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal('40%')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal(
'60%'
)
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal(
'40%'
)
await wrapper.findAll('.toggle-btn')[1].trigger('click')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal('100%')
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal('0%')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal(
'100%'
)
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal(
'0%'
)
await wrapper.find('.toggle-btn').trigger('click')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal('60%')
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal('40%')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal(
'60%'
)
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal(
'40%'
)
})
it('toggles correctly - with maximized initially', async () => {
@@ -86,20 +110,36 @@ describe('Splitpanes.vue', () => {
})
await wrapper.find('.toggle-btn').trigger('click')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal('20%')
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal('80%')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal(
'20%'
)
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal(
'80%'
)
await wrapper.findAll('.toggle-btn')[0].trigger('click')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal('0%')
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal('100%')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal(
'0%'
)
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal(
'100%'
)
await wrapper.find('.toggle-btn').trigger('click')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal('20%')
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal('80%')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal(
'20%'
)
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal(
'80%'
)
await wrapper.findAll('.toggle-btn')[1].trigger('click')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal('100%')
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal('0%')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal(
'100%'
)
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal(
'0%'
)
wrapper = shallowMount(Splitpanes, {
slots: {
@@ -113,20 +153,36 @@ describe('Splitpanes.vue', () => {
})
await wrapper.find('.toggle-btn').trigger('click')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal('50%')
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal('50%')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal(
'50%'
)
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal(
'50%'
)
await wrapper.findAll('.toggle-btn')[0].trigger('click')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal('0%')
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal('100%')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal(
'0%'
)
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal(
'100%'
)
await wrapper.find('.toggle-btn').trigger('click')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal('50%')
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal('50%')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal(
'50%'
)
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal(
'50%'
)
await wrapper.findAll('.toggle-btn')[1].trigger('click')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal('100%')
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal('0%')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal(
'100%'
)
expect(wrapper.findAll('.splitpanes-pane')[1].element.style.width).to.equal(
'0%'
)
})
it('drag - vertical', async () => {
@@ -151,13 +207,17 @@ describe('Splitpanes.vue', () => {
parent.style.height = '500px'
await wrapper.find('.splitpanes-splitter').trigger('mousedown')
document.dispatchEvent(new MouseEvent('mousemove', {
clientX: 300,
clientY: 80
}))
document.dispatchEvent(
new MouseEvent('mousemove', {
clientX: 300,
clientY: 80
})
)
document.dispatchEvent(new MouseEvent('mouseup'))
await nextTick()
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal('50%')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal(
'50%'
)
wrapper.unmount()
root.remove()
})
@@ -186,14 +246,18 @@ describe('Splitpanes.vue', () => {
parent.style.height = '500px'
await wrapper.find('.splitpanes-splitter').trigger('mousedown')
document.dispatchEvent(new MouseEvent('mousemove', {
clientX: 10,
clientY: 250
}))
document.dispatchEvent(
new MouseEvent('mousemove', {
clientX: 10,
clientY: 250
})
)
document.dispatchEvent(new MouseEvent('mouseup'))
await nextTick()
await nextTick()
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.height).to.equal('50%')
expect(
wrapper.findAll('.splitpanes-pane')[0].element.style.height
).to.equal('50%')
wrapper.unmount()
root.remove()
})
@@ -225,16 +289,20 @@ describe('Splitpanes.vue', () => {
await wrapper.find('.splitpanes-splitter').trigger('touchstart')
const event = new TouchEvent('touchmove')
Object.defineProperty(event, 'touches', {
value: [{
clientX: 10,
clientY: 250
}],
value: [
{
clientX: 10,
clientY: 250
}
],
writable: true
})
document.dispatchEvent(event)
document.dispatchEvent(new MouseEvent('touchend'))
await nextTick()
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.height).to.equal('50%')
expect(
wrapper.findAll('.splitpanes-pane')[0].element.style.height
).to.equal('50%')
wrapper.unmount()
root.remove()
delete window.ontouchstart
@@ -265,16 +333,20 @@ describe('Splitpanes.vue', () => {
await wrapper.find('.splitpanes-splitter').trigger('touchstart')
const event = new TouchEvent('touchmove')
Object.defineProperty(event, 'touches', {
value: [{
clientX: 300,
clientY: 80
}],
value: [
{
clientX: 300,
clientY: 80
}
],
writable: true
})
document.dispatchEvent(event)
document.dispatchEvent(new MouseEvent('touchend'))
await nextTick()
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal('50%')
expect(wrapper.findAll('.splitpanes-pane')[0].element.style.width).to.equal(
'50%'
)
wrapper.unmount()
root.remove()
delete window.ontouchstart

View File

@@ -38,7 +38,11 @@ describe('splitter.js', () => {
document.body.appendChild(container)
const dragPercentage = splitter.getCurrentDragPercentage(event, container, isHorisontal)
const dragPercentage = splitter.getCurrentDragPercentage(
event,
container,
isHorisontal
)
expect(dragPercentage).to.equal(50)
})
@@ -53,7 +57,11 @@ describe('splitter.js', () => {
document.body.appendChild(container)
const dragPercentage = splitter.getCurrentDragPercentage(event, container, isHorisontal)
const dragPercentage = splitter.getCurrentDragPercentage(
event,
container,
isHorisontal
)
expect(dragPercentage).to.equal(25)
})

View File

@@ -12,7 +12,7 @@ describe('Pager.vue', () => {
const wrapper = mount(Pager, {
props: {
pageCount: 5,
'onUpdate:modelValue': (e) => wrapper.setProps({ modelValue: e })
'onUpdate:modelValue': e => wrapper.setProps({ modelValue: e })
}
})