diff --git a/semcore/base-components/__tests__/Grid.test.jsx b/semcore/base-components/__tests__/Grid.test.jsx index 01e3771f6f..fafaca4ae1 100644 --- a/semcore/base-components/__tests__/Grid.test.jsx +++ b/semcore/base-components/__tests__/Grid.test.jsx @@ -1,17 +1,22 @@ -import * as sharedTests from '@semcore/testing-utils/shared-tests'; +import { runComponentContractTests } from '@semcore/testing-utils/shared-tests'; import { cleanup } from '@semcore/testing-utils/testing-library'; import { describe, beforeEach } from '@semcore/testing-utils/vitest'; -import React from 'react'; import { Col, Row } from '../src'; -const { shouldSupportClassName, shouldSupportRef } = sharedTests; - describe('Grid', () => { beforeEach(cleanup); - shouldSupportClassName(Row); - shouldSupportRef(Row); - shouldSupportClassName(Col, Row); - shouldSupportRef(Col, Row); + runComponentContractTests({ + Component: Row, + expectedDataUiName: 'Row', + preset: 'root', + }); + + runComponentContractTests({ + Component: Col, + Wrapper: Row, + expectedDataUiName: 'Row.Col', + preset: 'root', + }); }); diff --git a/semcore/base-components/__tests__/flex-box.test.jsx b/semcore/base-components/__tests__/flex-box.test.jsx index 30f9b76007..07ce544cfe 100644 --- a/semcore/base-components/__tests__/flex-box.test.jsx +++ b/semcore/base-components/__tests__/flex-box.test.jsx @@ -1,17 +1,22 @@ -import * as sharedTests from '@semcore/testing-utils/shared-tests'; +import { runComponentContractTests } from '@semcore/testing-utils/shared-tests'; import { cleanup, render } from '@semcore/testing-utils/testing-library'; import { expect, test, describe, beforeEach } from '@semcore/testing-utils/vitest'; import React from 'react'; import { Box, Flex } from '../src'; -const { shouldSupportClassName, shouldSupportRef } = sharedTests; +const SpanTag = function SpanTag(props) { + return ; +}; describe('Flex', () => { beforeEach(cleanup); - shouldSupportClassName(Flex); - shouldSupportRef(Flex); + runComponentContractTests({ + Component: Flex, + expectedDataUiName: 'Flex', + preset: 'root', + }); test.concurrent('Verify supports css property', async () => { const MAP_CSS = { @@ -80,28 +85,15 @@ describe('Flex', () => { describe('Box', () => { beforeEach(cleanup); - shouldSupportClassName(Box); - shouldSupportRef(Box); - - test('Verify \'tag\' prop', () => { - const { getByTestId } = render( - - tag - , - ); - expect(getByTestId('box').tagName).toBe('SPAN'); - }); - - test('Verify \'tag\' prop component', () => { - const Span = function (props) { - return ; - }; - const { getByTestId } = render( - - tag - , - ); - expect(getByTestId('box').tagName).toBe('SPAN'); + runComponentContractTests({ + Component: Box, + expectedDataUiName: 'Box', + preset: 'root', + include: ['tag'], + tagCases: [ + { tag: 'button', expectedTagName: 'BUTTON' }, + { tag: SpanTag, name: 'SpanTag', expectedTagName: 'SPAN' }, + ], }); test('Verify clear non html props', () => { diff --git a/semcore/base-components/__tests__/scroll-area.test.tsx b/semcore/base-components/__tests__/scroll-area.test.tsx index a828080131..43d0ede511 100644 --- a/semcore/base-components/__tests__/scroll-area.test.tsx +++ b/semcore/base-components/__tests__/scroll-area.test.tsx @@ -1,12 +1,10 @@ -import * as sharedTests from '@semcore/testing-utils/shared-tests'; +import { runComponentContractTests } from '@semcore/testing-utils/shared-tests'; import { cleanup, render, fireEvent, waitFor } from '@semcore/testing-utils/testing-library'; import { expect, test, describe, beforeEach, vi } from '@semcore/testing-utils/vitest'; import React from 'react'; import { ScrollArea, eventCalculate } from '../src'; -const { shouldSupportClassName, shouldSupportRef } = sharedTests; - describe('ScrollArea', () => { beforeEach(cleanup); @@ -25,8 +23,11 @@ describe('ScrollArea', () => { ).toBe(1); }); - shouldSupportClassName(ScrollArea); - shouldSupportRef(ScrollArea); + runComponentContractTests({ + Component: ScrollArea, + expectedDataUiName: 'ScrollArea', + preset: 'root', + }); test.concurrent('Verify trigger calculate event on container', () => { const { getByTestId } = render( @@ -84,6 +85,10 @@ describe('ScrollArea', () => { describe('ScrollArea.Container', () => { beforeEach(cleanup); - shouldSupportClassName(ScrollArea.Container, ScrollArea); - shouldSupportRef(ScrollArea.Container, ScrollArea); + runComponentContractTests({ + Component: ScrollArea.Container, + Wrapper: ScrollArea, + expectedDataUiName: 'ScrollArea.Container', + preset: 'root', + }); }); diff --git a/semcore/base-trigger/__tests__/index.test.tsx b/semcore/base-trigger/__tests__/index.test.tsx index a2dc1caa50..03b0283bf9 100644 --- a/semcore/base-trigger/__tests__/index.test.tsx +++ b/semcore/base-trigger/__tests__/index.test.tsx @@ -1,5 +1,4 @@ -import * as sharedTests from '@semcore/testing-utils/shared-tests'; -import { runDependencyCheckTests } from '@semcore/testing-utils/shared-tests'; +import { runComponentContractTests, runDependencyCheckTests } from '@semcore/testing-utils/shared-tests'; import { cleanup, render, userEvent } from '@semcore/testing-utils/testing-library'; import { expect, test, describe, beforeEach } from '@semcore/testing-utils/vitest'; import React from 'react'; @@ -10,20 +9,24 @@ describe('BaseTrigger Dependency imports', () => { runDependencyCheckTests('base-trigger'); }); -const { shouldSupportClassName, shouldSupportRef } = sharedTests; - describe('BaseTrigger', () => { beforeEach(cleanup); - shouldSupportClassName(BaseTrigger); - shouldSupportRef(BaseTrigger); + runComponentContractTests({ + Component: BaseTrigger, + expectedDataUiName: 'BaseTrigger', + preset: 'root', + }); }); describe('ButtonTrigger', () => { beforeEach(cleanup); - shouldSupportClassName(ButtonTrigger); - shouldSupportRef(ButtonTrigger); + runComponentContractTests({ + Component: ButtonTrigger, + expectedDataUiName: 'ButtonTrigger', + preset: 'root', + }); test.concurrent('Should work as button with labels', async () => { const component = ( @@ -46,13 +49,20 @@ describe('ButtonTrigger', () => { describe('FilterTrigger', () => { beforeEach(cleanup); - shouldSupportClassName(FilterTrigger); - shouldSupportRef(FilterTrigger); + runComponentContractTests({ + Component: FilterTrigger, + expectedDataUiName: 'FilterTrigger', + preset: 'root', + }); }); describe('LinkTrigger', () => { beforeEach(cleanup); - shouldSupportClassName(LinkTrigger); - shouldSupportRef(LinkTrigger); + runComponentContractTests({ + Component: LinkTrigger, + props: { children: 'Link trigger' }, + expectedDataUiName: 'LinkTrigger', + preset: 'root', + }); }); diff --git a/semcore/button/__tests__/index.test.tsx b/semcore/button/__tests__/index.test.tsx index 6df32c40f8..c18a9cdebd 100644 --- a/semcore/button/__tests__/index.test.tsx +++ b/semcore/button/__tests__/index.test.tsx @@ -1,15 +1,51 @@ -import { runDependencyCheckTests } from '@semcore/testing-utils/shared-tests'; -import { render } from '@semcore/testing-utils/testing-library'; -import { expect, test, describe } from '@semcore/testing-utils/vitest'; +import Link from '@semcore/link'; +import { runComponentContractTests, runDependencyCheckTests } from '@semcore/testing-utils/shared-tests'; +import { cleanup, render } from '@semcore/testing-utils/testing-library'; +import { beforeEach, expect, test, describe } from '@semcore/testing-utils/vitest'; import React from 'react'; -import Button from '../src'; +import Button, { ButtonLink } from '../src'; describe('Button Dependency imports', () => { runDependencyCheckTests('button'); }); describe('Button', () => { + beforeEach(cleanup); + + runComponentContractTests({ + Component: Button, + props: { children: 'Button' }, + expectedDataUiName: 'Button', + preset: ['root', 'interactive'], + include: ['tag'], + tagCases: [ + { tag: 'a', expectedTagName: 'A', props: { href: '#' } }, + { tag: Link, name: 'Link', expectedTagName: 'A', props: { href: '#' } }, + ], + }); + + runComponentContractTests({ + Component: Button.Text, + props: { children: 'Button text' }, + expectedDataUiName: 'Button.Text', + preset: 'root', + }); + + runComponentContractTests({ + Component: Button.Addon, + props: { children: Addon }, + expectedDataUiName: 'Button.Addon', + preset: 'root', + }); + + runComponentContractTests({ + Component: ButtonLink, + props: { children: 'ButtonLink' }, + expectedDataUiName: 'ButtonLink', + preset: 'root', + }); + test('Verify loading attributes', () => { const { queryByTestId } = render(