package goh
import (
"io"
"strings"
"testing"
"github.com/stretchr/testify/assert"
)
func testData() io.Reader {
return strings.NewReader(`
The Linux Kernel Archives
`)
}
func TestNewParser(t *testing.T) {
parser, err := NewParser(testData())
assert.NoError(t, err)
value, err := parser.Find("footer#contentinfo.body address#about.vcard.body a").Value()
assert.NoError(t, err)
assert.Equal(t, "501(c)3 nonprofit corporation", value)
}
func Test_parser_Find(t *testing.T) {
parser, err := NewParser(testData())
assert.NoError(t, err)
value, err := parser.Find("section#extras div.blogroll h2").Value()
assert.NoError(t, err)
assert.Equal(t, "Other resources", value)
value, err = parser.Find("section#extras div.social").Attribute("class")
assert.NoError(t, err)
assert.Equal(t, "social", value)
}
func Test_parser_FindAll(t *testing.T) {
parser, err := NewParser(testData())
assert.NoError(t, err)
values, err := parser.FindAll("section#extras div.blogroll ul li").Values("li a")
assert.NoError(t, err)
assert.Equal(t, []string{"Git Trees", "Documentation", "Kernel Mailing Lists", "Patchwork", "Wikis", "Bugzilla", "Mirrors", "Linux.com", "Linux Foundation"}, values)
attributes, err := parser.FindAll("footer#contentinfo.body address#donors a").Attributes("a img", "alt")
assert.NoError(t, err)
assert.Equal(t, []string{"Equinix Metal", "Fastly", "Constellix", "Red Hat", "PureStorage", "Google", "The Linux Foundation"}, attributes)
}
func Test_parser_Find_FindAll_Find(t *testing.T) {
parser, err := NewParser(testData())
assert.NoError(t, err)
attribute, err := parser.Find("footer#contentinfo.body").FindAll("address#donors a").Find("a img").Attribute("alt")
assert.NoError(t, err)
assert.Equal(t, "Equinix Metal", attribute)
}