@@ -74,6 +74,10 @@ interface SubTestModel {
74
74
field1 : string ;
75
75
field2 ?: string ;
76
76
field3 ?: number ;
77
+ nestedObject ?: {
78
+ a : string ;
79
+ b : string ;
80
+ } ;
77
81
}
78
82
79
83
type FruitTypes = 'apple' | 'pear' ;
@@ -97,6 +101,7 @@ interface TestModel {
97
101
subInterfaceField : SubTestModel ;
98
102
subInterfaceArray : SubTestModel [ ] ;
99
103
timestampField : Timestamp ;
104
+ extras : Record < string , { id : string } > ;
100
105
}
101
106
const collectionTType = db . collection < TestModel > ( 'test.update' ) ;
102
107
@@ -201,9 +206,20 @@ expectAssignable<UpdateFilter<TestModel>>({
201
206
expectAssignable < UpdateFilter < TestModel > > ( { $set : { doubleField : new Double ( 1.23 ) } } ) ;
202
207
expectAssignable < UpdateFilter < TestModel > > ( { $set : { int32Field : new Int32 ( 10 ) } } ) ;
203
208
expectAssignable < UpdateFilter < TestModel > > ( { $set : { longField : Long . fromString ( '999' ) } } ) ;
209
+ expectAssignable < UpdateFilter < TestModel > > ( { $set : { extras : { someExtras : { id : 'someId' } } } } ) ;
204
210
expectAssignable < UpdateFilter < TestModel > > ( { $set : { stringField : 'a' } } ) ;
205
211
expectError ( buildUpdateFilter ( { $set : { stringField : 123 } } ) ) ;
206
212
expectAssignable < UpdateFilter < TestModel > > ( { $set : { 'subInterfaceField.field2' : '2' } } ) ;
213
+ expectAssignable < UpdateFilter < TestModel > > ( { $set : { 'subInterfaceField.nestedObject.a' : '2' } } ) ;
214
+ expectAssignable < UpdateFilter < TestModel > > ( {
215
+ $set : { 'subInterfaceField.nestedObject' : { a : '1' , b : '2' } }
216
+ } ) ;
217
+ expectError < UpdateFilter < TestModel > > ( {
218
+ $set : { 'subInterfaceField.nestedObject' : { a : '1' } }
219
+ } ) ;
220
+ expectError < UpdateFilter < TestModel > > ( {
221
+ $set : { 'subInterfaceField.nestedObject' : { a : 1 , b : '2' } }
222
+ } ) ;
207
223
expectError ( buildUpdateFilter ( { $set : { 'subInterfaceField.field2' : 2 } } ) ) ;
208
224
expectError ( buildUpdateFilter ( { $set : { 'unknown.field' : null } } ) ) ;
209
225
expectAssignable < UpdateFilter < TestModel > > ( { $set : { 'numberArray.$' : 40 } } ) ;
0 commit comments