@@ -61,6 +61,64 @@ test.describe("Regression tests", () => {
6161 ] ) ;
6262 } ) ;
6363
64+ test ( "in filter generates correct array-encoded config" , async ( {
65+ page,
66+ } ) => {
67+ await page . evaluate ( async ( ) => {
68+ const viewer = document . querySelector ( "perspective-viewer" ) ;
69+ await viewer . restore ( {
70+ group_by : [ "State" ] ,
71+ columns : [ "Sales" ] ,
72+ settings : true ,
73+ filter : [ [ "State" , "in" , [ ] ] ] ,
74+ } ) ;
75+
76+ const filter = viewer . shadowRoot . querySelector (
77+ ".pivot-column input[type=text]"
78+ ) ;
79+ filter . value = "C" ;
80+ const event = new Event ( "input" , {
81+ bubbles : true ,
82+ cancelable : true ,
83+ } ) ;
84+
85+ filter . dispatchEvent ( event ) ;
86+ } ) ;
87+
88+ const elem = await page . waitForSelector ( "perspective-dropdown" ) ;
89+ await page . evaluate ( ( elem ) => {
90+ let node = elem . shadowRoot . querySelector ( "span:first-of-type" ) ;
91+ var clickEvent = document . createEvent ( "MouseEvents" ) ;
92+ clickEvent . initEvent ( "mousedown" , true , true ) ;
93+ node . dispatchEvent ( clickEvent ) ;
94+ } , elem ) ;
95+
96+ const config = await page . evaluate ( async ( ) => {
97+ const viewer = document . querySelector ( "perspective-viewer" ) ;
98+ return await viewer . save ( ) ;
99+ } ) ;
100+
101+ expect ( config ) . toEqual ( {
102+ aggregates : { } ,
103+ columns : [ "Sales" ] ,
104+ expressions : [ ] ,
105+ filter : [ [ "State" , "in" , [ "California" ] ] ] ,
106+ group_by : [ "State" ] ,
107+ plugin : "Debug" ,
108+ plugin_config : { } ,
109+ settings : true ,
110+ sort : [ ] ,
111+ split_by : [ ] ,
112+ theme : "Pro Light" ,
113+ title : null ,
114+ } ) ;
115+
116+ const contents = await get_contents ( page ) ;
117+ await compareContentsToSnapshot ( contents , [
118+ "regressions-in-filter-generates-correct-config.txt" ,
119+ ] ) ;
120+ } ) ;
121+
64122 test ( "Numeric filter input does not trigger render on trailing zeroes" , async ( {
65123 page,
66124 } ) => {
0 commit comments