package goh import ( "io" "strings" "testing" "github.com/stretchr/testify/assert" ) func testData() io.Reader { return strings.NewReader(` The Linux Kernel Archives

Other resources

Social

`) } 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) }