UNPKG

@fusioncharts/charts

Version:

JavaScript Data Visualisation Library

1 lines 17.2 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _extends=require("@babel/runtime/helpers/extends");var _core=_interopRequireDefault(require("../../../../fusioncharts/core"));var _index=_interopRequireDefault(require("./index"));var _pie2d=_interopRequireDefault(require("../../../../../smoke-test/test-sanity/pie2d.sanity"));var _ignoreCaseExt=_interopRequireDefault(require("../../../../fc-features/src/ignore-case-ext"));var _utility=require("../../../../../smoke-test/test-sanity/utility");var _lib=require("../../../../fc-core/src/lib/");var _common=_interopRequireDefault(require("../../../../../smoke-test/test-sanity/common.sanity"));var chartData=_interopRequireWildcard(require("../../../../../smoke-test/test-data/data-by-chart"));function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var o,i,f=_extends({},null,{default:e});if(null===e||"object"!=typeof e&&"function"!=typeof e)return f;if(o=t?n:r){if(o.has(e))return o.get(e);o.set(e,f)}for(var _t in e)"default"!==_t&&{}.hasOwnProperty.call(e,_t)&&((i=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,_t))&&(i.get||i.set)?o(f,_t,i):f[_t]=e[_t]);return f})(e,t)}_core.default.addDep(_index.default);_core.default.addDep(_ignoreCaseExt.default);var svgElement,chartName=_index.default.getName(),chartID=chartName.toLowerCase(),doc=window.document;describe("Running common chart tests for "+chartName,(function(){var chart={type:chartID,renderAt:_utility.CONTAINER_ID,width:_utility.initDimensions.width,height:_utility.initDimensions.height,dataFormat:"json",dataSource:{}},config={chartID:chartID,chart:chart,document:doc,chartWrapperId:_utility.CONTAINER_ID};_common.default.forEach((function(test){var itArr;if(test.name&&test.run){it(test.name,(function(done){test.run(config,(function(result){expect(result).toBe(true);done()}))}))}else if(test.iterator){itArr=test.iterator(chart);itArr.forEach((function(subTest){it(subTest.name,(function(done){subTest.run(config,(function(result){expect(result).toBe(true);done()}))}))}))}}))}));describe("Chart basic testing: "+chartName,(function(){var chart,chartObj,itResize,renderData=_pie2d.default.BASIC.newChart,updateData=_pie2d.default.BASIC.updateChart;chart={type:chartID,renderAt:_utility.CONTAINER_ID};(0,_lib.extend2)(chart,renderData);chart.dataSource=chart.dataSource?chart.dataSource:chartData[chartID]["default"];chart.dataSource.chart.animation="0";beforeEach((function(){chartObj=(0,_utility.setup)(_core.default,chart)}));afterEach((function(){if(chartObj&&!chartObj.disposed)chartObj.dispose()}));it("Rendered chart validation passes",(function(done){expect(chartObj).toBeDefined();var renderComplete=function renderComplete(){var response=_pie2d.default.BASIC.validate(chartObj);expect(response.flag).toBe(true,response.messages.join(" && "));done()};chartObj.render();chartObj.addEventListener("renderComplete",renderComplete)}));it("Chart update passes",(function(done){expect(chartObj).toBeDefined();var called=0;var renderComplete=function renderComplete(){if(called===0){called++;chartObj.setChartData(updateData||chart.dataSource,"json")}else if(called===1){var response=_pie2d.default.BASIC.updateValidate(chartObj);expect(response.flag).toBe(true,response.messages.join(" && "));done()}};chartObj.addEventListener("renderComplete",renderComplete);chartObj.render()}));itResize=function itResize(resizeDimensions){it("Chart resize passes for "+resizeDimensions.width+" x "+resizeDimensions.height,(function(done){expect(chartObj).toBeDefined();var renderComplete=function renderComplete(){var response=_pie2d.default.BASIC.resizeValidate(chartObj);expect(response.flag).toBe(true,response.messages.join(" && "));done()};chartObj.addEventListener("renderComplete",renderComplete);chartObj.render((function(){chartObj.resizeTo(resizeDimensions.width,resizeDimensions.height)}))}))};for(var index=0;index<_utility.resizeDimensions.length;index++){itResize(_utility.resizeDimensions[index])}}));describe("Chart EI testing: "+_index.default.getName(),(function(){var chart,chartObj,eiMethods,renderData=_pie2d.default.EI.newChart;chart={type:chartID,renderAt:_utility.CONTAINER_ID};(0,_lib.extend2)(chart,renderData);chart.dataSource=chart.dataSource?chart.dataSource:chartData[chartID]["default"];chart.dataSource.chart.animation="0";chart.dataSource.chart.slicingDistance=_utility.SLICING_DISTANCE;beforeEach((function(){chartObj=(0,_utility.setup)(_core.default,chart)}));afterEach((function(){if(chartObj&&!chartObj.disposed)chartObj.dispose()}));eiMethods=function eiMethods(methodObj){it(methodObj.name,(function(done){expect(chartObj).toBeDefined();var renderComplete=function renderComplete(){svgElement=(0,_utility.getSVG)(chartObj);methodObj.fn(svgElement,chartObj,(function(result){expect(result).toBe(true);done()}))};chartObj.addEventListener("renderComplete",renderComplete);chartObj.render()}))};for(var key in _pie2d.default.EI.methods){if(_pie2d.default.EI.methods.hasOwnProperty(key)){eiMethods(_pie2d.default.EI.methods[key])}}}));describe("pie2d, pie3d pieradius in percentage testing",(function(){var chartObj,renderInfo={type:"pie2d",renderAt:_utility.CONTAINER_ID,width:"600",height:"350",dataFormat:"json"},data={chart:{caption:"Conversion Ratio",subcaption:"May 2007",animation:"1",is2d:"1",showlabelsatcenter:"1",pieradius:"20%"},data:[{label:"A",value:"100"},{label:"B",value:"100"}],styles:{definition:[{type:"font",name:"captionFont",size:"15"}],application:[{toobject:"CAPTION",styles:"captionFont"}]}};beforeEach((function(){renderInfo.dataSource=data;chartObj=(0,_utility.setup)(_core.default,renderInfo)}));afterEach((function(){chartObj&&!chartObj.disposed&&chartObj.dispose()}));it("pieradius is set to 20%",(function(done){chartObj.addEventListener("renderComplete",(function(){if(document.querySelectorAll('[class*="-pie-plot"]')[0].children[1].getBBox().width===70){done()}}));chartObj.render()}))}));describe("DataLabel test",(function(){var dataSource1={chart:{caption:"Company Revenue",showpercentagevalues:"1",animation:"1"},data:[{label:"Services",value:"26"},{label:"Hardware",value:"32"},{label:"Software",value:"42"}]},dataSource2={chart:{caption:"Company Revenue",showpercentagevalues:"1",animation:"1"},data:[{label:"Services",value:"26000"},{label:"Hardware",value:"3"},{label:"Software",value:"4"},{label:"Consultancy",value:"5"},{label:"Misc",value:"6"}]},dataSource3={chart:{caption:"Company Revenue",showpercentagevalues:"1",animation:"1",labelposition:"inside",valueposition:"inside"},data:[{label:"Services",value:"26"},{label:"Hardware",value:"32"},{label:"Software",value:"42"}]},dataSource4={chart:{caption:"Company Revenue",showpercentagevalues:"1",animation:"1",labelposition:"inside",valueposition:"inside"},data:[{label:"Services",value:"26",labelposition:"outside",valueposition:"outside"},{label:"Hardware",value:"32"},{label:"Software",value:"42"}]},dataSource5={chart:{showpercentagevalues:"1",animation:"1"},data:[{label:"Services",value:"26"}]},dataSource6={chart:{showpercentagevalues:"1",animation:"1",valueposition:"inside"},data:[{label:"Services",value:"26"},{label:"Hardware",value:"32"},{label:"Software",value:"42"}]},dataSource7={chart:{showpercentagevalues:"1",animation:"1",minAngleForValue:"270",minAngleForLabel:"270"},data:[{label:"Services",value:"26"},{label:"Hardware",value:"32"},{label:"Software",value:"42"}]},dataSource8={chart:{showpercentagevalues:"1",animation:"1",minAngleForValue:"100",minAngleForLabel:"100",valueposition:"inside"},data:[{label:"Services",value:"26"},{label:"Hardware",value:"32"},{label:"Software",value:"42"}]},dataSource9={chart:{showpercentagevalues:"1",animation:"1",minAngleForValue:"100",minAngleForLabel:"100",labelposition:"inside"},data:[{label:"Services",value:"26"},{label:"Hardware",value:"32"},{label:"Software",value:"42"}]},dataSource10={chart:{showpercentagevalues:"1",animation:"1",minAngleForValue:"100",minAngleForLabel:"100",labelposition:"inside",valueposition:"inside"},data:[{label:"Services",value:"26"},{label:"Hardware",value:"32"},{label:"Software",value:"42"}]},dataSource11={chart:{showpercentagevalues:"1",animation:"1",labelposition:"inside",valueposition:"inside",minAngleForValue:"91",minAngleForLabel:"90"},data:[{label:"Services",value:"25"},{label:"Hardware",value:"25"},{label:"Software",value:"50"}]},dataSource12={chart:{showpercentagevalues:"1",animation:"1",labelposition:"outside",valueposition:"inside",minAngleForValue:"0",minAngleForLabel:"0"},data:[{label:"Services",value:"0"},{label:"Hardware",value:"25"},{label:"Software",value:"50"}]},chartObj=(0,_utility.setup)(_core.default,{type:chartID,renderAt:_utility.CONTAINER_ID,width:"600",height:"350",dataFormat:"json",dataSource:dataSource1});afterEach((function(){return chartObj.dispose()}));it("Datalabels should be placed at proper position",(function(done){chartObj.addEventListener("renderComplete",(function(e){e.detachHandler();var xPosValues=[341,180,395],yPosValues=[312,130,100];var labels=document.querySelectorAll('[class$="labels"]')[1].getElementsByTagName("text"),len=labels.length,i,xPos,yPos;for(i=0;i<len;i++){xPos=+labels[i].getAttribute("x");yPos=+labels[i].getAttribute("y");expect(Math.abs(xPos-xPosValues[i])).toBeLessThan(2);expect(Math.abs(yPos-yPosValues[i])).toBeLessThan(2)}done()}));chartObj.render()}));it("Datalabels should not overlap even if labels are placed very close to each other",(function(done){chartObj=(0,_utility.setup)(_core.default,{type:chartID,renderAt:_utility.CONTAINER_ID,width:"600",height:"350",dataFormat:"json",dataSource:dataSource2});chartObj.addEventListener("renderComplete",(function(e){e.detachHandler();var xPosValues=[430,432,434,435,164],yPosValues=[226,216,206,196,186];var labels=document.querySelectorAll('[class$="labels"]')[1].getElementsByTagName("text"),len=labels.length,i,xPos,yPos;for(i=0;i<len;i++){xPos=+labels[i].getAttribute("x");yPos=+labels[i].getAttribute("y");expect(Math.abs(xPos-xPosValues[i])).toBeLessThan(2);expect(Math.abs(yPos-yPosValues[i])).toBeLessThan(2)}done()}));chartObj.render()}));it("Datalabels should be placed at correct position when both labels and values are placed inside(attributes at chart level)",(function(done){chartObj=(0,_utility.setup)(_core.default,{type:chartID,renderAt:_utility.CONTAINER_ID,width:"600",height:"350",dataFormat:"json",dataSource:dataSource3});chartObj.addEventListener("renderComplete",(function(e){e.detachHandler();var xPosValues=[350,235,318],yPosValues=[137,155,262];var labels=document.querySelectorAll('[class$="labels"]')[1].getElementsByTagName("text"),len=labels.length,i,xPos,yPos;for(i=0;i<len;i++){xPos=+labels[i].getAttribute("x");yPos=+labels[i].getAttribute("y");expect(Math.floor(Math.abs(xPos-xPosValues[i]))).toBeLessThan(15);expect(Math.floor(Math.abs(yPos-yPosValues[i]))).toBeLessThan(15)}done()}));chartObj.render()}));it("labelPosition and valuePosition attribute values at data level should be overwrite the same attributes at chart level",(function(done){chartObj=(0,_utility.setup)(_core.default,{type:chartID,renderAt:_utility.CONTAINER_ID,width:"600",height:"350",dataFormat:"json",dataSource:dataSource4});chartObj.addEventListener("renderComplete",(function(e){e.detachHandler();var xPosValues=[395,235,318],yPosValues=[100,155,262];var labels=document.querySelectorAll('[class$="labels"]')[1].getElementsByTagName("text"),len=labels.length,i,xPos,yPos;for(i=0;i<len;i++){xPos=+labels[i].getAttribute("x");yPos=+labels[i].getAttribute("y");expect(Math.abs(xPos-xPosValues[i])).toBeLessThan(16);expect(Math.abs(yPos-yPosValues[i])).toBeLessThan(16)}done()}));chartObj.render()}));it("For single data, datalabel should be placed inside by default",(function(done){chartObj=(0,_utility.setup)(_core.default,{type:chartID,renderAt:_utility.CONTAINER_ID,width:"600",height:"350",dataFormat:"json",dataSource:dataSource5});chartObj.addEventListener("renderComplete",(function(e){e.detachHandler();var plot=document.querySelectorAll('[class$="plots"]')[1].children[0],label=document.querySelectorAll('[class$="labels"]')[1].children[0],plotBBox=plot.getBBox();expect(Math.abs(plotBBox.x+plotBBox.width/2-label.getAttribute("x"))).toBeLessThanOrEqual(15);expect(Math.abs(plotBBox.y+plotBBox.height/2-label.getAttribute("y"))).toBeLessThanOrEqual(15);done()}));chartObj.render()}));it("Labels are placed outside and values are placed inside",(function(done){chartObj=(0,_utility.setup)(_core.default,{type:chartID,renderAt:_utility.CONTAINER_ID,width:"600",height:"350",dataFormat:"json",dataSource:dataSource6});chartObj.addEventListener("renderComplete",(function(e){e.detachHandler();var xPosValues=[344,169,404,356,227,320],yPosValues=[312,112,77,118,138,258];var labels=document.querySelectorAll('[class$="labels"]')[1].getElementsByTagName("text"),i,len=labels.length,xPos,yPos;for(i=0;i<len;i++){xPos=+labels[i].getAttribute("x");yPos=+labels[i].getAttribute("y");expect(Math.abs(xPos-xPosValues[i])).toBeLessThan(2);expect(Math.abs(yPos-yPosValues[i])).toBeLessThan(2)}done()}));chartObj.render()}));it("minAngleForValue and minAngleForLabel should not work when datalabels are placed outside",(function(done){chartObj=(0,_utility.setup)(_core.default,{type:chartID,renderAt:_utility.CONTAINER_ID,width:"600",height:"350",dataFormat:"json",dataSource:dataSource7});chartObj.addEventListener("renderComplete",(function(e){e.detachHandler();var labels=document.querySelectorAll('[class$="labels"]')[1].getElementsByTagName("text");expect(labels.length).toBe(3);done()}));chartObj.render()}));it("Values should be skipped when placed inside and skip angle information is provided, labels should not be affected",(function(done){chartObj=(0,_utility.setup)(_core.default,{type:chartID,renderAt:_utility.CONTAINER_ID,width:"600",height:"350",dataFormat:"json",dataSource:dataSource8});chartObj.addEventListener("renderComplete",(function(e){e.detachHandler();var labels=document.querySelectorAll('[class$="labels"]')[1].getElementsByTagName("text");expect(labels.length).toBe(5);done()}));chartObj.render()}));it("Labels should be skipped when placed inside and skip angle information is provided, values should not be affected",(function(done){chartObj=(0,_utility.setup)(_core.default,{type:chartID,renderAt:_utility.CONTAINER_ID,width:"600",height:"350",dataFormat:"json",dataSource:dataSource9});chartObj.addEventListener("renderComplete",(function(e){e.detachHandler();var labels=document.querySelectorAll('[class$="labels"]')[1].getElementsByTagName("text");expect(labels.length).toBe(5);done()}));chartObj.render()}));it("Labels and values should be skipped when both are placed inside and skip angle information is provided",(function(done){chartObj=(0,_utility.setup)(_core.default,{type:chartID,renderAt:_utility.CONTAINER_ID,width:"600",height:"350",dataFormat:"json",dataSource:dataSource10});chartObj.addEventListener("renderComplete",(function(e){e.detachHandler();var labels=document.querySelectorAll('[class$="labels"]')[1].getElementsByTagName("text");expect(labels.length).toBe(2);done()}));chartObj.render()}));it("When placed inside, datalabel should not be skipped when sector angle >= minAngle provided",(function(done){chartObj=(0,_utility.setup)(_core.default,{type:chartID,renderAt:_utility.CONTAINER_ID,width:"600",height:"350",dataFormat:"json",dataSource:dataSource11});chartObj.addEventListener("renderComplete",(function(e){e.detachHandler();var labelAr=["Services","Hardware","Software, 50%"];var labels=document.querySelectorAll('[class$="labels"]')[1].getElementsByTagName("text"),i,len=labels.length;for(i=0;i<len;i++){expect(labels[i].innerHTML).toBe(labelAr[i])}done()}));chartObj.render()}));it("Zero pie labels should not be skipped when either label or value is placed inside",(function(done){chartObj=(0,_utility.setup)(_core.default,{type:chartID,renderAt:_utility.CONTAINER_ID,width:"600",height:"350",dataFormat:"json",dataSource:dataSource12});chartObj.addEventListener("renderComplete",(function(e){e.detachHandler();var labels=document.querySelectorAll('[class$="labels"]')[1].getElementsByTagName("text");expect(labels.length).toBe(6);done()}));chartObj.render()}))}));describe("pie2d enable smartlabels test",(function(){var chartObj,renderInfo={type:"pie2d",renderAt:_utility.CONTAINER_ID,width:"600",height:"350",dataFormat:"json"},data={chart:{caption:"Company Revenue",showpercentagevalues:"1",enablesmartlabels:"0",animation:"1"},data:[{label:"Services",value:"26"},{label:"Hardware",value:"32"},{label:"Software",value:"42"}]};beforeEach((function(){renderInfo.dataSource=data;chartObj=(0,_utility.setup)(_core.default,renderInfo)}));afterEach((function(){chartObj&&!chartObj.disposed&&chartObj.dispose()}));it("should not draw connectors when enableSmartLabels is disabled",(function(done){chartObj.addEventListener("renderComplete",(function(){var connectors=document.querySelector('[class*="-labels"]').getElementsByTagName("path");expect(connectors.length).toBe(0);done()}));chartObj.render()}))}));