|
1 | 1 | package v0alpha1 |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "encoding/json" |
4 | 5 | "testing" |
5 | 6 | "time" |
6 | 7 |
|
@@ -54,7 +55,81 @@ func TestToBackendDataQueryJSON(t *testing.T) { |
54 | 55 | require.Equal(t, time.UnixMilli(12345678).UTC(), bq.TimeRange.From) |
55 | 56 | require.Equal(t, time.UnixMilli(87654321).UTC(), bq.TimeRange.To) |
56 | 57 |
|
57 | | - jsonData := `{"refId":"A","_timeRange":{"from":"12345678","to":"87654321"},"datasource":{"type":"prometheus","uid":"hello-world"},"queryType":"interesting","maxDataPoints":42,"intervalMs":15,"key1":"value1","key2":"value2"}` |
| 58 | + jsonData := `{` + |
| 59 | + `"refId":"A",` + |
| 60 | + `"_timeRange":{"from":"12345678","to":"87654321"},` + |
| 61 | + `"datasource":{"type":"prometheus","uid":"hello-world"},` + |
| 62 | + `"queryType":"interesting",` + |
| 63 | + `"maxDataPoints":42,` + |
| 64 | + `"intervalMs":15,` + |
| 65 | + `"key1":"value1",` + |
| 66 | + `"key2":"value2"` + |
| 67 | + `}` |
58 | 68 |
|
59 | 69 | require.Equal(t, jsonData, string(bq.JSON)) |
60 | 70 | } |
| 71 | + |
| 72 | +func TestToDataSourceQueriesTimeRangeHandling(t *testing.T) { |
| 73 | + data := ` |
| 74 | + { |
| 75 | + "queries": [ |
| 76 | + { |
| 77 | + "datasource": { |
| 78 | + "type": "prometheus", |
| 79 | + "uid": "prom1" |
| 80 | + }, |
| 81 | + "expr": "111", |
| 82 | + "refId": "A" |
| 83 | + }, |
| 84 | + { |
| 85 | + "datasource": { |
| 86 | + "type": "prometheus", |
| 87 | + "uid": "prom1" |
| 88 | + }, |
| 89 | + "expr": "222", |
| 90 | + "refId": "B", |
| 91 | + "timeRange": { |
| 92 | + "from": "1763114120000", |
| 93 | + "to": "1763114130000" |
| 94 | + } |
| 95 | + } |
| 96 | + ], |
| 97 | + "from": "1763114100000", |
| 98 | + "to": "1763114110000" |
| 99 | + } |
| 100 | + ` |
| 101 | + |
| 102 | + var req QueryDataRequest |
| 103 | + |
| 104 | + err := json.Unmarshal([]byte(data), &req) |
| 105 | + require.NoError(t, err) |
| 106 | + |
| 107 | + queries, _, err := ToDataSourceQueries(req) |
| 108 | + require.NoError(t, err) |
| 109 | + |
| 110 | + require.Len(t, queries, 2) |
| 111 | + |
| 112 | + a := queries[0] |
| 113 | + require.Equal(t, "A", a.RefID) |
| 114 | + b := queries[1] |
| 115 | + require.Equal(t, "B", b.RefID) |
| 116 | + |
| 117 | + require.Equal(t, time.UnixMilli(1763114100000).UTC(), a.TimeRange.From) |
| 118 | + require.Equal(t, time.UnixMilli(1763114110000).UTC(), a.TimeRange.To) |
| 119 | + jsonA := `{` + |
| 120 | + `"refId":"A",` + |
| 121 | + `"datasource":{"type":"prometheus","uid":"prom1"},` + |
| 122 | + `"expr":"111"` + |
| 123 | + `}` |
| 124 | + require.Equal(t, jsonA, string(a.JSON)) |
| 125 | + |
| 126 | + require.Equal(t, time.UnixMilli(1763114120000).UTC(), b.TimeRange.From) |
| 127 | + require.Equal(t, time.UnixMilli(1763114130000).UTC(), b.TimeRange.To) |
| 128 | + jsonB := `{` + |
| 129 | + `"refId":"B",` + |
| 130 | + `"_timeRange":{"from":"1763114120000","to":"1763114130000"},` + |
| 131 | + `"datasource":{"type":"prometheus","uid":"prom1"},` + |
| 132 | + `"expr":"222"` + |
| 133 | + `}` |
| 134 | + require.Equal(t, jsonB, string(b.JSON)) |
| 135 | +} |
0 commit comments