@@ -30,22 +30,65 @@ import {
30
30
// We're using 'as any' to pass invalid values to APIs for testing purposes.
31
31
// tslint:disable:no-any
32
32
33
+ interface ValidationIt {
34
+ (
35
+ persistence : boolean ,
36
+ message : string ,
37
+ testFunction : ( db : firestore . FirebaseFirestore ) => void | Promise < any >
38
+ ) : void ;
39
+ skip : (
40
+ persistence : boolean ,
41
+ message : string ,
42
+ testFunction : ( db : firestore . FirebaseFirestore ) => void | Promise < any >
43
+ ) => void ;
44
+ only : (
45
+ persistence : boolean ,
46
+ message : string ,
47
+ testFunction : ( db : firestore . FirebaseFirestore ) => void | Promise < any >
48
+ ) => void ;
49
+ }
50
+
33
51
// Since most of our tests are "synchronous" but require a Firestore instance,
34
52
// we have a helper wrapper around it() and withTestDb() to optimize for that.
35
- function validationIt (
36
- persistence : boolean ,
37
- message : string ,
38
- testFunction : ( db : firestore . FirebaseFirestore ) => void | Promise < any >
39
- ) {
40
- it ( message , ( ) => {
41
- return withTestDb ( persistence , async db => {
42
- const maybePromise = testFunction ( db ) ;
43
- if ( maybePromise ) {
44
- return maybePromise ;
45
- }
53
+ const validationIt : ValidationIt = Object . assign (
54
+ (
55
+ persistence : boolean ,
56
+ message : string ,
57
+ testFunction : ( db : firestore . FirebaseFirestore ) => void | Promise < any >
58
+ ) => {
59
+ it ( message , ( ) => {
60
+ return withTestDb ( persistence , async db => {
61
+ const maybePromise = testFunction ( db ) ;
62
+ if ( maybePromise ) {
63
+ return maybePromise ;
64
+ }
65
+ } ) ;
46
66
} ) ;
47
- } ) ;
48
- }
67
+ } ,
68
+ {
69
+ skip : function (
70
+ persistence : boolean ,
71
+ message : string ,
72
+ _ : ( db : firestore . FirebaseFirestore ) => void | Promise < any >
73
+ ) {
74
+ it . skip ( message , ( ) => { } ) ;
75
+ } ,
76
+ only : function (
77
+ persistence : boolean ,
78
+ message : string ,
79
+ testFunction : ( db : firestore . FirebaseFirestore ) => void | Promise < any >
80
+ ) {
81
+ it . only ( message , ( ) => {
82
+ return withTestDb ( persistence , async db => {
83
+ const maybePromise = testFunction ( db ) ;
84
+ if ( maybePromise ) {
85
+ return maybePromise ;
86
+ }
87
+ } ) ;
88
+ } ) ;
89
+ }
90
+ }
91
+ ) ;
49
92
50
93
// NOTE: The JS SDK does extensive validation of argument counts, types, etc.
51
94
// since it is an untyped language. These tests are not exhaustive as that would
0 commit comments