A clean, Markdown-based publishing platform made for writers. Write together, and build a community. https://writefreely.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

83 lines
2.0 KiB

  1. package writefreely
  2. import (
  3. "regexp"
  4. "testing"
  5. "time"
  6. )
  7. func TestUpdatesRoundTrip(t *testing.T) {
  8. cache := newUpdatesCache(defaultUpdatesCacheTime)
  9. t.Run("New Updates Cache", func(t *testing.T) {
  10. if cache == nil {
  11. t.Fatal("Returned nil cache")
  12. }
  13. if cache.frequency != defaultUpdatesCacheTime {
  14. t.Fatalf("Got cache expiry frequency: %s but expected: %s", cache.frequency, defaultUpdatesCacheTime)
  15. }
  16. if cache.currentVersion != "v"+softwareVer {
  17. t.Fatalf("Got current version: %s but expected: %s", cache.currentVersion, "v"+softwareVer)
  18. }
  19. })
  20. t.Run("Release URL", func(t *testing.T) {
  21. url := cache.ReleaseNotesURL()
  22. reg, err := regexp.Compile(`^https:\/\/blog.writefreely.org\/version(-\d+){1,}$`)
  23. if err != nil {
  24. t.Fatalf("Test Case Error: Failed to compile regex: %v", err)
  25. }
  26. match := reg.MatchString(url)
  27. if !match {
  28. t.Fatalf("Malformed Release URL: %s", url)
  29. }
  30. })
  31. t.Run("Check Now", func(t *testing.T) {
  32. // ensure time between init and next check
  33. time.Sleep(1 * time.Second)
  34. prevLastCheck := cache.lastCheck
  35. // force to known older version for latest and current
  36. prevLatestVer := "v0.8.1"
  37. cache.latestVersion = prevLatestVer
  38. cache.currentVersion = "v0.8.0"
  39. err := cache.CheckNow()
  40. if err != nil {
  41. t.Fatalf("Error should be nil, got: %v", err)
  42. }
  43. if prevLastCheck == cache.lastCheck {
  44. t.Fatal("Expected lastCheck to update")
  45. }
  46. if cache.lastCheck.Before(prevLastCheck) {
  47. t.Fatal("Last check should be newer than previous")
  48. }
  49. if prevLatestVer == cache.latestVersion {
  50. t.Fatal("expected latestVersion to update")
  51. }
  52. })
  53. t.Run("Are Available", func(t *testing.T) {
  54. if !cache.AreAvailable() {
  55. t.Fatalf("Cache reports not updates but Current is %s and Latest is %s", cache.currentVersion, cache.latestVersion)
  56. }
  57. })
  58. t.Run("Latest Version", func(t *testing.T) {
  59. gotLatest := cache.LatestVersion()
  60. if gotLatest != cache.latestVersion {
  61. t.Fatalf("Malformed latest version. Expected: %s but got: %s", cache.latestVersion, gotLatest)
  62. }
  63. })
  64. }