diff --git a/resources/js/Components/MismatchesTable.vue b/resources/js/Components/MismatchesTable.vue index e3267b9f..71092424 100644 --- a/resources/js/Components/MismatchesTable.vue +++ b/resources/js/Components/MismatchesTable.vue @@ -1,5 +1,5 @@ + + \ No newline at end of file diff --git a/resources/js/types/Breakpoint.ts b/resources/js/types/Breakpoint.ts new file mode 100644 index 00000000..bb015cfc --- /dev/null +++ b/resources/js/types/Breakpoint.ts @@ -0,0 +1,14 @@ +enum Breakpoint { + Mobile = 'mobile', + Tablet = 'tablet', + Desktop = 'desktop' +} + +function validateBreakpoint( breakpoint: string ): boolean { + return Object.values( Breakpoint ).includes( breakpoint as Breakpoint ); +} + +export { + Breakpoint, + validateBreakpoint, +}; \ No newline at end of file diff --git a/tests/Vue/Components/TableComponent.spec.js b/tests/Vue/Components/TableComponent.spec.js new file mode 100644 index 00000000..27395ac0 --- /dev/null +++ b/tests/Vue/Components/TableComponent.spec.js @@ -0,0 +1,24 @@ +import { mount } from '@vue/test-utils'; +import TableComponent from '@/Components/TableComponent.vue'; +import {Breakpoint} from '@/types/Breakpoint.ts'; + +describe('TableComponent.vue', () => { + it('accepts a linearize property', () => { + const wrapper = mount(TableComponent, { + propsData: { + linearize: Breakpoint.Desktop + } + }); + + expect( wrapper.props().linearize ).toBe( Breakpoint.Desktop ); + expect( wrapper.find( 'table' ).classes() ).toContain( 'table-component--linear-desktop' ); + }); + + it('ignores invalid breakpoint values', () => { + const wrapper = mount(TableComponent, { + propsData: { linearize: 'nonsense' } + }); + + expect(wrapper.find('table').classes()).toContain('table-component--linear-tablet'); + }); +}) \ No newline at end of file