Skip to content

Commit 694c9f9

Browse files
committed
Added cancel button
1 parent 221a417 commit 694c9f9

File tree

2 files changed

+47
-3
lines changed

2 files changed

+47
-3
lines changed

__tests__/VersionUpdate.test.js

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,10 @@ describe('VersionUpdate', () => {
7979

8080
await fireEvent.change(screen.getByRole('combobox'), { target: { value: '2.0.0' } });
8181

82-
const [moreLink, checkBtn, updateBtnDisabled] = screen.getAllByRole('button');
82+
const [moreLink, checkBtn, cancelBtn, updateBtnDisabled] = screen.getAllByRole('button');
8383
expect(moreLink.textContent).eq('more');
8484
expect(checkBtn.textContent).eq('Check');
85+
expect(cancelBtn.textContent).eq('Cancel');
8586
expect(updateBtnDisabled.textContent).eq('Update');
8687
expect(updateBtnDisabled.disabled).eq(true);
8788

@@ -100,11 +101,38 @@ describe('VersionUpdate', () => {
100101
});
101102
await fireEvent.click(checkBtn);
102103

103-
const updateBtnEnabled = screen.getAllByRole('button')[1];
104+
const updateBtnEnabled = screen.getAllByRole('button')[2];
104105
expect(updateBtnEnabled.textContent).eq('Update');
105106
expect(updateBtnEnabled.disabled).eq(false);
106107
});
107108

109+
it('use the cancel button when fixing the arguments', async () => {
110+
const task = getTask('My Task', '1.2.4');
111+
const versions = await checkVersions(task, 1, { changed_property: 'x' });
112+
expect(versions[0]).toBe('2.0.0');
113+
114+
await fireEvent.change(screen.getByRole('combobox'), { target: { value: '2.0.0' } });
115+
116+
expect(screen.getByRole('textbox').value).eq(
117+
JSON.stringify({ changed_property: 'x' }, null, 2)
118+
);
119+
120+
const cancelBtnDisabled = screen.getByRole('button', { name: 'Cancel' });
121+
expect(cancelBtnDisabled.disabled).eq(true);
122+
123+
await fireEvent.input(screen.getByRole('textbox'), {
124+
target: { value: '{"changed_property": "y"}' }
125+
});
126+
127+
const cancelBtnEnabled = screen.getByRole('button', { name: 'Cancel' });
128+
expect(cancelBtnEnabled.disabled).eq(false);
129+
await fireEvent.click(cancelBtnEnabled);
130+
131+
expect(screen.getByRole('textbox').value).eq(
132+
JSON.stringify({ changed_property: 'x' }, null, 2)
133+
);
134+
});
135+
108136
it('trying to fix the arguments with invalid JSON', async () => {
109137
const task = getTask('My Task', '1.2.4');
110138
const versions = await checkVersions(task, 1);

src/lib/components/workflow/VersionUpdate.svelte

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
/** @type {import('$lib/types').Task[]} */
1919
let updateCandidates = [];
2020
let selectedUpdateVersion = '';
21+
let originalArgs = '';
2122
let argsToBeFixed = '';
2223
let argsToBeFixedValidJson = true;
2324
/** @type {import('ajv').ErrorObject[] | null} */
@@ -96,6 +97,11 @@
9697
validateArguments(args);
9798
}
9899
100+
function cancel() {
101+
argsToBeFixed = originalArgs;
102+
check();
103+
}
104+
99105
/**
100106
* @param args {object}
101107
*/
@@ -116,7 +122,8 @@
116122
if (valid) {
117123
validationErrors = null;
118124
} else {
119-
argsToBeFixed = JSON.stringify(args, null, 2);
125+
originalArgs = JSON.stringify(args, null, 2);
126+
argsToBeFixed = originalArgs;
120127
validationErrors = validator.getErrors();
121128
}
122129
}
@@ -249,6 +256,15 @@
249256
{/if}
250257
<button type="button" class="btn btn-warning mt-3" on:click={check}> Check </button>
251258
&nbsp;
259+
<button
260+
type="button"
261+
class="btn btn-secondary mt-3"
262+
on:click={cancel}
263+
disabled={argsToBeFixed === originalArgs}
264+
>
265+
Cancel
266+
</button>
267+
&nbsp;
252268
{/if}
253269
<button type="button" class="btn btn-primary mt-3" on:click={update} disabled={!canBeUpdated}>
254270
Update

0 commit comments

Comments
 (0)