macoslinuxwindowsinboxwhatsappicloudtweetdeckhipchattelegramhangoutsslackgmailskypefacebook-workplaceoutlookemailmicrosoft-teamsdiscordmessengercustom-services
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
348 lines
11 KiB
348 lines
11 KiB
describe('Ext.chart.AbstractChart', function() { |
|
var chart, store; |
|
|
|
var Model = Ext.define(null, { |
|
extend: 'Ext.data.Model', |
|
fields: ['label', 'value'] |
|
}); |
|
|
|
function makeStore(rows) { |
|
var data = [], |
|
i; |
|
|
|
for (i = 1; i <= rows; ++i) { |
|
data.push({ |
|
label: 'Item' + i, |
|
value: i |
|
}); |
|
} |
|
|
|
store = new Ext.data.Store({ |
|
model: Model, |
|
data: data |
|
}); |
|
} |
|
|
|
afterEach(function() { |
|
store = chart = Ext.destroy(chart, store); |
|
}); |
|
|
|
it('is defined', function() { |
|
expect(Ext.chart.AbstractChart).toBeDefined(); |
|
}); |
|
|
|
describe('adding and removing series', function() { |
|
var store = Ext.create('Ext.data.Store', { |
|
fields: ['x', 'y', 'z'], |
|
data: [ |
|
{x: 0, y: 0, z: 0}, |
|
{x: 1, y: 1, z: 1} |
|
] |
|
}), |
|
chart; |
|
|
|
beforeEach(function() { |
|
chart = new Ext.chart.CartesianChart({ |
|
store: store, |
|
axes: [{ |
|
position: 'left', |
|
type: 'numeric' |
|
}, { |
|
position: 'bottom', |
|
type: 'numeric' |
|
}] |
|
}); |
|
}); |
|
|
|
it('should start with no series', function() { |
|
expect(chart.getSeries().length).toBe(0); |
|
}); |
|
|
|
it('should add and remove series using setSeries', function() { |
|
var series; |
|
|
|
chart.setSeries([{ |
|
type: 'line', |
|
xField: 'x', |
|
yField: 'y', |
|
id: 'xySeries' |
|
}]); |
|
series = chart.getSeries(); |
|
|
|
expect(series.length).toBe(1); |
|
expect(series[0].getId()).toBe('xySeries'); |
|
|
|
chart.setSeries([{ |
|
type: 'line', |
|
xField: 'x', |
|
yField: 'z', |
|
id: 'xzSeries' |
|
}]); |
|
series = chart.getSeries(); |
|
|
|
expect(series.length).toBe(1); |
|
expect(series[0].getId()).toBe('xzSeries'); |
|
}); |
|
|
|
it('should add series using addSeries', function() { |
|
var series; |
|
|
|
chart.addSeries([{ |
|
type: 'line', |
|
xField: 'x', |
|
yField: 'y', |
|
id: 'xySeries' |
|
}]); |
|
series = chart.getSeries(); |
|
|
|
expect(series.length).toBe(1); |
|
expect(series[0].getId()).toBe('xySeries'); |
|
|
|
chart.addSeries({ |
|
type: 'line', |
|
xField: 'x', |
|
yField: 'z', |
|
id: 'xzSeries' |
|
}); |
|
series = chart.getSeries(); |
|
|
|
expect(series.length).toBe(2); |
|
expect(series[0].getId()).toBe('xySeries'); |
|
expect(series[1].getId()).toBe('xzSeries'); |
|
}); |
|
|
|
it('should remove series using removeSeries', function() { |
|
var series; |
|
|
|
chart.addSeries([{ |
|
type: 'line', |
|
xField: 'x', |
|
yField: 'y', |
|
id: 'xySeries' |
|
}, { |
|
type: 'line', |
|
xField: 'x', |
|
yField: 'z', |
|
id: 'xzSeries' |
|
}]); |
|
series = chart.getSeries(); |
|
|
|
expect(series.length).toBe(2); |
|
expect(series[0].getId()).toBe('xySeries'); |
|
expect(series[1].getId()).toBe('xzSeries'); |
|
|
|
// Remove Series id "xySeries", should leave only "xzSeries" |
|
chart.removeSeries('xySeries'); |
|
series = chart.getSeries(); |
|
expect(series.length).toBe(1); |
|
expect(series[0].getId()).toBe('xzSeries'); |
|
|
|
// Remove a Series by specifying the instance should leav no Series |
|
chart.removeSeries(series[0]); |
|
expect(chart.getSeries().length).toBe(0); |
|
}); |
|
}); |
|
|
|
describe("stores", function() { |
|
function makeChart(storeOnSeries, chartCfg, seriesCfg) { |
|
var cfg = Ext.apply({ |
|
xtype: 'cartesian', |
|
axes: [{ |
|
type: 'numeric', |
|
position: 'left' |
|
}, { |
|
type: 'category', |
|
position: 'bottom' |
|
}], |
|
animation: false, |
|
series: Ext.apply({ |
|
type: 'bar', |
|
xField: 'label', |
|
yField: 'value' |
|
}, seriesCfg) |
|
}, chartCfg); |
|
if (storeOnSeries) { |
|
if (!cfg.series.store) { |
|
cfg.series.store = makeStore(3); |
|
} |
|
} else { |
|
if (!cfg.store) { |
|
cfg.store = makeStore(3); |
|
} |
|
} |
|
chart = new Ext.chart.CartesianChart(cfg); |
|
} |
|
|
|
function extractHasListeners(o) { |
|
var ret = {}, |
|
key; |
|
|
|
for (key in o) { |
|
ret[key] = o[key]; |
|
} |
|
delete ret._decr_; |
|
delete ret._incr_; |
|
return ret; |
|
} |
|
|
|
describe("store on the chart", function() { |
|
function makeStoreChart(chartCfg, seriesCfg) { |
|
makeChart(false, chartCfg, seriesCfg); |
|
} |
|
|
|
describe("configuration", function() { |
|
it("should accept a store id", function() { |
|
store = new Ext.data.Store({ |
|
model: Model, |
|
storeId: 'foo' |
|
}); |
|
makeStoreChart({ |
|
store: 'foo' |
|
}); |
|
expect(chart.getStore()).toBe(store); |
|
}); |
|
|
|
it("should accept a store config", function() { |
|
makeStoreChart({ |
|
store: { |
|
model: Model, |
|
data: [{}] |
|
} |
|
}); |
|
expect(chart.getStore().getCount()).toBe(1); |
|
expect(chart.getStore().getModel()).toBe(Model); |
|
}); |
|
|
|
it("should accept a store instance", function() { |
|
makeStore(10); |
|
makeStoreChart({ |
|
store: store |
|
}); |
|
expect(chart.getStore()).toBe(store); |
|
}); |
|
}); |
|
|
|
describe("destruction", function() { |
|
it("should remove all listeners", function() { |
|
makeStore(3); |
|
var listeners = extractHasListeners(store.hasListeners); |
|
makeStoreChart({ |
|
store: store |
|
}); |
|
chart.destroy(); |
|
expect(extractHasListeners(store.hasListeners)).toEqual(listeners); |
|
}); |
|
|
|
it("should not destroy the store by default", function() { |
|
makeStore(3); |
|
makeStoreChart({ |
|
store: store |
|
}); |
|
chart.destroy(); |
|
expect(store.isDestroyed).toBe(false); |
|
}); |
|
|
|
it("should destroy the store when the store has autoDestroy: true", function() { |
|
makeStore(3); |
|
store.setAutoDestroy(true); |
|
makeStoreChart({ |
|
store: store |
|
}); |
|
chart.destroy(); |
|
expect(store.isDestroyed).toBe(true); |
|
}); |
|
}); |
|
}); |
|
|
|
describe("store on the series", function() { |
|
function makeSeriesChart(chartCfg, seriesCfg) { |
|
makeChart(true, chartCfg, seriesCfg); |
|
} |
|
|
|
describe("configuration", function() { |
|
it("should accept a store id", function() { |
|
store = new Ext.data.Store({ |
|
model: Model, |
|
storeId: 'foo' |
|
}); |
|
makeSeriesChart(null, { |
|
store: 'foo' |
|
}); |
|
expect(chart.getStore().isEmptyStore).toBe(true); |
|
expect(chart.getSeries()[0].getStore()).toBe(store); |
|
}); |
|
|
|
it("should accept a store config", function() { |
|
makeSeriesChart(null, { |
|
store: { |
|
model: Model, |
|
data: [{}] |
|
} |
|
}); |
|
expect(chart.getStore().isEmptyStore).toBe(true); |
|
expect(chart.getSeries()[0].getStore().getCount()).toBe(1); |
|
expect(chart.getSeries()[0].getStore().getModel()).toBe(Model); |
|
}); |
|
|
|
it("should accept a store instance", function() { |
|
makeStore(10); |
|
makeSeriesChart(null, { |
|
store: store |
|
}); |
|
expect(chart.getStore().isEmptyStore).toBe(true); |
|
expect(chart.getSeries()[0].getStore()).toBe(store); |
|
}); |
|
}); |
|
|
|
describe("destruction", function() { |
|
it("should remove all listeners", function() { |
|
makeStore(3); |
|
var listeners = extractHasListeners(store.hasListeners); |
|
makeSeriesChart(null, { |
|
store: store |
|
}); |
|
chart.destroy(); |
|
expect(extractHasListeners(store.hasListeners)).toEqual(listeners); |
|
}); |
|
|
|
it("should not destroy the store by default", function() { |
|
makeStore(3); |
|
makeSeriesChart(null, { |
|
store: store |
|
}); |
|
chart.destroy(); |
|
expect(store.isDestroyed).toBe(false); |
|
}); |
|
|
|
it("should destroy the store when the store has autoDestroy: true", function() { |
|
makeStore(3); |
|
store.setAutoDestroy(true); |
|
makeSeriesChart(null, { |
|
store: store |
|
}); |
|
chart.destroy(); |
|
expect(store.isDestroyed).toBe(true); |
|
}); |
|
|
|
it("should not destroy the store when destroying the series by default", function() { |
|
makeStore(3); |
|
makeSeriesChart(null, { |
|
store: store |
|
}); |
|
chart.getSeries()[0].destroy(); |
|
expect(store.isDestroyed).toBe(false); |
|
}); |
|
|
|
it("should destroy the store when destroying the series when the store has autoDestroy: true", function() { |
|
makeStore(3); |
|
store.setAutoDestroy(true); |
|
makeSeriesChart(null, { |
|
store: store |
|
}); |
|
chart.getSeries()[0].destroy(); |
|
expect(store.isDestroyed).toBe(true); |
|
}); |
|
}); |
|
}); |
|
}); |
|
}); |