Skip to content

Commit

Permalink
fix: display string pattern in array items (Redocly#2438)
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexVarchuk authored and ckoegel committed Nov 1, 2023
1 parent 8c65136 commit ce3d44f
Show file tree
Hide file tree
Showing 3 changed files with 110 additions and 2 deletions.
11 changes: 9 additions & 2 deletions src/components/Fields/ArrayItemDetails.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,22 @@ export function ArrayItemDetails({ schema }: { schema: SchemaModel }) {
const { hideSchemaPattern } = React.useContext(OptionsContext);
if (
!schema ||
(schema.type === 'string' && !schema.constraints.length) ||
((!schema?.pattern || hideSchemaPattern) &&
!schema.items &&
!schema.displayFormat &&
!schema.constraints.length) // return null for cases where all constraints are empty
!schema.constraints?.length) // return null for cases where all constraints are empty
) {
return null;
}

if (schema.type === 'string' && schema.pattern) {
return (
<Wrapper>
[<Pattern schema={schema} />]
</Wrapper>
);
}

return (
<Wrapper>
[ items
Expand Down
37 changes: 37 additions & 0 deletions src/components/__tests__/FieldDetails.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,41 @@ describe('FieldDetailsComponent', () => {

expect(wrapper.render()).toMatchSnapshot();
});

it('renders correctly when field items have string type and pattern', () => {
const mockFieldProps = {
showExamples: true,
field: {
schema: {
type: 'array',
displayType: 'Array of strings',
title: 'test title',
externalDocs: undefined,
constraints: [''],
items: {
type: 'string',
pattern: '^see regex[0-9]$',
constraints: [''],
externalDocs: undefined,
},
} as any as SchemaModel,
example: 'example',
name: 'name',
expanded: false,
required: false,
kind: '',
deprecated: false,
collapse: jest.fn(),
toggle: jest.fn(),
explode: false,
expand: jest.fn(),
description: 'test description',
in: undefined,
},
renderDiscriminatorSwitch: jest.fn(),
};
const wrapper = shallow(withTheme(<FieldDetails {...mockFieldProps} />));

expect(wrapper.render()).toMatchSnapshot();
});
});
64 changes: 64 additions & 0 deletions src/components/__tests__/__snapshots__/FieldDetails.test.tsx.snap
Original file line number Diff line number Diff line change
Expand Up @@ -137,3 +137,67 @@ exports[`FieldDetailsComponent renders correctly when default value is object in
</div>
</div>
`;

exports[`FieldDetailsComponent renders correctly when field items have string type and pattern 1`] = `
<div>
<div>
<span
class="sc-kpDqfm sc-dAlyuH cGRfjn gHomYR"
/>
<span
class="sc-kpDqfm sc-jlZhew cGRfjn dYtiIA"
>
Array of strings
</span>
<span
class="sc-kpDqfm sc-cwHptR cGRfjn gyVIPr"
>
(test title)
</span>
<span>
<span
class="sc-kpDqfm sc-gFqAkR cGRfjn fYEICH"
>
</span>
</span>
<span
class="sc-kpDqfm sc-dAlyuH sc-dxcDKg cGRfjn gHomYR gXntsr"
>
[
<span
class="sc-kpDqfm sc-eDPEul cGRfjn erJHow"
>
^see regex[0-9]$
</span>
]
</span>
</div>
<div>
<span
class="sc-kpDqfm cGRfjn"
>
Example:
</span>
<span
class="sc-kpDqfm sc-eldPxv cGRfjn ehWiAn"
>
"example"
</span>
</div>
<div>
<div
class="sc-lcIPJg sc-hknOHE gBHqkN jFBMaE"
>
<p>
test description
</p>
</div>
</div>
</div>
`;

0 comments on commit ce3d44f

Please sign in to comment.