quasar
Version:
Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time
105 lines (81 loc) • 3.22 kB
JavaScript
import { describe, test, expect, afterEach } from 'vitest'
import {
createGlobalNode,
removeGlobalNode,
changeGlobalNodesTarget
} from './nodes.js'
import { globalConfig } from './instance-config.js'
let el = null
afterEach(() => {
delete globalConfig.globalNodes
if (el !== null) {
removeGlobalNode(el)
el = null
}
})
describe('[nodes API]', () => {
describe('[Functions]', () => {
describe('[(function)createGlobalNode]', () => {
test('createGlobalNode(id)', () => {
const element = createGlobalNode('first')
expect(element).toBeInstanceOf(Element)
expect(element.getAttribute('id')).toBe('first')
expect(element.getAttribute('class')).toBeNull()
expect(element.parentNode).toBe(document.body)
})
test('createGlobalNode(id) + globalNodes.class', () => {
globalConfig.globalNodes = { class: 'some-class' }
const element = createGlobalNode('some-id')
expect(element).toBeInstanceOf(Element)
expect(element.getAttribute('id')).toBe('some-id')
expect(element.getAttribute('class')).toBe('some-class')
expect(element.parentNode).toBe(document.body)
})
test('createGlobalNode(id, portalType)', () => {
const element = createGlobalNode('port1', 'portType')
expect(element).toBeInstanceOf(Element)
expect(element.getAttribute('id')).toMatch(/^q-portal--portType--\d+$/)
expect(element.getAttribute('class')).toBeNull()
expect(element.parentNode).toBe(document.body)
})
test('createGlobalNode(id, portalType) + globalNodes.class', () => {
globalConfig.globalNodes = { class: 'port-class' }
const element = createGlobalNode('port1', 'portType')
expect(element).toBeInstanceOf(Element)
expect(element.getAttribute('id')).toMatch(/^q-portal--portType--\d+$/)
expect(element.getAttribute('class')).toBe('port-class')
expect(element.parentNode).toBe(document.body)
})
})
describe('[(function)removeGlobalNode]', () => {
test('has correct return value', () => {
const element = createGlobalNode('rem')
expect(removeGlobalNode(element)).toBeUndefined()
expect(element.parentNode).toBeNull()
})
test('does not error out when removing non-existing el', () => {
const localEl = document.createElement('div')
expect(removeGlobalNode(localEl)).toBeUndefined()
})
})
describe('[(function)changeGlobalNodesTarget]', () => {
test('has correct return value', () => {
const elList = [
createGlobalNode('node1'),
createGlobalNode('node2'),
createGlobalNode('node3', 'ptype')
]
elList.forEach(node => {
expect(node.parentElement === document.body).toBe(true)
})
const newTargetEl = document.createElement('div')
newTargetEl.setAttribute('id', 'new-target')
document.body.appendChild(newTargetEl)
expect(changeGlobalNodesTarget(newTargetEl)).toBeUndefined()
elList.forEach(node => {
expect(node.parentElement).toBe(newTargetEl)
})
})
})
})
})