1
- import { Fragment as Signal , component$ , useSignal } from '@qwik.dev/core' ;
1
+ import { SerializerSymbol , Fragment as Signal , component$ , useSignal } from '@qwik.dev/core' ;
2
2
import { domRender , ssrRenderToDom , trigger } from '@qwik.dev/core/testing' ;
3
3
import { describe , expect , it } from 'vitest' ;
4
4
import { useSerializer$ } from '../use/use-serializer' ;
@@ -95,6 +95,48 @@ describe.each([
95
95
</ >
96
96
) ;
97
97
} ) ;
98
+ it ( 'should support [SerializerSymbol]' , async ( ) => {
99
+ const Counter = component$ ( ( ) => {
100
+ const count = useSerializer$ ( {
101
+ deserialize : ( data : number ) => new WithSerialize ( data ) ,
102
+ } ) ;
103
+ return (
104
+ < button
105
+ onClick$ = { ( ) => {
106
+ count . value . inc ( ) ;
107
+ count . force ( ) ;
108
+ } }
109
+ >
110
+ { count . value . count }
111
+ </ button >
112
+ ) ;
113
+ } ) ;
114
+
115
+ const { vNode, container } = await render ( < Counter /> , { debug } ) ;
116
+ expect ( vNode ) . toMatchVDOM (
117
+ < >
118
+ < button >
119
+ < Signal ssr-required > { '0' } </ Signal >
120
+ </ button >
121
+ </ >
122
+ ) ;
123
+ await trigger ( container . element , 'button' , 'click' ) ;
124
+ expect ( vNode ) . toMatchVDOM (
125
+ < >
126
+ < button >
127
+ < Signal ssr-required > { '1' } </ Signal >
128
+ </ button >
129
+ </ >
130
+ ) ;
131
+ await trigger ( container . element , 'button' , 'click' ) ;
132
+ expect ( vNode ) . toMatchVDOM (
133
+ < >
134
+ < button >
135
+ < Signal ssr-required > { '2' } </ Signal >
136
+ </ button >
137
+ </ >
138
+ ) ;
139
+ } ) ;
98
140
} ) ;
99
141
100
142
class CustomSerialized {
@@ -103,3 +145,13 @@ class CustomSerialized {
103
145
this . count ++ ;
104
146
}
105
147
}
148
+
149
+ class WithSerialize {
150
+ constructor ( public count = 0 ) { }
151
+ inc ( ) {
152
+ this . count ++ ;
153
+ }
154
+ [ SerializerSymbol ] ( obj : this) {
155
+ return obj . count ;
156
+ }
157
+ }
0 commit comments