autocomplete_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package cloudcost
  2. import (
  3. "context"
  4. "testing"
  5. "time"
  6. "github.com/opencost/opencost/core/pkg/opencost"
  7. )
  8. func TestRepositoryQuerier_QueryCloudCostAutocomplete(t *testing.T) {
  9. start := time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC)
  10. end := start.Add(24 * time.Hour)
  11. repo := NewMemoryRepository()
  12. ccs := DefaultMockCloudCostSet(start, end, "aws", "integration-1")
  13. if err := repo.Put(ccs); err != nil {
  14. t.Fatalf("failed to seed repository: %v", err)
  15. }
  16. rq := NewRepositoryQuerier(repo)
  17. resp, err := rq.QueryCloudCostAutocomplete(context.Background(), CloudCostAutocompleteRequest{
  18. Field: opencost.CloudCostServiceProp,
  19. Window: opencost.NewClosedWindow(start, end),
  20. })
  21. if err != nil {
  22. t.Fatalf("unexpected error: %v", err)
  23. }
  24. if len(resp.Data) != 2 {
  25. t.Fatalf("expected 2 service values, got %d: %+v", len(resp.Data), resp.Data)
  26. }
  27. labelResp, err := rq.QueryCloudCostAutocomplete(context.Background(), CloudCostAutocompleteRequest{
  28. Field: "label:label1",
  29. Search: "value1",
  30. Window: opencost.NewClosedWindow(start, end),
  31. })
  32. if err != nil {
  33. t.Fatalf("unexpected error: %v", err)
  34. }
  35. if len(labelResp.Data) != 1 || labelResp.Data[0] != "value1" {
  36. t.Fatalf("unexpected label autocomplete response: %+v", labelResp.Data)
  37. }
  38. }