1 | const { Spider, Queue } = require("../build/index");
|
2 |
|
3 | describe("test for parameter check when initalize a spider", () => {
|
4 | test("It will still ok when option is missing, because parameter opts is no required", () => {
|
5 | let spider;
|
6 | expect(() => {
|
7 | spider = new Spider();
|
8 | }).not.toThrow();
|
9 | expect(typeof spider.add === "function").toBe(true);
|
10 | spider.end();
|
11 | });
|
12 |
|
13 | test("All will going well when parameter option is legal", () => {
|
14 | let spider;
|
15 | expect(() => {
|
16 | spider = new Spider({
|
17 | concurrency: 100,
|
18 | queue: Queue,
|
19 | rateLimit: 100,
|
20 | });
|
21 | }).not.toThrow();
|
22 | expect(typeof spider.add === "function").toBe(true);
|
23 | spider.end();
|
24 |
|
25 | let newSpider;
|
26 | expect(() => {
|
27 | newSpider = new Spider({
|
28 | concurrency: {
|
29 | "type1": 10,
|
30 | "type2": 20,
|
31 | },
|
32 | queue: Queue,
|
33 | });
|
34 | }).not.toThrow();
|
35 | expect(typeof newSpider.filter === "function").toBe(true);
|
36 | newSpider.end();
|
37 |
|
38 | expect(() => {
|
39 | spider = new Spider({
|
40 | concurrency: {
|
41 | "type1": 10,
|
42 | "type2": 20,
|
43 | },
|
44 | queue: Queue,
|
45 | rateLimit: 100,
|
46 | });
|
47 | }).not.toThrow();
|
48 | expect(typeof spider.filter === "function").toBe(true);
|
49 | spider.end();
|
50 |
|
51 | expect(() => {
|
52 | spider = new Spider({
|
53 | queue: Queue,
|
54 | });
|
55 | }).not.toThrow();
|
56 | expect(typeof spider.filter === "function").toBe(true);
|
57 | spider.end();
|
58 | });
|
59 |
|
60 | test("when parameter option is not a object, there should be a TypeError", () => {
|
61 | let spider;
|
62 | expect(() => {
|
63 | spider = new Spider(true);
|
64 | }).toThrow(TypeError);
|
65 | expect(typeof spider === "undefined").toBe(true);
|
66 |
|
67 | expect(() => {
|
68 | spider = new Spider(1000);
|
69 | }).toThrow(TypeError);
|
70 | expect(typeof spider === "undefined").toBe(true);
|
71 |
|
72 | expect(() => {
|
73 | spider = new Spider("a string");
|
74 | }).toThrow(TypeError);
|
75 | expect(typeof spider === "undefined").toBe(true);
|
76 |
|
77 | expect(() => {
|
78 | spider = new Spider(() => "this is a function");
|
79 | }).toThrow(TypeError);
|
80 | expect(typeof spider === "undefined").toBe(true);
|
81 | });
|
82 |
|
83 | test("When option's property has illegal type, there should be a TypeError throwed", () => {
|
84 | let spider;
|
85 | expect(() => {
|
86 | spider = new Spider({
|
87 | concurrency: "string",
|
88 | });
|
89 | }).toThrow(TypeError);
|
90 | expect(typeof spider === "undefined").toBe(true);
|
91 |
|
92 | expect(() => {
|
93 | spider = new Spider({
|
94 | concurrency: "string",
|
95 | rateLimit: "string",
|
96 | });
|
97 | }).toThrow(TypeError);
|
98 | expect(typeof spider === "undefined").toBe(true);
|
99 |
|
100 | expect(() => {
|
101 | spider = new Spider({
|
102 | concurrency: 233,
|
103 | rateLimit: () => "a function",
|
104 | });
|
105 | }).toThrow(TypeError);
|
106 | expect(typeof spider === "undefined").toBe(true);
|
107 |
|
108 | expect(() => {
|
109 | spider = new Spider({
|
110 | concurrency: () => "a function",
|
111 | queue: Queue,
|
112 | rateLimit: 29,
|
113 | });
|
114 | }).toThrow(TypeError);
|
115 | expect(typeof spider === "undefined").toBe(true);
|
116 | });
|
117 |
|
118 | });
|