mirror of https://github.com/writeas/writefreely
- removes the parameter for newVersionCheck as was not being used - changes newUpdatesCache to take expiry parameter for possible future configuration option - adds basic test quite to verify all cache fucntions work as expectedpull/175/head
parent
2a7a8298e1
commit
908f009248
@ -0,0 +1,82 @@ |
|||||||
|
package writefreely |
||||||
|
|
||||||
|
import ( |
||||||
|
"regexp" |
||||||
|
"testing" |
||||||
|
"time" |
||||||
|
) |
||||||
|
|
||||||
|
func TestUpdatesRoundTrip(t *testing.T) { |
||||||
|
cache := newUpdatesCache(defaultUpdatesCacheTime) |
||||||
|
t.Run("New Updates Cache", func(t *testing.T) { |
||||||
|
|
||||||
|
if cache == nil { |
||||||
|
t.Fatal("Returned nil cache") |
||||||
|
} |
||||||
|
|
||||||
|
if cache.frequency != defaultUpdatesCacheTime { |
||||||
|
t.Fatalf("Got cache expiry frequency: %s but expected: %s", cache.frequency, defaultUpdatesCacheTime) |
||||||
|
} |
||||||
|
|
||||||
|
if cache.currentVersion != "v"+softwareVer { |
||||||
|
t.Fatalf("Got current version: %s but expected: %s", cache.currentVersion, "v"+softwareVer) |
||||||
|
} |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("Release URL", func(t *testing.T) { |
||||||
|
url := cache.ReleaseURL() |
||||||
|
|
||||||
|
reg, err := regexp.Compile(`^https:\/\/blog.writefreely.org\/version(-\d+){1,}$`) |
||||||
|
if err != nil { |
||||||
|
t.Fatalf("Test Case Error: Failed to compile regex: %v", err) |
||||||
|
} |
||||||
|
match := reg.MatchString(url) |
||||||
|
|
||||||
|
if !match { |
||||||
|
t.Fatalf("Malformed Release URL: %s", url) |
||||||
|
} |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("Check Now", func(t *testing.T) { |
||||||
|
// ensure time between init and next check
|
||||||
|
time.Sleep(1 * time.Second) |
||||||
|
|
||||||
|
prevLastCheck := cache.lastCheck |
||||||
|
|
||||||
|
// force to known older version for latest and current
|
||||||
|
prevLatestVer := "v0.8.1" |
||||||
|
cache.latestVersion = prevLatestVer |
||||||
|
cache.currentVersion = "v0.8.0" |
||||||
|
|
||||||
|
err := cache.CheckNow() |
||||||
|
if err != nil { |
||||||
|
t.Fatalf("Error should be nil, got: %v", err) |
||||||
|
} |
||||||
|
|
||||||
|
if prevLastCheck == cache.lastCheck { |
||||||
|
t.Fatal("Expected lastCheck to update") |
||||||
|
} |
||||||
|
|
||||||
|
if cache.lastCheck.Before(prevLastCheck) { |
||||||
|
t.Fatal("Last check should be newer than previous") |
||||||
|
} |
||||||
|
|
||||||
|
if prevLatestVer == cache.latestVersion { |
||||||
|
t.Fatal("expected latestVersion to update") |
||||||
|
} |
||||||
|
|
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("Are Available", func(t *testing.T) { |
||||||
|
if !cache.AreAvailable() { |
||||||
|
t.Fatalf("Cache reports not updates but Current is %s and Latest is %s", cache.currentVersion, cache.latestVersion) |
||||||
|
} |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("Latest Version", func(t *testing.T) { |
||||||
|
gotLatest := cache.LatestVersion() |
||||||
|
if gotLatest != cache.latestVersion { |
||||||
|
t.Fatalf("Malformed latest version. Expected: %s but got: %s", cache.latestVersion, gotLatest) |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
Loading…
Reference in new issue