diff --git a/awx/ui/src/screens/Setting/Subscription/SubscriptionEdit/SubscriptionModal.js b/awx/ui/src/screens/Setting/Subscription/SubscriptionEdit/SubscriptionModal.js
index 69ef9dc029..99a9c993af 100644
--- a/awx/ui/src/screens/Setting/Subscription/SubscriptionEdit/SubscriptionModal.js
+++ b/awx/ui/src/screens/Setting/Subscription/SubscriptionEdit/SubscriptionModal.js
@@ -47,6 +47,15 @@ function SubscriptionModal({
subscriptionCreds.username,
subscriptionCreds.password
);
+
+ // Ensure unique ids for each subscription
+ // because it is possible to have multiple
+ // subscriptions with the same pool_id
+ let repeatId = 1;
+ data.forEach((i) => {
+ i.id = repeatId++;
+ });
+
return data;
}, []), // eslint-disable-line react-hooks/exhaustive-deps
[]
@@ -64,17 +73,9 @@ function SubscriptionModal({
fetchSubscriptions();
}, [fetchSubscriptions]);
- const handleSelect = (item) => {
- if (selected.some((s) => s.pool_id === item.pool_id)) {
- setSelected(selected.filter((s) => s.pool_id !== item.pool_id));
- } else {
- setSelected(selected.concat(item));
- }
- };
-
useEffect(() => {
- if (selectedSubscription?.pool_id) {
- handleSelect({ pool_id: selectedSubscription.pool_id });
+ if (selectedSubscription?.id) {
+ setSelected([selectedSubscription]);
}
}, []); // eslint-disable-line react-hooks/exhaustive-deps
@@ -150,19 +151,18 @@ function SubscriptionModal({
{subscriptions.map((subscription) => (
| handleSelect(subscription),
+ onSelect: () => setSelected([subscription]),
isSelected: selected.some(
- (row) => row.pool_id === subscription.pool_id
+ (row) => row.id === subscription.id
),
variant: 'radio',
- rowIndex: `row-${subscription.pool_id}`,
+ rowIndex: `row-${subscription.id}`,
}}
/>
| {subscription.subscription_name} |
diff --git a/awx/ui/src/screens/Setting/Subscription/SubscriptionEdit/SubscriptionModal.test.js b/awx/ui/src/screens/Setting/Subscription/SubscriptionEdit/SubscriptionModal.test.js
index 6667a776ff..4c8fa843f2 100644
--- a/awx/ui/src/screens/Setting/Subscription/SubscriptionEdit/SubscriptionModal.test.js
+++ b/awx/ui/src/screens/Setting/Subscription/SubscriptionEdit/SubscriptionModal.test.js
@@ -125,14 +125,14 @@ describe('', () => {
password: '$encrypted',
}}
selectedSubscription={{
- pool_id: 8,
+ id: 2,
}}
/>
);
await waitForElement(wrapper, 'table');
- expect(wrapper.find('tr[id=7] input').prop('checked')).toBe(false);
- expect(wrapper.find('tr[id=8] input').prop('checked')).toBe(true);
- expect(wrapper.find('tr[id=9] input').prop('checked')).toBe(false);
+ expect(wrapper.find('tr[id="row-1"] input').prop('checked')).toBe(false);
+ expect(wrapper.find('tr[id="row-2"] input').prop('checked')).toBe(true);
+ expect(wrapper.find('tr[id="row-3"] input').prop('checked')).toBe(false);
});
});
diff --git a/awx/ui/src/screens/Setting/Subscription/SubscriptionEdit/SubscriptionStep.js b/awx/ui/src/screens/Setting/Subscription/SubscriptionEdit/SubscriptionStep.js
index 2d9aebc631..333a7939fd 100644
--- a/awx/ui/src/screens/Setting/Subscription/SubscriptionEdit/SubscriptionStep.js
+++ b/awx/ui/src/screens/Setting/Subscription/SubscriptionEdit/SubscriptionStep.js
@@ -227,7 +227,7 @@ function SubscriptionStep() {
username: username.value,
password: password.value,
}}
- selectedSubscripion={subscription?.value}
+ selectedSubscription={subscription?.value}
onClose={closeModal}
onConfirm={(value) => subscriptionHelpers.setValue(value)}
/>