From 6f9de40da695e5701104788e3216996b7950087d Mon Sep 17 00:00:00 2001 From: Sriram Viswanathan Date: Tue, 28 Mar 2017 14:48:45 -0300 Subject: [#931] Shows error feedback using Snackbar notification when there's a submit failure on backup account page --- .../backup_account/backup_email/backup_email.js | 12 +++++++--- .../backup_email/backup_email.spec.js | 27 ++++++++++++++++++++-- 2 files changed, 34 insertions(+), 5 deletions(-) (limited to 'web-ui/src/backup_account/backup_email') diff --git a/web-ui/src/backup_account/backup_email/backup_email.js b/web-ui/src/backup_account/backup_email/backup_email.js index 09863950..6eeadee8 100644 --- a/web-ui/src/backup_account/backup_email/backup_email.js +++ b/web-ui/src/backup_account/backup_email/backup_email.js @@ -40,7 +40,7 @@ export class BackupEmail extends React.Component { error: !emptyEmail && !validEmail ? t('backup-account.backup-email.error.invalid-email') : '', submitButtonDisabled: !validEmail || emptyEmail }); - } + }; submitHandler = (event) => { event.preventDefault(); @@ -54,8 +54,14 @@ export class BackupEmail extends React.Component { body: JSON.stringify({ csrftoken: [browser.getCookie('XSRF-TOKEN')] }) - }).then(() => this.props.onSubmit('success')); - } + }).then((response) => { + if (response.status === 204) { + this.props.onSubmit('success'); + } else { + this.props.onSubmit('error'); + } + }); + }; render() { const t = this.props.t; diff --git a/web-ui/src/backup_account/backup_email/backup_email.spec.js b/web-ui/src/backup_account/backup_email/backup_email.spec.js index 48199738..ce357bf7 100644 --- a/web-ui/src/backup_account/backup_email/backup_email.spec.js +++ b/web-ui/src/backup_account/backup_email/backup_email.spec.js @@ -84,7 +84,7 @@ describe('BackupEmail', () => { }); }); - describe('Submit', () => { + describe('Submit on success', () => { let preventDefaultSpy; beforeEach((done) => { @@ -118,8 +118,31 @@ describe('BackupEmail', () => { expect(preventDefaultSpy).toHaveBeenCalled(); }); - it('calls onSubmit from props when success', () => { + it('calls onSubmit from props with success', () => { expect(mockOnSubmit).toHaveBeenCalledWith('success'); }); }); + + describe('Submit on error', () => { + let preventDefaultSpy; + + beforeEach((done) => { + mockOnSubmit = expect.createSpy().andCall(() => done()); + preventDefaultSpy = expect.createSpy(); + expect.spyOn(browser, 'getCookie').andReturn('abc123'); + + backupEmail = shallow(); + + fetchMock.post('/backup-account', 500); + backupEmail.find('form').simulate('submit', { preventDefault: preventDefaultSpy }); + }); + + it('calls onSubmit from props with error', () => { + expect(mockOnSubmit).toHaveBeenCalledWith('error'); + }); + }); + + afterEach(() => { + fetchMock.restore(); + }); }); -- cgit v1.2.3