diff --git a/.github/workflows/_test-integrations.yml b/.github/workflows/_test-integrations.yml index 905299d7..ef7dd09b 100644 --- a/.github/workflows/_test-integrations.yml +++ b/.github/workflows/_test-integrations.yml @@ -17,7 +17,7 @@ env: jobs: run-tests-with-optional-dependencies: - name: Run Integration Tests With Optional Dependencies + name: Integration Tests With Optional Dependencies timeout-minutes: 30 strategy: matrix: @@ -68,7 +68,7 @@ jobs: run-tests-without-optional-dependencies: - name: Run Integration Tests Without Optional Dependencies + name: Integration Tests Without Optional Dependencies timeout-minutes: 30 strategy: matrix: diff --git a/.github/workflows/_test-smoke.yml b/.github/workflows/_test-smoke.yml index 6f44cd7b..1deee123 100644 --- a/.github/workflows/_test-smoke.yml +++ b/.github/workflows/_test-smoke.yml @@ -15,7 +15,7 @@ env: jobs: build: - name: Run Tests + name: Smoke Tests runs-on: ubuntu-latest strategy: matrix: diff --git a/.github/workflows/_test-units.yml b/.github/workflows/_test-units.yml index 621c6aad..1e8e0d78 100644 --- a/.github/workflows/_test-units.yml +++ b/.github/workflows/_test-units.yml @@ -5,7 +5,7 @@ on: jobs: run-tests-with-optional-dependencies: - name: Run Tests With Optional Dependencies + name: Tests With Optional Dependencies strategy: matrix: os: @@ -44,7 +44,7 @@ jobs: run: npm run test run-tests-without-optional-dependencies: - name: Run Tests Without Optional Dependencies + name: Tests Without Optional Dependencies strategy: matrix: os: diff --git a/package.json b/package.json index 617a4cdb..7a6e42e0 100644 --- a/package.json +++ b/package.json @@ -10,14 +10,11 @@ "build": "tsc --build && tsc-alias", "build-for-dist": "tsc --build && tsc-alias && cp LICENSE README.md CHANGELOG.md ./dist", "clean": "rm -rf ./dist ./docs/_build", - "test": "mocha --grep \"#omitOptionalDeps\" --invert \"tests/**/*.spec.ts\"", - "test-light": "mocha --grep \"#includeOptionalDeps\" --invert \"tests/**/*.spec.ts\"", - "test-integration": "mocha --grep \"#omitOptionalDeps\" --invert \"tests/**/*.integration.ts\"", - "test-integration-light": "mocha --grep \"#includeOptionalDeps\" --invert \"tests/**/*.integration.ts\"", - "test-v1": "mocha --grep \"#omitOptionalDeps\" --invert \"tests/v1/**/*.spec.ts\"", - "test-v1-light": "mocha --grep \"#includeOptionalDeps\" --invert \"tests/v1/**/*.spec.ts\"", - "test-v2": "mocha --grep \"#omitOptionalDeps\" --invert \"tests/v2/**/*.spec.ts\"", - "test-v2-light": "mocha --grep \"#includeOptionalDeps\" --invert \"tests/v2/**/*.spec.ts\"", + "test": "mocha --grep '#OptionalDepsRemoved' --invert 'tests/**/*.spec.ts'", + "test-light": "mocha --grep '#OptionalDepsRequired' --invert 'tests/**/*.spec.ts'", + "test-integration": "mocha --grep '#OptionalDepsRemoved' --invert 'tests/**/*.integration.ts'", + "test-integration-light": "mocha --grep '#OptionalDepsRequired' --invert 'tests/**/*.integration.ts'", + "test-v2": "tsc --noEmit && node --import tsx --test 'tests/v2/**/*.spec.ts'", "lint": "tsc --noEmit && eslint --report-unused-disable-directives './src/**/*.ts' './tests/**/*.ts'", "lint-fix": "eslint --fix --report-unused-disable-directives './src/**/*.ts' './tests/**/*.ts'", "docs": "typedoc --out docs/_build ./src/index.ts", diff --git a/tests/dependency/missingDependencies.integration.ts b/tests/dependency/missingDependencies.integration.ts index 2a1c12ab..e1ff1896 100644 --- a/tests/dependency/missingDependencies.integration.ts +++ b/tests/dependency/missingDependencies.integration.ts @@ -4,7 +4,7 @@ import assert from "node:assert/strict"; import path from "path"; import { V1_PRODUCT_PATH } from "../index.js"; -describe("Light Environment Sanity Check #omitOptionalDeps", function () { +describe("MindeeV1 - Integration - Optional Dependencies #OptionalDepsRemoved", function () { let client: mindee.v1.Client; beforeEach(() => { diff --git a/tests/dependency/missingDependencies.spec.ts b/tests/dependency/missingDependencies.spec.ts index 1c46a908..570bca61 100644 --- a/tests/dependency/missingDependencies.spec.ts +++ b/tests/dependency/missingDependencies.spec.ts @@ -1,6 +1,7 @@ import assert from "node:assert/strict"; +import { describe, it } from "node:test"; -describe("Light Environment Sanity Check #omitOptionalDeps", function () { +describe("MindeeV1 - Optional Dependencies #OptionalDepsRemoved", function () { it("should NOT have sharp installed", async function () { try { diff --git a/tests/geometry.spec.ts b/tests/geometry.spec.ts index 8bef96b3..3f228488 100644 --- a/tests/geometry.spec.ts +++ b/tests/geometry.spec.ts @@ -1,4 +1,5 @@ import * as geometry from "@/geometry/index.js"; +import { describe, it } from "node:test"; import assert from "node:assert/strict"; describe("Geometry functions", () => { diff --git a/tests/input/compression.spec.ts b/tests/input/compression.spec.ts index db6686e3..b82ebdec 100644 --- a/tests/input/compression.spec.ts +++ b/tests/input/compression.spec.ts @@ -1,16 +1,15 @@ -import { - PathInput, -} from "@/input/index.js"; +import { after, before, describe, it } from "node:test"; import * as fs from "fs"; import * as path from "path"; import assert from "node:assert/strict"; +import { PathInput } from "@/input/index.js"; import { compressImage } from "@/image/index.js"; import { compressPdf } from "@/pdf/index.js"; import { extractTextFromPdf } from "@/pdf/pdfUtils.js"; import { logger } from "@/logger.js"; import { RESOURCE_PATH, V1_PRODUCT_PATH } from "../index.js"; -describe("Input Sources - compression and resize #includeOptionalDeps", () => { +describe("Input Sources - compression and resize #OptionalDepsRequired", () => { const outputPath = path.join(RESOURCE_PATH, "output"); before(async () => { @@ -131,7 +130,7 @@ describe("Input Sources - compression and resize #includeOptionalDeps", () => { path.join(outputPath, "resize_indirect.pdf") ); assert.ok(renderedFileStats.size < initialFileStats.size); - }).timeout(10000); + }); it("PDF Compress From Compressor", async () => { const pdfResizeInput = new PathInput( @@ -162,7 +161,7 @@ describe("Input Sources - compression and resize #includeOptionalDeps", () => { assert.ok(renderedFileStats[0].size > renderedFileStats[1].size); assert.ok(renderedFileStats[1].size > renderedFileStats[2].size); assert.ok(renderedFileStats[2].size > renderedFileStats[3].size); - }).timeout(20000); + }); it("PDF Compress With Text Keeps Text", async () => { const initialWithText = new PathInput( @@ -177,7 +176,7 @@ describe("Input Sources - compression and resize #includeOptionalDeps", () => { const compressedText = (await extractTextFromPdf(compressedWithText)).getConcatenatedText(); assert.strictEqual(compressedText, originalText); - }).timeout(60000); + }); it("PDF Compress With Text Does Not Compress", async () => { const initialWithText = new PathInput( @@ -188,7 +187,7 @@ describe("Input Sources - compression and resize #includeOptionalDeps", () => { const compressedWithText = await compressPdf(initialWithText.fileObject, 50); assert.deepStrictEqual(compressedWithText, initialWithText.fileObject); - }).timeout(10000); + }); after(async function () { const createdFiles: string[] = [ diff --git a/tests/input/pageOperations.spec.ts b/tests/input/pageOperations.spec.ts index a56fa516..5b0810c7 100644 --- a/tests/input/pageOperations.spec.ts +++ b/tests/input/pageOperations.spec.ts @@ -5,10 +5,11 @@ import { } from "@/input/index.js"; import * as fs from "fs"; import * as path from "path"; +import { describe, it } from "node:test"; import assert from "node:assert/strict"; import { RESOURCE_PATH } from "../index.js"; -describe("Input Sources - high level multi-page operations #includeOptionalDeps", () => { +describe("Input Sources - high level multi-page operations #OptionalDepsRequired", () => { it("should cut a PDF", async () => { const input = new PathInput({ inputPath: path.join(RESOURCE_PATH, "file_types/pdf/multipage.pdf"), diff --git a/tests/input/sources.spec.ts b/tests/input/sources.spec.ts index 01c5e0a6..717ea008 100644 --- a/tests/input/sources.spec.ts +++ b/tests/input/sources.spec.ts @@ -1,3 +1,8 @@ +import * as fs from "fs"; +import * as path from "path"; +import { describe, it } from "node:test"; +import assert from "node:assert/strict"; +import { Buffer } from "node:buffer"; import { Readable } from "stream"; import { Base64Input, @@ -11,14 +16,10 @@ import { PathInput, StreamInput, } from "@/input/index.js"; -import * as fs from "fs"; -import * as path from "path"; -import assert from "node:assert/strict"; -import { Buffer } from "node:buffer"; import { MindeeInputSourceError } from "@/errors/index.js"; import { RESOURCE_PATH, V1_PRODUCT_PATH } from "../index.js"; -describe("Input Sources: - load different types of input", () => { +describe("Input Sources - load different types of input", () => { it("should accept base64 inputs", async () => { const b64Input = await fs.promises.readFile( @@ -240,10 +241,9 @@ describe("Input Sources: - load different types of input", () => { assert.strictEqual(inputSource.inputType, INPUT_TYPE_BUFFER); assert.strictEqual(inputSource.filename, filename); assert.ok(inputSource.isPdf()); - it("#includeOptionalDeps", async () => { + assert.ok(inputSource.fileObject instanceof Buffer); + await it("getPageCount #OptionalDepsRequired", async () => { assert.strictEqual(await inputSource.getPageCount(), 10); }); - assert.ok(inputSource.fileObject instanceof Buffer); }); - }); diff --git a/tests/input/urlInputSource.spec.ts b/tests/input/urlInputSource.spec.ts index ce987f49..24cbd603 100644 --- a/tests/input/urlInputSource.spec.ts +++ b/tests/input/urlInputSource.spec.ts @@ -1,6 +1,7 @@ +import assert from "node:assert/strict"; +import { describe, it } from "node:test"; import { BytesInput, UrlInput } from "@/index.js"; import { LocalInputSource } from "@/input/index.js"; -import assert from "node:assert/strict"; import { MockAgent, setGlobalDispatcher } from "undici"; const mockAgent = new MockAgent(); diff --git a/tests/pdf/pdfOperation.spec.ts b/tests/pdf/pdfOperation.spec.ts index 187485f8..944eb181 100644 --- a/tests/pdf/pdfOperation.spec.ts +++ b/tests/pdf/pdfOperation.spec.ts @@ -2,11 +2,12 @@ import * as pdf from "@/pdf/index.js"; import * as path from "path"; import * as fs from "fs"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; import { PageOptions, PageOptionsOperation } from "@/index.js"; import { PathInput } from "@/index.js"; import { RESOURCE_PATH } from "../index.js"; -describe("Test pdf operation #includeOptionalDeps", () => { +describe("Test PDF operation #OptionalDepsRequired", () => { it("should cut a PDF to get 2 pages", async () => { const inputSource = new PathInput({ inputPath: path.join(RESOURCE_PATH, "file_types/pdf/multipage.pdf"), diff --git a/tests/pdf/pdfTypes.spec.ts b/tests/pdf/pdfTypes.spec.ts index b6c61591..2cdc8fc8 100644 --- a/tests/pdf/pdfTypes.spec.ts +++ b/tests/pdf/pdfTypes.spec.ts @@ -1,11 +1,12 @@ import path from "path"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; import * as pdf from "@/pdf/index.js"; import { PageOptions } from "@/input/index.js"; import { PageOptionsOperation, PathInput } from "@/index.js"; import { RESOURCE_PATH } from "../index.js"; -describe("Test pdf lib #includeOptionalDeps", () => { +describe("Test pdf lib #OptionalDepsRequired", () => { it("should open a simple XFA form PDF.", async () => { const inputDoc = new PathInput( @@ -23,7 +24,6 @@ describe("Test pdf lib #includeOptionalDeps", () => { assert.strictEqual(await pdf.countPages(inputDoc.fileObject), 15); }); - it("should be able to perform page operations on an encrypted XFA form PDF.", async () => { const inputDoc = new PathInput( { inputPath: path.join(RESOURCE_PATH, "file_types/pdf/XfaForm_15p_encrypted.pdf") } diff --git a/tests/v1/api/asyncResponse.spec.ts b/tests/v1/api/asyncResponse.spec.ts index ed109a58..407659e0 100644 --- a/tests/v1/api/asyncResponse.spec.ts +++ b/tests/v1/api/asyncResponse.spec.ts @@ -1,7 +1,8 @@ import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import path from "path"; +import * as fs from "node:fs/promises"; import { AsyncPredictResponse } from "@/v1/index.js"; -import { promises as fs } from "fs"; -import * as path from "path"; import { StringDict } from "@/v1/parsing/common/index.js"; import { InvoiceSplitterV1 } from "@/v1/product/index.js"; import { cleanRequestData, isValidAsyncResponse } from "@/http/index.js"; diff --git a/tests/v1/api/endpoint.spec.ts b/tests/v1/api/endpoint.spec.ts index bb230106..666a66d3 100644 --- a/tests/v1/api/endpoint.spec.ts +++ b/tests/v1/api/endpoint.spec.ts @@ -1,10 +1,11 @@ +import assert from "node:assert/strict"; +import { afterEach, beforeEach, describe, it } from "node:test"; +import path from "path"; import * as fs from "node:fs"; -import * as path from "path"; import { MockAgent, setGlobalDispatcher } from "undici"; import { PathInput } from "@/index.js"; import { Client, product } from "@/v1/index.js"; import { RESOURCE_PATH, V1_RESOURCE_PATH } from "../../index.js"; -import assert from "node:assert/strict"; import { MindeeHttp400Error, MindeeHttp401Error, MindeeHttp429Error, MindeeHttp500Error } from "@/v1/http/index.js"; diff --git a/tests/v1/api/feedbackResponse.spec.ts b/tests/v1/api/feedbackResponse.spec.ts index 24223f71..a4ea8211 100644 --- a/tests/v1/api/feedbackResponse.spec.ts +++ b/tests/v1/api/feedbackResponse.spec.ts @@ -1,6 +1,7 @@ -import path from "path"; import assert from "node:assert/strict"; -import { promises as fs } from "fs"; +import { describe, it } from "node:test"; +import path from "path"; +import * as fs from "node:fs/promises"; import { FeedbackResponse } from "@/v1/parsing/common/index.js"; import { V1_PRODUCT_PATH } from "../../index.js"; diff --git a/tests/v1/api/response.spec.ts b/tests/v1/api/response.spec.ts index 4a45ca65..1f79c4b7 100644 --- a/tests/v1/api/response.spec.ts +++ b/tests/v1/api/response.spec.ts @@ -1,6 +1,7 @@ -import { promises as fs } from "fs"; -import * as path from "path"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import path from "path"; +import * as fs from "node:fs/promises"; import { PredictResponse } from "@/v1/index.js"; import { InvoiceV4, ReceiptV5 } from "@/v1/product/index.js"; import { V1_PRODUCT_PATH } from "../../index.js"; diff --git a/tests/v1/clientInit.spec.ts b/tests/v1/clientInit.spec.ts index 07913874..51b4b12a 100644 --- a/tests/v1/clientInit.spec.ts +++ b/tests/v1/clientInit.spec.ts @@ -1,12 +1,16 @@ -import { Client } from "@/v1/index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { Client } from "@/v1/index.js"; +import { MindeeError } from "@/errors/index.js"; describe("Test client initialization", () => { - it("should not create an empty client", () => { + it("should not create a client without an API key", () => { + delete process.env.MINDEE_API_KEY; assert.throws( () => { new Client({}); - } + }, + MindeeError ); }); diff --git a/tests/v1/product/invoiceSplitter/invoiceSplitter.integration.ts b/tests/v1/extraction/invoiceSplitter.integration.ts similarity index 87% rename from tests/v1/product/invoiceSplitter/invoiceSplitter.integration.ts rename to tests/v1/extraction/invoiceSplitter.integration.ts index 5e546cbd..c2b0e780 100644 --- a/tests/v1/product/invoiceSplitter/invoiceSplitter.integration.ts +++ b/tests/v1/extraction/invoiceSplitter.integration.ts @@ -1,12 +1,12 @@ -import * as mindee from "@/index.js"; -import { InvoiceSplitterV1 } from "@/v1/product/index.js"; import assert from "node:assert/strict"; -import { levenshteinRatio } from "../../../testingUtilities.js"; import { promises as fs } from "fs"; import path from "path"; -import { V1_PRODUCT_PATH } from "../../../index.js"; +import * as mindee from "@/index.js"; +import { InvoiceSplitterV1 } from "@/v1/product/index.js"; +import { levenshteinRatio } from "../../testingUtilities.js"; +import { V1_PRODUCT_PATH } from "../../index.js"; -describe("MindeeV1 - InvoiceSplitterV1 Integration Tests #includeOptionalDeps", async () => { +describe("MindeeV1 - Integration - InvoiceSplitterV1 #OptionalDepsRequired", async () => { let client: mindee.v1.Client; beforeEach(() => { diff --git a/tests/v1/extraction/invoiceSplitterReconstruction.spec.ts b/tests/v1/extraction/invoiceSplitter.spec.ts similarity index 91% rename from tests/v1/extraction/invoiceSplitterReconstruction.spec.ts rename to tests/v1/extraction/invoiceSplitter.spec.ts index e6d425c8..413af8e0 100644 --- a/tests/v1/extraction/invoiceSplitterReconstruction.spec.ts +++ b/tests/v1/extraction/invoiceSplitter.spec.ts @@ -1,13 +1,14 @@ import assert from "node:assert/strict"; -import { promises as fs } from "fs"; -import * as path from "path"; +import { describe, it } from "node:test"; +import path from "path"; +import * as fs from "node:fs/promises"; import { Document } from "@/v1/index.js"; import { InvoiceSplitterV1 } from "@/v1/product/index.js"; import { extractInvoices } from "@/v1/extraction/index.js"; import { PathInput } from "@/index.js"; import { V1_PRODUCT_PATH } from "../../index.js"; -describe("MindeeV1 - A Multipage Invoice Document #includeOptionalDeps", () => { +describe("MindeeV1 - Invoice Splitter Extraction #OptionalDepsRequired", () => { it("should be split into the proper invoices", async () => { const jsonData = await fs.readFile( path.join(V1_PRODUCT_PATH, "invoice_splitter/response_v1/complete.json") diff --git a/tests/v1/extraction/invoiceSplitterExtractor.spec.ts b/tests/v1/extraction/invoiceSplitterExtractor.spec.ts deleted file mode 100644 index fa7a3538..00000000 --- a/tests/v1/extraction/invoiceSplitterExtractor.spec.ts +++ /dev/null @@ -1,33 +0,0 @@ -import assert from "node:assert/strict"; -import { promises as fs } from "fs"; -import path from "path"; -import { InvoiceSplitterV1 } from "@/v1/product/index.js"; -import { extractInvoices } from "@/v1/extraction/index.js"; -import { PathInput } from "@/index.js"; -import { V1_PRODUCT_PATH } from "../../index.js"; - -const dataPath = { - complete: path.join(V1_PRODUCT_PATH, "invoice_splitter/response_v1/complete.json"), - fileSample: path.join(V1_PRODUCT_PATH, "invoice_splitter/invoice_5p.pdf"), -}; - -describe("A multi-page invoice document #includeOptionalDeps", () => { - it("should be split properly.", async () => { - const jsonDataNA = await fs.readFile(path.resolve(dataPath.complete)); - const response = JSON.parse(jsonDataNA.toString()); - const doc = new InvoiceSplitterV1(response.document.inference); - const inputSample = new PathInput({ inputPath: dataPath.fileSample }); - await inputSample.init(); - - const extractedInvoices = await extractInvoices(inputSample, doc); - assert.strictEqual(extractedInvoices.length, 3); - assert.ok(extractedInvoices[0].buffer); - assert.ok(extractedInvoices[1].buffer); - assert.strictEqual(extractedInvoices[0].pageIdMin, 0); - assert.strictEqual(extractedInvoices[0].pageIdMax, 0); - assert.strictEqual(extractedInvoices[1].pageIdMin, 1); - assert.strictEqual(extractedInvoices[1].pageIdMax, 3); - assert.strictEqual(extractedInvoices[2].pageIdMax, 4); - assert.strictEqual(extractedInvoices[2].pageIdMax, 4); - }); -}); diff --git a/tests/v1/extraction/multiReceiptsReconstruction.integration.ts b/tests/v1/extraction/multiReceipts.integration.ts similarity index 95% rename from tests/v1/extraction/multiReceiptsReconstruction.integration.ts rename to tests/v1/extraction/multiReceipts.integration.ts index 1f4a82dd..17364655 100644 --- a/tests/v1/extraction/multiReceiptsReconstruction.integration.ts +++ b/tests/v1/extraction/multiReceipts.integration.ts @@ -10,8 +10,8 @@ import { setTimeout } from "node:timers/promises"; const apiKey = process.env.MINDEE_API_KEY; let client: Client; let sourceDoc: LocalInputSource; -describe("MindeeV1 - #includeOptionalDeps", () => { - describe("MindeeV1 - A Multi-Receipt Image", () => { +describe("MindeeV1 - Integration - Multi-Receipt Extraction #OptionalDepsRequired", () => { + describe("A Multi-Receipt Image", () => { before(async () => { sourceDoc = new PathInput({ inputPath: path.join(V1_PRODUCT_PATH, "multi_receipts_detector/default_sample.jpg"), @@ -21,8 +21,7 @@ describe("MindeeV1 - #includeOptionalDeps", () => { }); }); - - describe("MindeeV1 - A Multi-Receipt Document", () => { + describe("A Multi-Receipt PDF", () => { before(async () => { sourceDoc = new PathInput({ inputPath: path.join(V1_PRODUCT_PATH, "multi_receipts_detector/multipage_sample.pdf"), @@ -79,7 +78,7 @@ describe("MindeeV1 - #includeOptionalDeps", () => { }); - describe("MindeeV1 - A Single-Receipt Image", () => { + describe("A Single-Receipt Image", () => { before(async () => { sourceDoc = new PathInput({ inputPath: path.join(V1_PRODUCT_PATH, "expense_receipts/default_sample.jpg"), diff --git a/tests/v1/extraction/multiReceipts.spec.ts b/tests/v1/extraction/multiReceipts.spec.ts new file mode 100644 index 00000000..f520a346 --- /dev/null +++ b/tests/v1/extraction/multiReceipts.spec.ts @@ -0,0 +1,141 @@ +import assert from "node:assert/strict"; +import { after, before, describe, it } from "node:test"; +import path from "path"; +import * as fs from "node:fs/promises"; +import { MultiReceiptsDetectorV1 } from "@/v1/product/index.js"; +import { extractReceipts } from "@/v1/extraction/index.js"; +import { PathInput } from "@/index.js"; +import { Document } from "@/v1/index.js"; +import { RESOURCE_PATH, V1_PRODUCT_PATH } from "../../index.js"; + +const dataPath = { + complete: path.join(V1_PRODUCT_PATH, "multi_receipts_detector/response_v1/complete.json"), + fileSample: path.join(V1_PRODUCT_PATH, "multi_receipts_detector/default_sample.jpg"), + completeMultiPage: path.join(V1_PRODUCT_PATH, "multi_receipts_detector/response_v1/multipage_sample.json"), + multiPageSample: path.join(V1_PRODUCT_PATH, "multi_receipts_detector/multipage_sample.pdf"), +}; +describe("MindeeV1 - Multi-Receipt Extraction #OptionalDepsRequired", () => { + + describe("A single-page multi-receipts document", () => { + it("should be split properly.", async () => { + const jsonDataNA = await fs.readFile(path.resolve(dataPath.complete)); + const response = JSON.parse(jsonDataNA.toString()); + const doc = new MultiReceiptsDetectorV1(response.document.inference); + const inputSample = new PathInput({ inputPath: dataPath.fileSample }); + await inputSample.init(); + const extractedReceipts = await extractReceipts(inputSample, doc); + assert.strictEqual(extractedReceipts.length, 6); + for (let i = 0; i < extractedReceipts.length; i++) { + assert.ok(extractedReceipts[i].buffer); + assert.strictEqual(extractedReceipts[i].pageId, 0); + assert.strictEqual(extractedReceipts[i].receiptId, i); + } + }); + }); + + describe("A multi-page multi-receipts document", () => { + it("should be split properly.", async () => { + const jsonDataNA = await fs.readFile(path.resolve(dataPath.completeMultiPage)); + const response = JSON.parse(jsonDataNA.toString()); + const doc = new MultiReceiptsDetectorV1(response.document.inference); + const inputSample = new PathInput({ inputPath: dataPath.multiPageSample }); + await inputSample.init(); + const extractedReceipts = await extractReceipts(inputSample, doc); + assert.strictEqual(extractedReceipts.length, 5); + + assert.ok(extractedReceipts[0].buffer); + assert.strictEqual(extractedReceipts[0].pageId, 0); + assert.strictEqual(extractedReceipts[0].receiptId, 0); + + assert.ok(extractedReceipts[1].buffer); + assert.strictEqual(extractedReceipts[1].pageId, 0); + assert.strictEqual(extractedReceipts[1].receiptId, 1); + + assert.ok(extractedReceipts[2].buffer); + assert.strictEqual(extractedReceipts[2].pageId, 0); + assert.strictEqual(extractedReceipts[2].receiptId, 2); + + assert.ok(extractedReceipts[3].buffer); + assert.strictEqual(extractedReceipts[3].pageId, 1); + assert.strictEqual(extractedReceipts[3].receiptId, 0); + + assert.ok(extractedReceipts[4].buffer); + assert.strictEqual(extractedReceipts[4].pageId, 1); + assert.strictEqual(extractedReceipts[4].receiptId, 1); + }); + }); + + const rotations = [ + { angle: 0, suffix: "" }, + { angle: 90, suffix: "_90" }, + { angle: 180, suffix: "_180" }, + { angle: 270, suffix: "_270" } + ]; + + rotations.forEach(({ angle, suffix }) => { + describe(`${angle}° rotation`, () => { + let extractedReceipts: any[]; + let sourceDoc: PathInput; + + before(async () => { + const jsonFileName = `complete${suffix}.json`; + const imageFileName = `default_sample${suffix}.jpg`; + + const jsonData = await fs.readFile( + path.join(V1_PRODUCT_PATH, `multi_receipts_detector/response_v1/${jsonFileName}`) + ); + + sourceDoc = new PathInput({ + inputPath: path.join(V1_PRODUCT_PATH, `multi_receipts_detector/${imageFileName}`), + }); + await sourceDoc.init(); + + const response = JSON.parse(jsonData.toString()); + const doc = new Document(MultiReceiptsDetectorV1, response.document); + extractedReceipts = await extractReceipts(sourceDoc, doc.inference); + }); + + it("should be split into the proper receipts", async () => { + assert.strictEqual(extractedReceipts.length, 6); + let i = 0; + for (const extractedReceipt of extractedReceipts) { + assert.strictEqual(extractedReceipt.pageId, 0); + assert.strictEqual(extractedReceipt.receiptId, i); + assert.ok(Buffer.byteLength(extractedReceipt.asSource().fileObject) < 10485760); + assert.ok(Buffer.byteLength(extractedReceipt.asSource().fileObject) > 100000); + i++; + } + }); + + it("should be saved locally", async () => { + let i = 0; + for (const extractedReceipt of extractedReceipts) { + const outputPrefix = `extracted_receipt_${angle}deg_${i}`; + extractedReceipt.saveToFile(path.join(RESOURCE_PATH, `output/${outputPrefix}.pdf`)); + await extractedReceipt.saveToFileAsync(path.join(RESOURCE_PATH, `output/${outputPrefix}.png`)); + await extractedReceipt.saveToFileAsync(path.join(RESOURCE_PATH, `output/${outputPrefix}.jpg`)); + + const pdfStat = await fs.stat(path.join(RESOURCE_PATH, `output/${outputPrefix}.pdf`)); + // Arbitrary to assert noticeable discrepancies between OSes + assert.ok(pdfStat.size > 500000); + + const jpgStat = await fs.stat(path.join(RESOURCE_PATH, `output/${outputPrefix}.jpg`)); + assert.ok(jpgStat.size > 40000); + + const pngStat = await fs.stat(path.join(RESOURCE_PATH, `output/${outputPrefix}.png`)); + assert.ok(pngStat.size > 290000); + i++; + } + }); + + after(async () => { + for (let i = 0; i < extractedReceipts.length; i++) { + const outputPrefix = `extracted_receipt_${angle}deg_${i}`; + await fs.unlink(path.join(RESOURCE_PATH, `output/${outputPrefix}.pdf`)); + await fs.unlink(path.join(RESOURCE_PATH, `output/${outputPrefix}.jpg`)); + await fs.unlink(path.join(RESOURCE_PATH, `output/${outputPrefix}.png`)); + } + }); + }); + }); +}); diff --git a/tests/v1/extraction/multiReceiptsExtractor.spec.ts b/tests/v1/extraction/multiReceiptsExtractor.spec.ts deleted file mode 100644 index da4ab6bf..00000000 --- a/tests/v1/extraction/multiReceiptsExtractor.spec.ts +++ /dev/null @@ -1,63 +0,0 @@ -import assert from "node:assert/strict"; -import { promises as fs } from "fs"; -import path from "path"; -import { MultiReceiptsDetectorV1 } from "@/v1/product/index.js"; -import { extractReceipts } from "@/v1/extraction/index.js"; -import { PathInput } from "@/index.js"; -import { V1_PRODUCT_PATH } from "../../index.js"; - -const dataPath = { - complete: path.join(V1_PRODUCT_PATH, "multi_receipts_detector/response_v1/complete.json"), - fileSample: path.join(V1_PRODUCT_PATH, "multi_receipts_detector/default_sample.jpg"), - completeMultiPage: path.join(V1_PRODUCT_PATH, "multi_receipts_detector/response_v1/multipage_sample.json"), - multiPageSample: path.join(V1_PRODUCT_PATH, "multi_receipts_detector/multipage_sample.pdf"), -}; -describe("Multi-Receipt #includeOptionalDeps", () => { - describe("A single-page multi-receipts document", () => { - it("should be split properly.", async () => { - const jsonDataNA = await fs.readFile(path.resolve(dataPath.complete)); - const response = JSON.parse(jsonDataNA.toString()); - const doc = new MultiReceiptsDetectorV1(response.document.inference); - const inputSample = new PathInput({ inputPath: dataPath.fileSample }); - await inputSample.init(); - const extractedReceipts = await extractReceipts(inputSample, doc); - assert.strictEqual(extractedReceipts.length, 6); - for (let i = 0; i < extractedReceipts.length; i++) { - assert.ok(extractedReceipts[i].buffer); - assert.strictEqual(extractedReceipts[i].pageId, 0); - assert.strictEqual(extractedReceipts[i].receiptId, i); - } - }); - }); - describe("A multi-page multi-receipts document", () => { - it("should be split properly.", async () => { - const jsonDataNA = await fs.readFile(path.resolve(dataPath.completeMultiPage)); - const response = JSON.parse(jsonDataNA.toString()); - const doc = new MultiReceiptsDetectorV1(response.document.inference); - const inputSample = new PathInput({ inputPath: dataPath.multiPageSample }); - await inputSample.init(); - const extractedReceipts = await extractReceipts(inputSample, doc); - assert.strictEqual(extractedReceipts.length, 5); - - assert.ok(extractedReceipts[0].buffer); - assert.strictEqual(extractedReceipts[0].pageId, 0); - assert.strictEqual(extractedReceipts[0].receiptId, 0); - - assert.ok(extractedReceipts[1].buffer); - assert.strictEqual(extractedReceipts[1].pageId, 0); - assert.strictEqual(extractedReceipts[1].receiptId, 1); - - assert.ok(extractedReceipts[2].buffer); - assert.strictEqual(extractedReceipts[2].pageId, 0); - assert.strictEqual(extractedReceipts[2].receiptId, 2); - - assert.ok(extractedReceipts[3].buffer); - assert.strictEqual(extractedReceipts[3].pageId, 1); - assert.strictEqual(extractedReceipts[3].receiptId, 0); - - assert.ok(extractedReceipts[4].buffer); - assert.strictEqual(extractedReceipts[4].pageId, 1); - assert.strictEqual(extractedReceipts[4].receiptId, 1); - }); - }); -}); diff --git a/tests/v1/extraction/multiReceiptsReconstruction.spec.ts b/tests/v1/extraction/multiReceiptsReconstruction.spec.ts deleted file mode 100644 index 3da66ae3..00000000 --- a/tests/v1/extraction/multiReceiptsReconstruction.spec.ts +++ /dev/null @@ -1,82 +0,0 @@ -import assert from "node:assert/strict"; -import { promises as fs } from "fs"; -import * as path from "path"; -import { PathInput } from "@/index.js"; -import { Document } from "@/v1/index.js"; -import { MultiReceiptsDetectorV1 } from "@/v1/product/index.js"; -import { extractReceipts } from "@/v1/extraction/index.js"; -import { RESOURCE_PATH, V1_PRODUCT_PATH } from "../../index.js"; - -const rotations = [ - { angle: 0, suffix: "" }, - { angle: 90, suffix: "_90" }, - { angle: 180, suffix: "_180" }, - { angle: 270, suffix: "_270" } -]; - -rotations.forEach(({ angle, suffix }) => { - describe(`Multi-Receipt Document - ${angle}° rotation #includeOptionalDeps`, () => { - let extractedReceipts: any[]; - let sourceDoc: PathInput; - - before(async () => { - const jsonFileName = `complete${suffix}.json`; - const imageFileName = `default_sample${suffix}.jpg`; - - const jsonData = await fs.readFile( - path.join(V1_PRODUCT_PATH, `multi_receipts_detector/response_v1/${jsonFileName}`) - ); - - sourceDoc = new PathInput({ - inputPath: path.join(V1_PRODUCT_PATH, `multi_receipts_detector/${imageFileName}`), - }); - await sourceDoc.init(); - - const response = JSON.parse(jsonData.toString()); - const doc = new Document(MultiReceiptsDetectorV1, response.document); - extractedReceipts = await extractReceipts(sourceDoc, doc.inference); - }); - - it("should be split into the proper receipts", async () => { - assert.strictEqual(extractedReceipts.length, 6); - let i = 0; - for (const extractedReceipt of extractedReceipts) { - assert.strictEqual(extractedReceipt.pageId, 0); - assert.strictEqual(extractedReceipt.receiptId, i); - assert.ok(Buffer.byteLength(extractedReceipt.asSource().fileObject) < 10485760); - assert.ok(Buffer.byteLength(extractedReceipt.asSource().fileObject) > 100000); - i++; - } - }); - - it("should be saved locally", async () => { - let i = 0; - for (const extractedReceipt of extractedReceipts) { - const outputPrefix = `extracted_receipt_${angle}deg_${i}`; - extractedReceipt.saveToFile(path.join(RESOURCE_PATH, `output/${outputPrefix}.pdf`)); - await extractedReceipt.saveToFileAsync(path.join(RESOURCE_PATH, `output/${outputPrefix}.png`)); - await extractedReceipt.saveToFileAsync(path.join(RESOURCE_PATH, `output/${outputPrefix}.jpg`)); - - const pdfStat = await fs.stat(path.join(RESOURCE_PATH, `output/${outputPrefix}.pdf`)); - // Arbitrary to assert noticeable discrepancies between OSes - assert.ok(pdfStat.size > 500000); - - const jpgStat = await fs.stat(path.join(RESOURCE_PATH, `output/${outputPrefix}.jpg`)); - assert.ok(jpgStat.size > 40000); - - const pngStat = await fs.stat(path.join(RESOURCE_PATH, `output/${outputPrefix}.png`)); - assert.ok(pngStat.size > 290000); - i++; - } - }).timeout(20000); - - after(async () => { - for (let i = 0; i < extractedReceipts.length; i++) { - const outputPrefix = `extracted_receipt_${angle}deg_${i}`; - await fs.unlink(path.join(RESOURCE_PATH, `output/${outputPrefix}.pdf`)); - await fs.unlink(path.join(RESOURCE_PATH, `output/${outputPrefix}.jpg`)); - await fs.unlink(path.join(RESOURCE_PATH, `output/${outputPrefix}.png`)); - } - }); - }); -}); diff --git a/tests/v1/extras/extras.integration.ts b/tests/v1/extras/extras.integration.ts index 8967aa54..a5cd9097 100644 --- a/tests/v1/extras/extras.integration.ts +++ b/tests/v1/extras/extras.integration.ts @@ -4,7 +4,7 @@ import path from "path"; import { V1_PRODUCT_PATH } from "../../index.js"; -describe("MindeeV1 - Extras Integration Tests", async () => { +describe("MindeeV1 - Integration - Extras", async () => { let client: mindee.v1.Client; beforeEach(() => { diff --git a/tests/v1/extras/fullTextOcr.spec.ts b/tests/v1/extras/fullTextOcr.spec.ts index 4948c862..f2eadfb2 100644 --- a/tests/v1/extras/fullTextOcr.spec.ts +++ b/tests/v1/extras/fullTextOcr.spec.ts @@ -1,6 +1,7 @@ -import { promises as fs } from "fs"; -import path from "path"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import path from "path"; +import * as fs from "node:fs/promises"; import { AsyncPredictResponse } from "@/v1/index.js"; import { InternationalIdV2 } from "@/v1/product/index.js"; import { RESOURCE_PATH } from "../../index.js"; diff --git a/tests/v1/extras/ocr.spec.ts b/tests/v1/extras/ocr.spec.ts index 225a1587..1a755dc1 100644 --- a/tests/v1/extras/ocr.spec.ts +++ b/tests/v1/extras/ocr.spec.ts @@ -1,6 +1,7 @@ -import { promises as fs } from "fs"; -import * as path from "path"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import path from "path"; +import * as fs from "node:fs/promises"; import { ReceiptV5 } from "@/v1/product/index.js"; import { Document } from "@/v1/index.js"; import { RESOURCE_PATH } from "../../index.js"; diff --git a/tests/v1/input/localResponse.spec.ts b/tests/v1/input/localResponse.spec.ts index bbc502ef..4a8d6986 100644 --- a/tests/v1/input/localResponse.spec.ts +++ b/tests/v1/input/localResponse.spec.ts @@ -1,5 +1,6 @@ +import assert from "node:assert/strict"; +import { describe, it } from "node:test"; import * as fs from "node:fs/promises"; -import assert from "node:assert"; import path from "path"; import { AsyncPredictResponse, LocalResponse, PredictResponse } from "@/v1/index.js"; import { InternationalIdV2, InvoiceV4, MultiReceiptsDetectorV1 } from "@/v1/product/index.js"; diff --git a/tests/v1/input/sources.integration.ts b/tests/v1/input/sources.integration.ts index 581e2ef7..f75fd65e 100644 --- a/tests/v1/input/sources.integration.ts +++ b/tests/v1/input/sources.integration.ts @@ -7,7 +7,7 @@ import path from "path"; import { V1_PRODUCT_PATH } from "../../index.js"; import { PathInput, Base64Input, BufferInput, BytesInput, UrlInput } from "@/index.js"; -describe("MindeeV1 - File Input Integration Tests", async () => { +describe("MindeeV1 - Integration - File Input", async () => { let client: mindee.v1.Client; let filePath: string; diff --git a/tests/v1/input/urlInputSource.integration.ts b/tests/v1/input/urlInputSource.integration.ts index c3ee67b3..1308aec1 100644 --- a/tests/v1/input/urlInputSource.integration.ts +++ b/tests/v1/input/urlInputSource.integration.ts @@ -3,7 +3,7 @@ import { UrlInput } from "@/index.js"; import { Client } from "@/v1/index.js"; import { InvoiceV4 } from "@/v1/product/index.js"; -describe("MindeeV1 - URL Input Integration Test", async () => { +describe("MindeeV1 - Integration - URL Input", async () => { it("should retrieve and parse a remote file with redirection", async () => { const apiKey = process.env.MINDEE_API_KEY; if (!apiKey) { diff --git a/tests/v1/parsing/standard/amount.spec.ts b/tests/v1/parsing/standard/amount.spec.ts index e16fcc27..1370c255 100644 --- a/tests/v1/parsing/standard/amount.spec.ts +++ b/tests/v1/parsing/standard/amount.spec.ts @@ -1,5 +1,6 @@ -import { AmountField } from "@/v1/parsing/standard/index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { AmountField } from "@/v1/parsing/standard/index.js"; describe("Test AmountField field", () => { it("Should create an AmountField field", () => { diff --git a/tests/v1/parsing/standard/classification.spec.ts b/tests/v1/parsing/standard/classification.spec.ts index f198c142..b230a637 100644 --- a/tests/v1/parsing/standard/classification.spec.ts +++ b/tests/v1/parsing/standard/classification.spec.ts @@ -1,5 +1,6 @@ -import { ClassificationField } from "@/v1/parsing/standard/index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { ClassificationField } from "@/v1/parsing/standard/index.js"; describe("Test Classification field", () => { it("Should create a Classification field", () => { diff --git a/tests/v1/parsing/standard/date.spec.ts b/tests/v1/parsing/standard/date.spec.ts index 0e70da2b..e052ebcc 100644 --- a/tests/v1/parsing/standard/date.spec.ts +++ b/tests/v1/parsing/standard/date.spec.ts @@ -1,5 +1,6 @@ -import { DateField } from "@/v1/parsing/standard/index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { DateField } from "@/v1/parsing/standard/index.js"; import { BoundingBox } from "@/geometry/index.js"; describe("Test Date field", () => { diff --git a/tests/v1/parsing/standard/field.spec.ts b/tests/v1/parsing/standard/field.spec.ts index 767597d5..019ae62b 100644 --- a/tests/v1/parsing/standard/field.spec.ts +++ b/tests/v1/parsing/standard/field.spec.ts @@ -1,4 +1,5 @@ import assert from "node:assert/strict"; +import { describe, it } from "node:test"; import { Field } from "@/v1/parsing/standard/index.js"; describe("Test different inits of Field", () => { diff --git a/tests/v1/parsing/standard/locale.spec.ts b/tests/v1/parsing/standard/locale.spec.ts index 541c0cdb..c8880f4e 100644 --- a/tests/v1/parsing/standard/locale.spec.ts +++ b/tests/v1/parsing/standard/locale.spec.ts @@ -1,5 +1,6 @@ -import { LocaleField } from "@/v1/parsing/standard/index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { LocaleField } from "@/v1/parsing/standard/index.js"; describe("Test LocaleField field", () => { it("Should create a LocaleField", () => { diff --git a/tests/v1/parsing/standard/orientation.spec.ts b/tests/v1/parsing/standard/orientation.spec.ts index fd481bc2..98cf1652 100644 --- a/tests/v1/parsing/standard/orientation.spec.ts +++ b/tests/v1/parsing/standard/orientation.spec.ts @@ -1,5 +1,6 @@ -import { OrientationField } from "@/v1/parsing/common/index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { OrientationField } from "@/v1/parsing/common/index.js"; describe("Test Orientation field", () => { it("should create an Orientation field", () => { diff --git a/tests/v1/parsing/standard/paymentDetails.spec.ts b/tests/v1/parsing/standard/paymentDetails.spec.ts index 2b94c695..26a58bf2 100644 --- a/tests/v1/parsing/standard/paymentDetails.spec.ts +++ b/tests/v1/parsing/standard/paymentDetails.spec.ts @@ -1,5 +1,6 @@ -import { PaymentDetailsField } from "@/v1/parsing/standard/index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { PaymentDetailsField } from "@/v1/parsing/standard/index.js"; describe("Test PaymentDetailsField field", () => { it("should create a PaymentDetailsField field", () => { diff --git a/tests/v1/parsing/standard/position.spec.ts b/tests/v1/parsing/standard/position.spec.ts index 313ac168..0a5eeb42 100644 --- a/tests/v1/parsing/standard/position.spec.ts +++ b/tests/v1/parsing/standard/position.spec.ts @@ -1,5 +1,6 @@ -import { PositionField } from "@/v1/parsing/standard/index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { PositionField } from "@/v1/parsing/standard/index.js"; describe("Test Position field", () => { it("Should create a Position field", () => { diff --git a/tests/v1/parsing/standard/tax.spec.ts b/tests/v1/parsing/standard/tax.spec.ts index fcbac292..c60aa477 100644 --- a/tests/v1/parsing/standard/tax.spec.ts +++ b/tests/v1/parsing/standard/tax.spec.ts @@ -1,5 +1,6 @@ -import { TaxField } from "@/v1/parsing/standard/index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { TaxField } from "@/v1/parsing/standard/index.js"; describe("Test Tax field", () => { it("should create a Tax field", () => { diff --git a/tests/v1/parsing/standard/text.spec.ts b/tests/v1/parsing/standard/text.spec.ts index 2bc3b262..b1b8828a 100644 --- a/tests/v1/parsing/standard/text.spec.ts +++ b/tests/v1/parsing/standard/text.spec.ts @@ -1,6 +1,7 @@ +import assert from "node:assert/strict"; +import { describe, it } from "node:test"; import { StringField } from "@/v1/parsing/standard/index.js"; import { BoundingBox } from "@/geometry/index.js"; -import assert from "node:assert/strict"; describe("Test String field", () => { it("Should create a String field", () => { diff --git a/tests/v1/product/barcodeReader/barcodeReaderV1.spec.ts b/tests/v1/product/barcodeReader/barcodeReaderV1.spec.ts index 8ed13739..bf2c963b 100644 --- a/tests/v1/product/barcodeReader/barcodeReaderV1.spec.ts +++ b/tests/v1/product/barcodeReader/barcodeReaderV1.spec.ts @@ -1,8 +1,9 @@ -import { promises as fs } from "fs"; import path from "path"; -import { V1_PRODUCT_PATH } from "../../../index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { promises as fs } from "fs"; import * as mindee from "@/index.js"; +import { V1_PRODUCT_PATH } from "../../../index.js"; const dataPath = { complete: path.join(V1_PRODUCT_PATH, "barcode_reader/response_v1/complete.json"), diff --git a/tests/v1/product/cropper/cropperV1.spec.ts b/tests/v1/product/cropper/cropperV1.spec.ts index eb39171c..120ad7fb 100644 --- a/tests/v1/product/cropper/cropperV1.spec.ts +++ b/tests/v1/product/cropper/cropperV1.spec.ts @@ -1,8 +1,9 @@ -import { promises as fs } from "fs"; import path from "path"; -import { V1_PRODUCT_PATH } from "../../../index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { promises as fs } from "fs"; import * as mindee from "@/index.js"; +import { V1_PRODUCT_PATH } from "../../../index.js"; const dataPath = { complete: path.join(V1_PRODUCT_PATH, "cropper/response_v1/complete.json"), diff --git a/tests/v1/product/driverLicense/driverLicenseV1.spec.ts b/tests/v1/product/driverLicense/driverLicenseV1.spec.ts index 83053e0a..747cf4cd 100644 --- a/tests/v1/product/driverLicense/driverLicenseV1.spec.ts +++ b/tests/v1/product/driverLicense/driverLicenseV1.spec.ts @@ -1,8 +1,9 @@ -import { promises as fs } from "fs"; import path from "path"; -import { V1_PRODUCT_PATH } from "../../../index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { promises as fs } from "fs"; import * as mindee from "@/index.js"; +import { V1_PRODUCT_PATH } from "../../../index.js"; const dataPath = { complete: path.join(V1_PRODUCT_PATH, "driver_license/response_v1/complete.json"), diff --git a/tests/v1/product/financialDocument/financialDocumentV1.spec.ts b/tests/v1/product/financialDocument/financialDocumentV1.spec.ts index dbf4461c..4414f0b1 100644 --- a/tests/v1/product/financialDocument/financialDocumentV1.spec.ts +++ b/tests/v1/product/financialDocument/financialDocumentV1.spec.ts @@ -1,6 +1,7 @@ -import { promises as fs } from "fs"; -import * as path from "path"; +import path from "path"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { promises as fs } from "fs"; import * as mindee from "@/index.js"; import { V1_PRODUCT_PATH } from "../../../index.js"; diff --git a/tests/v1/product/fr/bankAccountDetails/bankAccountDetailsV1.spec.ts b/tests/v1/product/fr/bankAccountDetails/bankAccountDetailsV1.spec.ts index 61bb3c40..5f688e62 100644 --- a/tests/v1/product/fr/bankAccountDetails/bankAccountDetailsV1.spec.ts +++ b/tests/v1/product/fr/bankAccountDetails/bankAccountDetailsV1.spec.ts @@ -1,8 +1,9 @@ -import { promises as fs } from "fs"; import path from "path"; -import { V1_PRODUCT_PATH } from "../../../../index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { promises as fs } from "fs"; import * as mindee from "@/index.js"; +import { V1_PRODUCT_PATH } from "../../../../index.js"; const dataPath = { complete: path.join(V1_PRODUCT_PATH, "bank_account_details/response_v1/complete.json"), diff --git a/tests/v1/product/fr/bankAccountDetails/bankAccountDetailsV2.spec.ts b/tests/v1/product/fr/bankAccountDetails/bankAccountDetailsV2.spec.ts index f84b99f9..d1bfd707 100644 --- a/tests/v1/product/fr/bankAccountDetails/bankAccountDetailsV2.spec.ts +++ b/tests/v1/product/fr/bankAccountDetails/bankAccountDetailsV2.spec.ts @@ -1,8 +1,9 @@ -import { promises as fs } from "fs"; import path from "path"; -import { V1_PRODUCT_PATH } from "../../../../index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { promises as fs } from "fs"; import * as mindee from "@/index.js"; +import { V1_PRODUCT_PATH } from "../../../../index.js"; const dataPath = { diff --git a/tests/v1/product/fr/carteGrise/carteGriseV1.spec.ts b/tests/v1/product/fr/carteGrise/carteGriseV1.spec.ts index e912fe42..88afc0a1 100644 --- a/tests/v1/product/fr/carteGrise/carteGriseV1.spec.ts +++ b/tests/v1/product/fr/carteGrise/carteGriseV1.spec.ts @@ -1,9 +1,9 @@ -import { promises as fs } from "fs"; import path from "path"; -import { V1_PRODUCT_PATH } from "../../../../index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { promises as fs } from "fs"; import * as mindee from "@/index.js"; - +import { V1_PRODUCT_PATH } from "../../../../index.js"; const dataPath = { complete: path.join(V1_PRODUCT_PATH, "carte_grise/response_v1/complete.json"), diff --git a/tests/v1/product/fr/idCard/idCardV2.spec.ts b/tests/v1/product/fr/idCard/idCardV2.spec.ts index 2ee4566a..103f759e 100644 --- a/tests/v1/product/fr/idCard/idCardV2.spec.ts +++ b/tests/v1/product/fr/idCard/idCardV2.spec.ts @@ -1,8 +1,9 @@ -import { promises as fs } from "fs"; import path from "path"; -import { V1_PRODUCT_PATH } from "../../../../index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { promises as fs } from "fs"; import * as mindee from "@/index.js"; +import { V1_PRODUCT_PATH } from "../../../../index.js"; const dataPath = { diff --git a/tests/v1/product/generated/generatedList.spec.ts b/tests/v1/product/generated/generatedList.spec.ts index 9ff722d6..1cd6c1d2 100644 --- a/tests/v1/product/generated/generatedList.spec.ts +++ b/tests/v1/product/generated/generatedList.spec.ts @@ -1,4 +1,5 @@ import assert from "node:assert/strict"; +import { describe, it } from "node:test"; import { GeneratedListField } from "@/v1/parsing/generated/index.js"; describe("Generated List Field Objects", async () => { diff --git a/tests/v1/product/generated/generatedObject.spec.ts b/tests/v1/product/generated/generatedObject.spec.ts index d4c64065..f25dfbfb 100644 --- a/tests/v1/product/generated/generatedObject.spec.ts +++ b/tests/v1/product/generated/generatedObject.spec.ts @@ -1,4 +1,5 @@ import assert from "node:assert/strict"; +import { describe, it } from "node:test"; import { GeneratedObjectField } from "@/v1/parsing/generated/index.js"; describe("Generated Object Field", async () => { diff --git a/tests/v1/product/generated/generatedV1.spec.ts b/tests/v1/product/generated/generatedV1.spec.ts index 7a0cbcc2..435d485f 100644 --- a/tests/v1/product/generated/generatedV1.spec.ts +++ b/tests/v1/product/generated/generatedV1.spec.ts @@ -1,6 +1,7 @@ -import { promises as fs } from "fs"; -import * as path from "path"; +import path from "path"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { promises as fs } from "fs"; import * as mindee from "@/index.js"; import { Page } from "@/v1/index.js"; import { GeneratedV1 } from "@/v1/product/index.js"; diff --git a/tests/v1/product/internationalId/internationalIdV2.spec.ts b/tests/v1/product/internationalId/internationalIdV2.spec.ts index 2876b871..228f6e04 100644 --- a/tests/v1/product/internationalId/internationalIdV2.spec.ts +++ b/tests/v1/product/internationalId/internationalIdV2.spec.ts @@ -1,8 +1,9 @@ -import { promises as fs } from "fs"; import path from "path"; -import { V1_PRODUCT_PATH } from "../../../index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { promises as fs } from "fs"; import * as mindee from "@/index.js"; +import { V1_PRODUCT_PATH } from "../../../index.js"; const dataPath = { diff --git a/tests/v1/product/invoice/invoiceV4.spec.ts b/tests/v1/product/invoice/invoiceV4.spec.ts index e6acd6e5..dc58b8bb 100644 --- a/tests/v1/product/invoice/invoiceV4.spec.ts +++ b/tests/v1/product/invoice/invoiceV4.spec.ts @@ -1,8 +1,9 @@ -import { promises as fs } from "fs"; import path from "path"; -import { V1_PRODUCT_PATH } from "../../../index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { promises as fs } from "fs"; import * as mindee from "@/index.js"; +import { V1_PRODUCT_PATH } from "../../../index.js"; const dataPath = { complete: path.join(V1_PRODUCT_PATH, "invoices/response_v4/complete.json"), diff --git a/tests/v1/product/invoiceSplitter/invoiceSplitterV1.spec.ts b/tests/v1/product/invoiceSplitter/invoiceSplitterV1.spec.ts index 760df3dc..806526f2 100644 --- a/tests/v1/product/invoiceSplitter/invoiceSplitterV1.spec.ts +++ b/tests/v1/product/invoiceSplitter/invoiceSplitterV1.spec.ts @@ -1,9 +1,9 @@ -import { promises as fs } from "fs"; import path from "path"; -import { V1_PRODUCT_PATH } from "../../../index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { promises as fs } from "fs"; import * as mindee from "@/index.js"; - +import { V1_PRODUCT_PATH } from "../../../index.js"; const dataPath = { complete: path.join(V1_PRODUCT_PATH, "invoice_splitter/response_v1/complete.json"), diff --git a/tests/v1/product/multiReceiptsDetector/multiReceiptsDetectorV1.spec.ts b/tests/v1/product/multiReceiptsDetector/multiReceiptsDetectorV1.spec.ts index ddb416a1..d7ccb655 100644 --- a/tests/v1/product/multiReceiptsDetector/multiReceiptsDetectorV1.spec.ts +++ b/tests/v1/product/multiReceiptsDetector/multiReceiptsDetectorV1.spec.ts @@ -1,9 +1,9 @@ -import { promises as fs } from "fs"; import path from "path"; -import { V1_PRODUCT_PATH } from "../../../index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { promises as fs } from "fs"; import * as mindee from "@/index.js"; - +import { V1_PRODUCT_PATH } from "../../../index.js"; const dataPath = { complete: path.join(V1_PRODUCT_PATH, "multi_receipts_detector/response_v1/complete.json"), diff --git a/tests/v1/product/passport/passportV1.spec.ts b/tests/v1/product/passport/passportV1.spec.ts index 33671716..b27af840 100644 --- a/tests/v1/product/passport/passportV1.spec.ts +++ b/tests/v1/product/passport/passportV1.spec.ts @@ -1,9 +1,9 @@ -import { promises as fs } from "fs"; import path from "path"; -import { V1_PRODUCT_PATH } from "../../../index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { promises as fs } from "fs"; import * as mindee from "@/index.js"; - +import { V1_PRODUCT_PATH } from "../../../index.js"; const dataPath = { complete: path.join(V1_PRODUCT_PATH, "passport/response_v1/complete.json"), diff --git a/tests/v1/product/receipt/receiptV5.spec.ts b/tests/v1/product/receipt/receiptV5.spec.ts index 689df8e6..614a6e51 100644 --- a/tests/v1/product/receipt/receiptV5.spec.ts +++ b/tests/v1/product/receipt/receiptV5.spec.ts @@ -1,9 +1,9 @@ -import { promises as fs } from "fs"; import path from "path"; -import { V1_PRODUCT_PATH } from "../../../index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { promises as fs } from "fs"; import * as mindee from "@/index.js"; - +import { V1_PRODUCT_PATH } from "../../../index.js"; const dataPath = { complete: path.join(V1_PRODUCT_PATH, "expense_receipts/response_v5/complete.json"), diff --git a/tests/v1/product/resume/resumeV1.spec.ts b/tests/v1/product/resume/resumeV1.spec.ts index 6ffbd1f0..5cf77c34 100644 --- a/tests/v1/product/resume/resumeV1.spec.ts +++ b/tests/v1/product/resume/resumeV1.spec.ts @@ -1,9 +1,9 @@ -import { promises as fs } from "fs"; import path from "path"; -import { V1_PRODUCT_PATH } from "../../../index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { promises as fs } from "fs"; import * as mindee from "@/index.js"; - +import { V1_PRODUCT_PATH } from "../../../index.js"; const dataPath = { complete: path.join(V1_PRODUCT_PATH, "resume/response_v1/complete.json"), diff --git a/tests/v1/product/us/bankCheck/bankCheckV1.spec.ts b/tests/v1/product/us/bankCheck/bankCheckV1.spec.ts index 8a434c73..057adbbe 100644 --- a/tests/v1/product/us/bankCheck/bankCheckV1.spec.ts +++ b/tests/v1/product/us/bankCheck/bankCheckV1.spec.ts @@ -1,9 +1,9 @@ -import { promises as fs } from "fs"; import path from "path"; -import { V1_PRODUCT_PATH } from "../../../../index.js"; import assert from "node:assert/strict"; +import { describe, it } from "node:test"; +import { promises as fs } from "fs"; import * as mindee from "@/index.js"; - +import { V1_PRODUCT_PATH } from "../../../../index.js"; const dataPath = { complete: path.join(V1_PRODUCT_PATH, "bank_check/response_v1/complete.json"), diff --git a/tests/v1/workflows/workflow.integration.ts b/tests/v1/workflows/workflow.integration.ts index 8f046417..54ce2427 100644 --- a/tests/v1/workflows/workflow.integration.ts +++ b/tests/v1/workflows/workflow.integration.ts @@ -8,7 +8,7 @@ import { RAGExtra } from "@/v1/parsing/common/extras/ragExtra.js"; import path from "path"; import { V1_PRODUCT_PATH } from "../../index.js"; -describe("MindeeV1 - Workflow calls", () => { +describe("MindeeV1 - Integration - Workflow calls", () => { let client: mindee.v1.Client; let sample: LocalInputSource; let workflowId: string; diff --git a/tests/v1/workflows/workflow.spec.ts b/tests/v1/workflows/workflow.spec.ts index 3ef884f6..f584d65e 100644 --- a/tests/v1/workflows/workflow.spec.ts +++ b/tests/v1/workflows/workflow.spec.ts @@ -1,7 +1,8 @@ -import assert from "node:assert"; -import { MockAgent, setGlobalDispatcher } from "undici"; -import { promises as fs } from "fs"; import path from "path"; +import assert from "node:assert/strict"; +import { afterEach, beforeEach, describe, it } from "node:test"; +import { promises as fs } from "fs"; +import { MockAgent, setGlobalDispatcher } from "undici"; import { RESOURCE_PATH, V1_RESOURCE_PATH } from "../../index.js"; import { Client } from "@/v1/index.js"; import { PathInput } from "@/index.js"; diff --git a/tests/v2/client.spec.ts b/tests/v2/client.spec.ts index b20f62aa..fb2651f6 100644 --- a/tests/v2/client.spec.ts +++ b/tests/v2/client.spec.ts @@ -1,8 +1,10 @@ +import path from "path"; +import assert from "node:assert/strict"; +import { after, before, beforeEach, describe, it } from "node:test"; import { MockAgent, setGlobalDispatcher } from "undici"; -import path from "node:path"; + import { Client, PathInput } from "@/index.js"; import { MindeeHttpErrorV2 } from "@/v2/http/index.js"; -import assert from "node:assert/strict"; import { RESOURCE_PATH, V2_RESOURCE_PATH } from "../index.js"; import fs from "node:fs/promises"; import { Crop, Extraction } from "@/v2/product/index.js"; diff --git a/tests/v2/parsing/job.spec.ts b/tests/v2/parsing/job.spec.ts index 6311825f..5f4ff498 100644 --- a/tests/v2/parsing/job.spec.ts +++ b/tests/v2/parsing/job.spec.ts @@ -1,5 +1,7 @@ +import path from "path"; import assert from "node:assert/strict"; -import path from "node:path"; +import { describe, it } from "node:test"; + import { JobResponse, LocalResponse, diff --git a/tests/v2/parsing/localResponse.spec.ts b/tests/v2/parsing/localResponse.spec.ts index e873f55e..8318f6a6 100644 --- a/tests/v2/parsing/localResponse.spec.ts +++ b/tests/v2/parsing/localResponse.spec.ts @@ -1,8 +1,9 @@ +import path from "path"; +import assert from "node:assert/strict"; +import { describe, it } from "node:test"; import * as fs from "node:fs/promises"; -import assert from "node:assert"; -import { LocalResponse } from "@/v2/index.js"; -import path from "path"; +import { LocalResponse } from "@/v2/index.js"; import { V2_PRODUCT_PATH } from "../../index.js"; import { Buffer } from "node:buffer"; import { ExtractionResponse } from "@/v2/product/index.js"; diff --git a/tests/v2/product/classification.spec.ts b/tests/v2/product/classification.spec.ts index d697d897..f2acef9e 100644 --- a/tests/v2/product/classification.spec.ts +++ b/tests/v2/product/classification.spec.ts @@ -1,5 +1,6 @@ +import path from "path"; import assert from "node:assert/strict"; -import path from "node:path"; +import { describe, it } from "node:test"; import { ClassificationResponse } from "@/v2/product/index.js"; import { V2_PRODUCT_PATH } from "../../index.js"; diff --git a/tests/v2/product/crop.spec.ts b/tests/v2/product/crop.spec.ts index e9847ff6..847222ec 100644 --- a/tests/v2/product/crop.spec.ts +++ b/tests/v2/product/crop.spec.ts @@ -1,5 +1,6 @@ +import path from "path"; import assert from "node:assert/strict"; -import path from "node:path"; +import { describe, it } from "node:test"; import { Polygon } from "@/geometry/index.js"; import { crop } from "@/v2/product/index.js"; diff --git a/tests/v2/product/extraction.spec.ts b/tests/v2/product/extraction.spec.ts index 56eb8793..fb977589 100644 --- a/tests/v2/product/extraction.spec.ts +++ b/tests/v2/product/extraction.spec.ts @@ -1,6 +1,7 @@ -import path from "node:path"; +import path from "path"; +import assert from "node:assert/strict"; +import { describe, it } from "node:test"; import { promises as fs } from "node:fs"; -import assert from "node:assert"; import { Polygon } from "@/geometry/index.js"; import { FieldConfidence, @@ -326,7 +327,7 @@ describe("MindeeV2 - Extraction Response", async () => { assert.notStrictEqual(response.inference, null); assert.strictEqual(response.inference.toString(), rstString); - }).timeout(10000); + }); }); describe("Field Locations and Confidence", async () => { @@ -370,6 +371,6 @@ describe("MindeeV2 - Extraction Response", async () => { assert.ok(FieldConfidence.lessThanOrEqual(dateField.confidence, FieldConfidence.Certain)); assert.ok(FieldConfidence.lessThan(dateField.confidence, FieldConfidence.Certain)); - }).timeout(10000); + }); }); }); diff --git a/tests/v2/product/extractionParameter.spec.ts b/tests/v2/product/extractionParameter.spec.ts index 33832b2f..d85479ec 100644 --- a/tests/v2/product/extractionParameter.spec.ts +++ b/tests/v2/product/extractionParameter.spec.ts @@ -1,8 +1,9 @@ -import { StringDict } from "@/parsing/index.js"; import path from "path"; -import { V2_PRODUCT_PATH } from "../../index.js"; import assert from "node:assert/strict"; +import { before, describe, it } from "node:test"; import { promises as fs } from "fs"; +import { StringDict } from "@/parsing/index.js"; +import { V2_PRODUCT_PATH } from "../../index.js"; import { extraction } from "@/v2/product/index.js"; let expectedDataSchemaDict: StringDict; diff --git a/tests/v2/product/ocr.spec.ts b/tests/v2/product/ocr.spec.ts index 2677963d..0c56f6af 100644 --- a/tests/v2/product/ocr.spec.ts +++ b/tests/v2/product/ocr.spec.ts @@ -1,5 +1,6 @@ +import path from "path"; import assert from "node:assert/strict"; -import path from "node:path"; +import { describe, it } from "node:test"; import { ocr } from "@/v2/product/index.js"; import { Polygon } from "@/geometry/index.js"; diff --git a/tests/v2/product/split.spec.ts b/tests/v2/product/split.spec.ts index 7e8f0ed5..3ae78eba 100644 --- a/tests/v2/product/split.spec.ts +++ b/tests/v2/product/split.spec.ts @@ -1,5 +1,6 @@ +import path from "path"; import assert from "node:assert/strict"; -import path from "node:path"; +import { describe, it } from "node:test"; import { split } from "@/v2/product/index.js"; import { V2_PRODUCT_PATH } from "../../index.js"; diff --git a/tests/v2/product/splitParameter.spec.ts b/tests/v2/product/splitParameter.spec.ts index 8d08e466..7da02ba9 100644 --- a/tests/v2/product/splitParameter.spec.ts +++ b/tests/v2/product/splitParameter.spec.ts @@ -1,4 +1,5 @@ import assert from "node:assert/strict"; +import { describe, it } from "node:test"; import { split } from "@/v2/product/index.js"; describe("MindeeV2 - Split Parameter", () => {