@@ -1249,6 +1249,43 @@ describe('withConverter() support', () => {
12491249 } ) ;
12501250 } ) ;
12511251
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+
12521289 describe ( 'types test' , ( ) => {
12531290 class TestObject {
12541291 constructor (
0 commit comments