mirror of
https://github.com/avelino/awesome-go.git
synced 2024-11-13 11:14:37 -05:00
add tests to validate alphabetic order #342
This commit is contained in:
parent
5e111190b8
commit
8da085ef05
1 changed files with 63 additions and 0 deletions
63
repo_test.go
Normal file
63
repo_test.go
Normal file
|
@ -0,0 +1,63 @@
|
|||
package repo
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"sort"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/PuerkitoBio/goquery"
|
||||
"github.com/russross/blackfriday"
|
||||
)
|
||||
|
||||
func TestAlpha(t *testing.T) {
|
||||
query := startQuery()
|
||||
|
||||
query.Find("body > ul").Each(func(_ int, s *goquery.Selection) {
|
||||
testList(t, s)
|
||||
})
|
||||
}
|
||||
|
||||
func testList(t *testing.T, list *goquery.Selection) {
|
||||
list.Find("ul").Each(func(_ int, items *goquery.Selection) {
|
||||
testList(t, items)
|
||||
items.RemoveFiltered("ul")
|
||||
})
|
||||
checkAlphabeticOrder(t, list)
|
||||
}
|
||||
|
||||
func readme() []byte {
|
||||
input, _ := ioutil.ReadFile("./README.md")
|
||||
html := append([]byte("<body>"), blackfriday.MarkdownCommon(input)...)
|
||||
html = append(html, []byte("</body>")...)
|
||||
return html
|
||||
}
|
||||
|
||||
func startQuery() *goquery.Document {
|
||||
ioutil.WriteFile("z.html", readme(), os.ModePerm)
|
||||
|
||||
buf := bytes.NewBuffer(readme())
|
||||
query, _ := goquery.NewDocumentFromReader(buf)
|
||||
|
||||
return query
|
||||
}
|
||||
|
||||
func checkAlphabeticOrder(t *testing.T, s *goquery.Selection) {
|
||||
items := s.Find("li > a:first-child").Map(func(_ int, li *goquery.Selection) string {
|
||||
return strings.ToLower(li.Text())
|
||||
})
|
||||
|
||||
sorted := make([]string, len(items))
|
||||
copy(sorted, items)
|
||||
sort.Strings(sorted)
|
||||
|
||||
for k, item := range items {
|
||||
log.Println("Current: ", item, "=> ", sorted[k])
|
||||
if item != sorted[k] {
|
||||
t.Fatalf("expected '%s' but actual is '%s'", sorted[k], item)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue