@dereekb/firebase 2.0.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -0
- package/package.json +24 -9
- package/src/index.d.ts +0 -1
- package/src/index.js +1 -2
- package/src/index.js.map +1 -1
- package/src/lib/client/firestore/driver.accessor.batch.d.ts +31 -0
- package/src/lib/{firestore/accessor.batch.js → client/firestore/driver.accessor.batch.js} +22 -4
- package/src/lib/client/firestore/driver.accessor.batch.js.map +1 -0
- package/src/lib/client/firestore/driver.accessor.d.ts +2 -0
- package/src/lib/{firestore/accessor.default.d.ts → client/firestore/driver.accessor.default.d.ts} +4 -11
- package/src/lib/{firestore/accessor.default.js → client/firestore/driver.accessor.default.js} +17 -13
- package/src/lib/client/firestore/driver.accessor.default.js.map +1 -0
- package/src/lib/client/firestore/driver.accessor.js +23 -0
- package/src/lib/client/firestore/driver.accessor.js.map +1 -0
- package/src/lib/client/firestore/driver.accessor.transaction.d.ts +31 -0
- package/src/lib/{firestore/accessor.transaction.js → client/firestore/driver.accessor.transaction.js} +22 -4
- package/src/lib/client/firestore/driver.accessor.transaction.js.map +1 -0
- package/src/lib/client/firestore/driver.d.ts +4 -0
- package/src/lib/client/firestore/driver.js +15 -0
- package/src/lib/client/firestore/driver.js.map +1 -0
- package/src/lib/client/firestore/driver.query.d.ts +13 -0
- package/src/lib/client/firestore/driver.query.js +47 -0
- package/src/lib/client/firestore/driver.query.js.map +1 -0
- package/src/lib/client/firestore/firestore.d.ts +5 -0
- package/src/lib/client/firestore/firestore.js +10 -0
- package/src/lib/client/firestore/firestore.js.map +1 -0
- package/src/lib/client/firestore/index.d.ts +4 -0
- package/src/lib/client/firestore/index.js +8 -0
- package/src/lib/client/firestore/index.js.map +1 -0
- package/src/lib/client/function/function.d.ts +28 -0
- package/src/lib/client/function/function.factory.d.ts +40 -0
- package/src/lib/client/function/function.factory.js +36 -0
- package/src/lib/client/function/function.factory.js.map +1 -0
- package/src/lib/client/function/function.js +3 -0
- package/src/lib/client/function/function.js.map +1 -0
- package/src/lib/client/function/index.d.ts +2 -0
- package/src/lib/client/function/index.js +6 -0
- package/src/lib/client/function/index.js.map +1 -0
- package/src/lib/client/index.d.ts +2 -0
- package/src/lib/client/index.js +6 -0
- package/src/lib/client/index.js.map +1 -0
- package/src/lib/common/auth/auth.d.ts +4 -0
- package/src/lib/common/auth/auth.js +3 -0
- package/src/lib/common/auth/auth.js.map +1 -0
- package/src/lib/common/auth/index.d.ts +1 -0
- package/src/lib/common/auth/index.js +5 -0
- package/src/lib/common/auth/index.js.map +1 -0
- package/src/lib/common/firestore/accessor/accessor.batch.d.ts +3 -0
- package/src/lib/common/firestore/accessor/accessor.batch.js +3 -0
- package/src/lib/common/firestore/accessor/accessor.batch.js.map +1 -0
- package/src/lib/common/firestore/accessor/accessor.d.ts +87 -0
- package/src/lib/common/firestore/accessor/accessor.default.d.ts +2 -0
- package/src/lib/common/firestore/accessor/accessor.default.js +3 -0
- package/src/lib/common/firestore/accessor/accessor.default.js.map +1 -0
- package/src/lib/{firestore → common/firestore/accessor}/accessor.js +17 -1
- package/src/lib/common/firestore/accessor/accessor.js.map +1 -0
- package/src/lib/common/firestore/accessor/accessor.transaction.d.ts +3 -0
- package/src/lib/common/firestore/accessor/accessor.transaction.js +3 -0
- package/src/lib/common/firestore/accessor/accessor.transaction.js.map +1 -0
- package/src/lib/common/firestore/accessor/context.batch.d.ts +7 -0
- package/src/lib/common/firestore/accessor/context.batch.js +3 -0
- package/src/lib/common/firestore/accessor/context.batch.js.map +1 -0
- package/src/lib/{firestore → common/firestore/accessor}/context.d.ts +0 -0
- package/src/lib/common/firestore/accessor/context.default.d.ts +5 -0
- package/src/lib/common/firestore/accessor/context.default.js +3 -0
- package/src/lib/common/firestore/accessor/context.default.js.map +1 -0
- package/src/lib/{firestore → common/firestore/accessor}/context.js +0 -0
- package/src/lib/common/firestore/accessor/context.js.map +1 -0
- package/src/lib/common/firestore/accessor/context.transaction.d.ts +7 -0
- package/src/lib/common/firestore/accessor/context.transaction.js +3 -0
- package/src/lib/common/firestore/accessor/context.transaction.js.map +1 -0
- package/src/lib/common/firestore/accessor/document.d.ts +121 -0
- package/src/lib/common/firestore/accessor/document.js +106 -0
- package/src/lib/common/firestore/accessor/document.js.map +1 -0
- package/src/lib/common/firestore/accessor/document.utility.d.ts +43 -0
- package/src/lib/common/firestore/accessor/document.utility.js +74 -0
- package/src/lib/common/firestore/accessor/document.utility.js.map +1 -0
- package/src/lib/{firestore → common/firestore/accessor}/index.d.ts +3 -5
- package/src/lib/common/firestore/accessor/index.js +14 -0
- package/src/lib/common/firestore/accessor/index.js.map +1 -0
- package/src/lib/common/firestore/collection/collection.d.ts +27 -0
- package/src/lib/common/firestore/collection/collection.js +26 -0
- package/src/lib/common/firestore/collection/collection.js.map +1 -0
- package/src/lib/common/firestore/collection/collection.query.d.ts +36 -0
- package/src/lib/common/firestore/collection/collection.query.js +27 -0
- package/src/lib/common/firestore/collection/collection.query.js.map +1 -0
- package/src/lib/common/firestore/collection/index.d.ts +3 -0
- package/src/lib/common/firestore/collection/index.js +7 -0
- package/src/lib/common/firestore/collection/index.js.map +1 -0
- package/src/lib/common/firestore/collection/subcollection.d.ts +25 -0
- package/src/lib/common/firestore/collection/subcollection.js +14 -0
- package/src/lib/common/firestore/collection/subcollection.js.map +1 -0
- package/src/lib/common/firestore/collection/subcollection.single.d.ts +12 -0
- package/src/lib/common/firestore/collection/subcollection.single.js +14 -0
- package/src/lib/common/firestore/collection/subcollection.single.js.map +1 -0
- package/src/lib/common/firestore/context.d.ts +36 -0
- package/src/lib/common/firestore/context.js +36 -0
- package/src/lib/common/firestore/context.js.map +1 -0
- package/src/lib/common/firestore/driver/accessor.d.ts +26 -0
- package/src/lib/common/firestore/driver/accessor.js +3 -0
- package/src/lib/common/firestore/driver/accessor.js.map +1 -0
- package/src/lib/common/firestore/driver/batch.d.ts +22 -0
- package/src/lib/common/firestore/driver/batch.js +3 -0
- package/src/lib/common/firestore/driver/batch.js.map +1 -0
- package/src/lib/common/firestore/driver/driver.d.ts +11 -0
- package/src/lib/common/firestore/driver/driver.js +3 -0
- package/src/lib/common/firestore/driver/driver.js.map +1 -0
- package/src/lib/common/firestore/driver/index.d.ts +6 -0
- package/src/lib/common/firestore/driver/index.js +10 -0
- package/src/lib/common/firestore/driver/index.js.map +1 -0
- package/src/lib/common/firestore/driver/query.d.ts +31 -0
- package/src/lib/common/firestore/driver/query.handler.d.ts +9 -0
- package/src/lib/common/firestore/driver/query.handler.js +26 -0
- package/src/lib/common/firestore/driver/query.handler.js.map +1 -0
- package/src/lib/common/firestore/driver/query.js +3 -0
- package/src/lib/common/firestore/driver/query.js.map +1 -0
- package/src/lib/common/firestore/driver/transaction.d.ts +23 -0
- package/src/lib/common/firestore/driver/transaction.js +3 -0
- package/src/lib/common/firestore/driver/transaction.js.map +1 -0
- package/src/lib/common/firestore/index.d.ts +8 -0
- package/src/lib/common/firestore/index.js +12 -0
- package/src/lib/common/firestore/index.js.map +1 -0
- package/src/lib/common/firestore/query/accumulator.d.ts +24 -0
- package/src/lib/common/firestore/query/accumulator.js +22 -0
- package/src/lib/common/firestore/query/accumulator.js.map +1 -0
- package/src/lib/common/firestore/query/constraint.d.ts +112 -0
- package/src/lib/common/firestore/query/constraint.js +133 -0
- package/src/lib/common/firestore/query/constraint.js.map +1 -0
- package/src/lib/common/firestore/query/index.d.ts +6 -0
- package/src/lib/common/firestore/query/index.js +10 -0
- package/src/lib/common/firestore/query/index.js.map +1 -0
- package/src/lib/{firestore → common/firestore/query}/iterator.d.ts +37 -11
- package/src/lib/common/firestore/query/iterator.js +108 -0
- package/src/lib/common/firestore/query/iterator.js.map +1 -0
- package/src/lib/common/firestore/query/query.d.ts +49 -0
- package/src/lib/common/firestore/query/query.js +37 -0
- package/src/lib/common/firestore/query/query.js.map +1 -0
- package/src/lib/common/firestore/query/query.util.d.ts +16 -0
- package/src/lib/common/firestore/query/query.util.js +27 -0
- package/src/lib/common/firestore/query/query.util.js.map +1 -0
- package/src/lib/common/firestore/query/watcher.d.ts +34 -0
- package/src/lib/common/firestore/query/watcher.js +58 -0
- package/src/lib/common/firestore/query/watcher.js.map +1 -0
- package/src/lib/common/firestore/reference.d.ts +20 -0
- package/src/lib/{firestore → common/firestore}/reference.js +0 -0
- package/src/lib/common/firestore/reference.js.map +1 -0
- package/src/lib/common/firestore/snapshot/index.d.ts +2 -0
- package/src/lib/common/firestore/snapshot/index.js +6 -0
- package/src/lib/common/firestore/snapshot/index.js.map +1 -0
- package/src/lib/common/firestore/snapshot/snapshot.d.ts +13 -0
- package/src/lib/common/firestore/snapshot/snapshot.field.d.ts +25 -0
- package/src/lib/common/firestore/snapshot/snapshot.field.js +57 -0
- package/src/lib/common/firestore/snapshot/snapshot.field.js.map +1 -0
- package/src/lib/common/firestore/snapshot/snapshot.js +35 -0
- package/src/lib/common/firestore/snapshot/snapshot.js.map +1 -0
- package/src/lib/common/firestore/types.d.ts +145 -0
- package/src/lib/common/firestore/types.js +23 -0
- package/src/lib/common/firestore/types.js.map +1 -0
- package/src/lib/common/function/action.d.ts +3 -0
- package/src/lib/common/function/action.js +3 -0
- package/src/lib/common/function/action.js.map +1 -0
- package/src/lib/common/function/index.d.ts +1 -0
- package/src/lib/common/function/index.js +5 -0
- package/src/lib/common/function/index.js.map +1 -0
- package/src/lib/common/index.d.ts +3 -0
- package/src/lib/common/index.js +7 -0
- package/src/lib/common/index.js.map +1 -0
- package/src/lib/index.d.ts +3 -1
- package/src/lib/index.js +3 -1
- package/src/lib/index.js.map +1 -1
- package/src/lib/model/index.d.ts +1 -0
- package/src/lib/model/index.js +5 -0
- package/src/lib/model/index.js.map +1 -0
- package/src/lib/model/user.d.ts +12 -0
- package/src/lib/model/user.js +3 -0
- package/src/lib/model/user.js.map +1 -0
- package/test/CHANGELOG.md +5 -0
- package/test/README.md +11 -0
- package/test/package.json +28 -0
- package/test/src/index.d.ts +1 -0
- package/test/src/index.js +5 -0
- package/test/src/index.js.map +1 -0
- package/test/src/lib/client/firestore.authorized.d.ts +5 -0
- package/{src/test/firebase.context.js → test/src/lib/client/firestore.authorized.js} +4 -4
- package/test/src/lib/client/firestore.authorized.js.map +1 -0
- package/test/src/lib/client/firestore.d.ts +39 -0
- package/test/src/lib/client/firestore.js +90 -0
- package/test/src/lib/client/firestore.js.map +1 -0
- package/test/src/lib/client/firestore.mock.item.fixture.authorized.d.ts +6 -0
- package/test/src/lib/client/firestore.mock.item.fixture.authorized.js +12 -0
- package/test/src/lib/client/firestore.mock.item.fixture.authorized.js.map +1 -0
- package/test/src/lib/client/index.d.ts +3 -0
- package/test/src/lib/client/index.js +7 -0
- package/test/src/lib/client/index.js.map +1 -0
- package/test/src/lib/common/firestore.d.ts +35 -0
- package/test/src/lib/common/firestore.js +50 -0
- package/test/src/lib/common/firestore.js.map +1 -0
- package/test/src/lib/common/firestore.mock.d.ts +14 -0
- package/test/src/lib/common/firestore.mock.item.d.ts +95 -0
- package/test/src/lib/common/firestore.mock.item.fixture.d.ts +21 -0
- package/test/src/lib/common/firestore.mock.item.fixture.js +43 -0
- package/test/src/lib/common/firestore.mock.item.fixture.js.map +1 -0
- package/test/src/lib/common/firestore.mock.item.js +138 -0
- package/test/src/lib/common/firestore.mock.item.js.map +1 -0
- package/test/src/lib/common/firestore.mock.item.query.d.ts +3 -0
- package/test/src/lib/common/firestore.mock.item.query.js +13 -0
- package/test/src/lib/common/firestore.mock.item.query.js.map +1 -0
- package/test/src/lib/common/firestore.mock.js +29 -0
- package/test/src/lib/common/firestore.mock.js.map +1 -0
- package/test/src/lib/common/index.d.ts +8 -0
- package/test/src/lib/common/index.js +12 -0
- package/test/src/lib/common/index.js.map +1 -0
- package/test/src/lib/common/test.driver.accessor.d.ts +17 -0
- package/test/src/lib/common/test.driver.accessor.js +278 -0
- package/test/src/lib/common/test.driver.accessor.js.map +1 -0
- package/test/src/lib/common/test.driver.query.d.ts +7 -0
- package/test/src/lib/common/test.driver.query.js +189 -0
- package/test/src/lib/common/test.driver.query.js.map +1 -0
- package/test/src/lib/common/test.iterator.d.ts +7 -0
- package/test/src/lib/common/test.iterator.js +222 -0
- package/test/src/lib/common/test.iterator.js.map +1 -0
- package/test/src/lib/index.d.ts +2 -0
- package/test/src/lib/index.js +6 -0
- package/test/src/lib/index.js.map +1 -0
- package/src/lib/firestore/accessor.batch.d.ts +0 -23
- package/src/lib/firestore/accessor.batch.js.map +0 -1
- package/src/lib/firestore/accessor.d.ts +0 -62
- package/src/lib/firestore/accessor.default.js.map +0 -1
- package/src/lib/firestore/accessor.js.map +0 -1
- package/src/lib/firestore/accessor.transaction.d.ts +0 -23
- package/src/lib/firestore/accessor.transaction.js.map +0 -1
- package/src/lib/firestore/context.batch.d.ts +0 -9
- package/src/lib/firestore/context.batch.js +0 -19
- package/src/lib/firestore/context.batch.js.map +0 -1
- package/src/lib/firestore/context.default.d.ts +0 -2
- package/src/lib/firestore/context.default.js +0 -13
- package/src/lib/firestore/context.default.js.map +0 -1
- package/src/lib/firestore/context.js.map +0 -1
- package/src/lib/firestore/context.transaction.d.ts +0 -9
- package/src/lib/firestore/context.transaction.js +0 -19
- package/src/lib/firestore/context.transaction.js.map +0 -1
- package/src/lib/firestore/document.d.ts +0 -69
- package/src/lib/firestore/document.js +0 -49
- package/src/lib/firestore/document.js.map +0 -1
- package/src/lib/firestore/firestore.d.ts +0 -29
- package/src/lib/firestore/firestore.js +0 -37
- package/src/lib/firestore/firestore.js.map +0 -1
- package/src/lib/firestore/index.js +0 -16
- package/src/lib/firestore/index.js.map +0 -1
- package/src/lib/firestore/iterator.js +0 -91
- package/src/lib/firestore/iterator.js.map +0 -1
- package/src/lib/firestore/reference.d.ts +0 -13
- package/src/lib/firestore/reference.js.map +0 -1
- package/src/test/firebase.context.d.ts +0 -5
- package/src/test/firebase.context.item.d.ts +0 -41
- package/src/test/firebase.context.item.js +0 -75
- package/src/test/firebase.context.item.js.map +0 -1
- package/src/test/firebase.context.js.map +0 -1
- package/src/test/firebase.d.ts +0 -29
- package/src/test/firebase.js +0 -67
- package/src/test/firebase.js.map +0 -1
- package/src/test/index.d.ts +0 -3
- package/src/test/index.js +0 -7
- package/src/test/index.js.map +0 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FirebaseAuthUserId } from "../common/auth/auth";
|
|
2
|
+
/**
|
|
3
|
+
* The model is related to a user with the model's uid.
|
|
4
|
+
*/
|
|
5
|
+
export interface UserRelated {
|
|
6
|
+
uid: FirebaseAuthUserId;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The model is related to a user by the model's own identifier.
|
|
10
|
+
*/
|
|
11
|
+
export interface UserRelatedById {
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../../../../../packages/firebase/src/lib/model/user.ts"],"names":[],"mappings":""}
|
package/test/README.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# firebase-test
|
|
2
|
+
|
|
3
|
+
This library was generated with [Nx](https://nx.dev).
|
|
4
|
+
|
|
5
|
+
## Running unit tests
|
|
6
|
+
|
|
7
|
+
Run `nx test firebase-test` to execute the unit tests via [Jest](https://jestjs.io).
|
|
8
|
+
|
|
9
|
+
## Running lint
|
|
10
|
+
|
|
11
|
+
Run `nx lint firebase-test` to execute the lint via [ESLint](https://eslint.org/).
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dereekb/firebase/test",
|
|
3
|
+
"version": "4.0.0",
|
|
4
|
+
"main": "./src/index.js",
|
|
5
|
+
"typings": "./src/index.d.ts",
|
|
6
|
+
"dependencies": {},
|
|
7
|
+
"peerDependencies": {
|
|
8
|
+
"@dereekb/util/test": "4.0.0",
|
|
9
|
+
"@dereekb/util": "4.0.0",
|
|
10
|
+
"make-error": "^1.3.0",
|
|
11
|
+
"extra-set": "^2.2.11",
|
|
12
|
+
"change-case": "^4.1.2",
|
|
13
|
+
"@dereekb/firebase": "4.0.0",
|
|
14
|
+
"rxjs": "^7.0.0",
|
|
15
|
+
"rxfire": "^6.0.3",
|
|
16
|
+
"firebase": "^9.8.0",
|
|
17
|
+
"@dereekb/rxjs": "4.0.0",
|
|
18
|
+
"ms": "^3.0.0-canary.1",
|
|
19
|
+
"@dereekb/date": "4.0.0",
|
|
20
|
+
"class-transformer": "^0.5.1",
|
|
21
|
+
"date-fns": "^2.28.0",
|
|
22
|
+
"class-validator": "^0.13.2",
|
|
23
|
+
"date-fns-tz": "^1.3.0",
|
|
24
|
+
"rrule": "git+https://git@github.com/dereekb/rrule.git#17adf5708d6567b4d01a3a8afd106261421ea492",
|
|
25
|
+
"@dereekb/model": "4.0.0",
|
|
26
|
+
"tslib": "^2.0.0"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './lib';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/firebase/test/src/index.ts"],"names":[],"mappings":";;;AAAA,gDAAsB"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { JestTestContextFactory } from '@dereekb/util/test';
|
|
2
|
+
import { RulesUnitTestFirebaseTestingContextFixture } from './firestore';
|
|
3
|
+
export declare const TESTING_AUTHORIZED_FIREBASE_USER_ID = "0";
|
|
4
|
+
export declare type FirebaseTestContextFactory = JestTestContextFactory<RulesUnitTestFirebaseTestingContextFixture>;
|
|
5
|
+
export declare const authorizedFirestoreFactory: FirebaseTestContextFactory;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
3
|
+
exports.authorizedFirestoreFactory = exports.TESTING_AUTHORIZED_FIREBASE_USER_ID = void 0;
|
|
4
|
+
const firestore_1 = require("./firestore");
|
|
5
5
|
exports.TESTING_AUTHORIZED_FIREBASE_USER_ID = '0';
|
|
6
|
-
exports.
|
|
6
|
+
exports.authorizedFirestoreFactory = (0, firestore_1.firestoreTestBuilder)({
|
|
7
7
|
testEnvironment: {
|
|
8
8
|
firestore: {
|
|
9
9
|
rules: `
|
|
@@ -20,4 +20,4 @@ exports.authorizedFirebase = (0, firebase_1.firebaseTestBuilder)({
|
|
|
20
20
|
},
|
|
21
21
|
rulesContext: { userId: exports.TESTING_AUTHORIZED_FIREBASE_USER_ID }
|
|
22
22
|
});
|
|
23
|
-
//# sourceMappingURL=
|
|
23
|
+
//# sourceMappingURL=firestore.authorized.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firestore.authorized.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/client/firestore.authorized.ts"],"names":[],"mappings":";;;AACA,2CAA+F;AAElF,QAAA,mCAAmC,GAAG,GAAG,CAAC;AAI1C,QAAA,0BAA0B,GAA+B,IAAA,gCAAoB,EAAC;IACzF,eAAe,EAAE;QACf,SAAS,EAAE;YACT,KAAK,EAAE;;;;;;;;;OASN;SACF;KACF;IACD,YAAY,EAAE,EAAE,MAAM,EAAE,2CAAmC,EAAE;CAC9D,CAAC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { TestFirestoreContext, TestingFirestoreDrivers } from '../common/firestore';
|
|
2
|
+
import { Maybe } from '@dereekb/util';
|
|
3
|
+
import { TestEnvironmentConfig, RulesTestEnvironment, RulesTestContext, TokenOptions, EmulatorConfig } from "@firebase/rules-unit-testing";
|
|
4
|
+
import { TestFirestoreContextFixture, TestFirestoreInstance } from '../common/firestore.mock';
|
|
5
|
+
export interface RulesUnitTestingContextConfig {
|
|
6
|
+
userId: string;
|
|
7
|
+
tokenOptions?: Maybe<TokenOptions>;
|
|
8
|
+
}
|
|
9
|
+
export interface RulesUnitTestingTestEnvironmentConfig extends TestEnvironmentConfig {
|
|
10
|
+
/**
|
|
11
|
+
* List of collection names used in the environment. Is required if using testing drivers.
|
|
12
|
+
*/
|
|
13
|
+
collectionNames?: string[];
|
|
14
|
+
firestore?: EmulatorConfig;
|
|
15
|
+
}
|
|
16
|
+
export interface RulesUnitTestingConfig {
|
|
17
|
+
clearFirestoreBetweenTests?: boolean;
|
|
18
|
+
testEnvironment: RulesUnitTestingTestEnvironmentConfig;
|
|
19
|
+
rulesContext?: Maybe<RulesUnitTestingContextConfig>;
|
|
20
|
+
}
|
|
21
|
+
export interface RulesUnitTestTestFirestoreContext extends TestFirestoreContext {
|
|
22
|
+
readonly rulesTestEnvironment: RulesTestEnvironment;
|
|
23
|
+
readonly rulesTestContext: RulesTestContext;
|
|
24
|
+
}
|
|
25
|
+
export declare function makeRulesTestFirestoreContext(drivers: TestingFirestoreDrivers, rulesTestEnvironment: RulesTestEnvironment, rulesTestContext: RulesTestContext): TestFirestoreContext;
|
|
26
|
+
export declare class RulesUnitTestTestFirestoreInstance extends TestFirestoreInstance {
|
|
27
|
+
readonly rulesTestEnvironment: RulesTestEnvironment;
|
|
28
|
+
readonly rulesTestContext: RulesTestContext;
|
|
29
|
+
constructor(drivers: TestingFirestoreDrivers, rulesTestEnvironment: RulesTestEnvironment, rulesTestContext: RulesTestContext);
|
|
30
|
+
}
|
|
31
|
+
export declare class RulesUnitTestFirebaseTestingContextFixture extends TestFirestoreContextFixture<RulesUnitTestTestFirestoreInstance> {
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A JestTestContextBuilderFunction for building firebase test context factories using @firebase/firebase and @firebase/rules-unit-testing. This means CLIENT TESTING ONLY. For server testing, look at @dereekb/firestore-server.
|
|
35
|
+
*
|
|
36
|
+
* This can be used to easily build a testing context that sets up RulesTestEnvironment for tests that sets itself up and tears itself down.
|
|
37
|
+
*/
|
|
38
|
+
export declare const firestoreTestBuilder: import("@dereekb/util/test").JestTestContextBuilderFunction<RulesUnitTestTestFirestoreInstance, RulesUnitTestFirebaseTestingContextFixture, RulesUnitTestingConfig>;
|
|
39
|
+
export declare function changeFirestoreLogLevelBeforeAndAfterTests(): void;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.changeFirestoreLogLevelBeforeAndAfterTests = exports.firestoreTestBuilder = exports.RulesUnitTestFirebaseTestingContextFixture = exports.RulesUnitTestTestFirestoreInstance = exports.makeRulesTestFirestoreContext = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const firestore_1 = require("../common/firestore");
|
|
6
|
+
const test_1 = require("@dereekb/util/test");
|
|
7
|
+
const rules_unit_testing_1 = require("@firebase/rules-unit-testing");
|
|
8
|
+
const firestore_mock_1 = require("../common/firestore.mock");
|
|
9
|
+
const firebase_1 = require("@dereekb/firebase");
|
|
10
|
+
const firestore_2 = require("firebase/firestore");
|
|
11
|
+
function makeRulesTestFirestoreContext(drivers, rulesTestEnvironment, rulesTestContext) {
|
|
12
|
+
const context = Object.assign(Object.assign({}, (0, firebase_1.firestoreContextFactory)(drivers)(rulesTestContext.firestore())), { drivers,
|
|
13
|
+
rulesTestContext,
|
|
14
|
+
rulesTestEnvironment });
|
|
15
|
+
return context;
|
|
16
|
+
}
|
|
17
|
+
exports.makeRulesTestFirestoreContext = makeRulesTestFirestoreContext;
|
|
18
|
+
class RulesUnitTestTestFirestoreInstance extends firestore_mock_1.TestFirestoreInstance {
|
|
19
|
+
constructor(drivers, rulesTestEnvironment, rulesTestContext) {
|
|
20
|
+
super(makeRulesTestFirestoreContext(drivers, rulesTestEnvironment, rulesTestContext));
|
|
21
|
+
this.rulesTestEnvironment = rulesTestEnvironment;
|
|
22
|
+
this.rulesTestContext = rulesTestContext;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.RulesUnitTestTestFirestoreInstance = RulesUnitTestTestFirestoreInstance;
|
|
26
|
+
class RulesUnitTestFirebaseTestingContextFixture extends firestore_mock_1.TestFirestoreContextFixture {
|
|
27
|
+
}
|
|
28
|
+
exports.RulesUnitTestFirebaseTestingContextFixture = RulesUnitTestFirebaseTestingContextFixture;
|
|
29
|
+
/**
|
|
30
|
+
* A JestTestContextBuilderFunction for building firebase test context factories using @firebase/firebase and @firebase/rules-unit-testing. This means CLIENT TESTING ONLY. For server testing, look at @dereekb/firestore-server.
|
|
31
|
+
*
|
|
32
|
+
* This can be used to easily build a testing context that sets up RulesTestEnvironment for tests that sets itself up and tears itself down.
|
|
33
|
+
*/
|
|
34
|
+
exports.firestoreTestBuilder = (0, test_1.jestTestContextBuilder)({
|
|
35
|
+
buildConfig: (input) => {
|
|
36
|
+
var _a;
|
|
37
|
+
const config = {
|
|
38
|
+
testEnvironment: (_a = input === null || input === void 0 ? void 0 : input.testEnvironment) !== null && _a !== void 0 ? _a : {},
|
|
39
|
+
rulesContext: input === null || input === void 0 ? void 0 : input.rulesContext
|
|
40
|
+
};
|
|
41
|
+
return config;
|
|
42
|
+
},
|
|
43
|
+
buildFixture: () => new RulesUnitTestFirebaseTestingContextFixture(),
|
|
44
|
+
setupInstance: (config) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
45
|
+
const drivers = (0, firestore_1.makeTestingFirestoreDrivers)((0, firebase_1.firebaseFirestoreClientDrivers)());
|
|
46
|
+
let testEnvironment = config.testEnvironment;
|
|
47
|
+
if (config.testEnvironment.collectionNames) {
|
|
48
|
+
const pathsMap = drivers.firestoreAccessorDriver.initWithCollectionNames(config.testEnvironment.collectionNames);
|
|
49
|
+
testEnvironment = Object.assign(Object.assign({}, testEnvironment), { firestore: rewriteEmulatorConfigRulesForFuzzedCollectionNames(testEnvironment.firestore, pathsMap) });
|
|
50
|
+
}
|
|
51
|
+
const rulesTestEnv = yield (0, rules_unit_testing_1.initializeTestEnvironment)(config.testEnvironment);
|
|
52
|
+
const rulesTestContext = rulesTestContextForConfig(rulesTestEnv, config.rulesContext);
|
|
53
|
+
return new RulesUnitTestTestFirestoreInstance(drivers, rulesTestEnv, rulesTestContext);
|
|
54
|
+
}),
|
|
55
|
+
teardownInstance: (instance, config) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
56
|
+
if (config.clearFirestoreBetweenTests) {
|
|
57
|
+
yield instance.clearFirestore();
|
|
58
|
+
}
|
|
59
|
+
yield instance.rulesTestEnvironment.cleanup(); // Cleanup
|
|
60
|
+
})
|
|
61
|
+
});
|
|
62
|
+
// MARK: Internal
|
|
63
|
+
function rulesTestContextForConfig(rulesTestEnv, testingRulesConfig) {
|
|
64
|
+
var _a;
|
|
65
|
+
let rulesTestContext;
|
|
66
|
+
if (testingRulesConfig != null) {
|
|
67
|
+
rulesTestContext = rulesTestEnv.authenticatedContext(testingRulesConfig.userId, (_a = testingRulesConfig.tokenOptions) !== null && _a !== void 0 ? _a : undefined);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
rulesTestContext = rulesTestEnv.unauthenticatedContext();
|
|
71
|
+
}
|
|
72
|
+
return rulesTestContext;
|
|
73
|
+
}
|
|
74
|
+
function rewriteEmulatorConfigRulesForFuzzedCollectionNames(config, fuzzedCollectionNamesMap) {
|
|
75
|
+
if (config && config.rules) {
|
|
76
|
+
config = Object.assign(Object.assign({}, config), { rules: rewriteRulesForFuzzedCollectionNames(config.rules, fuzzedCollectionNamesMap) });
|
|
77
|
+
}
|
|
78
|
+
return config;
|
|
79
|
+
}
|
|
80
|
+
function rewriteRulesForFuzzedCollectionNames(rules, fuzzedCollectionNamesMap) {
|
|
81
|
+
// TODO: rewrite the rules using regex matching/replacement.
|
|
82
|
+
return rules;
|
|
83
|
+
}
|
|
84
|
+
// MARK: Utility
|
|
85
|
+
function changeFirestoreLogLevelBeforeAndAfterTests() {
|
|
86
|
+
beforeAll(() => (0, firestore_2.setLogLevel)('error'));
|
|
87
|
+
afterAll(() => (0, firestore_2.setLogLevel)('warn'));
|
|
88
|
+
}
|
|
89
|
+
exports.changeFirestoreLogLevelBeforeAndAfterTests = changeFirestoreLogLevelBeforeAndAfterTests;
|
|
90
|
+
//# sourceMappingURL=firestore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firestore.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/client/firestore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convenience mock instance for tests within an authorized context.
|
|
3
|
+
*
|
|
4
|
+
* Uses @firestore/firebase. This is ONLY for the client.
|
|
5
|
+
*/
|
|
6
|
+
export declare const authorizedTestWithMockItemCollection: import("../../../../../../dist/packages/util/test/src").JestTestContextFactory<import("../common/firestore.mock.item.fixture").MockItemCollectionFixture>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.authorizedTestWithMockItemCollection = void 0;
|
|
4
|
+
const firestore_mock_item_fixture_1 = require("../common/firestore.mock.item.fixture");
|
|
5
|
+
const firestore_authorized_1 = require("./firestore.authorized");
|
|
6
|
+
/**
|
|
7
|
+
* Convenience mock instance for tests within an authorized context.
|
|
8
|
+
*
|
|
9
|
+
* Uses @firestore/firebase. This is ONLY for the client.
|
|
10
|
+
*/
|
|
11
|
+
exports.authorizedTestWithMockItemCollection = (0, firestore_mock_item_fixture_1.testWithMockItemFixture)()(firestore_authorized_1.authorizedFirestoreFactory);
|
|
12
|
+
//# sourceMappingURL=firestore.mock.item.fixture.authorized.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firestore.mock.item.fixture.authorized.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/client/firestore.mock.item.fixture.authorized.ts"],"names":[],"mappings":";;;AAAA,uFAAgF;AAChF,iEAAoE;AAEpE;;;;GAIG;AACU,QAAA,oCAAoC,GAAG,IAAA,qDAAuB,GAAE,CAAC,iDAA0B,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./firestore.authorized"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./firestore.mock.item.fixture.authorized"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./firestore"), exports);
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/client/index.ts"],"names":[],"mappings":";;;AAAA,iEAAuC;AACvC,mFAAyD;AACzD,sDAA4B"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { FirestoreAccessorDriver, FirestoreContext, FirestoreDrivers } from '@dereekb/firebase';
|
|
2
|
+
export interface TestingFirestoreAccessorDriver extends FirestoreAccessorDriver {
|
|
3
|
+
/**
|
|
4
|
+
* Gets the fuzzed path names map.
|
|
5
|
+
*/
|
|
6
|
+
getFuzzedCollectionsNameMap(): Map<string, string>;
|
|
7
|
+
/**
|
|
8
|
+
* Initializes fuzzed path names for the input collections. Returns the result of getFuzzedCollectionsNameMap().
|
|
9
|
+
*
|
|
10
|
+
* This initialization step is useful for the client, where the rules file needs to be updated to reflect the collection names properly in order to ensure rules are correct.
|
|
11
|
+
* @param collectionPaths
|
|
12
|
+
*/
|
|
13
|
+
initWithCollectionNames(collectionPaths: string[]): Map<string, string>;
|
|
14
|
+
}
|
|
15
|
+
export declare function makeTestingFirestoreAccesorDriver(driver: FirestoreAccessorDriver): TestingFirestoreAccessorDriver;
|
|
16
|
+
/**
|
|
17
|
+
* Drivers used for testing. Provides additional functionality for controlling collection access to prevent cross-test contamination.
|
|
18
|
+
*/
|
|
19
|
+
export interface TestingFirestoreDrivers extends FirestoreDrivers {
|
|
20
|
+
driverType: 'testing';
|
|
21
|
+
firestoreAccessorDriver: TestingFirestoreAccessorDriver;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Extends the input drivers to generate new drivers for a testing environment.
|
|
25
|
+
*
|
|
26
|
+
* @param drivers
|
|
27
|
+
* @returns
|
|
28
|
+
*/
|
|
29
|
+
export declare function makeTestingFirestoreDrivers(drivers: FirestoreDrivers): TestingFirestoreDrivers;
|
|
30
|
+
export interface TestingFirestoreContextExtension {
|
|
31
|
+
drivers: TestingFirestoreDrivers;
|
|
32
|
+
}
|
|
33
|
+
export declare type TestFirestoreContext<C = FirestoreContext> = C & TestingFirestoreContextExtension;
|
|
34
|
+
export declare type ClearTestFirestoreCollectionFunction = (collectionName: string, realCollectionPath: string) => Promise<void>;
|
|
35
|
+
export declare function clearTestFirestoreContextCollections(context: TestFirestoreContext, clearCollection: ClearTestFirestoreCollectionFunction): Promise<void>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.clearTestFirestoreContextCollections = exports.makeTestingFirestoreDrivers = exports.makeTestingFirestoreAccesorDriver = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const util_1 = require("@dereekb/util");
|
|
6
|
+
function makeTestingFirestoreAccesorDriver(driver) {
|
|
7
|
+
let fuzzerKey = 0;
|
|
8
|
+
const time = new Date().getTime();
|
|
9
|
+
const fuzzedMap = new Map();
|
|
10
|
+
const collection = driver.collection;
|
|
11
|
+
const fuzzedCollectionName = (path) => {
|
|
12
|
+
let fuzzedPath = fuzzedMap.get(path);
|
|
13
|
+
if (!fuzzedPath) {
|
|
14
|
+
const random = Math.ceil(Math.random() * 9999) % 9999;
|
|
15
|
+
fuzzedPath = `${time}_${random}_${path}_${fuzzerKey += 1}`;
|
|
16
|
+
fuzzedMap.set(path, fuzzedPath);
|
|
17
|
+
}
|
|
18
|
+
return fuzzedPath;
|
|
19
|
+
};
|
|
20
|
+
const fuzzedCollection = (f, path) => {
|
|
21
|
+
const fuzzedPath = fuzzedCollectionName(path);
|
|
22
|
+
return collection(f, fuzzedPath);
|
|
23
|
+
};
|
|
24
|
+
const initWithCollectionNames = (collectionPaths) => {
|
|
25
|
+
collectionPaths.forEach((x) => fuzzedCollectionName(x));
|
|
26
|
+
return fuzzedMap;
|
|
27
|
+
};
|
|
28
|
+
const injectedDriver = Object.assign(Object.assign({}, driver), { collection: fuzzedCollection, getFuzzedCollectionsNameMap: () => fuzzedMap, initWithCollectionNames });
|
|
29
|
+
return injectedDriver;
|
|
30
|
+
}
|
|
31
|
+
exports.makeTestingFirestoreAccesorDriver = makeTestingFirestoreAccesorDriver;
|
|
32
|
+
/**
|
|
33
|
+
* Extends the input drivers to generate new drivers for a testing environment.
|
|
34
|
+
*
|
|
35
|
+
* @param drivers
|
|
36
|
+
* @returns
|
|
37
|
+
*/
|
|
38
|
+
function makeTestingFirestoreDrivers(drivers) {
|
|
39
|
+
return Object.assign(Object.assign({}, drivers), { driverType: 'testing', firestoreAccessorDriver: makeTestingFirestoreAccesorDriver(drivers.firestoreAccessorDriver) });
|
|
40
|
+
}
|
|
41
|
+
exports.makeTestingFirestoreDrivers = makeTestingFirestoreDrivers;
|
|
42
|
+
function clearTestFirestoreContextCollections(context, clearCollection) {
|
|
43
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
const names = context.drivers.firestoreAccessorDriver.getFuzzedCollectionsNameMap();
|
|
45
|
+
const tuples = Array.from(names.entries());
|
|
46
|
+
yield util_1.PromiseUtility.performTasks(tuples, ([name, fuzzyPath]) => clearCollection(name, fuzzyPath));
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
exports.clearTestFirestoreContextCollections = clearTestFirestoreContextCollections;
|
|
50
|
+
//# sourceMappingURL=firestore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firestore.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/common/firestore.ts"],"names":[],"mappings":";;;;AAAA,wCAA+C;AAkB/C,SAAgB,iCAAiC,CAAC,MAA+B;IAC/E,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAErC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,EAAE;QAC5C,IAAI,UAAU,GAAW,SAAS,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QAE9C,IAAI,CAAC,UAAU,EAAE;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YACtD,UAAU,GAAG,GAAG,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YAC3D,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SACjC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAI,CAAY,EAAE,IAAY,EAAE,EAAE;QACzD,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO,UAAU,CAAI,CAAC,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,MAAM,uBAAuB,GAAG,CAAC,eAAyB,EAAE,EAAE;QAC5D,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,gCAClB,MAAM,KACT,UAAU,EAAE,gBAAgB,EAC5B,2BAA2B,EAAE,GAAG,EAAE,CAAC,SAAS,EAC5C,uBAAuB,GACjB,CAAC;IAET,OAAO,cAAc,CAAC;AACxB,CAAC;AApCD,8EAoCC;AAUD;;;;;GAKG;AACH,SAAgB,2BAA2B,CAAC,OAAyB;IACnE,uCACK,OAAO,KACV,UAAU,EAAE,SAAS,EACrB,uBAAuB,EAAE,iCAAiC,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAC3F;AACJ,CAAC;AAND,kEAMC;AAYD,SAAsB,oCAAoC,CAAC,OAA6B,EAAE,eAAqD;;QAC7I,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,2BAA2B,EAAE,CAAC;QACpF,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3C,MAAM,qBAAc,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACrG,CAAC;CAAA;AAJD,oFAIC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AbstractJestTestContextFixture, JestTestContextFactory } from "@dereekb/util/test";
|
|
2
|
+
import { Firestore } from '@dereekb/firebase';
|
|
3
|
+
import { TestFirestoreContext } from "./firestore";
|
|
4
|
+
export declare class TestFirestoreInstance {
|
|
5
|
+
readonly context: TestFirestoreContext;
|
|
6
|
+
constructor(context: TestFirestoreContext);
|
|
7
|
+
get firestore(): Firestore;
|
|
8
|
+
clearFirestore(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare class TestFirestoreContextFixture<F extends TestFirestoreInstance = TestFirestoreInstance> extends AbstractJestTestContextFixture<F> {
|
|
11
|
+
get firestore(): Firestore;
|
|
12
|
+
get context(): TestFirestoreContext;
|
|
13
|
+
}
|
|
14
|
+
export declare type JestTestFirestoreContextFactory = JestTestContextFactory<TestFirestoreContextFixture>;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { Maybe } from '@dereekb/util';
|
|
2
|
+
import { CollectionReference, FirestoreCollection, FirestoreContext, AbstractFirestoreDocument, SingleItemFirestoreCollection, FirestoreCollectionWithParent, AbstractFirestoreDocumentWithParent } from '@dereekb/firebase';
|
|
3
|
+
/**
|
|
4
|
+
* Data for a test item in our firestore collection.
|
|
5
|
+
*/
|
|
6
|
+
export interface MockItem {
|
|
7
|
+
test?: boolean;
|
|
8
|
+
value?: Maybe<string>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* FirestoreDocument for MockItem
|
|
12
|
+
*/
|
|
13
|
+
export declare class MockItemDocument extends AbstractFirestoreDocument<MockItem, MockItemDocument> {
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Firestore collection path name.
|
|
17
|
+
*/
|
|
18
|
+
export declare const mockItemCollectionPath = "test";
|
|
19
|
+
/**
|
|
20
|
+
* Used to build a FirestoreDataConverter. Fields are configured via configuration. See the SnapshotConverterFunctions for more info.
|
|
21
|
+
*/
|
|
22
|
+
export declare const mockItemConverter: import("@dereekb/firebase").SnapshotConverterFunctions<MockItem>;
|
|
23
|
+
/**
|
|
24
|
+
* Used to build a mockItemCollection from a firestore instance with a converter setup.
|
|
25
|
+
*
|
|
26
|
+
* @param firestore
|
|
27
|
+
* @returns
|
|
28
|
+
*/
|
|
29
|
+
export declare function mockItemCollectionReference(context: FirestoreContext): CollectionReference<MockItem>;
|
|
30
|
+
export declare type MockItemFirestoreCollection = FirestoreCollection<MockItem, MockItemDocument>;
|
|
31
|
+
export declare function mockItemFirestoreCollection(firestoreContext: FirestoreContext): MockItemFirestoreCollection;
|
|
32
|
+
/**
|
|
33
|
+
* Private data for each MockItem.
|
|
34
|
+
*
|
|
35
|
+
* There is only a single private data item per each MockItem.
|
|
36
|
+
*/
|
|
37
|
+
export interface MockItemPrivateData {
|
|
38
|
+
comments?: string;
|
|
39
|
+
createdAt?: Date;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* FirestoreDocument for MockItem
|
|
43
|
+
*/
|
|
44
|
+
export declare class MockItemPrivateDataDocument extends AbstractFirestoreDocument<MockItemPrivateData, MockItemPrivateDataDocument> {
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Firestore collection path name.
|
|
48
|
+
*/
|
|
49
|
+
export declare const mockItemPrivateDataCollectionPath = "private";
|
|
50
|
+
export declare const mockItemPrivateDataIdentifier = "0";
|
|
51
|
+
/**
|
|
52
|
+
* Used to build a FirestoreDataConverter. Fields are configured via configuration. See the SnapshotConverterFunctions for more info.
|
|
53
|
+
*/
|
|
54
|
+
export declare const mockItemPrivateDataConverter: import("@dereekb/firebase").SnapshotConverterFunctions<MockItemPrivateData>;
|
|
55
|
+
/**
|
|
56
|
+
* Used to build a mockItemCollection from a firestore instance with a converter setup.
|
|
57
|
+
*
|
|
58
|
+
* @param firestore
|
|
59
|
+
* @returns
|
|
60
|
+
*/
|
|
61
|
+
export declare function mockItemPrivateDataCollectionReferenceFactory(context: FirestoreContext): (parent: MockItemDocument) => CollectionReference<MockItemPrivateData>;
|
|
62
|
+
export declare type MockItemPrivateDataFirestoreCollection = SingleItemFirestoreCollection<MockItemPrivateData, MockItem, MockItemPrivateDataDocument>;
|
|
63
|
+
export declare type MockItemPrivateDataFirestoreCollectionFactory = (parent: MockItemDocument) => MockItemPrivateDataFirestoreCollection;
|
|
64
|
+
export declare function mockItemPrivateDataFirestoreCollection(firestoreContext: FirestoreContext): MockItemPrivateDataFirestoreCollectionFactory;
|
|
65
|
+
/**
|
|
66
|
+
* Data for a sub item in our firestore collection.
|
|
67
|
+
*
|
|
68
|
+
* There may be an unlimited number of MockItemSubItems for a MockItem.
|
|
69
|
+
*/
|
|
70
|
+
export interface MockItemSubItem {
|
|
71
|
+
value?: Maybe<number>;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* FirestoreDocument for MockItem
|
|
75
|
+
*/
|
|
76
|
+
export declare class MockItemSubItemDocument extends AbstractFirestoreDocumentWithParent<MockItem, MockItemSubItem, MockItemSubItemDocument> {
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Firestore collection path name.
|
|
80
|
+
*/
|
|
81
|
+
export declare const mockItemSubItemCollectionPath = "sub";
|
|
82
|
+
/**
|
|
83
|
+
* Used to build a FirestoreDataConverter. Fields are configured via configuration. See the SnapshotConverterFunctions for more info.
|
|
84
|
+
*/
|
|
85
|
+
export declare const mockItemSubItemConverter: import("@dereekb/firebase").SnapshotConverterFunctions<MockItemSubItem>;
|
|
86
|
+
export declare function mockItemSubItemCollectionReferenceFactory(context: FirestoreContext): (parent: MockItemDocument) => CollectionReference<MockItemSubItem>;
|
|
87
|
+
export declare type MockItemSubItemFirestoreCollection = FirestoreCollectionWithParent<MockItemSubItem, MockItem, MockItemSubItemDocument, MockItemDocument>;
|
|
88
|
+
export declare type MockItemSubItemFirestoreCollectionFactory = (parent: MockItemDocument) => MockItemSubItemFirestoreCollection;
|
|
89
|
+
export declare function mockItemSubItemFirestoreCollection(firestoreContext: FirestoreContext): MockItemSubItemFirestoreCollectionFactory;
|
|
90
|
+
export declare abstract class MockItemCollections {
|
|
91
|
+
abstract readonly mockItem: MockItemFirestoreCollection;
|
|
92
|
+
abstract readonly mockItemPrivateData: MockItemPrivateDataFirestoreCollectionFactory;
|
|
93
|
+
abstract readonly mockItemSubItem: MockItemSubItemFirestoreCollectionFactory;
|
|
94
|
+
}
|
|
95
|
+
export declare function makeMockItemCollections(firestoreContext: FirestoreContext): MockItemCollections;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CollectionReference } from '@dereekb/firebase';
|
|
2
|
+
import { AbstractWrappedFixtureWithInstance, JestTestWrappedContextFactoryBuilder } from '@dereekb/util/test';
|
|
3
|
+
import { MockItemFirestoreCollection, MockItem } from './firestore.mock.item';
|
|
4
|
+
import { TestFirestoreContextFixture } from './firestore.mock';
|
|
5
|
+
export declare class MockItemCollectionFixtureInstance {
|
|
6
|
+
readonly fixture: MockItemCollectionFixture;
|
|
7
|
+
readonly collections: import("./firestore.mock.item").MockItemCollections;
|
|
8
|
+
get collection(): CollectionReference<MockItem>;
|
|
9
|
+
get firestoreCollection(): MockItemFirestoreCollection;
|
|
10
|
+
get mockItemPrivateDataCollection(): import("./firestore.mock.item").MockItemPrivateDataFirestoreCollectionFactory;
|
|
11
|
+
get mockItemSubItemCollection(): import("./firestore.mock.item").MockItemSubItemFirestoreCollectionFactory;
|
|
12
|
+
constructor(fixture: MockItemCollectionFixture);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Used to expose a CollectionReference to MockItem for simple tests.
|
|
16
|
+
*/
|
|
17
|
+
export declare class MockItemCollectionFixture extends AbstractWrappedFixtureWithInstance<MockItemCollectionFixtureInstance, TestFirestoreContextFixture> {
|
|
18
|
+
}
|
|
19
|
+
export interface MockItemCollectionFirebaseContextConfig {
|
|
20
|
+
}
|
|
21
|
+
export declare function testWithMockItemFixture(config?: MockItemCollectionFirebaseContextConfig): JestTestWrappedContextFactoryBuilder<MockItemCollectionFixture, TestFirestoreContextFixture>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.testWithMockItemFixture = exports.MockItemCollectionFixture = exports.MockItemCollectionFixtureInstance = void 0;
|
|
4
|
+
const test_1 = require("@dereekb/util/test");
|
|
5
|
+
const firestore_mock_item_1 = require("./firestore.mock.item");
|
|
6
|
+
// MARK: Test Item Testing Fixture
|
|
7
|
+
class MockItemCollectionFixtureInstance {
|
|
8
|
+
constructor(fixture) {
|
|
9
|
+
this.fixture = fixture;
|
|
10
|
+
this.collections = (0, firestore_mock_item_1.makeMockItemCollections)(this.fixture.parent.context);
|
|
11
|
+
}
|
|
12
|
+
get collection() {
|
|
13
|
+
return this.firestoreCollection.collection;
|
|
14
|
+
}
|
|
15
|
+
get firestoreCollection() {
|
|
16
|
+
return this.collections.mockItem;
|
|
17
|
+
}
|
|
18
|
+
get mockItemPrivateDataCollection() {
|
|
19
|
+
return this.collections.mockItemPrivateData;
|
|
20
|
+
}
|
|
21
|
+
get mockItemSubItemCollection() {
|
|
22
|
+
return this.collections.mockItemSubItem;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.MockItemCollectionFixtureInstance = MockItemCollectionFixtureInstance;
|
|
26
|
+
/**
|
|
27
|
+
* Used to expose a CollectionReference to MockItem for simple tests.
|
|
28
|
+
*/
|
|
29
|
+
class MockItemCollectionFixture extends test_1.AbstractWrappedFixtureWithInstance {
|
|
30
|
+
}
|
|
31
|
+
exports.MockItemCollectionFixture = MockItemCollectionFixture;
|
|
32
|
+
function testWithMockItemFixture(config) {
|
|
33
|
+
return (0, test_1.instanceWrapJestTestContextFactory)({
|
|
34
|
+
wrapFixture: (fixture) => new MockItemCollectionFixture(fixture),
|
|
35
|
+
makeInstance: (wrap) => new MockItemCollectionFixtureInstance(wrap),
|
|
36
|
+
teardownInstance: (instance) => {
|
|
37
|
+
// instance.fixture.parent.instance.clearFirestore();
|
|
38
|
+
},
|
|
39
|
+
// TODO: Utilize config here using the setup/teardown later if needed.
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
exports.testWithMockItemFixture = testWithMockItemFixture;
|
|
43
|
+
//# sourceMappingURL=firestore.mock.item.fixture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firestore.mock.item.fixture.js","sourceRoot":"","sources":["../../../../../../../packages/firebase/test/src/lib/common/firestore.mock.item.fixture.ts"],"names":[],"mappings":";;;AACA,6CAAkJ;AAClJ,+DAAuG;AAGvG,kCAAkC;AAClC,MAAa,iCAAiC;IAmB5C,YAAqB,OAAkC;QAAlC,YAAO,GAAP,OAAO,CAA2B;QAjB9C,gBAAW,GAAG,IAAA,6CAAuB,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAiBjB,CAAC;IAf5D,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;IAC7C,CAAC;IACD,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED,IAAI,6BAA6B;QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC;IAC9C,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;IAC1C,CAAC;CAIF;AArBD,8EAqBC;AAED;;GAEG;AACH,MAAa,yBAA0B,SAAQ,yCAAkG;CAAI;AAArJ,8DAAqJ;AAIrJ,SAAgB,uBAAuB,CAAC,MAAgD;IACtF,OAAO,IAAA,yCAAkC,EAAC;QACxC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,yBAAyB,CAAC,OAAO,CAAC;QAChE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,iCAAiC,CAAC,IAAI,CAAC;QACnE,gBAAgB,EAAE,CAAC,QAA2C,EAAE,EAAE;YAChE,qDAAqD;QACvD,CAAC;QACD,sEAAsE;KACvE,CAAC,CAAC;AACL,CAAC;AATD,0DASC"}
|