@@ -206,6 +206,57 @@ describe('table', function() {
206206 } ) ;
207207 } ) ;
208208
209+ describe ( 'Rendering with partial attribute support' , function ( ) {
210+ var mockCopy ,
211+ gd ;
212+
213+ afterEach ( destroyGraphDiv ) ;
214+
215+ it ( '`Plotly.plot` should render all the columns even if no cell contents were supplied yet' , function ( done ) {
216+ gd = createGraphDiv ( ) ;
217+ mockCopy = Lib . extendDeep ( { } , mock ) ;
218+ delete mockCopy . data [ 0 ] . cells ;
219+ Plotly . plot ( gd , mockCopy . data , mockCopy . layout ) . then ( function ( ) {
220+ expect ( gd . data . length ) . toEqual ( 1 ) ;
221+ expect ( gd . data [ 0 ] . header . values . length ) . toEqual ( 7 ) ;
222+ expect ( document . querySelectorAll ( '.' + cn . yColumn ) . length ) . toEqual ( 7 ) ;
223+ expect ( document . querySelectorAll ( '.' + cn . columnCell ) . length ) . toEqual ( 7 * 2 ) ; // both column rows to render
224+ done ( ) ;
225+ } ) ;
226+ } ) ;
227+
228+ it ( '`Plotly.plot` should render all columns even if no header contents were supplied yet' , function ( done ) {
229+ gd = createGraphDiv ( ) ;
230+ mockCopy = Lib . extendDeep ( { } , mock ) ;
231+ delete mockCopy . data [ 0 ] . header ;
232+ Plotly . plot ( gd , mockCopy . data , mockCopy . layout ) . then ( function ( ) {
233+ expect ( gd . data . length ) . toEqual ( 1 ) ;
234+ expect ( gd . data [ 0 ] . cells . values . length ) . toEqual ( 7 ) ;
235+ expect ( document . querySelectorAll ( '.' + cn . yColumn ) . length ) . toEqual ( 7 ) ;
236+ expect ( document . querySelectorAll ( '.' + cn . columnCell ) . length ) . toEqual ( 7 * 29 ) ;
237+ expect ( document . querySelectorAll ( '#header' ) . length ) . toEqual ( 7 ) ;
238+ expect ( document . querySelectorAll ( '#header .' + cn . columnCell ) . length ) . toEqual ( 7 ) ;
239+ expect ( document . querySelector ( '#header .' + cn . columnCell + ' text' ) . textContent ) . toEqual ( '' ) ;
240+ done ( ) ;
241+ } ) ;
242+ } ) ;
243+
244+ it ( '`Plotly.plot` should render all the column headers even if not all header values were supplied' , function ( done ) {
245+ gd = createGraphDiv ( ) ;
246+ mockCopy = Lib . extendDeep ( { } , mock ) ;
247+ mockCopy . data [ 0 ] . header . values = [ 'A' , 'S' , 'D' ] ; // doesn't cover all 7 columns
248+ Plotly . plot ( gd , mockCopy . data , mockCopy . layout ) . then ( function ( ) {
249+ expect ( gd . data . length ) . toEqual ( 1 ) ;
250+ expect ( gd . data [ 0 ] . cells . values . length ) . toEqual ( 7 ) ;
251+ expect ( document . querySelectorAll ( '.' + cn . yColumn ) . length ) . toEqual ( 7 ) ;
252+ expect ( document . querySelectorAll ( '#header' ) . length ) . toEqual ( 7 ) ;
253+ expect ( document . querySelectorAll ( '#header .' + cn . columnCell ) . length ) . toEqual ( 7 ) ;
254+ expect ( document . querySelector ( '#header .' + cn . columnCell + ' text' ) . textContent ) . toEqual ( 'A' ) ;
255+ done ( ) ;
256+ } ) ;
257+ } ) ;
258+ } ) ;
259+
209260 describe ( 'basic use and basic data restyling' , function ( ) {
210261 var mockCopy ,
211262 gd ;
0 commit comments