queryservice_helper_test.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package customcost
  2. import (
  3. "testing"
  4. "github.com/opencost/opencost/core/pkg/opencost"
  5. "github.com/opencost/opencost/core/pkg/util/httputil"
  6. )
  7. // Test_ParseCustomCostRequest_Accumulate focuses on testing that both Custom Cost request parsing functions properly
  8. // set the `accumulate` field, inspired by a desire to prevent a regression of https://kubecost.atlassian.net/browse/ENG-2212
  9. func Test_ParseCustomCostRequest_Accumulate(t *testing.T) {
  10. testCases := map[string]struct {
  11. accumulateString string
  12. expectedAccumulate opencost.AccumulateOption
  13. }{
  14. "no accumulate": {
  15. accumulateString: "",
  16. expectedAccumulate: opencost.AccumulateOptionDay,
  17. },
  18. "hour accumulate": {
  19. accumulateString: "hour",
  20. expectedAccumulate: opencost.AccumulateOptionHour,
  21. },
  22. "day accumulate": {
  23. accumulateString: "day",
  24. expectedAccumulate: opencost.AccumulateOptionDay,
  25. },
  26. }
  27. for name, tc := range testCases {
  28. t.Run(name, func(t *testing.T) {
  29. qp := httputil.NewQueryParams(map[string][]string{})
  30. qp.Set("window", "7d")
  31. if len(tc.accumulateString) > 0 {
  32. qp.Set("accumulate", tc.accumulateString)
  33. }
  34. totalRequest, err := ParseCustomCostTotalRequest(qp)
  35. if err != nil {
  36. t.Fatalf("expected no error, got: %v", err)
  37. } else if totalRequest.Accumulate != tc.expectedAccumulate {
  38. t.Fatalf("expected %v, got %v", tc.expectedAccumulate, totalRequest.Accumulate)
  39. }
  40. timeseriesRequest, err := ParseCustomCostTimeseriesRequest(qp)
  41. if err != nil {
  42. t.Fatalf("expected no error, got: %v", err)
  43. } else if timeseriesRequest.Accumulate != tc.expectedAccumulate {
  44. t.Fatalf("expected %v, got %v", tc.expectedAccumulate, timeseriesRequest.Accumulate)
  45. }
  46. })
  47. }
  48. }