diff --git a/cypress/e2e/vault.cy.js b/cypress/e2e/vault.cy.js --- a/cypress/e2e/vault.cy.js +++ b/cypress/e2e/vault.cy.js @@ -118,6 +118,25 @@ }); + it('should report pending cooking task when already submitted', function() { + // Browse a directory + cy.visit(this.directoryUrl); + + // Stub responses when requesting the vault API to simulate + // an internal server error + cy.intercept(this.vaultDirectoryUrl, { + body: this.genVaultDirCookingResponse('pending', 'Processing...') + }).as('checkVaultCookingTask'); + + cy.contains('button', 'Download') + .click(); + + // Check error alert is displayed + cy.get('.alert-success') + .should('be.visible') + .should('contain', 'Archive cooking request already submitted'); + }); + it('should report an error when vault service is experiencing issues', function() { // Browse a directory cy.visit(this.directoryUrl); diff --git a/swh/web/vault/assets/vault-create-tasks.js b/swh/web/vault/assets/vault-create-tasks.js --- a/swh/web/vault/assets/vault-create-tasks.js +++ b/swh/web/vault/assets/vault-create-tasks.js @@ -48,7 +48,16 @@ const vaultModalId = `#vault-fetch-${objectType}-modal`; $(vaultModalId).modal('show'); $('body').on('keyup', vaultModalId, vaultModalHandleEnterKey); - } else { + } else if (data.status === 'pending') { + const cookingInProgressAlert = + $(htmlAlert('success', + 'Archive cooking request already submitted.
' + + `Go to the Downloads page ` + + 'to get the download link once it is ready.', + true)); + cookingInProgressAlert.css(alertStyle); + $('body').append(cookingInProgressAlert); + } else if (!response.ok) { const cookingServiceDownAlert = $(htmlAlert('danger', 'Archive cooking service is currently experiencing issues.
' +