From 6141fd032f822e6ae2597433a21b22f02481fb36 Mon Sep 17 00:00:00 2001 From: richie Date: Wed, 29 Jan 2025 13:49:06 +0530 Subject: [PATCH] enhance alignment - ProductsQueryBuilder tests --- .../query-builder/ProductsQueryBuilder.test.tsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/datasources/products/components/query-builder/ProductsQueryBuilder.test.tsx b/src/datasources/products/components/query-builder/ProductsQueryBuilder.test.tsx index 92a8db60..19869c35 100644 --- a/src/datasources/products/components/query-builder/ProductsQueryBuilder.test.tsx +++ b/src/datasources/products/components/query-builder/ProductsQueryBuilder.test.tsx @@ -6,9 +6,11 @@ import { render } from "@testing-library/react"; describe('ProductsQueryBuilder', () => { describe('useEffects', () => { let reactNode: ReactNode + const containerClass = 'smart-filter-group-condition-container'; const workspace = { id: '1', name: 'Selected workspace' } as Workspace; const partNumber = ['partNumber1', 'partNumber2']; + function renderElement(workspaces: Workspace[], partNumbers: string[], filter?: string, globalVariableOptions: QueryBuilderOption[] = []) { reactNode = React.createElement(ProductsQueryBuilder, { filter, workspaces, partNumbers, globalVariableOptions, onChange: jest.fn(), }); const renderResult = render(reactNode); @@ -20,17 +22,22 @@ describe('ProductsQueryBuilder', () => { it('should render empty query builder', () => { const { renderResult, conditionsContainer } = renderElement([], [], ''); + expect(conditionsContainer.length).toBe(1); expect(renderResult.findByLabelText('Empty condition row')).toBeTruthy(); }) + it('should select workspace in query builder', () => { const { conditionsContainer } = renderElement([workspace], partNumber, 'Workspace = "1" && PartNumber = "partNumber1"'); + expect(conditionsContainer?.length).toBe(2); expect(conditionsContainer.item(0)?.textContent).toContain(workspace.name); expect(conditionsContainer.item(1)?.textContent).toContain("partNumber1"); }) + it('should select part number in query builder', () => { const { conditionsContainer } = renderElement([workspace], partNumber, 'PartNumber = "partNumber1"'); + expect(conditionsContainer?.length).toBe(1); expect(conditionsContainer.item(0)?.textContent).toContain("partNumber1"); }); @@ -38,18 +45,23 @@ describe('ProductsQueryBuilder', () => { it('should select global variable option', () => { const globalVariableOption = { label: 'Global variable', value: 'global_variable' }; const { conditionsContainer } = renderElement([workspace], partNumber, 'PartNumber = \"global_variable\"', [globalVariableOption]); + expect(conditionsContainer?.length).toBe(1); expect(conditionsContainer.item(0)?.textContent).toContain(globalVariableOption.label); }); + [['${__from:date}', 'From'], ['${__to:date}', 'To'], ['${__now:date}', 'Now']].forEach(([value, label]) => { it(`should select user friendly value for updated date`, () => { const { conditionsContainer } = renderElement([workspace], partNumber, `UpdatedAt > \"${value}\"`); + expect(conditionsContainer?.length).toBe(1); expect(conditionsContainer.item(0)?.textContent).toContain(label); }); }); + it('should sanitize fields in query builder', () => { const { conditionsContainer } = renderElement([workspace], partNumber, 'Family = ""'); + expect(conditionsContainer?.length).toBe(1); expect(conditionsContainer.item(0)?.innerHTML).not.toContain('alert(\'Family\')'); })