define([
  'plugins/datasource/influxdb_08/queryBuilder'
], function(InfluxQueryBuilder) {
  'use strict';

  describe('InfluxQueryBuilder', function() {

    describe('series with conditon and group by', function() {
      var builder = new InfluxQueryBuilder({
        series: 'google.test',
        column: 'value',
        function: 'mean',
        condition: "code=1",
        groupby_field: 'code'
      });

      var query = builder.build();

      it('should generate correct query', function() {
        expect(query).to.be('select code, mean(value) from "google.test" where $timeFilter and code=1 ' +
          'group by time($interval), code order asc');
      });

      it('should expose groupByFiled', function() {
        expect(builder.groupByField).to.be('code');
      });

    });

    describe('series with fill and minimum group by time', function() {
      var builder = new InfluxQueryBuilder({
        series: 'google.test',
        column: 'value',
        function: 'mean',
        fill: '0',
      });

      var query = builder.build();

      it('should generate correct query', function() {
        expect(query).to.be('select mean(value) from "google.test" where $timeFilter ' +
          'group by time($interval) fill(0) order asc');
      });

    });

    describe('merge function detection', function() {
      it('should not quote wrap regex merged series', function() {
        var builder = new InfluxQueryBuilder({
          series: 'merge(/^google.test/)',
          column: 'value',
          function: 'mean'
        });

        var query = builder.build();

        expect(query).to.be('select mean(value) from merge(/^google.test/) where $timeFilter ' +
          'group by time($interval) order asc');
      });

      it('should quote wrap series names that start with "merge"', function() {
        var builder = new InfluxQueryBuilder({
          series: 'merge.google.test',
          column: 'value',
          function: 'mean'
        });

        var query = builder.build();

        expect(query).to.be('select mean(value) from "merge.google.test" where $timeFilter ' +
          'group by time($interval) order asc');
      });

    });

  });

});
