Skip to content

Commit

Permalink
fix: name and namespce duplication validation and adding modal valida…
Browse files Browse the repository at this point in the history
…tion error in status applications CS-3818 (#3886)

* fix: name and namespce duplication validation and adding modal validation error in status applications CS-3818

* fix:update defination accordingly
  • Loading branch information
SreenathSadupallyGoA authored Dec 23, 2024
1 parent a48034d commit f29fcc6
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -142,12 +142,18 @@ export const AddEditConfigDefinition: FunctionComponent<AddEditConfigDefinitionP
value={definition.namespace}
disabled={isEdit}
testId="form-namespace"
aria-label="nameSpace"
aria-label="namespace"
width="100%"
onChange={(key, value) => {
validators.remove('namespace');
const updatedDefinition = { ...definition, namespace: value };
setDefinition(updatedDefinition);
const updatedIdentifiers = Object.keys(configurations).map(
(key) => `${configurations[key]?.namespace}:${configurations[key]?.name}`
);
const currentIdentifier = `${updatedDefinition.namespace}:${updatedDefinition.name}`;
validators.remove('duplicated');
validators['duplicated'].check(currentIdentifier, updatedIdentifiers);
validators['namespace'].check(value);
setDefinition({ ...definition, namespace: value });
}}
onBlur={() => validators.checkAll({ namespace: definition.namespace })}
/>
Expand All @@ -162,13 +168,20 @@ export const AddEditConfigDefinition: FunctionComponent<AddEditConfigDefinitionP
aria-label="name"
width="100%"
onChange={(key, value) => {
validators.remove('name');
const updatedDefinition = { ...definition, name: value };
setDefinition(updatedDefinition);
const updatedIdentifiers = Object.keys(configurations).map(
(key) => `${configurations[key]?.namespace}:${configurations[key]?.name}`
);
const currentIdentifier = `${updatedDefinition.namespace}:${updatedDefinition.name}`;
validators.remove('duplicated');
validators['duplicated'].check(currentIdentifier, updatedIdentifiers);
validators['name'].check(value);
setDefinition({ ...definition, name: value });
}}
onBlur={() => validators.checkAll({ name: definition.name })}
/>
</GoAFormItem>

<GoAFormItem error={errors?.['description']} label="Description">
<GoATextArea
name="description"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import {
isNotEmptyCheck,
Validator,
wordMaxLengthCheck,
duplicateNameCheck,
} from '@lib/validation/checkInput';

import { RootState } from '@store/index';
Expand Down Expand Up @@ -99,6 +100,14 @@ export const ApplicationFormModal: FC<Props> = ({
isDuplicateAppKey()
)
.add('nameOnly', 'name', checkForBadChars, isDuplicateAppName())
.add(
'duplicated',
'name',
duplicateNameCheck(
applications.map((app) => app.name),
'Application'
)
)
.add('description', 'description', wordMaxLengthCheck(250, 'Description'))
.add(
'url',
Expand Down Expand Up @@ -167,7 +176,7 @@ export const ApplicationFormModal: FC<Props> = ({
</GoAButtonGroup>
}
>
<GoAFormItem error={errors?.['name']} label="Application name">
<GoAFormItem error={errors?.['duplicated'] || errors?.['name']} label="Application name">
<GoAInput
type="text"
name="name"
Expand All @@ -179,6 +188,8 @@ export const ApplicationFormModal: FC<Props> = ({
const appKey = toKebabName(value);
validators.remove('nameAppKey');
validators['nameAppKey'].check(appKey);
validators.remove('duplicated');
validators['duplicated'].check(value);
setApplication({
...application,
name: value,
Expand All @@ -187,6 +198,8 @@ export const ApplicationFormModal: FC<Props> = ({
} else {
validators.remove('nameOnly');
validators['nameOnly'].check(value);
validators.remove('duplicated');
validators['duplicated'].check(value);
setApplication({
...application,
name: value,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,12 +140,16 @@ export const AddEditValueDefinition = ({
value={definition.namespace}
disabled={isEdit}
testId="value-namespace"
aria-label="nameSpace"
aria-label="namespace"
width="100%"
onChange={(key, value) => {
validators.remove('namespace');
const updatedDefinition = { ...definition, namespace: value };
setDefinition(updatedDefinition);
const updatedIdentifiers = values.map((v: ValueDefinition) => `${v.namespace}:${v.name}`);
const currentIdentifier = `${updatedDefinition.namespace}:${updatedDefinition.name}`;
validators.remove('duplicated');
validators['duplicated'].check(currentIdentifier, updatedIdentifiers);
validators['namespace'].check(value);
setDefinition({ ...definition, namespace: value });
}}
onBlur={() => validators.checkAll({ namespace: definition.namespace })}
/>
Expand All @@ -160,9 +164,13 @@ export const AddEditValueDefinition = ({
aria-label="name"
width="100%"
onChange={(key, value) => {
validators.remove('name');
const updatedDefinition = { ...definition, name: value };
setDefinition(updatedDefinition);
const updatedIdentifiers = values.map((v: ValueDefinition) => `${v.namespace}:${v.name}`);
const currentIdentifier = `${updatedDefinition.namespace}:${updatedDefinition.name}`;
validators.remove('duplicated');
validators['duplicated'].check(currentIdentifier, updatedIdentifiers);
validators['name'].check(value);
setDefinition({ ...definition, name: value });
}}
onBlur={() => validators.checkAll({ name: definition.name })}
/>
Expand Down

0 comments on commit f29fcc6

Please sign in to comment.