autocompletequeryservice_test.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package asset
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/opencost/opencost/core/pkg/opencost"
  6. )
  7. func TestQueryAssetAutocompleteFromSet(t *testing.T) {
  8. start := time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC)
  9. end := start.Add(24 * time.Hour)
  10. window := opencost.NewWindow(&start, &end)
  11. nodeA := opencost.NewNode("node-a", "cluster-a", "provider-a", start, end, window)
  12. nodeA.SetLabels(map[string]string{"team": "platform", "app": "api"})
  13. nodeA.GetProperties().Account = "acct-a"
  14. nodeA.GetProperties().Category = opencost.ComputeCategory
  15. nodeB := opencost.NewNode("node-b", "cluster-b", "provider-b", start, end, window)
  16. nodeB.SetLabels(map[string]string{"team": "data", "app": "db"})
  17. nodeB.GetProperties().Account = "acct-b"
  18. nodeB.GetProperties().Category = opencost.ComputeCategory
  19. assetSet := opencost.NewAssetSet(start, end, nodeA, nodeB)
  20. resp, err := QueryAssetAutocompleteFromSet(assetSet, AssetAutocompleteRequest{
  21. TenantID: "opencost",
  22. Field: "cluster",
  23. })
  24. if err != nil {
  25. t.Fatalf("unexpected error: %v", err)
  26. }
  27. if len(resp.Data) != 2 || resp.Data[0] != "cluster-a" || resp.Data[1] != "cluster-b" {
  28. t.Fatalf("unexpected cluster autocomplete response: %+v", resp.Data)
  29. }
  30. labelResp, err := QueryAssetAutocompleteFromSet(assetSet, AssetAutocompleteRequest{
  31. TenantID: "opencost",
  32. Field: "label:team",
  33. Search: "plat",
  34. })
  35. if err != nil {
  36. t.Fatalf("unexpected error: %v", err)
  37. }
  38. if len(labelResp.Data) != 1 || labelResp.Data[0] != "platform" {
  39. t.Fatalf("unexpected label autocomplete response: %+v", labelResp.Data)
  40. }
  41. }