status_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package manager
  2. import (
  3. "encoding/json"
  4. "testing"
  5. "time"
  6. tunasync "github.com/tuna/tunasync/internal"
  7. . "github.com/smartystreets/goconvey/convey"
  8. )
  9. func TestStatus(t *testing.T) {
  10. Convey("status json ser-de should work", t, func() {
  11. tz := "Asia/Shanghai"
  12. loc, err := time.LoadLocation(tz)
  13. So(err, ShouldBeNil)
  14. t := time.Date(2016, time.April, 16, 23, 8, 10, 0, loc)
  15. m := webMirrorStatus{
  16. Name: "tunalinux",
  17. Status: tunasync.Success,
  18. LastUpdate: textTime{t},
  19. LastUpdateTs: stampTime{t},
  20. Size: "5GB",
  21. Upstream: "rsync://mirrors.tuna.tsinghua.edu.cn/tunalinux/",
  22. }
  23. b, err := json.Marshal(m)
  24. So(err, ShouldBeNil)
  25. // fmt.Println(string(b))
  26. var m2 webMirrorStatus
  27. err = json.Unmarshal(b, &m2)
  28. So(err, ShouldBeNil)
  29. // fmt.Printf("%#v", m2)
  30. So(m2.Name, ShouldEqual, m.Name)
  31. So(m2.Status, ShouldEqual, m.Status)
  32. So(m2.LastUpdate.Unix(), ShouldEqual, m.LastUpdate.Unix())
  33. So(m2.LastUpdateTs.Unix(), ShouldEqual, m.LastUpdate.Unix())
  34. So(m2.LastUpdate.UnixNano(), ShouldEqual, m.LastUpdate.UnixNano())
  35. So(m2.LastUpdateTs.UnixNano(), ShouldEqual, m.LastUpdate.UnixNano())
  36. So(m2.Size, ShouldEqual, m.Size)
  37. So(m2.Upstream, ShouldEqual, m.Upstream)
  38. })
  39. }