Skip to content

Commit 8f50f26

Browse files
committed
✨ add to job information
1 parent 52c14b7 commit 8f50f26

File tree

3 files changed

+37
-8
lines changed

3 files changed

+37
-8
lines changed

src/v2/parsing/job/job.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,13 @@ export class Job {
1616
*/
1717
public error?: ErrorResponse;
1818
/**
19-
* Timestamp of the job creation.
19+
* Date and time of the Job creation.
2020
*/
2121
public createdAt: Date | null;
22+
/**
23+
* Date and time of the Job completion. Filled once processing is finished.
24+
*/
25+
public completedAt: Date | null | undefined;
2226
/**
2327
* ID of the model.
2428
*/
@@ -53,19 +57,22 @@ export class Job {
5357
if (serverResponse["status"] !== undefined) {
5458
this.status = serverResponse["status"];
5559
}
56-
if (
57-
serverResponse["error"] !== undefined &&
58-
serverResponse["error"] !== null &&
59-
Object.keys(serverResponse["error"]).length > 0
60-
) {
60+
if (serverResponse["error"]) {
6161
this.error = new ErrorResponse(serverResponse["error"]);
6262
}
6363
this.createdAt = parseDate(serverResponse["created_at"]);
64+
if (!serverResponse["completed_at"]) {
65+
this.completedAt = undefined;
66+
} else {
67+
this.completedAt = parseDate(serverResponse["completed_at"]);
68+
}
6469
this.modelId = serverResponse["model_id"];
6570
this.pollingUrl = serverResponse["polling_url"];
6671
this.filename = serverResponse["filename"];
6772
this.resultUrl = serverResponse["result_url"];
6873
this.alias = serverResponse["alias"];
69-
this.webhooks = serverResponse["webhooks"];
74+
this.webhooks = (serverResponse["webhooks"] ?? []).map(
75+
(webhook: StringDict) => new JobWebhook(webhook)
76+
);
7077
}
7178
}

src/v2/parsing/job/jobWebhook.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export class JobWebhook {
2626
this.id = serverResponse["id"];
2727
this.createdAt = parseDate(serverResponse["created_at"]);
2828
this.status = serverResponse["status"];
29-
if (serverResponse["error"] !== undefined) {
29+
if (serverResponse["error"]) {
3030
this.error = new ErrorResponse(serverResponse["error"]);
3131
}
3232
}

tests/v2/parsing/job.spec.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,43 @@ async function loadV2Job(resourcePath: string): Promise<JobResponse> {
1818
}
1919

2020
describe("MindeeV2 - Job Response", async () => {
21+
2122
describe("Success", async () => {
2223
it("should load when status is Processing", async () => {
2324
const response = await loadV2Job(
2425
path.join(jobPath, "ok_processing.json")
2526
);
2627
assert.ok(response.job);
28+
assert.strictEqual(response.job.status, "Processing");
29+
assert.ok(response.job.createdAt instanceof Date);
30+
assert.strictEqual(response.job.completedAt, undefined);
31+
assert.strictEqual(response.job.error, undefined);
32+
});
33+
34+
it("should load when status is Processed", async () => {
35+
const response = await loadV2Job(
36+
path.join(jobPath, "ok_processed_webhooks_ok.json")
37+
);
38+
assert.ok(response.job);
39+
assert.strictEqual(response.job.status, "Processed");
40+
assert.ok(response.job.createdAt instanceof Date);
41+
assert.ok(response.job.completedAt instanceof Date);
2742
assert.strictEqual(response.job.error, undefined);
43+
response.job.webhooks.forEach((webhook) => {
44+
assert.ok(webhook.id);
45+
assert.ok(webhook.createdAt instanceof Date);
46+
});
2847
});
2948
});
49+
3050
describe("Failure", async () => {
3151
it("should load with 422 error", async () => {
3252
const response = await loadV2Job(
3353
path.join(jobPath, "fail_422.json")
3454
);
3555
assert.ok(response.job);
56+
assert.ok(response.job.createdAt instanceof Date);
57+
assert.ok(response.job.completedAt instanceof Date);
3658
assert.ok(response.job.error instanceof ErrorResponse);
3759
assert.strictEqual(response.job.error?.status, 422);
3860
assert.ok(response.job.error?.code.startsWith("422-"));

0 commit comments

Comments
 (0)