| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441 |
- import { c3, initChart } from './c3-helper'
- const $$ = c3.chart.internal.fn
- $$.d3 = require('d3')
- describe('data.convert', () => {
- describe('$$.convertColumnsToData', () => {
- it('converts column data to normalized data', () => {
- const data = $$.convertColumnsToData([
- ['cat1', 'a', 'b', 'c', 'd'],
- ['data1', 30, 200, 100, 400],
- ['cat2', 'b', 'a', 'c', 'd', 'e', 'f'],
- ['data2', 400, 60, 200, 800, 10, 10]
- ])
- expect(data).toEqual({
- keys: ['cat1', 'data1', 'cat2', 'data2'],
- rows: [
- {
- cat1: 'a',
- data1: 30,
- cat2: 'b',
- data2: 400
- },
- {
- cat1: 'b',
- data1: 200,
- cat2: 'a',
- data2: 60
- },
- {
- cat1: 'c',
- data1: 100,
- cat2: 'c',
- data2: 200
- },
- {
- cat1: 'd',
- data1: 400,
- cat2: 'd',
- data2: 800
- },
- {
- cat2: 'e',
- data2: 10
- },
- {
- cat2: 'f',
- data2: 10
- }
- ]
- })
- })
- it('throws when the column data contains undefined', () => {
- expect(() =>
- $$.convertColumnsToData([
- ['cat1', 'a', 'b', 'c', 'd'],
- ['data1', undefined]
- ])
- ).toThrowError(Error, /Source data is missing a component/)
- })
- })
- describe('$$.convertRowsToData', () => {
- it('converts the row data to normalized data', () => {
- const data = $$.convertRowsToData([
- ['data1', 'data2', 'data3'],
- [90, 120, 300],
- [40, 160, 240],
- [50, 200, 290],
- [120, 160, 230],
- [80, 130, 300],
- [90, 220, 320]
- ])
- expect(data).toEqual({
- keys: ['data1', 'data2', 'data3'],
- rows: [
- {
- data1: 90,
- data2: 120,
- data3: 300
- },
- {
- data1: 40,
- data2: 160,
- data3: 240
- },
- {
- data1: 50,
- data2: 200,
- data3: 290
- },
- {
- data1: 120,
- data2: 160,
- data3: 230
- },
- {
- data1: 80,
- data2: 130,
- data3: 300
- },
- {
- data1: 90,
- data2: 220,
- data3: 320
- }
- ]
- })
- })
- it('throws when the row data contains undefined', () => {
- expect(() =>
- $$.convertRowsToData([
- ['data1', 'data2', 'data3'],
- [40, 160, 240],
- [90, 120, undefined]
- ])
- ).toThrowError(Error, /Source data is missing a component/)
- })
- })
- describe('$$.convertXsvToData', () => {
- it('converts the csv data to normalized data', () => {
- const data = [
- {
- data1: '90',
- data2: '120',
- data3: '300'
- },
- {
- data1: '40',
- data2: '160',
- data3: '240'
- },
- {
- data1: '50',
- data2: '200',
- data3: '290'
- },
- {
- data1: '120',
- data2: '160',
- data3: '230'
- },
- {
- data1: '80',
- data2: '130',
- data3: '300'
- },
- {
- data1: '90',
- data2: '220',
- data3: '320'
- }
- ]
- ;(data as any).columns = ['data1', 'data2', 'data3']
- expect($$.convertXsvToData(data)).toEqual({
- keys: ['data1', 'data2', 'data3'],
- rows: [
- {
- data1: '90',
- data2: '120',
- data3: '300'
- },
- {
- data1: '40',
- data2: '160',
- data3: '240'
- },
- {
- data1: '50',
- data2: '200',
- data3: '290'
- },
- {
- data1: '120',
- data2: '160',
- data3: '230'
- },
- {
- data1: '80',
- data2: '130',
- data3: '300'
- },
- {
- data1: '90',
- data2: '220',
- data3: '320'
- }
- ]
- })
- })
- it('converts one lined CSV data', () => {
- const data = []
- ;(data as any).columns = ['data1', 'data2', 'data3']
- expect($$.convertXsvToData(data)).toEqual({
- keys: ['data1', 'data2', 'data3'],
- rows: [
- {
- data1: null,
- data2: null,
- data3: null
- }
- ]
- })
- })
- })
- describe('$$.convertDataToTargets', () => {
- beforeEach(() => {
- $$.cache = {}
- $$.data = {
- xs: []
- }
- $$.config = {
- data_idConverter: v => v
- }
- })
- it('converts the legacy data format into targets', () => {
- const targets = $$.convertDataToTargets([
- {
- data1: 90,
- data2: 120,
- data3: 300
- },
- {
- data1: 40,
- data2: 160,
- data3: 240
- }
- ])
- expect(targets).toEqual([
- {
- id: 'data1',
- id_org: 'data1',
- values: [
- { x: 0, value: 90, id: 'data1', index: 0 },
- { x: 1, value: 40, id: 'data1', index: 1 }
- ]
- },
- {
- id: 'data2',
- id_org: 'data2',
- values: [
- { x: 0, value: 120, id: 'data2', index: 0 },
- { x: 1, value: 160, id: 'data2', index: 1 }
- ]
- },
- {
- id: 'data3',
- id_org: 'data3',
- values: [
- { x: 0, value: 300, id: 'data3', index: 0 },
- { x: 1, value: 240, id: 'data3', index: 1 }
- ]
- }
- ])
- })
- it('converts the data into targets', () => {
- const targets = $$.convertDataToTargets({
- keys: ['data1', 'data2', 'data3'],
- rows: [
- {
- data1: 90,
- data2: 120,
- data3: 300
- },
- {
- data1: 40,
- data2: 160,
- data3: 240
- }
- ]
- })
- expect(targets).toEqual([
- {
- id: 'data1',
- id_org: 'data1',
- values: [
- { x: 0, value: 90, id: 'data1', index: 0 },
- { x: 1, value: 40, id: 'data1', index: 1 }
- ]
- },
- {
- id: 'data2',
- id_org: 'data2',
- values: [
- { x: 0, value: 120, id: 'data2', index: 0 },
- { x: 1, value: 160, id: 'data2', index: 1 }
- ]
- },
- {
- id: 'data3',
- id_org: 'data3',
- values: [
- { x: 0, value: 300, id: 'data3', index: 0 },
- { x: 1, value: 240, id: 'data3', index: 1 }
- ]
- }
- ])
- })
- })
- describe('$$.convertJsonToData', () => {
- it('converts JSON as object (no keys provided)', () => {
- const data = $$.convertJsonToData({
- data1: [90, 40, 50, 120, 80, 90],
- data2: [120, 160, 200, 160, 130, 220],
- data3: [300, 240, 290, 230, 300, 320]
- })
- expect(data).toEqual({
- keys: ['data1', 'data2', 'data3'],
- rows: [
- {
- data1: 90,
- data2: 120,
- data3: 300
- },
- {
- data1: 40,
- data2: 160,
- data3: 240
- },
- {
- data1: 50,
- data2: 200,
- data3: 290
- },
- {
- data1: 120,
- data2: 160,
- data3: 230
- },
- {
- data1: 80,
- data2: 130,
- data3: 300
- },
- {
- data1: 90,
- data2: 220,
- data3: 320
- }
- ]
- })
- })
- it('converts JSON as rows (keys provided)', () => {
- const data = $$.convertJsonToData(
- [
- {
- data1: 90,
- data2: 120,
- data3: 300,
- unused: 42
- },
- {
- data1: 40,
- data2: 160,
- data3: 240,
- unused: 42
- },
- {
- data1: 50,
- data2: 200,
- data3: 290,
- unused: 42
- },
- {
- data1: 120,
- data2: 160,
- data3: 230,
- unused: 42
- },
- {
- data1: 80,
- data2: 130,
- data3: 300,
- unused: 42
- },
- {
- data1: 90,
- data2: 220,
- data3: 320,
- unused: 42
- }
- ],
- {
- value: ['data1', 'data2', 'data3']
- }
- )
- expect(data).toEqual({
- keys: ['data1', 'data2', 'data3'],
- rows: [
- {
- data1: 90,
- data2: 120,
- data3: 300
- },
- {
- data1: 40,
- data2: 160,
- data3: 240
- },
- {
- data1: 50,
- data2: 200,
- data3: 290
- },
- {
- data1: 120,
- data2: 160,
- data3: 230
- },
- {
- data1: 80,
- data2: 130,
- data3: 300
- },
- {
- data1: 90,
- data2: 220,
- data3: 320
- }
- ]
- })
- })
- })
- })
|