Files
MujicaUI/finance/news_feed_test.go
T

53 lines
1.6 KiB
Go

package finance
import (
"testing"
"github.com/egoist/mygo/ui"
"git.zacharyzhang.com/ZacharyZhang-NY/MujicaUI/core"
)
func TestNewsFeedReadSourceSymbolsAndKeyboard(t *testing.T) {
var s NewsFeedState
var got NewsFeedView
rows := []NewsItem{{ID: "a", Title: "Alpha", Source: "Wire", Time: mktNow, Symbols: []string{"AAPL"}}, {ID: "b", Title: "Beta", Source: "Wire", Time: mktNow}}
tt := chatTester(640, 420, func(c *ui.Context) {
v := NewsFeed(c, &s, rows, NewsFeedOptions{Today: core.DateOf(mktNow)})
v.Element.Height(380)
if v.Opened != "" || v.Symbol != "" {
got = v
}
})
if !tt.HasText("2 unread") {
t.Fatalf("count %q", tt.Texts())
}
_ = tt.Click("AAPL")
if got.Symbol != "AAPL" || s.Read["a"] {
t.Fatalf("symbol %+v read %v", got, s.Read)
}
_ = tt.Click("Alpha")
if !s.Read["a"] || got.Opened != "a" {
t.Fatalf("read %v", s.Read)
}
tt.Key(0, ui.KeyDown)
tt.Key(0, ui.KeyEnter)
if !s.Read["b"] {
t.Fatal("keyboard read missing")
}
tt.Frame()
if !tt.HasText("0 unread") {
t.Fatalf("count %q", tt.Texts())
}
}
func TestNewsFeedSnapshot(t *testing.T) {
snapshot(t, "news_feed", 560, 360, func(c *ui.Context) {
ns := ui.Local(c.Root(), "snapshot.news_feed", func() NewsFeedState { return NewsFeedState{} })
ui.Column(c).Padding(16).Gap(12).Fill().Children(func() {
NewsFeed(c, ns, []NewsItem{{ID: "1", Title: "Apple unveils new chips", Source: "Reuters", Time: mktNow, Symbols: []string{"AAPL"}},
{ID: "2", Title: "Oil falls as supply grows", Source: "Bloomberg", Time: mktNow.Add(-26 * 3600e9), Symbols: []string{"XOM", "CVX"}}}, NewsFeedOptions{Today: core.DateOf(mktNow)}).Element.Height(300)
})
})
}