Delete container show duplicate toast notifications
When trying to delete a container with objects in it the Swift rest API rejects the request with 409. In the JS code we catch() the promise from the request and show a toast error that the request failed but we don't throw in that catch() so the then() callback that the callee specified gets called which shows a toast message that the container delete was successful and removes it from the list, if you refresh the page the container is still in the list (as expected). This subtle error probably exists in multiple places where the same kind of logic exists. Change-Id: Iadf1e58f23c935a7dd599b9fd3444a0a22396213
This commit is contained in:
parent
a4404445ab
commit
4f9b5b90d6
@ -87,7 +87,14 @@
|
|||||||
var innerFunc = promise.catch.calls.argsFor(0)[0];
|
var innerFunc = promise.catch.calls.argsFor(0)[0];
|
||||||
expect(innerFunc).toBeDefined();
|
expect(innerFunc).toBeDefined();
|
||||||
spyOn(toastService, 'add');
|
spyOn(toastService, 'add');
|
||||||
innerFunc({status: 500});
|
var response = {status: 500};
|
||||||
|
if (angular.isDefined(config.throws) && config.throws) {
|
||||||
|
expect(function() {
|
||||||
|
innerFunc(response);
|
||||||
|
}).toThrow(response);
|
||||||
|
} else {
|
||||||
|
innerFunc(response);
|
||||||
|
}
|
||||||
expect(toastService.add).toHaveBeenCalledWith(config.messageType || 'error', config.error);
|
expect(toastService.add).toHaveBeenCalledWith(config.messageType || 'error', config.error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -186,6 +186,7 @@
|
|||||||
} else {
|
} else {
|
||||||
toastService.add('error', gettext('Unable to delete the container.'));
|
toastService.add('error', gettext('Unable to delete the container.'));
|
||||||
}
|
}
|
||||||
|
throw response;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,7 +95,8 @@
|
|||||||
method: 'delete',
|
method: 'delete',
|
||||||
path: '/api/swift/containers/spam/metadata/',
|
path: '/api/swift/containers/spam/metadata/',
|
||||||
error: 'Unable to delete the container.',
|
error: 'Unable to delete the container.',
|
||||||
testInput: [ 'spam' ]
|
testInput: [ 'spam' ],
|
||||||
|
throws: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
func: 'setContainerAccess',
|
func: 'setContainerAccess',
|
||||||
@ -205,7 +206,10 @@
|
|||||||
var innerFunc = promise.catch.calls.argsFor(0)[0];
|
var innerFunc = promise.catch.calls.argsFor(0)[0];
|
||||||
// In the case of 409
|
// In the case of 409
|
||||||
var message = 'Unable to delete the container because it is not empty.';
|
var message = 'Unable to delete the container because it is not empty.';
|
||||||
innerFunc({data: message, status: 409});
|
var response = {data: message, status: 409};
|
||||||
|
expect(function() {
|
||||||
|
innerFunc(response);
|
||||||
|
}).toThrow(response);
|
||||||
expect(toastService.add).toHaveBeenCalledWith('error', message);
|
expect(toastService.add).toHaveBeenCalledWith('error', message);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user