(Go Back) Choose State To Move From
" || typeof window === "undefined") {
global.window = {}
}
const test = require("tape")
const d3 = require("d3")
const jsdom = require("jsdom")
const data = require("./data.js")
const { createChart, updateChart } = require("../src/chart.js")
test("chart", function (t) {
const document = jsdom.jsdom()
const container = document.createElement("div")
const chart = createChart(container)
t.equal(chart.container(), container, "container is set")
t.equal(chart.element().node().tagName, "svg", "svg element is created")
t.equal(chart.element().node().parentNode, container, "svg element is child of container")
t.equal(chart.width(), 400, "default width is 400")
t.equal(chart.height(), 300, "default height is 300")
chart.width(500)
chart.height(400)
t.equal(chart.width(), 500, "width is set")
t.equal(chart.height(), 400, "height is set")
t.equal(chart.margin().top, 20, "default margin top is 20")
t.equal(chart.margin().right, 20, "default margin right is 20")
t.equal(chart.margin().bottom, 30, "default margin bottom is 30")
t.equal(chart.margin().left, 50, "default margin left is 50")
chart.margin({
top: 30,
right: 40,
bottom: 50,
left: 60
})
t.equal(chart.margin().top, 30, "margin top is set")
t.equal(chart.margin().right, 40, "margin right is set")
t.equal(chart.margin().bottom, 50, "margin bottom is set")
t.equal(chart.margin().left, 60, "margin left is set")
t.equal(chart.title(), null, "default title is null")
t.equal(chart.subtitle(), null, "default subtitle is null")
chart.title("My chart")
chart.subtitle("My subtitle")
t.equal(chart.title(), "My chart", "title is set")
t.equal(chart.subtitle(), "My subtitle", "subtitle is set")
t.equal(chart.xScale(), null, "default x scale is null")
t.equal(chart.yScale(), null, "default y scale is null")
t.equal(chart.xAxis(), null, "default x axis is null")
t.equal(chart.yAxis(), null, "default y axis is null")
chart.xScale(d3.scaleTime())
chart.yScale(d3.scaleLinear())
chart.xAxis(d3.axisBottom())
chart.yAxis(d3.axisLeft())
t.equal(chart.xScale().constructor.name, "TimeScale", "x scale is set")
t.equal(chart.yScale().constructor.name, "Linear", "y scale is set")
t.equal(chart.xAxis().constructor.name, "Axis", "x axis is set")
t.equal(chart.yAxis().constructor.name, "Axis", "y axis is set")
t.equal(chart.xScale()(new Date("2015-01-01")), 0, "x scale maps 2015-01-01 to 0")
t.equal(chart.xScale()(new Date("2016-01-01")), 400, "x scale maps 2016-01-01 to 400")
t.equal(chart.yScale()(0), 300, "y scale maps 0 to 300")
t.equal(chart.yScale()(1000), 0, "y scale maps 1000 to 0")
chart.data(data)
chart.x(function (d) { return d.date })
chart.y(function (d) { return d.value })
chart.update()
t.equal(chart.data()[0].date.constructor.name, "Date", "data is parsed to dates")
t.equal(chart.data()[0].value.constructor.name, "Number", "data is parsed to numbers")
t.equal(chart.xScale()(new Date("2015-01-01")), 0, "x scale maps 2015-01-01 to 0")
t.equal(chart.xScale()(new Date("2016-01-01")), 400, "x scale maps 2016-01-01 to 400")
t.equal(chart.yScale()(0), 300, "y scale maps 0 to 300")
t.equal(chart.yScale()(1000), 0, "y scale maps 1000 to 0")
t.equal(chart.xAxis().scale(), chart.xScale(), "x axis scale is set")
t.equal(chart.yAxis().scale(), chart.yScale(), "y axis scale is set")
t.equal(chart.xAxis().ticks().length, 10, "x axis ticks is 10")
t.equal(chart.yAxis().ticks().length, 10, "y axis ticks is 10")
t.equal(chart.xAxis().tickFormat()(new Date("2015-01-01")), "2015", "x axis tick format is set")
t.equal(chart.yAxis().tickFormat()(1000), "1,000", "y axis tick format is set")
t.equal(chart.xAxis().tickSizeInner(), -280, "x axis tick size inner is set")
t.equal(chart.xAxis().tickSizeOuter(), 0, "x axis tick size outer is set")
t.equal(chart.yAxis().tickSizeInner(), -340, "y axis tick size inner is set")
t.equal(chart.yAxis().tickSizeOuter(), 0, "y axis tick size outer is set")
t.equal(chart.xAxis().tickPadding(), 10, "x axis tick padding is set")
t.equal(chart.yAxis().tickPadding(), 10, "y axis tick padding is set")
t.equal(chart.xAxis().tickValues(), null, "x axis tick values is null")
t.equal(chart.yAxis().tickValues(), null, "y axis tick values is null")
chart.xAxis().tickValues([new Date("2015-01-01"), new Date("2016-01-01")])
chart.yAxis().tickValues([0, 1000])
t.equal(chart.xAxis().tickValues().length, 2, "x axis tick values is set")
t.equal(chart.yAxis().tickValues().length, 2, "y axis tick values is set")
t.equal(chart.xAxis().tickValues()[0].constructor.name, "Date", "x axis tick values is parsed to dates")
t.equal(chart.yAxis().tickValues()[0].constructor.name, "Number", "y axis tick values is parsed to numbers")
t.equal(chart.xAxis().tickValues()[0].getTime(), new Date("2015-01-01").getTime(), "x axis tick values is 2015-01-01")
t.equal(chart.xAxis().tickValues()[1].getTime(), new Date("2016-01-01").getTime(), "x axis tick values is 2016-01-01")
t.equal(chart.yAxis().tickValues()[0], 0, "y axis tick values is 0")
t.equal(chart.yAxis().tickValues()[1], 1000, "y axis tick values is 1000")
t.equal(chart.xAxis().tickSizeInner(), 0, "x axis tick size inner is not set")
t.equal(chart.xAxis().tickSizeOuter(), 0, "x axis tick size outer is not set")
t.equal(chart.yAxis().tickSizeInner(), 0, "y axis tick size inner is not set")
t.equal(chart.yAxis().tickSizeOuter(), 0, "y axis tick size outer is not set")
t.equal(chart.xAxis().tickPadding(), 0, "x axis tick padding is not set")
t.equal(chart.yAxis().tickPadding(), 0, "y axis tick padding is not set")
t.equal(chart.xAxis().tickSizeInner(), 0, "x axis tick size inner is not set")
t.equal(chart.xAxis().tickSizeOuter(), 0, "x axis tick size outer is not set")
t.equal(chart.yAxis().tickSizeInner(), 0, "y axis tick size inner is not set")
t.equal(chart.yAxis().tickSizeOuter(), 0, "y axis tick size outer is not set")
t.equal(chart.xAxis().tickPadding(), 0, "x axis tick padding is not set")
t.equal(chart.yAxis().tickPadding(), 0, "y axis tick padding is not set")
t.equal(chart.xAxis().tickFormat()(new Date("2015-01-01")), "2015", "x axis tick format is not set")
t.equal(chart.yAxis().tickFormat()(1000), "1,000", "y axis tick format is not set")
chart.update()
t.equal(chart.xAxis().tickSizeInner(), -280, "x axis tick size inner is set")
t.equal(chart.xAxis().tickSizeOuter(), 0, "x axis tick size outer is set")
t.equal(chart.yAxis().tickSizeInner(), -340, "y axis tick size inner is set")
t.equal(chart.yAxis().tickSizeOuter(), 0, "y axis tick size outer is set")
t.equal(chart.xAxis().tickPadding(), 10, "x axis tick padding is set")
t.equal(chart.yAxis().tickPadding(), 10, "y axis tick padding is set")
t.equal(chart.xAxis().tickFormat()(new Date("2015-01-01")), "2015", "