Improve testing on resultsToCSV
parent
c94a69366b
commit
e7b25a2bed
ui
spec/shared/parsing
src/shared/parsing
|
@ -1,4 +1,4 @@
|
||||||
import resultsToCSV from 'shared/parsing/resultsToCSV'
|
import resultsToCSV, {formatDate} from 'shared/parsing/resultsToCSV'
|
||||||
|
|
||||||
describe('resultsToCSV', () => {
|
describe('resultsToCSV', () => {
|
||||||
it('parses results to an object with name and CSVString keys', () => {
|
it('parses results to an object with name and CSVString keys', () => {
|
||||||
|
@ -8,18 +8,27 @@ describe('resultsToCSV', () => {
|
||||||
{
|
{
|
||||||
name: 'some_name',
|
name: 'some_name',
|
||||||
columns: ['col1', 'col2', 'col3', 'col4'],
|
columns: ['col1', 'col2', 'col3', 'col4'],
|
||||||
values: [[1, 2, 3, 4], [(5, 6, 7, 8)]],
|
values: [[1000000000, '2', 3, 4], [2000000000, '6', 7, 8]],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
const response = resultsToCSV(results)
|
const response = resultsToCSV(results)
|
||||||
|
const expected = `date,col2,col3,col4\n${formatDate(
|
||||||
|
1000000000
|
||||||
|
)},2,3,4\n${formatDate(2000000000)},6,7,8`
|
||||||
expect(response).to.have.all.keys('name', 'CSVString')
|
expect(response).to.have.all.keys('name', 'CSVString')
|
||||||
expect(response.name).to.be.a('string')
|
expect(response.name).to.be.a('string')
|
||||||
expect('foobar').to.not.include('/')
|
|
||||||
expect(response.CSVString).to.be.a('string')
|
expect(response.CSVString).to.be.a('string')
|
||||||
|
expect(response.CSVString).to.equal(expected)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
// make sure name does not contain things that would not be allowed in a filename.
|
describe('formatDate', () => {
|
||||||
// handle edge cases for columns and values. ?
|
it('converts timestamp to an excel compatible date string', () => {
|
||||||
|
const timestamp = 1000000000000
|
||||||
|
const result = formatDate(timestamp)
|
||||||
|
expect(result).to.be.a('string')
|
||||||
|
expect(+new Date(result)).to.equal(timestamp)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
import _ from 'lodash'
|
import _ from 'lodash'
|
||||||
import moment from 'moment'
|
import moment from 'moment'
|
||||||
|
|
||||||
|
export const formatDate = timestamp =>
|
||||||
|
moment(timestamp).format('M/D/YYYY h:mm:ss A')
|
||||||
|
|
||||||
const resultsToCSV = results => {
|
const resultsToCSV = results => {
|
||||||
const {name, columns, values} = _.get(results, ['0', 'series', '0'], {})
|
const {name, columns, values} = _.get(results, ['0', 'series', '0'], {})
|
||||||
const [, ...cols] = columns
|
const [, ...cols] = columns
|
||||||
|
@ -9,9 +12,7 @@ const resultsToCSV = results => {
|
||||||
.concat(
|
.concat(
|
||||||
values.map(([timestamp, ...measurements]) =>
|
values.map(([timestamp, ...measurements]) =>
|
||||||
// MS Excel format
|
// MS Excel format
|
||||||
[moment(timestamp).format('M/D/YYYY h:mm:ss A'), ...measurements].join(
|
[formatDate(timestamp), ...measurements].join(',')
|
||||||
','
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.join('\n')
|
.join('\n')
|
||||||
|
|
Loading…
Reference in New Issue