bookshark 1.0.0.pre.2 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +30 -30
- data/bookshark.gemspec +1 -0
- data/lib/bookshark.rb +35 -7
- data/lib/bookshark/crawlers/base.rb +11 -9
- data/lib/bookshark/crawlers/bibliographical_record_crawler.rb +43 -0
- data/lib/bookshark/crawlers/book_crawler.rb +42 -54
- data/lib/bookshark/extractors/bibliographical_book_extractor.rb +57 -35
- data/lib/bookshark/extractors/book_extractor.rb +9 -1
- data/lib/bookshark/storage/json_book_records/0/book_63.json +61 -0
- data/lib/bookshark/storage/json_book_records/0/book_67.json +53 -0
- data/lib/bookshark/storage/json_book_records/2/book_2110.json +59 -0
- data/lib/bookshark/storage/json_book_records/2/book_2111.json +65 -0
- data/lib/bookshark/storage/json_book_records/2/book_2112.json +69 -0
- data/lib/bookshark/storage/json_book_records/2/book_2113.json +59 -0
- data/lib/bookshark/storage/json_book_records/2/book_2114.json +67 -0
- data/lib/bookshark/storage/json_book_records/2/book_2115.json +71 -0
- data/lib/bookshark/storage/json_book_records/2/book_2116.json +63 -0
- data/lib/bookshark/storage/json_book_records/2/book_2117.json +61 -0
- data/lib/bookshark/storage/json_book_records/2/book_2118.json +83 -0
- data/lib/bookshark/storage/json_book_records/2/book_2119.json +69 -0
- data/lib/bookshark/storage/json_book_records/2/book_2120.json +69 -0
- data/lib/bookshark/storage/json_book_records/2/book_2121.json +63 -0
- data/lib/bookshark/storage/json_book_records/2/book_2122.json +72 -0
- data/lib/bookshark/storage/json_book_records/2/book_2123.json +67 -0
- data/lib/bookshark/storage/json_book_records/2/book_2124.json +72 -0
- data/lib/bookshark/storage/json_book_records/2/book_2125.json +67 -0
- data/lib/bookshark/storage/json_book_records/2/book_2126.json +72 -0
- data/lib/bookshark/storage/json_book_records/2/book_2127.json +61 -0
- data/lib/bookshark/storage/json_book_records/2/book_2128.json +61 -0
- data/lib/bookshark/storage/json_book_records/2/book_2129.json +61 -0
- data/lib/bookshark/storage/json_book_records/2/book_2130.json +72 -0
- data/lib/bookshark/storage/json_book_records/2/book_2131.json +55 -0
- data/lib/bookshark/storage/json_book_records/2/book_2132.json +61 -0
- data/lib/bookshark/storage/json_book_records/2/book_2133.json +61 -0
- data/lib/bookshark/storage/json_book_records/2/book_2134.json +61 -0
- data/lib/bookshark/storage/json_book_records/2/book_2135.json +55 -0
- data/lib/bookshark/storage/json_book_records/2/book_2136.json +67 -0
- data/lib/bookshark/storage/json_book_records/2/book_2137.json +67 -0
- data/lib/bookshark/storage/json_book_records/2/book_2138.json +57 -0
- data/lib/bookshark/storage/json_book_records/2/book_2139.json +67 -0
- data/lib/bookshark/storage/json_book_records/2/book_2140.json +53 -0
- data/lib/bookshark/storage/json_book_records/2/book_2141.json +61 -0
- data/lib/bookshark/storage/json_book_records/2/book_2142.json +67 -0
- data/lib/bookshark/storage/json_book_records/2/book_2143.json +65 -0
- data/lib/bookshark/storage/json_book_records/2/book_2144.json +64 -0
- data/lib/bookshark/storage/json_book_records/2/book_2145.json +53 -0
- data/lib/bookshark/storage/json_book_records/2/book_2146.json +70 -0
- data/lib/bookshark/storage/json_book_records/2/book_2147.json +67 -0
- data/lib/bookshark/storage/json_book_records/2/book_2148.json +66 -0
- data/lib/bookshark/storage/json_book_records/2/book_2149.json +72 -0
- data/lib/bookshark/storage/json_book_records/2/book_2150.json +53 -0
- data/lib/bookshark/storage/json_book_records/2/book_2151.json +67 -0
- data/lib/bookshark/storage/json_book_records/2/book_2152.json +67 -0
- data/lib/bookshark/storage/json_book_records/2/book_2153.json +67 -0
- data/lib/bookshark/storage/json_book_records/2/book_2154.json +67 -0
- data/lib/bookshark/storage/json_book_records/2/book_2155.json +67 -0
- data/lib/bookshark/storage/json_book_records/2/book_2156.json +76 -0
- data/lib/bookshark/storage/json_book_records/2/book_2157.json +65 -0
- data/lib/bookshark/storage/json_book_records/2/book_2158.json +77 -0
- data/lib/bookshark/storage/json_book_records/2/book_2159.json +76 -0
- data/lib/bookshark/storage/json_book_records/2/book_2160.json +67 -0
- data/lib/bookshark/storage/json_book_records/2/book_2161.json +61 -0
- data/lib/bookshark/storage/json_book_records/2/book_2162.json +65 -0
- data/lib/bookshark/storage/json_book_records/2/book_2163.json +68 -0
- data/lib/bookshark/storage/json_book_records/2/book_2164.json +59 -0
- data/lib/bookshark/storage/json_book_records/2/book_2165.json +59 -0
- data/lib/bookshark/storage/json_book_records/2/book_2166.json +53 -0
- data/lib/bookshark/storage/json_book_records/2/book_2167.json +53 -0
- data/lib/bookshark/storage/json_book_records/2/book_2168.json +53 -0
- data/lib/bookshark/storage/json_book_records/2/book_2169.json +53 -0
- data/lib/bookshark/storage/json_book_records/2/book_2170.json +53 -0
- data/lib/bookshark/version.rb +1 -1
- data/spec/bookshark_spec.rb +62 -46
- data/spec/spec_helper.rb +2 -1
- data/spec/test_data/bg_record_103788.html +1 -0
- data/spec/test_data/book_103788.html +1 -0
- metadata +88 -5
@@ -0,0 +1,59 @@
|
|
1
|
+
{
|
2
|
+
"book": [
|
3
|
+
{
|
4
|
+
"title": "Round-Up 5",
|
5
|
+
"subtitle": "English Grammar Practice",
|
6
|
+
"image": null,
|
7
|
+
"author": [
|
8
|
+
{
|
9
|
+
"name": "Virginia Evans",
|
10
|
+
"b_id": "916"
|
11
|
+
}
|
12
|
+
],
|
13
|
+
"contributors": {
|
14
|
+
"εικονογράφηση": [
|
15
|
+
{
|
16
|
+
"name": "Philip Vazakas",
|
17
|
+
"b_id": "525"
|
18
|
+
}
|
19
|
+
]
|
20
|
+
},
|
21
|
+
"publisher": {
|
22
|
+
"text": "Express Publishing",
|
23
|
+
"b_id": "56"
|
24
|
+
},
|
25
|
+
"isbn": "960-7212-69-",
|
26
|
+
"isbn_13": "978-960-7212-69-6",
|
27
|
+
"award": [
|
28
|
+
|
29
|
+
],
|
30
|
+
"description": null,
|
31
|
+
"category": [
|
32
|
+
{
|
33
|
+
"ddc": "420.24",
|
34
|
+
"name": "Αγγλική γλώσσα - Διδακτικά βιβλία για ξένους",
|
35
|
+
"b_id": "341"
|
36
|
+
}
|
37
|
+
],
|
38
|
+
"b_id": "2164",
|
39
|
+
"publication": {
|
40
|
+
"year": "1998",
|
41
|
+
"version": "2",
|
42
|
+
"place": "Αθήνα"
|
43
|
+
},
|
44
|
+
"format": "Βιβλίο",
|
45
|
+
"original_language": null,
|
46
|
+
"original_title": null,
|
47
|
+
"price": "20,89",
|
48
|
+
"availability": "Έχει αποσυρθεί από την κυκλοφορία",
|
49
|
+
"last_update": null,
|
50
|
+
"series": {
|
51
|
+
},
|
52
|
+
"physical_description": {
|
53
|
+
"pages": "195",
|
54
|
+
"size": "28x21",
|
55
|
+
"cover_type": "Μαλακό εξώφυλλο"
|
56
|
+
}
|
57
|
+
}
|
58
|
+
]
|
59
|
+
}
|
@@ -0,0 +1,59 @@
|
|
1
|
+
{
|
2
|
+
"book": [
|
3
|
+
{
|
4
|
+
"title": "Round-Up 6",
|
5
|
+
"subtitle": "English Grammar Practice",
|
6
|
+
"image": null,
|
7
|
+
"author": [
|
8
|
+
{
|
9
|
+
"name": "V. Pagoulatou - Vlachou",
|
10
|
+
"b_id": "1032"
|
11
|
+
}
|
12
|
+
],
|
13
|
+
"contributors": {
|
14
|
+
"εικονογράφηση": [
|
15
|
+
{
|
16
|
+
"name": "Philip Vazakas",
|
17
|
+
"b_id": "525"
|
18
|
+
}
|
19
|
+
]
|
20
|
+
},
|
21
|
+
"publisher": {
|
22
|
+
"text": "Express Publishing",
|
23
|
+
"b_id": "56"
|
24
|
+
},
|
25
|
+
"isbn": "960-7212-86-",
|
26
|
+
"isbn_13": "978-960-7212-86-3",
|
27
|
+
"award": [
|
28
|
+
|
29
|
+
],
|
30
|
+
"description": null,
|
31
|
+
"category": [
|
32
|
+
{
|
33
|
+
"ddc": "420.24",
|
34
|
+
"name": "Αγγλική γλώσσα - Διδακτικά βιβλία για ξένους",
|
35
|
+
"b_id": "341"
|
36
|
+
}
|
37
|
+
],
|
38
|
+
"b_id": "2165",
|
39
|
+
"publication": {
|
40
|
+
"year": "1998",
|
41
|
+
"version": "2",
|
42
|
+
"place": "Αθήνα"
|
43
|
+
},
|
44
|
+
"format": "Βιβλίο",
|
45
|
+
"original_language": null,
|
46
|
+
"original_title": null,
|
47
|
+
"price": "21,26",
|
48
|
+
"availability": "Έχει αποσυρθεί από την κυκλοφορία",
|
49
|
+
"last_update": null,
|
50
|
+
"series": {
|
51
|
+
},
|
52
|
+
"physical_description": {
|
53
|
+
"pages": "256",
|
54
|
+
"size": "28x21",
|
55
|
+
"cover_type": "Μαλακό εξώφυλλο"
|
56
|
+
}
|
57
|
+
}
|
58
|
+
]
|
59
|
+
}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
{
|
2
|
+
"book": [
|
3
|
+
{
|
4
|
+
"title": "Round-Up 1",
|
5
|
+
"subtitle": "English Grammar Practice: Teacher's Guide",
|
6
|
+
"image": null,
|
7
|
+
"author": [
|
8
|
+
{
|
9
|
+
"name": "V. Pagoulatou - Vlachou",
|
10
|
+
"b_id": "1032"
|
11
|
+
}
|
12
|
+
],
|
13
|
+
"contributors": {
|
14
|
+
},
|
15
|
+
"publisher": {
|
16
|
+
"text": "Express Publishing",
|
17
|
+
"b_id": "56"
|
18
|
+
},
|
19
|
+
"isbn": "960-7212-61-4",
|
20
|
+
"isbn_13": "978-960-7212-61-0",
|
21
|
+
"award": [
|
22
|
+
|
23
|
+
],
|
24
|
+
"description": null,
|
25
|
+
"category": [
|
26
|
+
{
|
27
|
+
"ddc": "420.24",
|
28
|
+
"name": "Αγγλική γλώσσα - Διδακτικά βιβλία για ξένους",
|
29
|
+
"b_id": "341"
|
30
|
+
}
|
31
|
+
],
|
32
|
+
"b_id": "2166",
|
33
|
+
"publication": {
|
34
|
+
"year": "1992",
|
35
|
+
"version": "1",
|
36
|
+
"place": "Αθήνα"
|
37
|
+
},
|
38
|
+
"format": "Βιβλίο",
|
39
|
+
"original_language": null,
|
40
|
+
"original_title": null,
|
41
|
+
"price": "6,46",
|
42
|
+
"availability": "Έχει αποσυρθεί από την κυκλοφορία",
|
43
|
+
"last_update": null,
|
44
|
+
"series": {
|
45
|
+
},
|
46
|
+
"physical_description": {
|
47
|
+
"pages": "56",
|
48
|
+
"size": "28x21",
|
49
|
+
"cover_type": "Μαλακό εξώφυλλο"
|
50
|
+
}
|
51
|
+
}
|
52
|
+
]
|
53
|
+
}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
{
|
2
|
+
"book": [
|
3
|
+
{
|
4
|
+
"title": "Round-Up 2",
|
5
|
+
"subtitle": "English Grammar Practice: Teacher's Guide",
|
6
|
+
"image": null,
|
7
|
+
"author": [
|
8
|
+
{
|
9
|
+
"name": "V. Pagoulatou - Vlachou",
|
10
|
+
"b_id": "1032"
|
11
|
+
}
|
12
|
+
],
|
13
|
+
"contributors": {
|
14
|
+
},
|
15
|
+
"publisher": {
|
16
|
+
"text": "Express Publishing",
|
17
|
+
"b_id": "56"
|
18
|
+
},
|
19
|
+
"isbn": "960-7212-62-2",
|
20
|
+
"isbn_13": "978-960-7212-62-7",
|
21
|
+
"award": [
|
22
|
+
|
23
|
+
],
|
24
|
+
"description": null,
|
25
|
+
"category": [
|
26
|
+
{
|
27
|
+
"ddc": "420.24",
|
28
|
+
"name": "Αγγλική γλώσσα - Διδακτικά βιβλία για ξένους",
|
29
|
+
"b_id": "341"
|
30
|
+
}
|
31
|
+
],
|
32
|
+
"b_id": "2167",
|
33
|
+
"publication": {
|
34
|
+
"year": "1992",
|
35
|
+
"version": "1",
|
36
|
+
"place": "Αθήνα"
|
37
|
+
},
|
38
|
+
"format": "Βιβλίο",
|
39
|
+
"original_language": null,
|
40
|
+
"original_title": null,
|
41
|
+
"price": "6,77",
|
42
|
+
"availability": "Έχει αποσυρθεί από την κυκλοφορία",
|
43
|
+
"last_update": null,
|
44
|
+
"series": {
|
45
|
+
},
|
46
|
+
"physical_description": {
|
47
|
+
"pages": "68",
|
48
|
+
"size": "28x21",
|
49
|
+
"cover_type": "Μαλακό εξώφυλλο"
|
50
|
+
}
|
51
|
+
}
|
52
|
+
]
|
53
|
+
}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
{
|
2
|
+
"book": [
|
3
|
+
{
|
4
|
+
"title": "Round-Up 3",
|
5
|
+
"subtitle": "English Grammar Practice: Teacher's Guide",
|
6
|
+
"image": null,
|
7
|
+
"author": [
|
8
|
+
{
|
9
|
+
"name": "V. Pagoulatou Vlachou",
|
10
|
+
"b_id": "1032"
|
11
|
+
}
|
12
|
+
],
|
13
|
+
"contributors": {
|
14
|
+
},
|
15
|
+
"publisher": {
|
16
|
+
"text": "Express Publishing",
|
17
|
+
"b_id": "56"
|
18
|
+
},
|
19
|
+
"isbn": "960-7212-70-3",
|
20
|
+
"isbn_13": "978-960-7212-70-2",
|
21
|
+
"award": [
|
22
|
+
|
23
|
+
],
|
24
|
+
"description": null,
|
25
|
+
"category": [
|
26
|
+
{
|
27
|
+
"ddc": "420.24",
|
28
|
+
"name": "Αγγλική γλώσσα - Διδακτικά βιβλία για ξένους",
|
29
|
+
"b_id": "341"
|
30
|
+
}
|
31
|
+
],
|
32
|
+
"b_id": "2168",
|
33
|
+
"publication": {
|
34
|
+
"year": "1993",
|
35
|
+
"version": "1",
|
36
|
+
"place": "Αθήνα"
|
37
|
+
},
|
38
|
+
"format": "Βιβλίο",
|
39
|
+
"original_language": null,
|
40
|
+
"original_title": null,
|
41
|
+
"price": "7,56",
|
42
|
+
"availability": "Έχει αποσυρθεί από την κυκλοφορία",
|
43
|
+
"last_update": null,
|
44
|
+
"series": {
|
45
|
+
},
|
46
|
+
"physical_description": {
|
47
|
+
"pages": "102",
|
48
|
+
"size": "28x21",
|
49
|
+
"cover_type": "Μαλακό εξώφυλλο"
|
50
|
+
}
|
51
|
+
}
|
52
|
+
]
|
53
|
+
}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
{
|
2
|
+
"book": [
|
3
|
+
{
|
4
|
+
"title": "Round-Up 4",
|
5
|
+
"subtitle": "English Grammar Practice. Teacher's Guide",
|
6
|
+
"image": null,
|
7
|
+
"author": [
|
8
|
+
{
|
9
|
+
"name": "V. Pagoulatou - Vlachou",
|
10
|
+
"b_id": "1032"
|
11
|
+
}
|
12
|
+
],
|
13
|
+
"contributors": {
|
14
|
+
},
|
15
|
+
"publisher": {
|
16
|
+
"text": "Express Publishing",
|
17
|
+
"b_id": "56"
|
18
|
+
},
|
19
|
+
"isbn": "960-7212-71-1",
|
20
|
+
"isbn_13": "978-960-7212-71-9",
|
21
|
+
"award": [
|
22
|
+
|
23
|
+
],
|
24
|
+
"description": null,
|
25
|
+
"category": [
|
26
|
+
{
|
27
|
+
"ddc": "420.24",
|
28
|
+
"name": "Αγγλική γλώσσα - Διδακτικά βιβλία για ξένους",
|
29
|
+
"b_id": "341"
|
30
|
+
}
|
31
|
+
],
|
32
|
+
"b_id": "2169",
|
33
|
+
"publication": {
|
34
|
+
"year": "1998",
|
35
|
+
"version": "2",
|
36
|
+
"place": "Αθήνα"
|
37
|
+
},
|
38
|
+
"format": "Βιβλίο",
|
39
|
+
"original_language": null,
|
40
|
+
"original_title": null,
|
41
|
+
"price": "7,56",
|
42
|
+
"availability": "Έχει αποσυρθεί από την κυκλοφορία",
|
43
|
+
"last_update": null,
|
44
|
+
"series": {
|
45
|
+
},
|
46
|
+
"physical_description": {
|
47
|
+
"pages": "120",
|
48
|
+
"size": "28x21",
|
49
|
+
"cover_type": "Μαλακό εξώφυλλο"
|
50
|
+
}
|
51
|
+
}
|
52
|
+
]
|
53
|
+
}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
{
|
2
|
+
"book": [
|
3
|
+
{
|
4
|
+
"title": "Round-Up 5",
|
5
|
+
"subtitle": "English Grammar Practice: Teacher's Guide",
|
6
|
+
"image": null,
|
7
|
+
"author": [
|
8
|
+
{
|
9
|
+
"name": "Virginia Evans",
|
10
|
+
"b_id": "916"
|
11
|
+
}
|
12
|
+
],
|
13
|
+
"contributors": {
|
14
|
+
},
|
15
|
+
"publisher": {
|
16
|
+
"text": "Express Publishing",
|
17
|
+
"b_id": "56"
|
18
|
+
},
|
19
|
+
"isbn": "960-7212-72-",
|
20
|
+
"isbn_13": "978-960-7212-72-6",
|
21
|
+
"award": [
|
22
|
+
|
23
|
+
],
|
24
|
+
"description": null,
|
25
|
+
"category": [
|
26
|
+
{
|
27
|
+
"ddc": "420.24",
|
28
|
+
"name": "Αγγλική γλώσσα - Διδακτικά βιβλία για ξένους",
|
29
|
+
"b_id": "341"
|
30
|
+
}
|
31
|
+
],
|
32
|
+
"b_id": "2170",
|
33
|
+
"publication": {
|
34
|
+
"year": "1998",
|
35
|
+
"version": "2",
|
36
|
+
"place": "Αθήνα"
|
37
|
+
},
|
38
|
+
"format": "Βιβλίο",
|
39
|
+
"original_language": null,
|
40
|
+
"original_title": null,
|
41
|
+
"price": "7,56",
|
42
|
+
"availability": "Έχει αποσυρθεί από την κυκλοφορία",
|
43
|
+
"last_update": null,
|
44
|
+
"series": {
|
45
|
+
},
|
46
|
+
"physical_description": {
|
47
|
+
"pages": "168",
|
48
|
+
"size": "28x21",
|
49
|
+
"cover_type": "Μαλακό εξώφυλλο"
|
50
|
+
}
|
51
|
+
}
|
52
|
+
]
|
53
|
+
}
|
data/lib/bookshark/version.rb
CHANGED
data/spec/bookshark_spec.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
# encoding: utf-8
|
3
3
|
|
4
4
|
require 'spec_helper'
|
5
|
+
WebMock.allow_net_connect!
|
5
6
|
|
6
7
|
describe Bookshark::Extractor do
|
7
8
|
subject { Bookshark::Extractor.new(format: 'pretty_json') }
|
@@ -26,23 +27,23 @@ describe Bookshark::Extractor do
|
|
26
27
|
end
|
27
28
|
it 'reads html from the web based on given uri and extracts author data' do
|
28
29
|
expect(subject.author(uri: "http://biblionet.gr/author/13219")).to eq author_13219
|
29
|
-
end
|
30
|
+
end
|
30
31
|
end
|
31
32
|
context 'when the author doesnt exist' do
|
32
33
|
it 'returns an empty array' do
|
33
34
|
expect(subject.author(id: 0)).to eq empty_author
|
34
|
-
end
|
35
|
-
end
|
35
|
+
end
|
36
|
+
end
|
36
37
|
context 'when no options are set' do
|
37
38
|
it 'returns an empty array' do
|
38
39
|
expect(subject.author).to eq empty_author
|
39
|
-
end
|
40
|
-
end
|
40
|
+
end
|
41
|
+
end
|
41
42
|
context 'when a the given uri is wrong' do
|
42
43
|
it 'returns an empty array' do
|
43
44
|
expect(subject.author(uri: "http://google.com")).to eq empty_author
|
44
|
-
end
|
45
|
-
end
|
45
|
+
end
|
46
|
+
end
|
46
47
|
end
|
47
48
|
|
48
49
|
context 'from local storage' do
|
@@ -61,24 +62,24 @@ describe Bookshark::Extractor do
|
|
61
62
|
end
|
62
63
|
it 'reads html from the web based on given uri and extracts publisher data' do
|
63
64
|
expect(subject.publisher(uri: "http://biblionet.gr/com/20")).to eq publisher_20
|
64
|
-
end
|
65
|
+
end
|
65
66
|
end
|
66
67
|
context 'when the publisher doesnt exist' do
|
67
68
|
it 'returns an empty array' do
|
68
69
|
expect(subject.publisher(id: 0)).to eq empty_publisher
|
69
|
-
end
|
70
|
-
end
|
70
|
+
end
|
71
|
+
end
|
71
72
|
context 'when no options are set' do
|
72
73
|
it 'returns an empty array' do
|
73
74
|
expect(subject.publisher).to eq empty_publisher
|
74
|
-
end
|
75
|
-
end
|
75
|
+
end
|
76
|
+
end
|
76
77
|
context 'when a the given uri is wrong' do
|
77
78
|
it 'returns an empty array' do
|
78
79
|
expect(subject.publisher(uri: "http://google.com")).to eq empty_publisher
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
82
83
|
end
|
83
84
|
|
84
85
|
describe '#category' do
|
@@ -94,19 +95,19 @@ describe Bookshark::Extractor do
|
|
94
95
|
context 'when the category doesnt exist' do
|
95
96
|
it 'returns an empty array' do
|
96
97
|
expect(subject.category(id: 0)).to eq empty_category
|
97
|
-
end
|
98
|
-
end
|
98
|
+
end
|
99
|
+
end
|
99
100
|
context 'when no options are set' do
|
100
101
|
it 'returns an empty array' do
|
101
102
|
expect(subject.category).to eq empty_category
|
102
|
-
end
|
103
|
-
end
|
103
|
+
end
|
104
|
+
end
|
104
105
|
context 'when a the given uri is wrong' do
|
105
106
|
it 'returns an empty array' do
|
106
107
|
expect(subject.category(uri: "http://google.com")).to eq empty_category
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
110
111
|
end
|
111
112
|
|
112
113
|
describe '#book' do
|
@@ -118,7 +119,7 @@ describe Bookshark::Extractor do
|
|
118
119
|
|
119
120
|
it 'reads html from the web based on given uri and extracts book data' do
|
120
121
|
expect(subject.book(uri: "http://biblionet.gr/book/103788")).to eq book_103788
|
121
|
-
end
|
122
|
+
end
|
122
123
|
|
123
124
|
it 'reads html from the web and eager extracts all book and reference data' do
|
124
125
|
expect(subject.book(id: 184923, eager: true)).to eq eager_book_184923
|
@@ -126,34 +127,49 @@ describe Bookshark::Extractor do
|
|
126
127
|
|
127
128
|
it 'reads html from the web based on given isbn and extracts book data' do
|
128
129
|
expect(subject.book(isbn: '960-14-1157-7')).to eq book_103788
|
129
|
-
end
|
130
|
+
end
|
130
131
|
|
131
132
|
it 'reads html from the web based on given isbn-13 and extracts book data' do
|
132
133
|
expect(subject.book(isbn: '978-960-14-1157-6')).to eq book_103788
|
133
|
-
end
|
134
|
+
end
|
134
135
|
end
|
136
|
+
|
135
137
|
context 'when the book doesnt exist' do
|
136
138
|
it 'returns an empty array' do
|
137
139
|
expect(subject.book(id: 0)).to eq empty_book
|
138
|
-
end
|
139
|
-
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
140
143
|
context 'when the books isbn is nonsense' do
|
141
144
|
it 'returns an empty array' do
|
142
145
|
expect(subject.book(isbn: 'wrong-isbn')).to eq empty_book
|
143
|
-
end
|
144
|
-
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
145
149
|
context 'when no options are set' do
|
146
150
|
it 'returns an empty array' do
|
147
151
|
expect(subject.book).to eq empty_book
|
148
|
-
end
|
149
|
-
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
150
155
|
context 'when a the given uri is wrong' do
|
151
156
|
it 'returns an empty array' do
|
152
157
|
expect(subject.book(uri: "http://google.com")).to eq empty_book
|
153
|
-
end
|
154
|
-
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
context 'extract from local storage (book and bibliographical record)' do
|
163
|
+
before do
|
164
|
+
stub_request(:any, /.*/).to_return(body: "errors", status: 422)
|
165
|
+
end
|
166
|
+
it 'reads html from local storage based on given id and extracts book data' do
|
167
|
+
file_name = File.expand_path("test_data/book_103788.html", File.dirname(__FILE__))
|
168
|
+
expect(subject.book(uri: file_name)).to eq book_103788
|
169
|
+
end
|
155
170
|
end
|
156
|
-
|
171
|
+
|
172
|
+
end
|
157
173
|
|
158
174
|
describe '#search' do
|
159
175
|
context 'search and extract from remote html source' do
|
@@ -164,21 +180,21 @@ describe Bookshark::Extractor do
|
|
164
180
|
|
165
181
|
it 'builds a search url and extracts book data from search page' do
|
166
182
|
expect(subject.search(title: 'σημεια και τερατα', results_type: 'metadata')).to eq search_01
|
167
|
-
end
|
183
|
+
end
|
168
184
|
end
|
169
|
-
context 'when no books are found' do
|
185
|
+
context 'when no books are found' do
|
170
186
|
it 'returns an empty array' do
|
171
187
|
expect(subject.search(isbn: 'some-invalid-isbn')).to eq empty_book
|
172
|
-
end
|
173
|
-
end
|
188
|
+
end
|
189
|
+
end
|
174
190
|
context 'when no options are set' do
|
175
191
|
it 'returns an empty array' do
|
176
192
|
expect(subject.search).to eq empty_book
|
177
|
-
end
|
178
|
-
end
|
179
|
-
end
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
180
196
|
end
|
181
|
-
|
197
|
+
|
182
198
|
|
183
199
|
describe '#process_options' do
|
184
200
|
context 'with valid options' do
|
@@ -196,7 +212,7 @@ describe Bookshark::Extractor do
|
|
196
212
|
|
197
213
|
it 'returns the given uri if uri option is set even if other options are set' do
|
198
214
|
expect(subject.send(:process_options, {uri:'http://www.biblionet.gr/book/87', id: 56, local: true}, 'book')).to eq("http://www.biblionet.gr/book/87")
|
199
|
-
end
|
215
|
+
end
|
200
216
|
end
|
201
217
|
|
202
218
|
context 'with invalid options' do
|
@@ -206,8 +222,8 @@ describe Bookshark::Extractor do
|
|
206
222
|
end
|
207
223
|
end
|
208
224
|
|
209
|
-
describe 'Biblionet::Extractors::BibliographicalBook' do
|
210
|
-
|
225
|
+
describe 'Biblionet::Extractors::BibliographicalBook' do
|
226
|
+
|
211
227
|
end
|
212
228
|
|
213
|
-
end
|
229
|
+
end
|