diff --git a/src/js/components/tasks/retrieveMetadata/changes.tsx b/src/js/components/tasks/retrieveMetadata/changes.tsx
index 9e6893877..7875971e4 100644
--- a/src/js/components/tasks/retrieveMetadata/changes.tsx
+++ b/src/js/components/tasks/retrieveMetadata/changes.tsx
@@ -155,6 +155,12 @@ const ChangesForm = ({
ignoredChanges,
);
+ for (const groupName of Object.keys(metadatachanges)) {
+ if (Object.keys(filteredmetadata).indexOf(groupName) === -1) {
+ filteredmetadata[groupName] = [];
+ }
+ }
+
const { remaining: filteredchecked } = splitChangeset(
filteredChanges,
changesChecked,
diff --git a/test/js/components/tasks/retrieveMetadata/index.test.jsx b/test/js/components/tasks/retrieveMetadata/index.test.jsx
index b3e9f0abd..df02353d8 100644
--- a/test/js/components/tasks/retrieveMetadata/index.test.jsx
+++ b/test/js/components/tasks/retrieveMetadata/index.test.jsx
@@ -34,10 +34,12 @@ const defaultChangeset = {
const defaultComponents = {
Alpha: ['Beta'],
Gamma: ['Delta', 'Theta'],
+ Zam: [],
};
const defaultIgnored = {
Bang: ['Bazinga'],
+ Zam: ['Garnish'],
};
const defaultDirs = { config: ['foo/bar'], pre: ['buz/baz'] };
@@ -291,6 +293,7 @@ describe('', () => {
getByLabelText('Baz'),
getByLabelText('Bing'),
getByLabelText('Bazinga'),
+ getByLabelText('Garnish'),
getByLabelText('Beta'),
];
});
@@ -304,6 +307,7 @@ describe('', () => {
expect(inputs[2].checked).toBe(true);
expect(inputs[3].checked).toBe(false);
expect(inputs[4].checked).toBe(false);
+ expect(inputs[5].checked).toBe(false);
fireEvent.click(selectAllIgnored);
@@ -311,7 +315,8 @@ describe('', () => {
expect(inputs[1].checked).toBe(true);
expect(inputs[2].checked).toBe(true);
expect(inputs[3].checked).toBe(true);
- expect(inputs[4].checked).toBe(false);
+ expect(inputs[4].checked).toBe(true);
+ expect(inputs[5].checked).toBe(false);
fireEvent.click(selectAll);
@@ -319,7 +324,8 @@ describe('', () => {
expect(inputs[1].checked).toBe(false);
expect(inputs[2].checked).toBe(false);
expect(inputs[3].checked).toBe(true);
- expect(inputs[4].checked).toBe(false);
+ expect(inputs[4].checked).toBe(true);
+ expect(inputs[5].checked).toBe(false);
fireEvent.click(selectAllIgnored);
@@ -328,6 +334,7 @@ describe('', () => {
expect(inputs[2].checked).toBe(false);
expect(inputs[3].checked).toBe(false);
expect(inputs[4].checked).toBe(false);
+ expect(inputs[5].checked).toBe(false);
});
});
@@ -340,6 +347,7 @@ describe('', () => {
expect(inputs[2].checked).toBe(true);
expect(inputs[3].checked).toBe(false);
expect(inputs[4].checked).toBe(false);
+ expect(inputs[5].checked).toBe(false);
fireEvent.click(group2);
@@ -348,6 +356,7 @@ describe('', () => {
expect(inputs[2].checked).toBe(true);
expect(inputs[3].checked).toBe(true);
expect(inputs[4].checked).toBe(false);
+ expect(inputs[5].checked).toBe(false);
fireEvent.click(group1);
@@ -356,6 +365,7 @@ describe('', () => {
expect(inputs[2].checked).toBe(false);
expect(inputs[3].checked).toBe(true);
expect(inputs[4].checked).toBe(false);
+ expect(inputs[5].checked).toBe(false);
fireEvent.click(group2);
@@ -364,13 +374,15 @@ describe('', () => {
expect(inputs[2].checked).toBe(false);
expect(inputs[3].checked).toBe(false);
expect(inputs[4].checked).toBe(false);
+ expect(inputs[5].checked).toBe(false);
fireEvent.click(group3);
expect(inputs[0].checked).toBe(false);
expect(inputs[1].checked).toBe(false);
expect(inputs[2].checked).toBe(false);
expect(inputs[3].checked).toBe(false);
- expect(inputs[4].checked).toBe(true);
+ expect(inputs[4].checked).toBe(false);
+ expect(inputs[5].checked).toBe(true);
});
});
@@ -468,7 +480,8 @@ describe('', () => {
expect(panels[1]).toHaveAttribute('aria-hidden', 'true');
expect(panels[2]).toHaveAttribute('aria-hidden', 'false');
expect(panels[3]).toHaveAttribute('aria-hidden', 'false');
- expect(panels[4]).toHaveAttribute('aria-hidden', 'false');
+ expect(panels[4]).toHaveAttribute('aria-hidden', 'true');
+ expect(panels[5]).toHaveAttribute('aria-hidden', 'false');
fireEvent.click(getByTitle('Alpha'));
expect(panels[0]).toHaveAttribute('aria-hidden', 'false');
@@ -476,6 +489,7 @@ describe('', () => {
expect(panels[2]).toHaveAttribute('aria-hidden', 'false');
expect(panels[3]).toHaveAttribute('aria-hidden', 'false');
expect(panels[4]).toHaveAttribute('aria-hidden', 'true');
+ expect(panels[5]).toHaveAttribute('aria-hidden', 'true');
});
});
});
@@ -495,6 +509,20 @@ describe('', () => {
expect(nonSourceTrackableElement).not.toBeNull();
});
+ test('ignore changes for non-source-trackable', () => {
+ const { getByText, rerender, store } = setup();
+ fireEvent.click(getByText('Save & Next'));
+ setup({
+ org: {
+ ...defaultOrg,
+ ignored_changes: { Alpha: ['Beta'] },
+ non_source_changes: { Gamma: ['Delta'] },
+ },
+ store,
+ rerender,
+ });
+ });
+
describe('commit message', () => {
let getters;