influx09-querybuilder-specs.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. define([
  2. 'plugins/datasource/influxdb/queryBuilder'
  3. ], function(InfluxQueryBuilder) {
  4. 'use strict';
  5. describe('InfluxQueryBuilder', function() {
  6. describe('series with mesurement only', function() {
  7. var builder = new InfluxQueryBuilder({
  8. measurement: 'cpu',
  9. });
  10. var query = builder.build();
  11. it('should generate correct query', function() {
  12. expect(query).to.be('SELECT mean(value) FROM "cpu" WHERE $timeFilter GROUP BY time($interval) ORDER BY asc');
  13. });
  14. });
  15. describe('series with single tag only', function() {
  16. var builder = new InfluxQueryBuilder({
  17. measurement: 'cpu',
  18. tags: [{key: 'hostname', value: 'server1'}]
  19. });
  20. var query = builder.build();
  21. it('should generate correct query', function() {
  22. expect(query).to.be('SELECT mean(value) FROM "cpu" WHERE hostname=\'server1\' AND $timeFilter'
  23. + ' GROUP BY time($interval) ORDER BY asc');
  24. });
  25. });
  26. describe('series with multiple tags only', function() {
  27. var builder = new InfluxQueryBuilder({
  28. measurement: 'cpu',
  29. tags: [{key: 'hostname', value: 'server1'}, {key: 'app', value: 'email', condition: "AND"}]
  30. });
  31. var query = builder.build();
  32. it('should generate correct query', function() {
  33. expect(query).to.be('SELECT mean(value) FROM "cpu" WHERE hostname=\'server1\' AND app=\'email\' AND ' +
  34. '$timeFilter GROUP BY time($interval) ORDER BY asc');
  35. });
  36. });
  37. describe('series with groupByTag', function() {
  38. var builder = new InfluxQueryBuilder({
  39. measurement: 'cpu',
  40. tags: [],
  41. groupByTags: ["host"]
  42. });
  43. var query = builder.build();
  44. it('should generate correct query', function() {
  45. expect(query).to.be('SELECT mean(value) FROM "cpu" WHERE $timeFilter ' +
  46. 'GROUP BY time($interval), host ORDER BY asc');
  47. });
  48. });
  49. describe('when building tag keys query', function() {
  50. describe('given picked measurement', function() {
  51. it('build query with measurement filter', function() {
  52. var builder = new InfluxQueryBuilder({ measurement: 'cpu', tags: [] });
  53. var query = builder.showTagsQuery();
  54. expect(query).to.be('SHOW TAG KEYS FROM "cpu"');
  55. });
  56. });
  57. describe('given no picked measurement', function() {
  58. it('build query without filter', function() {
  59. var builder = new InfluxQueryBuilder({ measurement: '', tags: [] });
  60. var query = builder.showTagsQuery();
  61. expect(query).to.be('SHOW TAG KEYS');
  62. });
  63. });
  64. describe('given an existing tag', function() {
  65. it('build query with filter', function() {
  66. var builder = new InfluxQueryBuilder({ measurement: '', tags: [{key: 'host', value: 'se1'}] });
  67. var query = builder.showTagsQuery();
  68. expect(query).to.be('SHOW TAG KEYS');
  69. });
  70. });
  71. });
  72. });
  73. });