mirror of
https://github.com/ansible/awx.git
synced 2026-03-21 02:47:35 -02:30
Modify JobTemplateForm to use formik setValue
Modify JobTemplateForm to use formik `setValue`. Following the same convention used in the `.WorkflowJobTemplateForm`. Also, replace the usage of `useFormikContext` to `useField`.
This commit is contained in:
@@ -2,7 +2,7 @@ import React, { useState, useEffect, useCallback } from 'react';
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { withI18n } from '@lingui/react';
|
import { withI18n } from '@lingui/react';
|
||||||
import { t } from '@lingui/macro';
|
import { t } from '@lingui/macro';
|
||||||
import { withFormik, useField, useFormikContext } from 'formik';
|
import { withFormik, useField } from 'formik';
|
||||||
import {
|
import {
|
||||||
Form,
|
Form,
|
||||||
FormGroup,
|
FormGroup,
|
||||||
@@ -52,8 +52,6 @@ function JobTemplateForm({
|
|||||||
submitError,
|
submitError,
|
||||||
i18n,
|
i18n,
|
||||||
}) {
|
}) {
|
||||||
const { values: formikValues } = useFormikContext();
|
|
||||||
|
|
||||||
const [contentError, setContentError] = useState(false);
|
const [contentError, setContentError] = useState(false);
|
||||||
const [inventory, setInventory] = useState(
|
const [inventory, setInventory] = useState(
|
||||||
template?.summary_fields?.inventory
|
template?.summary_fields?.inventory
|
||||||
@@ -65,6 +63,7 @@ function JobTemplateForm({
|
|||||||
Boolean(template.webhook_service)
|
Boolean(template.webhook_service)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const [askInventoryOnLaunchField] = useField('ask_inventory_on_launch');
|
||||||
const [jobTypeField, jobTypeMeta, jobTypeHelpers] = useField({
|
const [jobTypeField, jobTypeMeta, jobTypeHelpers] = useField({
|
||||||
name: 'job_type',
|
name: 'job_type',
|
||||||
validate: required(null, i18n),
|
validate: required(null, i18n),
|
||||||
@@ -81,7 +80,7 @@ function JobTemplateForm({
|
|||||||
});
|
});
|
||||||
const [credentialField, , credentialHelpers] = useField('credentials');
|
const [credentialField, , credentialHelpers] = useField('credentials');
|
||||||
const [labelsField, , labelsHelpers] = useField('labels');
|
const [labelsField, , labelsHelpers] = useField('labels');
|
||||||
const [limitField, limitMeta] = useField('limit');
|
const [limitField, limitMeta, limitHelpers] = useField('limit');
|
||||||
const [verbosityField] = useField('verbosity');
|
const [verbosityField] = useField('verbosity');
|
||||||
const [diffModeField, , diffModeHelpers] = useField('diff_mode');
|
const [diffModeField, , diffModeHelpers] = useField('diff_mode');
|
||||||
const [instanceGroupsField, , instanceGroupsHelpers] = useField(
|
const [instanceGroupsField, , instanceGroupsHelpers] = useField(
|
||||||
@@ -231,7 +230,7 @@ function JobTemplateForm({
|
|||||||
</FieldWithPrompt>
|
</FieldWithPrompt>
|
||||||
<FieldWithPrompt
|
<FieldWithPrompt
|
||||||
fieldId="template-inventory"
|
fieldId="template-inventory"
|
||||||
isRequired={!formikValues.ask_inventory_on_launch}
|
isRequired={!askInventoryOnLaunchField.value}
|
||||||
label={i18n._(t`Inventory`)}
|
label={i18n._(t`Inventory`)}
|
||||||
promptId="template-ask-inventory-on-launch"
|
promptId="template-ask-inventory-on-launch"
|
||||||
promptName="ask_inventory_on_launch"
|
promptName="ask_inventory_on_launch"
|
||||||
@@ -245,11 +244,11 @@ function JobTemplateForm({
|
|||||||
inventoryHelpers.setValue(value ? value.id : null);
|
inventoryHelpers.setValue(value ? value.id : null);
|
||||||
setInventory(value);
|
setInventory(value);
|
||||||
}}
|
}}
|
||||||
required={!formikValues.ask_inventory_on_launch}
|
required={!askInventoryOnLaunchField.value}
|
||||||
touched={inventoryMeta.touched}
|
touched={inventoryMeta.touched}
|
||||||
error={inventoryMeta.error}
|
error={inventoryMeta.error}
|
||||||
/>
|
/>
|
||||||
{(inventoryMeta.touched || formikValues.ask_inventory_on_launch) &&
|
{(inventoryMeta.touched || askInventoryOnLaunchField.value) &&
|
||||||
inventoryMeta.error && (
|
inventoryMeta.error && (
|
||||||
<div
|
<div
|
||||||
className="pf-c-form__helper-text pf-m-error"
|
className="pf-c-form__helper-text pf-m-error"
|
||||||
@@ -283,8 +282,8 @@ function JobTemplateForm({
|
|||||||
<TextInput
|
<TextInput
|
||||||
id="template-scm-branch"
|
id="template-scm-branch"
|
||||||
{...scmField}
|
{...scmField}
|
||||||
onChange={(value, event) => {
|
onChange={value => {
|
||||||
scmField.onChange(event);
|
scmHelpers.setValue(value);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</FieldWithPrompt>
|
</FieldWithPrompt>
|
||||||
@@ -383,8 +382,8 @@ function JobTemplateForm({
|
|||||||
id="template-limit"
|
id="template-limit"
|
||||||
{...limitField}
|
{...limitField}
|
||||||
isValid={!limitMeta.touched || !limitMeta.error}
|
isValid={!limitMeta.touched || !limitMeta.error}
|
||||||
onChange={(value, event) => {
|
onChange={value => {
|
||||||
limitField.onChange(event);
|
limitHelpers.setValue(value);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</FieldWithPrompt>
|
</FieldWithPrompt>
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ describe('<JobTemplateForm />', () => {
|
|||||||
playbook: 'Baz',
|
playbook: 'Baz',
|
||||||
type: 'job_template',
|
type: 'job_template',
|
||||||
scm_branch: 'Foo',
|
scm_branch: 'Foo',
|
||||||
|
limit: '5000',
|
||||||
summary_fields: {
|
summary_fields: {
|
||||||
inventory: {
|
inventory: {
|
||||||
id: 2,
|
id: 2,
|
||||||
@@ -184,9 +185,10 @@ describe('<JobTemplateForm />', () => {
|
|||||||
|
|
||||||
wrapper.update();
|
wrapper.update();
|
||||||
await act(async () => {
|
await act(async () => {
|
||||||
wrapper.find('input#template-scm-branch').simulate('change', {
|
wrapper.find('TextInputBase#template-scm-branch').prop('onChange')(
|
||||||
target: { value: 'devel', name: 'scm_branch' },
|
'devel'
|
||||||
});
|
);
|
||||||
|
wrapper.find('TextInputBase#template-limit').prop('onChange')(1234567890);
|
||||||
wrapper.find('AnsibleSelect[name="playbook"]').simulate('change', {
|
wrapper.find('AnsibleSelect[name="playbook"]').simulate('change', {
|
||||||
target: { value: 'new baz type', name: 'playbook' },
|
target: { value: 'new baz type', name: 'playbook' },
|
||||||
});
|
});
|
||||||
@@ -221,6 +223,9 @@ describe('<JobTemplateForm />', () => {
|
|||||||
expect(wrapper.find('input#template-scm-branch').prop('value')).toEqual(
|
expect(wrapper.find('input#template-scm-branch').prop('value')).toEqual(
|
||||||
'devel'
|
'devel'
|
||||||
);
|
);
|
||||||
|
expect(wrapper.find('input#template-limit').prop('value')).toEqual(
|
||||||
|
1234567890
|
||||||
|
);
|
||||||
expect(
|
expect(
|
||||||
wrapper.find('AnsibleSelect[name="playbook"]').prop('value')
|
wrapper.find('AnsibleSelect[name="playbook"]').prop('value')
|
||||||
).toEqual('new baz type');
|
).toEqual('new baz type');
|
||||||
|
|||||||
Reference in New Issue
Block a user