diff --git a/awx/ui_next/src/screens/Project/shared/ProjectForm.test.jsx b/awx/ui_next/src/screens/Project/shared/ProjectForm.test.jsx
index a7680921f2..e2d82c6653 100644
--- a/awx/ui_next/src/screens/Project/shared/ProjectForm.test.jsx
+++ b/awx/ui_next/src/screens/Project/shared/ProjectForm.test.jsx
@@ -288,8 +288,6 @@ describe('', () => {
});
await waitForElement(wrapper, 'ContentLoading', el => el.length === 0);
- console.log(wrapper.debug());
-
const scmTypeSelect = wrapper.find(
'FormGroup[label="Source Control Credential Type"] FormSelect'
);
diff --git a/awx/ui_next/src/screens/Template/JobTemplateEdit/JobTemplateEdit.test.jsx b/awx/ui_next/src/screens/Template/JobTemplateEdit/JobTemplateEdit.test.jsx
index fef5d89920..8c296b0630 100644
--- a/awx/ui_next/src/screens/Template/JobTemplateEdit/JobTemplateEdit.test.jsx
+++ b/awx/ui_next/src/screens/Template/JobTemplateEdit/JobTemplateEdit.test.jsx
@@ -35,7 +35,7 @@ const mockJobTemplate = {
limit: '',
name: 'Foo',
playbook: 'Baz',
- project: { id: 3, summary_fields: { organization: { id: 1 } } },
+ project: 3,
scm_branch: '',
skip_tags: '',
summary_fields: {
diff --git a/awx/ui_next/src/screens/Template/WorkflowJobTemplate.jsx b/awx/ui_next/src/screens/Template/WorkflowJobTemplate.jsx
index f07f51db12..98de6a9432 100644
--- a/awx/ui_next/src/screens/Template/WorkflowJobTemplate.jsx
+++ b/awx/ui_next/src/screens/Template/WorkflowJobTemplate.jsx
@@ -32,7 +32,6 @@ class WorkflowJobTemplate extends Component {
contentError: null,
hasContentLoading: true,
template: null,
- webhook_key: null,
isNotifAdmin: false,
};
this.createSchedule = this.createSchedule.bind(this);
@@ -59,11 +58,9 @@ class WorkflowJobTemplate extends Component {
this.setState({ contentError: null });
try {
const { data } = await WorkflowJobTemplatesAPI.readDetail(id);
+ let webhookKey;
if (data?.related?.webhook_key) {
- const {
- data: { webhook_key },
- } = await WorkflowJobTemplatesAPI.readWebhookKey(id);
- this.setState({ webhook_key });
+ webhookKey = await WorkflowJobTemplatesAPI.readWebhookKey(id);
}
if (data?.summary_fields?.webhook_credential) {
const {
@@ -83,7 +80,7 @@ class WorkflowJobTemplate extends Component {
});
setBreadcrumb(data);
this.setState({
- template: data,
+ template: { ...data, webhook_key: webhookKey.data.webhook_key },
isNotifAdmin: notifAdminRes.data.results.length > 0,
});
} catch (err) {
@@ -114,7 +111,6 @@ class WorkflowJobTemplate extends Component {
contentError,
hasContentLoading,
template,
- webhook_key,
isNotifAdmin,
} = this.state;
@@ -211,10 +207,7 @@ class WorkflowJobTemplate extends Component {
key="wfjt-details"
path="/templates/workflow_job_template/:id/details"
>
-
+
)}
{template && (
@@ -239,10 +232,7 @@ class WorkflowJobTemplate extends Component {
key="wfjt-edit"
path="/templates/workflow_job_template/:id/edit"
>
-
+
)}
{template && (
diff --git a/awx/ui_next/src/screens/Template/WorkflowJobTemplateAdd/WorkflowJobTemplateAdd.jsx b/awx/ui_next/src/screens/Template/WorkflowJobTemplateAdd/WorkflowJobTemplateAdd.jsx
index f69349bb70..6bfa3d3707 100644
--- a/awx/ui_next/src/screens/Template/WorkflowJobTemplateAdd/WorkflowJobTemplateAdd.jsx
+++ b/awx/ui_next/src/screens/Template/WorkflowJobTemplateAdd/WorkflowJobTemplateAdd.jsx
@@ -17,18 +17,18 @@ function WorkflowJobTemplateAdd() {
inventory,
organization,
webhook_credential,
- webhookKey,
- ...remainingValues
+ webhook_key,
+ ...templatePayload
} = values;
- remainingValues.inventory = inventory?.id;
- remainingValues.organization = organization?.id;
- remainingValues.webhook_credential = webhook_credential?.id;
+ templatePayload.inventory = inventory?.id;
+ templatePayload.organization = organization?.id;
+ templatePayload.webhook_credential = webhook_credential?.id;
const organizationId =
- organization?.id || inventory?.summary_fields?.organization.id || null;
+ organization?.id || inventory?.summary_fields?.organization.id;
try {
const {
data: { id },
- } = await WorkflowJobTemplatesAPI.create(remainingValues);
+ } = await WorkflowJobTemplatesAPI.create(templatePayload);
await Promise.all(await submitLabels(id, labels, organizationId));
history.push(`/templates/workflow_job_template/${id}/details`);
} catch (err) {
diff --git a/awx/ui_next/src/screens/Template/WorkflowJobTemplateAdd/WorkflowJobTemplateAdd.test.jsx b/awx/ui_next/src/screens/Template/WorkflowJobTemplateAdd/WorkflowJobTemplateAdd.test.jsx
index c76b71a4f1..ab390f4fcd 100644
--- a/awx/ui_next/src/screens/Template/WorkflowJobTemplateAdd/WorkflowJobTemplateAdd.test.jsx
+++ b/awx/ui_next/src/screens/Template/WorkflowJobTemplateAdd/WorkflowJobTemplateAdd.test.jsx
@@ -85,8 +85,7 @@ describe('', () => {
act(() => {
wrapper
.find('SelectOption')
- .find('button')
- .at(2)
+ .find('button[aria-label="Label 3"]')
.prop('onClick')();
});
diff --git a/awx/ui_next/src/screens/Template/WorkflowJobTemplateDetail/WorkflowJobTemplateDetail.jsx b/awx/ui_next/src/screens/Template/WorkflowJobTemplateDetail/WorkflowJobTemplateDetail.jsx
index cb0b91ecd0..93aa40a212 100644
--- a/awx/ui_next/src/screens/Template/WorkflowJobTemplateDetail/WorkflowJobTemplateDetail.jsx
+++ b/awx/ui_next/src/screens/Template/WorkflowJobTemplateDetail/WorkflowJobTemplateDetail.jsx
@@ -25,7 +25,7 @@ import LaunchButton from '@components/LaunchButton';
import Sparkline from '@components/Sparkline';
import { toTitleCase } from '@util/strings';
-function WorkflowJobTemplateDetail({ template, i18n, webhook_key }) {
+function WorkflowJobTemplateDetail({ template, i18n }) {
const {
id,
ask_inventory_on_launch,
@@ -38,6 +38,7 @@ function WorkflowJobTemplateDetail({ template, i18n, webhook_key }) {
summary_fields,
related,
webhook_credential,
+ webhook_key,
} = template;
const urlOrigin = window.location.origin;
diff --git a/awx/ui_next/src/screens/Template/WorkflowJobTemplateDetail/WorkflowJobTemplateDetail.test.jsx b/awx/ui_next/src/screens/Template/WorkflowJobTemplateDetail/WorkflowJobTemplateDetail.test.jsx
index f693672d20..bfb850c83b 100644
--- a/awx/ui_next/src/screens/Template/WorkflowJobTemplateDetail/WorkflowJobTemplateDetail.test.jsx
+++ b/awx/ui_next/src/screens/Template/WorkflowJobTemplateDetail/WorkflowJobTemplateDetail.test.jsx
@@ -39,6 +39,7 @@ describe('', () => {
user_capabilities: { edit: true, delete: true },
},
webhook_service: 'Github',
+ webhook_key: 'Foo webhook key',
};
beforeEach(async () => {
@@ -52,7 +53,6 @@ describe('', () => {
component={() => (
{}}
/>
diff --git a/awx/ui_next/src/screens/Template/WorkflowJobTemplateEdit/WorkflowJobTemplateEdit.jsx b/awx/ui_next/src/screens/Template/WorkflowJobTemplateEdit/WorkflowJobTemplateEdit.jsx
index 0d0d94b7de..a860589020 100644
--- a/awx/ui_next/src/screens/Template/WorkflowJobTemplateEdit/WorkflowJobTemplateEdit.jsx
+++ b/awx/ui_next/src/screens/Template/WorkflowJobTemplateEdit/WorkflowJobTemplateEdit.jsx
@@ -6,7 +6,7 @@ import { getAddedAndRemoved } from '@util/lists';
import { WorkflowJobTemplatesAPI, OrganizationsAPI } from '@api';
import { WorkflowJobTemplateForm } from '../shared';
-function WorkflowJobTemplateEdit({ template, webhook_key }) {
+function WorkflowJobTemplateEdit({ template }) {
const history = useHistory();
const [formSubmitError, setFormSubmitError] = useState(null);
@@ -16,12 +16,12 @@ function WorkflowJobTemplateEdit({ template, webhook_key }) {
inventory,
organization,
webhook_credential,
- webhookKey,
- ...remainingValues
+ webhook_key,
+ ...templatePayload
} = values;
- remainingValues.inventory = inventory?.id;
- remainingValues.organization = organization?.id;
- remainingValues.webhook_credential = webhook_credential?.id || null;
+ templatePayload.inventory = inventory?.id;
+ templatePayload.organization = organization?.id;
+ templatePayload.webhook_credential = webhook_credential?.id || null;
const formOrgId =
organization?.id || inventory?.summary_fields?.organization.id || null;
@@ -29,7 +29,7 @@ function WorkflowJobTemplateEdit({ template, webhook_key }) {
await Promise.all(
await submitLabels(labels, formOrgId, template.organization)
);
- await WorkflowJobTemplatesAPI.update(template.id, remainingValues);
+ await WorkflowJobTemplatesAPI.update(template.id, templatePayload);
history.push(`/templates/workflow_job_template/${template.id}/details`);
} catch (err) {
setFormSubmitError(err);
@@ -73,7 +73,6 @@ function WorkflowJobTemplateEdit({ template, webhook_key }) {
handleSubmit={handleSubmit}
handleCancel={handleCancel}
template={template}
- webhookKey={webhook_key}
submitError={formSubmitError}
/>
diff --git a/awx/ui_next/src/screens/Template/WorkflowJobTemplateEdit/WorkflowJobTemplateEdit.test.jsx b/awx/ui_next/src/screens/Template/WorkflowJobTemplateEdit/WorkflowJobTemplateEdit.test.jsx
index 9acf279c1e..6b2c7be5aa 100644
--- a/awx/ui_next/src/screens/Template/WorkflowJobTemplateEdit/WorkflowJobTemplateEdit.test.jsx
+++ b/awx/ui_next/src/screens/Template/WorkflowJobTemplateEdit/WorkflowJobTemplateEdit.test.jsx
@@ -100,8 +100,7 @@ describe('', () => {
act(() => {
wrapper
.find('SelectOption')
- .find('button')
- .at(2)
+ .find('button[aria-label="Label 3"]')
.prop('onClick')();
});
@@ -110,8 +109,7 @@ describe('', () => {
act(() =>
wrapper
.find('SelectOption')
- .find('button')
- .at(0)
+ .find('button[aria-label="Label 1"]')
.prop('onClick')()
);
diff --git a/awx/ui_next/src/screens/Template/shared/JobTemplateForm.test.jsx b/awx/ui_next/src/screens/Template/shared/JobTemplateForm.test.jsx
index 47b9f6b436..383bef39f0 100644
--- a/awx/ui_next/src/screens/Template/shared/JobTemplateForm.test.jsx
+++ b/awx/ui_next/src/screens/Template/shared/JobTemplateForm.test.jsx
@@ -14,7 +14,7 @@ describe('', () => {
description: 'Bar',
job_type: 'run',
inventory: 2,
- project: { id: 3, summary_fields: { organization: { id: 1 } } },
+ project: 3,
playbook: 'Baz',
type: 'job_template',
scm_branch: 'Foo',
diff --git a/awx/ui_next/src/screens/Template/shared/LabelSelect.jsx b/awx/ui_next/src/screens/Template/shared/LabelSelect.jsx
index 72863cd5f5..a00e90073e 100644
--- a/awx/ui_next/src/screens/Template/shared/LabelSelect.jsx
+++ b/awx/ui_next/src/screens/Template/shared/LabelSelect.jsx
@@ -47,7 +47,7 @@ function LabelSelect({ value, placeholder, onChange, onError }) {
const renderOptions = opts => {
return opts.map(option => (
-
+
{option.name}
));
diff --git a/awx/ui_next/src/screens/Template/shared/WorkflowJobTemplateForm.jsx b/awx/ui_next/src/screens/Template/shared/WorkflowJobTemplateForm.jsx
index 673bce96cb..2ae30ffed3 100644
--- a/awx/ui_next/src/screens/Template/shared/WorkflowJobTemplateForm.jsx
+++ b/awx/ui_next/src/screens/Template/shared/WorkflowJobTemplateForm.jsx
@@ -1,6 +1,6 @@
import React, { useState, useEffect, useCallback } from 'react';
import { t } from '@lingui/macro';
-import { useRouteMatch, useParams, withRouter } from 'react-router-dom';
+import { useRouteMatch, useParams } from 'react-router-dom';
import PropTypes, { shape } from 'prop-types';
@@ -67,7 +67,7 @@ function WorkflowJobTemplateForm({
] = useField('webhook_service');
const [webhookKeyField, webhookKeyMeta, webhookKeyHelpers] = useField(
- 'webhookKey'
+ 'webhook_key'
);
const [hasWebhooks, setHasWebhooks] = useState(
@@ -339,7 +339,7 @@ function WorkflowJobTemplateForm({
fieldId="wfjt-webhook-key"
type="text"
id="wfjt-webhook-key"
- name="webhookKey"
+ name="webhook_key"
label={i18n._(t`Webhook Key`)}
>
{
@@ -430,4 +430,4 @@ const FormikApp = withFormik({
})(WorkflowJobTemplateForm);
export { WorkflowJobTemplateForm as _WorkflowJobTemplateForm };
-export default withI18n()(withRouter(FormikApp));
+export default withI18n()(FormikApp);
diff --git a/awx/ui_next/src/screens/Template/shared/WorkflowJobTemplateForm.test.jsx b/awx/ui_next/src/screens/Template/shared/WorkflowJobTemplateForm.test.jsx
index f123abe91b..02f721f8a6 100644
--- a/awx/ui_next/src/screens/Template/shared/WorkflowJobTemplateForm.test.jsx
+++ b/awx/ui_next/src/screens/Template/shared/WorkflowJobTemplateForm.test.jsx
@@ -40,6 +40,7 @@ describe('', () => {
related: {
webhook_receiver: '/api/v2/workflow_job_templates/57/gitlab/',
},
+ webhook_key: 'sdfghjklmnbvcdsew435678iokjhgfd',
};
beforeEach(async () => {
@@ -74,7 +75,6 @@ describe('', () => {
template={mockTemplate}
handleCancel={handleCancel}
handleSubmit={handleSubmit}
- webhookKey="sdfghjklmnbvcdsew435678iokjhgfd"
/>
)}
/>,
@@ -172,7 +172,7 @@ describe('', () => {
test('webhooks and enable concurrent jobs functions properly', async () => {
act(() => {
- wrapper.find('Checkbox[aria-label="Enable Webhooks"]').invoke('onChange')(
+ wrapper.find('Checkbox[aria-label="Enable Webhook"]').invoke('onChange')(
true,
{
currentTarget: { value: true, type: 'change', checked: true },
@@ -181,7 +181,7 @@ describe('', () => {
});
wrapper.update();
expect(
- wrapper.find('Checkbox[aria-label="Enable Webhooks"]').prop('isChecked')
+ wrapper.find('Checkbox[aria-label="Enable Webhook"]').prop('isChecked')
).toBe(true);
expect(
@@ -192,7 +192,7 @@ describe('', () => {
).toBe('sdfghjklmnbvcdsew435678iokjhgfd');
await act(() =>
wrapper
- .find('FormGroup[name="webhookKey"]')
+ .find('FormGroup[name="webhook_key"]')
.find('Button[variant="tertiary"]')
.prop('onClick')()
);