Skip to content

Commit

Permalink
fix(upload): team feedback + try to fix e2e tests
Browse files Browse the repository at this point in the history
  • Loading branch information
NicolasRichel committed Apr 28, 2023
1 parent 8a892e6 commit e22b84d
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 24 deletions.
33 changes: 11 additions & 22 deletions src/utils/upload.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,10 @@ function createFileUploader(
return;
}

let request, resolve, reject;
let request;
let count = 0;

const uploadId = nextUploadId++;
const promise = new Promise(
(res, rej) => ((resolve = res), (reject = rej))
);

const handleError = e => {
if (count < retryCount) {
Expand All @@ -49,43 +46,37 @@ function createFileUploader(
setTimeout(sendRequest, retryInterval);
} else {
onUploadError({ id: uploadId, error: e });
reject({ id: uploadId, error: e });
}
};

const sendRequest = () => {
// Abort any previous request that is not terminated
if (request?.readyState < XMLHttpRequest.DONE) request?.abort();

request = new XMLHttpRequest();

request.upload.addEventListener("loadstart", e => {
request.upload.addEventListener("loadstart", ({ loaded, total }) => {
onUploadStart({
id: uploadId,
bytesUploaded: e.loaded,
bytesTotal: e.total,
percentage: (e.loaded / e.total) * 100
bytesUploaded: loaded,
bytesTotal: total,
percentage: (loaded / total) * 100
});
});
request.upload.addEventListener("progress", e => {
request.upload.addEventListener("progress", ({ loaded, total }) => {
onUploadProgress({
id: uploadId,
bytesUploaded: e.loaded,
bytesTotal: e.total,
percentage: (e.loaded / e.total) * 100
bytesUploaded: loaded,
bytesTotal: total,
percentage: (loaded / total) * 100
});
});
request.addEventListener("load", e => {
if (request.status < 400) {
const data = {
onUploadComplete({
id: uploadId,
bytesUploaded: e.loaded,
bytesTotal: e.total,
percentage: (e.loaded / e.total) * 100,
response: request.response
};
onUploadComplete(data);
resolve(data);
});
} else {
handleError(e);
}
Expand All @@ -95,7 +86,6 @@ function createFileUploader(
});
request.upload.addEventListener("abort", e => {
onUploadCancel(e);
reject(e);
});

request.open(method, url);
Expand All @@ -109,7 +99,6 @@ function createFileUploader(

return {
id: uploadId,
promise,
request: () => request,
cancel: () => request.abort()
};
Expand Down
12 changes: 10 additions & 2 deletions tests/e2e/specs/features/06_docimport.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,12 @@ describe("Documents import feature", () => {

// Act
cy.hook("btn-upload-file").click();
cy.get("body > input[type=file]").selectFile("@housePlan", { force: true });
cy.get("body > input[type=file]").selectFile(
{ contents: "@housePlan", fileName: "house-plan.pdf" },
{ force: true }
);
cy.intercept("**/dms-tree").as("getDmsTree");
cy.wait("@getDmsTree");

// Assert
cy.hook("files-table")
Expand All @@ -99,7 +104,10 @@ describe("Documents import feature", () => {

// Act
cy.hook("btn-upload-file").click();
cy.get("body > input[type=file]").selectFile("@housePlan", { force: true });
cy.get("body > input[type=file]").selectFile(
{ contents: "@housePlan", fileName: "house-plan.pdf" },
{ force: true }
);

// Assert
for (let i = 0; i < 4; i++) cy.wait("@uploadRequest");
Expand Down

0 comments on commit e22b84d

Please sign in to comment.