-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscanner.service.test.ts
64 lines (57 loc) · 2.09 KB
/
scanner.service.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import ScannerProvider from "../src/abstract/scanner.abstract.js";
import { TesseractServiceError } from "../src/error/tesseract.error.js";
import ScannerService from "../src/service/scanner.service.js";
import { ScannerRequest, Tag, Info, Flags } from "../src/types.js";
describe("ScannerService Unit Tests", () => {
let scannerService: ScannerService;
let mockScannerProvider: MockScannerProvider;
beforeAll(() => {
mockScannerProvider = new MockScannerProvider();
scannerService = new ScannerService(mockScannerProvider);
});
test("Get info from text", () => {
const info: Flags = scannerService.getMaterials(
"90% Cotton 10% Nylon Made in Canada Dry clean only",
);
expect(info).toBeInstanceOf(Object);
expect(info.country).toBe("Canada");
expect(info.tags).toHaveLength(2);
expect(info.tags[0].material).toBe("Cotton");
expect(info.tags[0].percentage).toBe("90");
expect(info.tags[1].material).toBe("Nylon");
expect(info.tags[1].percentage).toBe("10");
});
test("Get text from image", async () => {
const text: string = await scannerService.getTextFromImage({
imageUrl: "http://example.com/image.jpg",
});
expect(text).toBe("text from image");
expect(text).not.toBe("");
});
test("Get text from image with empty URL throws TesseractServiceError", async () => {
await expect(
scannerService.getTextFromImage({ imageUrl: "" }),
).rejects.toThrow(TesseractServiceError);
});
afterAll(() => {
jest.clearAllMocks();
});
});
class MockScannerProvider implements ScannerProvider {
getMaterials(text: string): Flags {
throw new Error("Method not implemented.");
}
checkPercent = (arr: Tag[]): Tag[] => {
throw new Error("Method not implemented.");
};
getSustainability = (arr: Flags): Info => {
throw new Error("Method not implemented.");
};
getTextFromImage(scannerRequest: ScannerRequest): Promise<string> {
const { imageUrl } = scannerRequest;
if (!imageUrl) {
return Promise.reject(new TesseractServiceError());
}
return Promise.resolve("text from image");
}
}