import timeSeriesToDygraph from 'src/utils/timeSeriesToDygraph' describe('timeSeriesToDygraph', () => { it('parses a raw InfluxDB response into a dygraph friendly data format', () => { const influxResponse = [ { response: { results: [ { series: [ { name: 'm1', columns: ['time', 'f1'], values: [[1000, 1], [2000, 2]], }, ], }, { series: [ { name: 'm1', columns: ['time', 'f2'], values: [[2000, 3], [4000, 4]], }, ], }, ], }, }, ] const actual = timeSeriesToDygraph(influxResponse) const expected = { labels: ['time', `m1.f1`, `m1.f2`], timeSeries: [ [new Date(1000), 1, null], [new Date(2000), 2, 3], [new Date(4000), null, 4], ], dygraphSeries: { 'm1.f1': { axis: 'y', }, 'm1.f2': { axis: 'y', }, }, } expect(actual).to.deep.equal(expected) }) it('can sort numerical timestamps correctly', () => { const influxResponse = [ { response: { results: [ { series: [ { name: 'm1', columns: ['time', 'f1'], values: [[100, 1], [3000, 3], [200, 2]], }, ], }, ], }, }, ] const actual = timeSeriesToDygraph(influxResponse) const expected = { labels: ['time', 'm1.f1'], timeSeries: [[new Date(100), 1], [new Date(200), 2], [new Date(3000), 3]], } expect(actual.timeSeries).to.deep.equal(expected.timeSeries) }) it('can parse multiple responses into two axes', () => { const influxResponse = [ { response: { results: [ { series: [ { name: 'm1', columns: ['time', 'f1'], values: [[1000, 1], [2000, 2]], }, ], }, { series: [ { name: 'm1', columns: ['time', 'f2'], values: [[2000, 3], [4000, 4]], }, ], }, ], }, }, { response: { results: [ { series: [ { name: 'm3', columns: ['time', 'f3'], values: [[1000, 1], [2000, 2]], }, ], }, ], }, }, ] const actual = timeSeriesToDygraph(influxResponse) const expected = { 'm1.f1': { axis: 'y', }, 'm1.f2': { axis: 'y', }, 'm3.f3': { axis: 'y2', }, } expect(actual.dygraphSeries).to.deep.equal(expected) }) it('can parse multiple responses with the same field and measurement', () => { const influxResponse = [ { response: { results: [ { series: [ { name: 'm1', columns: ['time', 'f1'], values: [[1000, 1], [2000, 2]], }, ], }, ], }, }, { response: { results: [ { series: [ { name: 'm1', columns: ['time', 'f1'], values: [[2000, 3], [4000, 4]], }, ], }, ], }, }, ] const actual = timeSeriesToDygraph(influxResponse) const expected = { labels: ['time', `m1.f1`, `m1.f1`], timeSeries: [ [new Date(1000), 1, null], [new Date(2000), 2, 3], [new Date(4000), null, 4], ], dygraphSeries: { 'm1.f1': { axis: 'y2', }, }, } expect(actual).to.deep.equal(expected) }) it('it does not use multiple axes if being used for the DataExplorer', () => { const influxResponse = [ { response: { results: [ { series: [ { name: 'm1', columns: ['time', 'f1'], values: [[1000, 1], [2000, 2]], }, ], }, ], }, }, { response: { results: [ { series: [ { name: 'm1', columns: ['time', 'f2'], values: [[2000, 3], [4000, 4]], }, ], }, ], }, }, ] const isInDataExplorer = true const actual = timeSeriesToDygraph( influxResponse, undefined, isInDataExplorer ) const expected = {} expect(actual.dygraphSeries).to.deep.equal(expected) }) it('parses a raw InfluxDB response into a dygraph friendly data format', () => { const influxResponse = [ { response: { results: [ { series: [ { name: 'mb', columns: ['time', 'f1'], values: [[1000, 1], [2000, 2]], }, ], }, { series: [ { name: 'ma', columns: ['time', 'f1'], values: [[1000, 1], [2000, 2]], }, ], }, { series: [ { name: 'mc', columns: ['time', 'f2'], values: [[2000, 3], [4000, 4]], }, ], }, { series: [ { name: 'mc', columns: ['time', 'f1'], values: [[2000, 3], [4000, 4]], }, ], }, ], }, }, ] const actual = timeSeriesToDygraph(influxResponse) const expected = ['time', `ma.f1`, `mb.f1`, `mc.f1`, `mc.f2`] expect(actual.labels).to.deep.equal(expected) }) })