From 4ab8f0305aa55c48055b4b7c150c622f1fb0ff0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Mierzwa?= Date: Wed, 7 Aug 2019 15:03:58 +0100 Subject: [PATCH] feat(tests): add more test coverage --- api_test.go | 38 +++++++++++++++++++++++ internal/models/alertgroup_test.go | 50 ++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) diff --git a/api_test.go b/api_test.go index 2661e5e6e..6438b1f40 100644 --- a/api_test.go +++ b/api_test.go @@ -12,6 +12,7 @@ import ( "github.com/blang/semver" "github.com/google/go-cmp/cmp" + "github.com/prymitive/karma/internal/config" "github.com/prymitive/karma/internal/mock" "github.com/prymitive/karma/internal/models" ) @@ -1149,10 +1150,47 @@ var sortTests = []sortTest{ expectedLabel: "cluster", expectedValues: []string{"prod", "staging", "dev", "staging", "prod", "dev"}, }, + { + filter: "q=@receiver=by-cluster-service", + sortOrder: "", + sortLabel: "", + sortReverse: "0", + expectedLabel: "cluster", + expectedValues: []string{"dev", "prod", "staging", "dev", "staging", "prod"}, + }, + { + filter: "q=@receiver=by-cluster-service", + sortOrder: "", + sortLabel: "", + sortReverse: "1", + expectedLabel: "cluster", + expectedValues: []string{"prod", "staging", "dev", "staging", "prod", "dev"}, + }, + { + filter: "q=@receiver=by-cluster-service", + sortOrder: "label", + sortLabel: "job", + sortReverse: "0", + expectedLabel: "job", + expectedValues: []string{"node_exporter", "node_exporter", "node_exporter", "node_ping", "node_ping", "node_ping"}, + }, + { + filter: "q=@receiver=by-cluster-service", + sortOrder: "label", + sortLabel: "job", + sortReverse: "1", + expectedLabel: "job", + expectedValues: []string{"node_ping", "node_ping", "node_ping", "node_exporter", "node_exporter", "node_exporter"}, + }, } func TestSortOrder(t *testing.T) { mockConfig() + config.Config.Grid.Sorting.CustomValues.Labels = map[string]map[string]string{} + config.Config.Grid.Sorting.CustomValues.Labels["job"] = map[string]string{ + "node_exporter": "1", + "node_ping": "2", + } for _, version := range mock.ListAllMocks() { t.Logf("Testing API using mock files from Alertmanager %s", version) mockAlerts(version) diff --git a/internal/models/alertgroup_test.go b/internal/models/alertgroup_test.go index cfd7fcbde..a97c04b14 100644 --- a/internal/models/alertgroup_test.go +++ b/internal/models/alertgroup_test.go @@ -186,3 +186,53 @@ func TestFingerprint(t *testing.T) { t.Errorf("Expected LabelsFingerprint and ContentFingerprint to return different values") } } + +type findLatestStartsAtTest struct { + alerts []models.Alert + expectedStartsAt time.Time +} + +var findLatestStartsAtTests = []findLatestStartsAtTest{ + findLatestStartsAtTest{ + alerts: []models.Alert{ + {StartsAt: time.Date(2017, time.January, 10, 0, 0, 0, 5, time.UTC)}, + {StartsAt: time.Date(2017, time.January, 10, 0, 0, 0, 1, time.UTC)}, + {StartsAt: time.Date(2017, time.January, 10, 0, 0, 0, 8, time.UTC)}, + }, + expectedStartsAt: time.Date(2017, time.January, 10, 0, 0, 0, 8, time.UTC), + }, + findLatestStartsAtTest{ + alerts: []models.Alert{ + {StartsAt: time.Date(2017, time.January, 10, 0, 0, 0, 8, time.UTC)}, + {StartsAt: time.Date(2017, time.January, 10, 0, 0, 0, 2, time.UTC)}, + {StartsAt: time.Date(2017, time.January, 10, 0, 0, 0, 1, time.UTC)}, + }, + expectedStartsAt: time.Date(2017, time.January, 10, 0, 0, 0, 8, time.UTC), + }, + findLatestStartsAtTest{ + alerts: []models.Alert{ + {StartsAt: time.Date(2017, time.January, 10, 0, 0, 0, 1, time.UTC)}, + {StartsAt: time.Date(2017, time.January, 10, 0, 0, 0, 1, time.UTC)}, + {StartsAt: time.Date(2017, time.January, 10, 0, 0, 0, 1, time.UTC)}, + }, + expectedStartsAt: time.Date(2017, time.January, 10, 0, 0, 0, 1, time.UTC), + }, + findLatestStartsAtTest{ + alerts: []models.Alert{ + {StartsAt: time.Date(2017, time.January, 10, 0, 0, 0, 5, time.UTC)}, + {StartsAt: time.Date(2017, time.January, 10, 0, 0, 0, 8, time.UTC)}, + {StartsAt: time.Date(2017, time.January, 10, 0, 0, 0, 1, time.UTC)}, + }, + expectedStartsAt: time.Date(2017, time.January, 10, 0, 0, 0, 8, time.UTC), + }, +} + +func TestFindLatestStartsAt(t *testing.T) { + for _, testCase := range findLatestStartsAtTests { + ag := models.AlertGroup{Alerts: testCase.alerts} + got := ag.FindLatestStartsAt() + if !got.Equal(testCase.expectedStartsAt) { + t.Errorf("FindLatestStartsAt returned %s when %s was expected", got, testCase.expectedStartsAt) + } + } +}