UNPKG

quasar

Version:

Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time

232 lines (183 loc) 5.64 kB
import { mount, flushPromises } from '@vue/test-utils' import { describe, test, expect } from 'vitest' import QBadge from './QBadge.js' describe('[QBadge API]', () => { describe('[Props]', () => { describe('[(prop)color]', () => { test('type String has effect', async () => { const propVal = 'red' const wrapper = mount(QBadge) const target = wrapper.get('.q-badge') expect( target.classes() ).not.toContain(`bg-${ propVal }`) expect( target.classes() ).not.toContain(`text-${ propVal }`) await wrapper.setProps({ color: propVal }) await flushPromises() expect( target.classes() ).toContain(`bg-${ propVal }`) expect( target.classes() ).not.toContain(`text-${ propVal }`) }) }) describe('[(prop)text-color]', () => { test('type String has effect', async () => { const propVal = 'red' const wrapper = mount(QBadge) const target = wrapper.get('.q-badge') expect( target.classes() ).not.toContain(`bg-${ propVal }`) expect( target.classes() ).not.toContain(`text-${ propVal }`) await wrapper.setProps({ textColor: propVal }) await flushPromises() expect( target.classes() ).toContain(`text-${ propVal }`) expect( target.classes() ).not.toContain(`bg-${ propVal }`) }) }) describe('[(prop)floating]', () => { test('type Boolean has effect', async () => { const wrapper = mount(QBadge) const target = wrapper.get('.q-badge') expect( target.classes() ).not.toContain('q-badge--floating') await wrapper.setProps({ floating: true }) await flushPromises() expect( wrapper.classes() ).toContain('q-badge--floating') expect( wrapper.get('.q-badge') .$computedStyle('position') ).toBe('absolute') }) }) describe('[(prop)transparent]', () => { test('type Boolean has effect', async () => { const wrapper = mount(QBadge) const target = wrapper.get('.q-badge') expect( target.classes() ).not.toContain('q-badge--transparent') await wrapper.setProps({ transparent: true }) await flushPromises() expect( target.classes() ).toContain('q-badge--transparent') expect( target.$computedStyle('opacity') ).not.toBe('1') }) }) describe('[(prop)multi-line]', () => { test('type Boolean has effect', async () => { const wrapper = mount(QBadge) const target = wrapper.get('.q-badge') expect( target.classes() ).not.toContain('q-badge--multi-line') await wrapper.setProps({ multiLine: true }) await flushPromises() expect( target.classes() ).toContain('q-badge--multi-line') expect( target.$computedStyle('word-break') ).toBe('break-all') }) }) describe('[(prop)label]', () => { test.each([ [ 'String', 'John Doe' ], [ 'Number', 22 ] ])('type %s has effect', async (_, propVal) => { const wrapper = mount(QBadge) const target = wrapper.get('.q-badge') expect( target.text() ).not.toContain(propVal) await wrapper.setProps({ label: propVal }) await flushPromises() expect( target.text() ).toContain(propVal) }) }) describe('[(prop)align]', () => { test.each([ [ 'top' ], [ 'middle' ], [ 'bottom' ] ])('value "%s" has effect', async propVal => { const wrapper = mount(QBadge) const target = wrapper.get('.q-badge') expect( target.$style('vertical-align') ).not.toBe(propVal) await wrapper.setProps({ align: propVal }) await flushPromises() expect( target.$style('vertical-align') ).toBe(propVal) }) }) describe('[(prop)outline]', () => { test('type Boolean has effect', async () => { const wrapper = mount(QBadge) const target = wrapper.get('.q-badge') expect( target.classes() ).not.toContain('q-badge--outline') await wrapper.setProps({ outline: true }) await flushPromises() expect( target.classes() ).toContain('q-badge--outline') expect( target.$computedStyle('border') ).toContain('1px solid') }) }) describe('[(prop)rounded]', () => { test('type Boolean has effect', async () => { const wrapper = mount(QBadge) const target = wrapper.get('.q-badge') expect( target.classes() ).not.toContain('q-badge--rounded') await wrapper.setProps({ rounded: true }) await flushPromises() expect( target.classes() ).toContain('q-badge--rounded') expect( target.$computedStyle('border-radius') ).toBe('1em') }) }) }) describe('[Slots]', () => { describe('[(slot)default]', () => { test('renders the content', () => { const slotContent = 'some-slot-content' const wrapper = mount(QBadge, { slots: { default: () => slotContent } }) expect(wrapper.html()).toContain(slotContent) }) }) }) })