@@ -46,7 +46,7 @@ const startChartTest = async (canvasHtml: string): Promise<{ canvas: HTMLCanvasE
46
46
} ) ;
47
47
48
48
if ( ! chart ) {
49
- throw 'Missing TomSelect instance' ;
49
+ throw 'Missing ChartJS instance' ;
50
50
}
51
51
52
52
return { canvas : canvasElement , chart } ;
@@ -105,6 +105,33 @@ describe('ChartjsController', () => {
105
105
} ) ;
106
106
} ) ;
107
107
108
+ it ( 'will update when the view data changes without options' , async ( ) => {
109
+ let viewValueChangeCallCount = 0 ;
110
+
111
+ document . body . addEventListener ( 'chartjs:view-value-change' , ( event : any ) => {
112
+ viewValueChangeCallCount ++ ;
113
+ event . detail . options . showLines = true ;
114
+ } ) ;
115
+
116
+ const { chart, canvas } = await startChartTest ( `
117
+ <canvas
118
+ data-testid='canvas'
119
+ data-controller='check chartjs'
120
+ data-chartjs-view-value="{"type":"line","data":{"labels":["January","February","March","April","May","June","July"],"datasets":[{"label":"My First dataset","backgroundColor":"rgb(255, 99, 132)","borderColor":"rgb(255, 99, 132)","data":[0,10,5,2,20,30,45]}]},"options":[]}"
121
+ ></canvas>
122
+ ` ) ;
123
+
124
+ expect ( chart . options . showLines ) . toBeUndefined ( ) ;
125
+ // change label: January -> NewDataJanuary
126
+ const currentViewValue = JSON . parse ( '{"type":"line","data":{"labels":["NewDataJanuary","February","March","April","May","June","July"],"datasets":[{"label":"My First dataset","backgroundColor":"rgb(255, 99, 132)","borderColor":"rgb(255, 99, 132)","data":[0,10,5,2,20,30,45]}]},"options":[]}' ) ;
127
+ canvas . dataset . chartjsViewValue = JSON . stringify ( currentViewValue ) ;
128
+
129
+ await waitFor ( ( ) => {
130
+ expect ( chart . options . showLines ) . toBe ( true ) ;
131
+ expect ( viewValueChangeCallCount ) . toBe ( 1 ) ;
132
+ } ) ;
133
+ } ) ;
134
+
108
135
it ( 'dispatches the events correctly' , async ( ) => {
109
136
let preConnectCallCount = 0 ;
110
137
let preConnectDetail : any = null ;
0 commit comments