nvd3
Version:
A reusable charting library written in d3.js
86 lines (73 loc) • 2.45 kB
text/coffeescript
describe 'NVD3', ->
describe 'Sankey Chart', ->
sampleData1 =
nodes:
[
{'node': 1, 'name': 'Test 1'}
{'node': 2, 'name': 'Test 2'}
{'node': 3, 'name': 'Test 3'}
{'node': 4, 'name': 'Test 4'}
{'node': 5, 'name': 'Test 5'}
{'node': 6, 'name': 'Test 6'}
]
links:
[
{'source': 0, 'target': 1, 'value': 2295}
{'source': 0, 'target': 5, 'value': 1199}
{'source': 1, 'target': 2, 'value': 1119}
{'source': 1, 'target': 5, 'value': 1176}
{'source': 2, 'target': 3, 'value': 487}
{'source': 2, 'target': 5, 'value': 632}
{'source': 3, 'target': 4, 'value': 301}
{'source': 3, 'target': 5, 'value': 186}
]
options =
margin:
top: 30
right: 20
bottom: 50
left: 75
width: 200
height: 200
units: 'test'
format: ->
linkTitle: -> 'link title test'
nodeWidth: 77
nodePadding: 10
nodeStyle:
nodeFillColor: -> '#f00'
nodeStrokeColor: -> '#00f'
nodeTitle: -> 'testing the title'
builder = null
beforeEach ->
builder = new ChartBuilder nv.models.sankeyChart()
builder.build options, sampleData1
afterEach ->
builder.teardown()
it 'api check', ->
should.exist builder.model.options, 'options exposed'
for opt of options
should.exist builder.model[opt](), "#{opt} can be called"
it 'renders', ->
wrap = builder.$ 'g.nvd3.nv-sankeyChart'
should.exist wrap[0]
it 'has correct structure', ->
cssClasses = [
'.node'
'.link'
]
for cssClass in cssClasses
do (cssClass) ->
should.exist builder.$("g.nvd3.nv-sankeyChart #{cssClass}")[0]
it 'renders nodes', ->
nodes = builder.$("g.nvd3.nv-sankeyChart .node")
nodes.should.have.length 6
it 'nodes has the right width', ->
should.exist builder.$("g.nvd3.nv-sankeyChart .node rect[width]")[0]
builder.$("g.nvd3.nv-sankeyChart .node rect[width]")[0].width.animVal.value.should.equal 77
it 'renders links', ->
links = builder.$("g.nvd3.nv-sankeyChart .link")
links.should.have.length 8
it 'link titles has the test text', ->
link = builder.$("g.nvd3.nv-sankeyChart .link title")
link[0].textContent.should.equal 'link title test'