1- import { expectError , expectType } from 'tsd' ;
1+ import { expectAssignable , expectError , expectNotAssignable , expectType } from 'tsd' ;
22
33import {
44 type ClientBulkWriteModel ,
@@ -23,23 +23,26 @@ type Author = { name: string; published: number };
2323type Store = { _id : UUID } ;
2424
2525// Baseline check that schema modifies the following fields for each type.
26- expectType < ClientInsertOneModel < Book > [ 'document' ] > ( null as unknown as OptionalId < Book > ) ;
26+ declare const clientInsertOneModel : ClientInsertOneModel < Book > ;
27+ expectType < OptionalId < Book > > ( clientInsertOneModel . document ) ;
2728
28- expectType < ClientReplaceOneModel < Book > [ 'filter' ] > ( null as unknown as Filter < Book > ) ;
29- expectType < ClientReplaceOneModel < Book > [ 'replacement' ] > ( null as unknown as WithoutId < Book > ) ;
29+ declare const clientReplaceOneModel : ClientReplaceOneModel < Book > ;
30+ expectType < Filter < Book > > ( clientReplaceOneModel . filter ) ;
31+ expectType < WithoutId < Book > > ( clientReplaceOneModel . replacement ) ;
3032
31- expectType < ClientUpdateOneModel < Book > [ 'filter' ] > ( null as unknown as Filter < Book > ) ;
32- expectType < ClientUpdateOneModel < Book > [ 'update' ] > (
33- null as unknown as UpdateFilter < Book > | Document [ ]
34- ) ;
33+ declare const clientUpdateOneModel : ClientUpdateOneModel < Book > ;
34+ expectType < Filter < Book > > ( clientUpdateOneModel . filter ) ;
35+ expectType < UpdateFilter < Book > | Document [ ] > ( clientUpdateOneModel . update ) ;
3536
36- expectType < ClientUpdateManyModel < Book > [ 'filter' ] > ( null as unknown as Filter < Book > ) ;
37- expectType < ClientUpdateManyModel < Book > [ 'update' ] > (
38- null as unknown as UpdateFilter < Book > | Document [ ]
39- ) ;
37+ declare const clientUpdateManyModel : ClientUpdateManyModel < Book > ;
38+ expectType < Filter < Book > > ( clientUpdateManyModel . filter ) ;
39+ expectType < UpdateFilter < Book > | Document [ ] > ( clientUpdateManyModel . update ) ;
4040
41- expectType < ClientDeleteOneModel < Book > [ 'filter' ] > ( null as unknown as Filter < Book > ) ;
42- expectType < ClientDeleteManyModel < Book > [ 'filter' ] > ( null as unknown as Filter < Book > ) ;
41+ declare const clientDeleteOneModel : ClientDeleteOneModel < Book > ;
42+ expectType < Filter < Book > > ( clientDeleteOneModel . filter ) ;
43+
44+ declare const clientDeleteManyModel : ClientDeleteManyModel < Book > ;
45+ expectType < Filter < Book > > ( clientDeleteManyModel . filter ) ;
4346
4447client . bulkWrite ( [ ] ) ; // empty should always work
4548
@@ -72,7 +75,7 @@ client.bulkWrite([
7275 { namespace : 'db.authors' , name : 'deleteMany' , filter : { } }
7376] ) ;
7477
75- // No schemas - incorrect use - random namespaces, no type checking
78+ // No schemas - random namespaces, no type checking
7679client . bulkWrite ( [
7780 {
7881 namespace : 'db.whatever' ,
@@ -168,27 +171,40 @@ expectError(
168171 namespace : 'db.authors' ,
169172 name : 'insertOne' ,
170173 document : { name : 'bob' , published : '' } // wrong type
171- } ,
174+ }
175+ ] )
176+ ) ;
177+
178+ expectError (
179+ client . bulkWrite < MongoDBSchemas > ( [
172180 {
173181 namespace : 'db.authors' ,
174182 name : 'replaceOne' ,
175183 filter : { name : 'bob' } ,
176184 replacement : { name : 'ann' , publish : 2 } // key typo
177- } ,
185+ }
186+ ] )
187+ ) ;
188+
189+ expectError (
190+ client . bulkWrite < MongoDBSchemas > ( [
178191 {
179192 namespace : 'db.blah' , // unknown namespace
180193 name : 'updateOne' ,
181194 filter : { name : 'bob' , published : 2 } ,
182195 update : { }
183- } ,
196+ }
197+ ] )
198+ ) ;
199+
200+ expectError (
201+ client . bulkWrite < MongoDBSchemas > ( [
184202 {
185203 namespace : 'db.authors' ,
186204 name : 'updateManyy' , // unknown operation
187205 filter : { name : 'bob' , published : 2 } ,
188206 update : { }
189- } ,
190- { namespace : 'db.authors' , name : 'deleteOne' , filter : { } } ,
191- { namespace : 'db.authors' , name : 'deleteMany' , filter : { } }
207+ }
192208 ] )
193209) ;
194210
0 commit comments