ref: d950385eaaa5e22a8e13744a7b7b12b1c59516f8
dir: /nodes/nodes_test.go/
package nodes import ( "bytes" "encoding/json" "golang.org/x/net/html" "github.com/psilva261/opossum/style" "strings" "testing" ) func TestFilterText(t *testing.T) { in := "ebenfalls" exp := "ebenfalls" if out := filterText(in); out != exp { t.Fatalf("%+v", out) } } func TestQueryRef(t *testing.T) { buf := strings.NewReader(` <html> <body> <p> <b>bold stuff</b> <i>italic stuff</i> <a>link</a> </p> </body> </html>`) doc, err := html.Parse(buf) if err != nil { t.Fatalf(err.Error()) } nt := NewNodeTree(doc, style.Map{}, make(map[*html.Node]style.Map), nil) p := nt.Children[0].Children[1].Children[1] a := p.Children[5] if q := a.QueryRef(); q != "p:nth-child(1) > a:nth-child(3)" { t.Fatalf("%v", q) } } func TestSetText(t *testing.T) { buf := strings.NewReader("<textarea>initial</textarea>") doc, err := html.Parse(buf) if err != nil { t.Fatalf(err.Error()) } n := NewNodeTree(doc, style.Map{}, make(map[*html.Node]style.Map), nil) if s := n.ContentString(false); s != "initial" { t.Fatalf(s) } n.SetText("123") if s := n.ContentString(false); s != "123" { t.Fatalf(s) } } func TestNewNodeTree(t *testing.T) { buf := strings.NewReader(` <html> <body style="width: 900px; height: 700px; font-size: 12px;"> <p> <b style="height: 100px;">bold stuff</b> </p> </body> </html>`) doc, err := html.Parse(buf) if err != nil { t.Fatalf(err.Error()) } n := NewNodeTree(doc, style.Map{}, make(map[*html.Node]style.Map), nil) body := n.Find("body") bodyW := body.Map.Css("width") bodyH := body.Map.Css("height") bodyF := body.Map.Css("font-size") if bodyW != "900px" || bodyH != "700px" || bodyF != "12px" { t.Fatalf("<%v> w=%v h=%v f=%v", body.Data(), bodyW, bodyH, bodyF) } b := n.Find("b") bW := b.Map.Css("width") bH := b.Map.Css("height") bF := b.Map.Css("font-size") if bW != "" || bH != "100px"/* || bF != "12px"*/ { t.Fatalf("<%v> w=%v h=%v f=%v", b.Data(), bW, bH, bF) } text := b.Children[0] textF := text.Map.Css("font-size") if textF != "12px" || text.Text != "bold stuff" { t.Fatalf("%+v", text) } } func TestJsonCycles(t *testing.T) { buf := strings.NewReader(` <html> <body style="width: 900px; height: 700px; font-size: 12px;"> <p> <b style="height: 100px;">bold stuff</b> </p> </body> </html>`) doc, err := html.Parse(buf) if err != nil { t.Fatalf(err.Error()) } n := NewNodeTree(doc, style.Map{}, make(map[*html.Node]style.Map), nil) body := n.Find("body") _=body b := bytes.NewBufferString("") enc := json.NewEncoder(b) if err := enc.Encode(n); err != nil { t.Fatalf("%+v", err) } }