-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain_test.go
78 lines (69 loc) · 1.86 KB
/
main_test.go
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package main
import (
"bytes"
"encoding/csv"
"testing"
"github.com/PuerkitoBio/goquery"
)
var DOCUMENT = `
<body>
<div class="organic-results">
<div class="result-o">
<div class="name">Organic 1</div>
<div class="url">organic1@1.com</div>
<div class="description">First organic result</div>
</div>
<div class="result-o">
<div class="name">Organic 2</div>
<div class="url">organic2@2.com</div>
</div>
</div>
<div class="local-results">
<div class="result-l">
<div class="name">Local 1</div>
<div class="description">First local result</div>
</div>
<div class="result-l">
<div class="url">local1@.com</div>
<div class="description">First local result</div>
</div>
<div class="result-l">
</div>
</div>
</body>
`
var SELECTORS = map[string]GroupSelectors{
"organic": {
Base: "div.organic-results > div.result-o",
Title: "div.name",
Url: "div.url",
Description: "div.description",
},
"local": {
Base: "div.local-results > div.result-l",
Title: "div.name",
Url: "div.url",
Description: "div.description",
},
}
var EXPECTED = "rank type,rank position,title,url,description" +
"\norganic,0,Organic 1,organic1@1.com,First organic result\n" +
"organic,1,Organic 2,organic2@2.com,\n" +
"local,0,Local 1,,First local result\n" +
"local,1,,local1@.com,First local result\n" +
"local,2,,,\n"
func TestWriteCsv(t *testing.T) {
documentBuffer := bytes.NewBufferString(DOCUMENT)
doc, err := goquery.NewDocumentFromReader(documentBuffer)
if err != nil {
t.Fatal("Error parsing the HTML document:", err)
}
resultBuffer := new(bytes.Buffer)
writer := csv.NewWriter(resultBuffer)
WriteCsv(doc, writer, SELECTORS)
writer.Flush()
result := resultBuffer.String()
if result != EXPECTED {
t.Errorf("WriteCsv(). Expected: %q, received: %q", EXPECTED, result)
}
}