@@ -1249,6 +1249,43 @@ describe('withConverter() support', () => {
1249
1249
} ) ;
1250
1250
} ) ;
1251
1251
1252
+ it ( 'supports primitive types with valid converter' , ( ) => {
1253
+ type Primitive = number ;
1254
+ const primitiveConverter = {
1255
+ toFirestore ( value : Primitive ) : DocumentData {
1256
+ return { value } ;
1257
+ } ,
1258
+ fromFirestore ( snapshot : QueryDocumentSnapshot ) : Primitive {
1259
+ const data = snapshot . data ( ) ;
1260
+ return data . value ;
1261
+ }
1262
+ } ;
1263
+
1264
+ type ArrayValue = number [ ] ;
1265
+ const arrayConverter = {
1266
+ toFirestore ( value : ArrayValue ) : DocumentData {
1267
+ return { values : value } ;
1268
+ } ,
1269
+ fromFirestore ( snapshot : QueryDocumentSnapshot ) : ArrayValue {
1270
+ const data = snapshot . data ( ) ;
1271
+ return data . values ;
1272
+ }
1273
+ } ;
1274
+
1275
+ return withTestDb ( async db => {
1276
+ const coll = collection ( db , 'tests' ) ;
1277
+ const ref = doc ( coll , 'number' ) . withConverter ( primitiveConverter ) ;
1278
+ await setDoc ( ref , 3 ) ;
1279
+ const result = await getDoc ( ref ) ;
1280
+ expect ( result . data ( ) ) . to . equal ( 3 ) ;
1281
+
1282
+ const ref2 = doc ( coll , 'array' ) . withConverter ( arrayConverter ) ;
1283
+ await setDoc ( ref2 , [ 1 , 2 , 3 ] ) ;
1284
+ const result2 = await getDoc ( ref2 ) ;
1285
+ expect ( result2 . data ( ) ) . to . deep . equal ( [ 1 , 2 , 3 ] ) ;
1286
+ } ) ;
1287
+ } ) ;
1288
+
1252
1289
describe ( 'types test' , ( ) => {
1253
1290
class TestObject {
1254
1291
constructor (
0 commit comments