mirror of
https://github.com/lana-k/sqliteviz.git
synced 2026-02-04 15:38:55 +08:00
156 lines
5.7 KiB
JavaScript
156 lines
5.7 KiB
JavaScript
import { expect } from 'chai'
|
|
import { mount } from '@vue/test-utils'
|
|
import PivotUi from '@/components/Pivot/PivotUi'
|
|
|
|
describe('PivotUi.vue', () => {
|
|
it('returns value when settings changed', async () => {
|
|
const wrapper = mount(PivotUi, {
|
|
props: {
|
|
keyNames: ['foo', 'bar'],
|
|
'onUpdate:modelValue': e => wrapper.setProps({ modelValue: e })
|
|
}
|
|
})
|
|
|
|
// choose columns
|
|
await wrapper
|
|
.findAll('.sqliteviz-select.cols .multiselect__element > span')[0]
|
|
.trigger('click')
|
|
|
|
expect(wrapper.emitted().update.length).to.equal(1)
|
|
|
|
let value = wrapper.props('modelValue')
|
|
expect(value.rows).to.eql([])
|
|
expect(value.cols).to.eql(['foo'])
|
|
expect(value.colOrder).to.equal('key_a_to_z')
|
|
expect(value.rowOrder).to.equal('key_a_to_z')
|
|
expect(value.aggregatorName).to.equal('Count')
|
|
expect(value.rendererName).to.equal('Table')
|
|
expect(value.rendererOptions).to.equal(undefined)
|
|
expect(value.vals).to.eql([])
|
|
|
|
// choose rows
|
|
await wrapper
|
|
.findAll('.sqliteviz-select.rows .multiselect__element > span')[0]
|
|
.trigger('click')
|
|
|
|
expect(wrapper.emitted().update.length).to.equal(2)
|
|
value = wrapper.props('modelValue')
|
|
expect(value.rows).to.eql(['bar'])
|
|
expect(value.cols).to.eql(['foo'])
|
|
expect(value.colOrder).to.equal('key_a_to_z')
|
|
expect(value.rowOrder).to.equal('key_a_to_z')
|
|
expect(value.aggregatorName).to.equal('Count')
|
|
expect(value.rendererName).to.equal('Table')
|
|
expect(value.rendererOptions).to.equal(undefined)
|
|
expect(value.vals).to.eql([])
|
|
|
|
// change column order
|
|
await wrapper.find('.pivot-sort-btn.col').trigger('click')
|
|
|
|
expect(wrapper.emitted().update.length).to.equal(3)
|
|
value = wrapper.props('modelValue')
|
|
expect(value.rows).to.eql(['bar'])
|
|
expect(value.cols).to.eql(['foo'])
|
|
expect(value.colOrder).to.equal('value_a_to_z')
|
|
expect(value.rowOrder).to.equal('key_a_to_z')
|
|
expect(value.aggregatorName).to.equal('Count')
|
|
expect(value.rendererName).to.equal('Table')
|
|
expect(value.rendererOptions).to.equal(undefined)
|
|
expect(value.vals).to.eql([])
|
|
|
|
// change row order
|
|
await wrapper.find('.pivot-sort-btn.row').trigger('click')
|
|
|
|
expect(wrapper.emitted().update.length).to.equal(4)
|
|
value = wrapper.props('modelValue')
|
|
expect(value.rows).to.eql(['bar'])
|
|
expect(value.cols).to.eql(['foo'])
|
|
expect(value.colOrder).to.equal('value_a_to_z')
|
|
expect(value.rowOrder).to.equal('value_a_to_z')
|
|
expect(value.aggregatorName).to.equal('Count')
|
|
expect(value.rendererName).to.equal('Table')
|
|
expect(value.rendererOptions).to.equal(undefined)
|
|
expect(value.vals).to.eql([])
|
|
|
|
// change aggregator
|
|
await wrapper
|
|
.findAll('.sqliteviz-select.aggregator .multiselect__element > span')[12]
|
|
.trigger('click')
|
|
|
|
expect(wrapper.emitted().update.length).to.equal(5)
|
|
value = wrapper.props('modelValue')
|
|
expect(value.rows).to.eql(['bar'])
|
|
expect(value.cols).to.eql(['foo'])
|
|
expect(value.colOrder).to.equal('value_a_to_z')
|
|
expect(value.rowOrder).to.equal('value_a_to_z')
|
|
expect(value.aggregatorName).to.equal('Sum over Sum')
|
|
expect(value.rendererName).to.equal('Table')
|
|
expect(value.rendererOptions).to.equal(undefined)
|
|
expect(value.vals).to.eql(['', ''])
|
|
|
|
// set first aggregator argument
|
|
await wrapper
|
|
.findAll('.sqliteviz-select.aggr-arg')[0]
|
|
.findAll('.multiselect__element > span')[0]
|
|
.trigger('click')
|
|
|
|
expect(wrapper.emitted().update.length).to.equal(6)
|
|
value = wrapper.props('modelValue')
|
|
expect(value.rows).to.eql(['bar'])
|
|
expect(value.cols).to.eql(['foo'])
|
|
expect(value.colOrder).to.equal('value_a_to_z')
|
|
expect(value.rowOrder).to.equal('value_a_to_z')
|
|
expect(value.aggregatorName).to.equal('Sum over Sum')
|
|
expect(value.rendererName).to.equal('Table')
|
|
expect(value.rendererOptions).to.equal(undefined)
|
|
expect(value.vals).to.eql(['foo', ''])
|
|
|
|
// set second aggregator argument
|
|
await wrapper
|
|
.findAll('.sqliteviz-select.aggr-arg')[1]
|
|
.findAll('.multiselect__element > span')[1]
|
|
.trigger('click')
|
|
|
|
expect(wrapper.emitted().update.length).to.equal(7)
|
|
value = wrapper.props('modelValue')
|
|
expect(value.rows).to.eql(['bar'])
|
|
expect(value.cols).to.eql(['foo'])
|
|
expect(value.colOrder).to.equal('value_a_to_z')
|
|
expect(value.rowOrder).to.equal('value_a_to_z')
|
|
expect(value.aggregatorName).to.equal('Sum over Sum')
|
|
expect(value.rendererName).to.equal('Table')
|
|
expect(value.rendererOptions).to.equal(undefined)
|
|
expect(value.vals).to.eql(['foo', 'bar'])
|
|
|
|
// change renderer
|
|
await wrapper
|
|
.findAll('.sqliteviz-select.renderer .multiselect__element > span')[13]
|
|
.trigger('click')
|
|
|
|
expect(wrapper.emitted().update.length).to.equal(8)
|
|
value = wrapper.props('modelValue')
|
|
expect(value.rows).to.eql(['bar'])
|
|
expect(value.cols).to.eql(['foo'])
|
|
expect(value.colOrder).to.equal('value_a_to_z')
|
|
expect(value.rowOrder).to.equal('value_a_to_z')
|
|
expect(value.aggregatorName).to.equal('Sum over Sum')
|
|
expect(value.rendererName).to.equal('Custom chart')
|
|
expect(value.vals).to.eql(['foo', 'bar'])
|
|
|
|
// change aggregator again
|
|
await wrapper
|
|
.findAll('.sqliteviz-select.aggregator .multiselect__element > span')[3]
|
|
.trigger('click')
|
|
|
|
expect(wrapper.emitted().update.length).to.equal(9)
|
|
value = wrapper.props('modelValue')
|
|
expect(value.rows).to.eql(['bar'])
|
|
expect(value.cols).to.eql(['foo'])
|
|
expect(value.colOrder).to.equal('value_a_to_z')
|
|
expect(value.rowOrder).to.equal('value_a_to_z')
|
|
expect(value.aggregatorName).to.equal('Sum')
|
|
expect(value.rendererName).to.equal('Custom chart')
|
|
expect(value.vals).to.eql(['foo'])
|
|
})
|
|
})
|