UNPKG

nvd3

Version:

A reusable charting library written in d3.js

229 lines (198 loc) 8.01 kB
describe 'NVD3', -> describe 'Cumulative Line Chart', -> sampleData1 = [ key: 'Series 1' values: [ [0.000001, 0.000001] [0,0] [1,1] [2,2] ] average: 1.3 ] sampleData2 = [ key: 'Series 1' values: [ [-1,-3] [0,6] [1,12] [2,18] ] average: 12.3 , key: 'Series 2' values: [ [-1,-4] [0,7] [1,13] [2,14] ] ] eventTooltipData = {mouseX: 1250, mouseY: 363, pointXValue: 1271774227712.8547} options = x: (d)-> d[0] y: (d)-> d[1] margin: right: 20 bottom: 30 left: 40 color: nv.utils.defaultColor() showLegend: true showXAxis: true showYAxis: true rightAlignYAxis: false useInteractiveGuideline: true noData: 'No Data Available' average: (d)-> d.average duration: 0 noErrorCheck: false builder1 = null beforeEach -> builder1 = new ChartBuilder nv.models.cumulativeLineChart() builder1.build options, sampleData1 # remove all tooltips elements = document.getElementsByClassName('nvtooltip') while(elements[0]) elements[0].parentNode.removeChild(elements[0]) afterEach -> builder1.teardown() it 'api check', -> should.exist builder1.model.options, 'options exposed' for opt of options should.exist builder1.model[opt](), "#{opt} can be called" it 'renders', -> wrap = builder1.$ 'g.nvd3.nv-cumulativeLine' should.exist wrap[0] it 'has the element with .nv-cumulativeLine class right positioned', -> cumulativeLine = builder1.$ 'g.nvd3.nv-cumulativeLine' cumulativeLine[0].getAttribute('transform').should.be.equal "translate(40,30)" it 'clears chart objects for no data', -> builder = new ChartBuilder nv.models.cumulativeLineChart() builder.buildover options, sampleData1, [] groups = builder.$ 'g' groups.length.should.equal 0, 'removes chart components' it 'has correct structure', -> cssClasses = [ '.nv-interactive' '.nv-interactiveLineLayer' '.nv-interactiveGuideLine' '.nv-y.nv-axis' '.nv-x.nv-axis' '.nv-background' '.nv-linesWrap' '.nv-line' '.nv-scatterWrap' '.nv-scatter' '.nv-indexLine' '.nv-avgLinesWrap' '.nv-legendWrap' '.nv-controlsWrap' '.tempDisabled' ] for cssClass in cssClasses do (cssClass) -> should.exist builder1.$("g.nvd3 #{cssClass}")[0] describe "applies correctly option", -> builder = null sampleData = sampleData1 beforeEach -> builder = new ChartBuilder nv.models.cumulativeLineChart() afterEach -> builder.teardown() # todo: ideally it should work, but... xit 'margin', -> options = margin: top: 10 right: 20 bottom: 30 left: 40 builder.build options, sampleData builder.$(".nv-cumulativeLine")[0].getAttribute('transform').should.be.equal "translate(40,10)" it "color", -> options.color = -> "#000000" builder.build options, sampleData legendSymbol = builder.$(".nv-cumulativeLine .nv-legend-symbol") expect(legendSymbol[0].getAttribute("style")).to.contain "fill: rgb(0, 0, 0)" expect(legendSymbol[0].getAttribute("style")).to.contain "stroke: rgb(0, 0, 0)" describe "showLegend", -> it 'true', -> options.showLegend = true builder.build options, sampleData builder.$(".nv-cumulativeLine .nv-legendWrap *").length.should.not.be.equal 0 it 'false', -> options = showLegend : false builder.build options, sampleData builder.$(".nv-cumulativeLine .nv-legendWrap *").length.should.be.equal 0 describe 'showXAxis', -> it 'true', -> options.showXAxis = true builder.build options, sampleData builder.$(".nv-cumulativeLine .nv-axis.nv-x *").length.should.not.be.equal 0 it 'false', -> options.showXAxis = false builder.build options, sampleData builder.$(".nv-cumulativeLine .nv-axis.nv-x *").length.should.be.equal 0 it 'can override axis ticks', -> builder.build options, sampleData builder.model.xAxis.ticks(34) builder.model.yAxis.ticks(56) builder.model.update() builder.model.xAxis.ticks().should.equal 34 builder.model.yAxis.ticks().should.equal 56 describe 'showYAxis', -> it 'true', -> options.showYAxis = true builder.build options, sampleData builder.$(".nv-cumulativeLine .nv-axis.nv-y *").length.should.not.be.equal 0 it 'false', -> options.showYAxis = false builder.build options, sampleData builder.$(".nv-cumulativeLine .nv-axis.nv-y *").length.should.be.equal 0 describe 'rightAlignYAxis', -> it 'true', -> options.rightAlignYAxis = true builder.build options, sampleData builder.$(".nv-cumulativeLine .nv-axis.nv-y")[0].getAttribute('transform').should.be.equal "translate(870,0)" it 'false', -> options.rightAlignYAxis = false builder.build options, sampleData assert.isNull builder.$(".nv-cumulativeLine .nv-axis.nv-y")[0].getAttribute('transform') describe "useInteractiveGuideline", -> it "true", -> options.useInteractiveGuideline = true builder.build options, sampleData builder.$(".nv-cumulativeLine .nv-interactiveLineLayer").should.have.length 1 it "false", -> options.useInteractiveGuideline = false builder.build options, sampleData builder.$(".nv-cumulativeLine .nv-interactiveLineLayer").should.have.length 0 # todo: pass this describe "noErrorCheck", -> xit "true", -> options.noErrorCheck = true builder.build options, sampleData xit "false", -> options.noErrorCheck = false builder.build options, sampleData it "noData", -> options.noData = "error error" builder.build options, [] builder.svg.textContent.should.be.equal 'error error' it "x", -> options.x = (d) -> d[1] builder.build options, sampleData builder.model.x()([1,2]).should.be.equal 2 it "y", -> options.y = (d) -> d[0] builder.build options, sampleData builder.model.y()({display: {y: 1}}).should.be.equal 1 it "average", -> options.average = (d)-> d.avg builder.build options, sampleData builder.model.average()({avg: 1}).should.be.equal 1 it "duration", -> options.duration = 100 builder.build options, sampleData builder.model.duration().should.be.equal 100