48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import { mount } from '@cypress/vue'
|
|
import VueFlow from '../../../src/container/VueFlow/VueFlow.vue'
|
|
import { Elements } from '~/types'
|
|
import { isEdge, isNode } from '~/utils'
|
|
|
|
describe('Render VueFlow', () => {
|
|
const elements: Elements = [
|
|
{ id: '1', type: 'input', data: { label: 'Node 1' }, position: { x: 250, y: 5 } },
|
|
{ id: '2', data: { label: 'Node 2' }, position: { x: 100, y: 100 } },
|
|
{ id: 'e1-2', source: '1', target: '2', animated: true },
|
|
]
|
|
|
|
beforeEach(() => {
|
|
mount(VueFlow, {
|
|
props: {
|
|
modelValue: elements,
|
|
},
|
|
attrs: {
|
|
key: 'flowy',
|
|
style: {
|
|
height: '100vh',
|
|
width: '100vw',
|
|
},
|
|
},
|
|
})
|
|
})
|
|
|
|
it('renders a Vue Flow container', () => {
|
|
cy.get('.vue-flow').should('exist')
|
|
})
|
|
|
|
it('renders nodes', () => {
|
|
cy.get('.vue-flow__node').should('have.length', elements.filter(isNode).length)
|
|
})
|
|
|
|
it('renders edges', () => cy.get('.vue-flow__edge').should('have.length', elements.filter(isEdge).length))
|
|
|
|
it('renders correct node labels', () =>
|
|
cy.get('.vue-flow__node').each((node) => expect(elements.some((el) => el.data.label === node.text())).to.be.true))
|
|
|
|
it('renders nodes at correct position', () =>
|
|
cy.get('.vue-flow__node').each((node) => {
|
|
expect(
|
|
elements.filter(isNode).some((el) => el.position.x === node.position().left && el.position.y === node.position().top),
|
|
).to.be.true
|
|
}))
|
|
})
|