-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwikr_test.go
134 lines (105 loc) · 2.99 KB
/
wikr_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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package main
import (
"testing"
"os"
"time"
)
func TestMain(m *testing.M) {
createEmptyCacheFileIfNotExists()
// Run tests
code := m.Run()
// Teardown
os.Remove(getCachePath())
os.Exit(code)
}
func TestGetCachePath(t *testing.T) {
path := getCachePath()
if path == "" {
t.Error("getCachePath sollte einen nicht-leeren Pfad zurückgeben")
}
}
func TestLoadAndSaveCache(t *testing.T) {
// Erstelle einen Test-Cache
testCache := Cache{
"de:Test": CacheEntry{
Summary: "Dies ist ein Test",
URL: "https://de.wikipedia.org/wiki/Test",
Timestamp: time.Now(),
},
}
// Speichere den Test-Cache
saveCache(testCache)
// Lade den Cache
loadedCache := loadCache()
// Überprüfe, ob der geladene Cache den Test-Eintrag enthält
entry, exists := loadedCache["de:Test"]
if !exists {
t.Error("Der geladene Cache sollte den Test-Eintrag enthalten")
}
if entry.Summary != "Dies ist ein Test" {
t.Errorf("Erwartete Zusammenfassung 'Dies ist ein Test', erhielt '%s'", entry.Summary)
}
// Lösche den Test-Eintrag aus dem Cache
delete(loadedCache, "de:Test")
saveCache(loadedCache)
}
func TestGetAndSetCachedEntry(t *testing.T) {
// Setze einen Test-Eintrag
setCachedEntry("de", "TestArtikel", "Dies ist ein Test-Artikel", "https://de.wikipedia.org/wiki/TestArtikel")
// Hole den Test-Eintrag
summary, url, found := getCachedEntry("de", "TestArtikel")
if !found {
t.Error("Der Test-Eintrag sollte im Cache gefunden werden")
}
if summary != "Dies ist ein Test-Artikel" {
t.Errorf("Erwartete Zusammenfassung 'Dies ist ein Test-Artikel', erhielt '%s'", summary)
}
if url != "https://de.wikipedia.org/wiki/TestArtikel" {
t.Errorf("Erwartete URL 'https://de.wikipedia.org/wiki/TestArtikel', erhielt '%s'", url)
}
// Lösche die Test-Cache-Datei
os.Remove(getCachePath())
}
func TestSearchWikipedia(t *testing.T) {
results, err := searchWikipedia("de", "Berlin")
if err != nil {
t.Errorf("searchWikipedia sollte keinen Fehler zurückgeben: %v", err)
}
if len(results) == 0 {
t.Error("searchWikipedia sollte Ergebnisse für 'Berlin' zurückgeben")
}
foundBerlin := false
for _, result := range results {
if result == "Berlin" {
foundBerlin = true
break
}
}
if !foundBerlin {
t.Error("'Berlin' sollte in den Suchergebnissen enthalten sein")
}
}
func TestGetWikipediaSummary(t *testing.T) {
summary, url, cached, err := getWikipediaSummary("de", "Berlin")
if err != nil {
t.Errorf("getWikipediaSummary sollte keinen Fehler zurückgeben: %v", err)
}
if summary == "" {
t.Error("Die Zusammenfassung sollte nicht leer sein")
}
if url == "" {
t.Error("Die URL sollte nicht leer sein")
}
if cached {
t.Error("Der erste Aufruf sollte nicht aus dem Cache kommen")
}
// Zweiter Aufruf sollte aus dem Cache kommen
_, _, cached, _ = getWikipediaSummary("de", "Berlin")
if !cached {
t.Error("Der zweite Aufruf sollte aus dem Cache kommen")
}
// Lösche den Test-Eintrag aus dem Cache
cache := loadCache()
delete(cache, "de:Berlin")
saveCache(cache)
}