mirror of
https://github.com/lana-k/sqliteviz.git
synced 2026-08-05 07:19:17 +08:00
123 lines
3.3 KiB
JavaScript
123 lines
3.3 KiB
JavaScript
import { expect } from 'chai'
|
|
import { mount, flushPromises } from '@vue/test-utils'
|
|
import actions from '@/store/actions'
|
|
import mutations from '@/store/mutations'
|
|
import { createStore } from 'vuex'
|
|
import MainView from '@/views/MainView.vue'
|
|
import { routes } from '@/router'
|
|
import { createRouter, createWebHistory } from 'vue-router'
|
|
|
|
describe('MainView.vue', () => {
|
|
it('Saves inquiry without data', async () => {
|
|
const state = {
|
|
db: {},
|
|
tabs: [],
|
|
inquiries: []
|
|
}
|
|
const store = createStore({ state, actions, mutations })
|
|
const router = createRouter({
|
|
history: createWebHistory(),
|
|
routes: routes
|
|
})
|
|
|
|
router.push('/workspace')
|
|
await router.isReady()
|
|
const wrapper = mount(MainView, {
|
|
global: {
|
|
stubs: {
|
|
'router-link': true,
|
|
teleport: false,
|
|
'app-diagnostic-info': true,
|
|
transition: false,
|
|
schema: true,
|
|
'run-result': true
|
|
},
|
|
plugins: [store, router]
|
|
},
|
|
attachTo: document.body
|
|
})
|
|
|
|
await wrapper.find('#create-btn').trigger('click')
|
|
|
|
store.state.tabs[1].result = {
|
|
columns: ['id', 'name'],
|
|
values: {
|
|
id: [1, 2],
|
|
name: ['Harry', 'Drako']
|
|
}
|
|
}
|
|
|
|
await flushPromises()
|
|
|
|
// Add trace
|
|
await wrapper
|
|
.findAllComponents({ name: 'Chart' })[1]
|
|
.find('button.js-add-button')
|
|
.wrapperElement.click()
|
|
|
|
await flushPromises()
|
|
|
|
// Select data for axis x
|
|
await wrapper
|
|
.findAll('.field .dropdown-container .Select__indicator')[0]
|
|
.wrapperElement.dispatchEvent(
|
|
new MouseEvent('mousedown', { bubbles: true })
|
|
)
|
|
await wrapper.findAll('.Select__menu .Select__option')[0].trigger('click')
|
|
|
|
// Select data for axis y
|
|
await wrapper
|
|
.findAll('.field .dropdown-container .Select__indicator')[2]
|
|
.wrapperElement.dispatchEvent(
|
|
new MouseEvent('mousedown', { bubbles: true })
|
|
)
|
|
await wrapper.findAll('.Select__menu .Select__option')[1].trigger('click')
|
|
|
|
// Click Save in the top menu
|
|
await wrapper.find('#save-btn').trigger('click')
|
|
|
|
// Input inquiry name
|
|
document.querySelector('.dialog input').value = 'test'
|
|
document.querySelector('.dialog input').dispatchEvent(
|
|
new InputEvent('input', {
|
|
data: 'test'
|
|
})
|
|
)
|
|
|
|
// Click Save in the dialog
|
|
document
|
|
.querySelector('.dialog .dialog-buttons-container button.primary')
|
|
.click()
|
|
|
|
const inquiriesInStore = store.state.inquiries
|
|
expect(inquiriesInStore.length).to.equal(1)
|
|
expect(inquiriesInStore[0].createdAt).to.not.be.null
|
|
expect(inquiriesInStore[0].createdAt).to.not.be.undefined
|
|
expect(inquiriesInStore[0].updateAt).to.not.be.null
|
|
expect(inquiriesInStore[0].updatedAt).to.not.be.undefined
|
|
|
|
expect(inquiriesInStore[0].id).to.not.be.null
|
|
expect(inquiriesInStore[0].id).to.not.be.undefined
|
|
|
|
expect(inquiriesInStore[0].name).to.equal('test')
|
|
expect(inquiriesInStore[0].viewType).to.equal('chart')
|
|
expect(inquiriesInStore[0].viewOptions.data).to.eql([
|
|
{
|
|
type: 'scatter',
|
|
mode: 'markers',
|
|
x: null,
|
|
xsrc: 'id',
|
|
meta: {
|
|
columnNames: {
|
|
x: 'id',
|
|
y: 'name'
|
|
}
|
|
},
|
|
y: null,
|
|
ysrc: 'name'
|
|
}
|
|
])
|
|
wrapper.unmount()
|
|
})
|
|
})
|