import * as chai from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; import * as spies from 'chai-spies'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; import {QueryBuilder} from '../../../lib/queryBuilder'; chai.use(chaiAsPromised); chai.use(spies); chai.use(sinonChai); const expect: any = chai.expect; describe('queryBuilder', () => { const qbTestSuite: any = new QueryBuilder(); describe('buildRTBQuery()', () => { it('should set resevations type list items query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-fcs', 'reservations', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ and: [ { and: [ { internalName: 'Status' , value: 'Billed', operator: 'neq'}, { internalName: 'Status' , value: 'Cancelled', operator: 'neq'} ] }, { internalName: 'EventDate' , value: '2016', operator : 'lte'} ] }); }); it('should set myrtb-ci-bis: posterprinter list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-bis', 'posterprinter', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ and: [ { and: [ { internalName: 'Status' , value: 'Billed', operator: 'neq'}, { internalName: 'Status' , value: 'Cancelled', operator: 'neq'} ] }, { internalName: 'EventDate' , value: '2016', operator : 'lte'} ] }); }); it('should set myrtb-ci-fcs non-reservation list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-fcs', 'FlowJo Billing', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ internalName: 'Status' , value: 'ReadyToBill', operator : 'like'}); }); it('should set myrtb-ci-microarray list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-microarray', 'Sample Sets', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ internalName: 'Status' , value: 'ReadyToBill', operator : 'like'}); }); it('should set myrtb-ci-antibody list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-antibody', 'requests', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ and : [ { internalName: 'Status' , value: 'ReadyToBill', operator : 'like'}, { internalName: 'Request_x0020_Date' , value: '2016', operator : 'lte'} ] }); }); describe('myrtb-ci-pnchem', () => { it('should set proteinid requests list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-pnchem', 'proteinid requests', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ and : [ { internalName: 'Status' , value: 'Completed', operator : 'like'}, { internalName: 'Completed_x0020_Date' , value: '2016', operator : 'lte'} ] }); }); it('should set intact mass requests list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-pnchem', 'intact mass requests', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ and : [ { internalName: 'Status' , value: 'Completed', operator : 'like'}, { internalName: 'Completed_x0020_Date' , value: '2016', operator : 'lte'} ] }); }); it('should set peptide synthesis requests list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-pnchem', 'peptide synthesis requests', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ and : [ { internalName: 'Status' , value: 'ReadyToBill', operator : 'like'}, { internalName: 'Request_x0020_Date' , value: '2016', operator : 'lte'} ] }); }); it('should set protein sequencing requests requests list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-pnchem', 'protein sequencing requests', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ and : [ { internalName: 'Status' , value: 'Completed', operator : 'like'}, { internalName: 'Request_x0020_Date' , value: '2016', operator : 'lte'} ] }); }); it('should set default requests list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-pnchem', 'default', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ internalName: 'Status' , value: 'ReadyToBill', operator : 'like'}); }); }); describe('myrtb-ci-rml-genomics', () => { it('should set dna sequencing requests list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-rml-genomics', 'dna sequencing requests', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ and: [ { internalName: 'Status', value: 'ReadyToBill', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set custom pcr requests list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-rml-genomics', 'custom pcr requests', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ and: [ { internalName: 'Status', value: 'ReadyToBill', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set microarray analysis requests list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-rml-genomics', 'microarray analysis requests', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ and: [ { internalName: 'Status', value: 'ReadyToBill', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set project charges list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-rml-genomics', 'project charges', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ and: [ { internalName: 'Status', value: 'ReadyToBill', operator: 'like' }, { internalName: 'Submitted_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set qpcr experiments list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-rml-genomics', 'qpcr experiments', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ and: [ { internalName: 'Status', value: 'ReadyToBill', operator: 'like' }, { internalName: 'Submitted_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set expression microarray experiments list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-rml-genomics', 'expression microarray experiments', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ and: [ { internalName: 'Status', value: 'ReadyToBill', operator: 'like' }, { internalName: 'Submitted_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set default list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-rml-genomics', 'default', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ internalName: 'Status', value: 'ReadyToBill', operator: 'like' }); }); }); it('should set myrtb-ci-rml-em:project subsets non-reservations list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-rml-em', 'project subsets', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ and: [ { internalName: 'Status', value: 'ReadyToBill', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set myrtb-ci-structuralbiology:project charges list item query', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('myrtb-ci-structuralbiology', 'project charges', '2016'); expect(qbTestSuite.rtbQuery).to.eql({ and: [ { internalName: 'Status', value: 'ReadyToBill', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set the default if it does not match any list', () => { spyOn(qbTestSuite, 'rtbQuery'); qbTestSuite.buildRTBQuery('default', 'default', '2016'); expect(qbTestSuite.rtbQuery).to.not.be.undefined; }); }); describe('buildBilledQuery', () => { it('should set resevations type list items query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-fcs', 'reservations', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'EventDate', value: '2016', operator: 'lte' } ] }); }); it('should set myrtb-ci-bis:posterprinter non-reservation type list items query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-bis', 'posterprinter', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'EventDate', value: '2016', operator: 'lte' } ] }); }); it('should set myrtb-ci-bis non-reservation type list items query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-fcs', 'FlowJo billing', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set myrtb-ci-microarray type list items query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-microarray', 'Hyb Requests', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'BillingStatus', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set myrtb-ci-antibody type list items query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-antibody', 'Requests', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); describe('myrtb-ci-pnchem', () => { it('should set proteinid requests type list items query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-pnchem', 'proteinid requests', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'Completed_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set intact mass requests type list items query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-pnchem', 'intact mass requests', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'Completed_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set peptide synthesis requests type list items query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-pnchem', 'peptide synthesis requests', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set protein sequencing requests type list items query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-pnchem', 'protein sequencing requests', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set default list item query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-pnchem', 'default', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); }); describe('myrtb-ci-rml-genomics', () => { it('should set dna sequencing requests type list items query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-rml-genomics', 'dna sequencing requests', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set custom pcr requests type list items query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-rml-genomics', 'custom pcr requests', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set microarray analysis requests type list items query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-rml-genomics', 'microarray analysis requests', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set qpcr experiments type list items query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-rml-genomics', 'qpcr experiments', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set expression microarray experiments type list items query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-rml-genomics', 'expression microarray experiments', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set project charges type list items query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-rml-genomics', 'project charges', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'Submitted_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set default list item query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-rml-genomics', 'default', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); }); it('should set myrtb-ci-rml-em:project subsets type list items query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-rml-em', 'project subsets', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set myrtb-ci-structuralbiology:project charges type list items query', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('myrtb-ci-structuralbiology', 'project charges', '2016'); expect(qbTestSuite.billedQuery).to.eql({ and: [ { internalName: 'Status', value: 'Billed', operator: 'like' }, { internalName: 'Request_x0020_Date', value: '2016', operator: 'lte' } ] }); }); it('should set the default if it does not match any list', () => { spyOn(qbTestSuite.billedQuery, 'and'); qbTestSuite.buildBilledQuery('default', 'default', '2016'); expect(qbTestSuite.billedQuery).to.not.be.undefined; }); }); });