| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | var Analyzer = require('../../../index').query.analyzer;var tokenize = require('../../support/tokenize');var assert = require('assert');describe('Analyzer ::', function() {  describe('UNION statements', function() {    it('should generate a valid group for UNION statements', function() {      var tokens = tokenize({        select: ['*'],        from: 'users',        where: {          and: [            {              firstName: 'Bob'            }          ]        },        union: [          {            select: ['*'],            from: 'users',            where: {              and: [                {                  lastName: 'Smith'                }              ]            }          },          {            select: ['*'],            from: 'users',            where: {              and: [                {                  middleName: 'Allen'                }              ]            }          }        ]      });      var result = Analyzer(tokens);      assert.deepEqual(result, [        [          { type: 'IDENTIFIER', value: 'SELECT' },          { type: 'VALUE', value: '*' }        ],        [          { type: 'IDENTIFIER', value: 'FROM' },          { type: 'VALUE', value: 'users' }        ],        [          { type: 'IDENTIFIER', value: 'WHERE' },          { type: 'CONDITION', value: 'AND' },          [            { type: 'KEY', value: 'firstName' },            { type: 'VALUE', value: 'Bob' }          ]        ],        [          { type: 'UNION', value: 'UNION' },          [            [              [                { type: 'IDENTIFIER', value: 'SELECT' },                { type: 'VALUE', value: '*' }              ],              [                { type: 'IDENTIFIER', value: 'FROM' },                { type: 'VALUE', value: 'users' }              ],              [                { type: 'IDENTIFIER', value: 'WHERE' },                { type: 'CONDITION', value: 'AND' },                [                  { type: 'KEY', value: 'lastName' },                  { type: 'VALUE', value: 'Smith' }                ]              ]            ],            [              [                { type: 'IDENTIFIER', value: 'SELECT' },                { type: 'VALUE', value: '*' }              ],              [                { type: 'IDENTIFIER', value: 'FROM' },                { type: 'VALUE', value: 'users' }              ],              [                { type: 'IDENTIFIER', value: 'WHERE' },                { type: 'CONDITION', value: 'AND' },                [                  { type: 'KEY', value: 'middleName' },                  { type: 'VALUE', value: 'Allen' }                ]              ]            ]          ]        ]      ]);    });  });});
 |