UNPKG

3.7 kBJavaScriptView Raw
1const { Spider, Queue } = require("../build/index");
2
3describe("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});