@hyper-fetch/firebase-admin 7.5.1 → 7.5.3
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/__tests__/features/firestore/admin/constraints.admin.spec.ts +23 -0
- package/__tests__/features/firestore/admin/methods.admin.spec.ts +20 -0
- package/__tests__/features/firestore/admin/sockets.base.spec.ts +17 -0
- package/__tests__/features/firestore/shared/constraints.shared.tests.ts +72 -0
- package/__tests__/features/firestore/shared/methods/add-doc.test.suite.ts +29 -0
- package/__tests__/features/firestore/shared/methods/delete-doc.test.suite.ts +52 -0
- package/__tests__/features/firestore/shared/methods/get-doc.test.suite.ts +60 -0
- package/__tests__/features/firestore/shared/methods/get-docs.test.suite.ts +45 -0
- package/__tests__/features/firestore/shared/methods/on-snapshot.test.suite.ts +290 -0
- package/__tests__/features/firestore/shared/methods/set-doc.test.suite.ts +70 -0
- package/__tests__/features/firestore/shared/methods/update-doc.test.suite.ts +40 -0
- package/__tests__/features/firestore/shared/methods.shared.tests.ts +24 -0
- package/__tests__/features/realtime/admin/constraints.admin.spec.ts +15 -0
- package/__tests__/features/realtime/admin/methods.admin.spec.ts +24 -0
- package/__tests__/features/realtime/admin/sockets.base.spec.ts +15 -0
- package/__tests__/features/realtime/shared/constraints.shared.tests.ts +59 -0
- package/__tests__/features/realtime/shared/methods/get.test.suite.ts +64 -0
- package/__tests__/features/realtime/shared/methods/on-value.test.suite.ts +190 -0
- package/__tests__/features/realtime/shared/methods/push.test.suite.ts +48 -0
- package/__tests__/features/realtime/shared/methods/remove.test.suite.ts +46 -0
- package/__tests__/features/realtime/shared/methods/set.test.suite.ts +68 -0
- package/__tests__/features/realtime/shared/methods/update.test.suite.ts +42 -0
- package/__tests__/features/realtime/shared/methods.shared.tests.ts +25 -0
- package/__tests__/global.d.ts +1 -0
- package/__tests__/jest.setup.ts +8 -0
- package/__tests__/shared/request-events.shared.ts +32 -0
- package/__tests__/tsconfig.json +8 -0
- package/__tests__/utils/database.rules.json +11 -0
- package/__tests__/utils/index.ts +3 -0
- package/__tests__/utils/initialize.firestore.admin.ts +16 -0
- package/__tests__/utils/initialize.realtime.admin.ts +19 -0
- package/__tests__/utils/seed/seed.data.ts +21 -0
- package/__tests__/utils/seed.admin.ts +23 -0
- package/jest.config.ts +9 -0
- package/package.json +1 -1
- package/project.json +4 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { RequestInstance } from "@hyper-fetch/core";
|
|
2
|
+
|
|
3
|
+
export const testLifecycleEvents = async <R extends RequestInstance>(request: R) => {
|
|
4
|
+
const spy1 = jest.fn();
|
|
5
|
+
const spy2 = jest.fn();
|
|
6
|
+
// const spy3 = jest.fn();
|
|
7
|
+
// const spy4 = jest.fn();
|
|
8
|
+
const spy5 = jest.fn();
|
|
9
|
+
const spy6 = jest.fn();
|
|
10
|
+
|
|
11
|
+
request.client.requestManager.events.onRequestStartByQueue(request.queryKey, spy1);
|
|
12
|
+
request.client.requestManager.events.onResponseStartByQueue(request.queryKey, spy2);
|
|
13
|
+
// request.client.requestManager.events.onUploadProgressByQueue(request.queryKey, spy3);
|
|
14
|
+
// request.client.requestManager.events.onDownloadProgressByQueue(request.queryKey, spy4);
|
|
15
|
+
request.client.requestManager.events.onResponseByCache(request.cacheKey, spy5);
|
|
16
|
+
|
|
17
|
+
const response = request.send({
|
|
18
|
+
onBeforeSent: (requestId) => {
|
|
19
|
+
request.client.requestManager.events.onResponseById(requestId, spy6);
|
|
20
|
+
},
|
|
21
|
+
} as any);
|
|
22
|
+
|
|
23
|
+
// eslint-disable-next-line no-promise-executor-return
|
|
24
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
25
|
+
|
|
26
|
+
expect(spy1).toHaveBeenCalledTimes(1);
|
|
27
|
+
expect(spy2).toHaveBeenCalledTimes(1);
|
|
28
|
+
expect(spy5).toHaveBeenCalledTimes(1);
|
|
29
|
+
expect(spy6).toHaveBeenCalledTimes(1);
|
|
30
|
+
|
|
31
|
+
return response;
|
|
32
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { initializeApp } from "firebase-admin/app";
|
|
2
|
+
import { getFirestore } from "firebase-admin/firestore";
|
|
3
|
+
|
|
4
|
+
const initializeFirestore = () => {
|
|
5
|
+
process.env.FIRESTORE_EMULATOR_HOST = "localhost:8080";
|
|
6
|
+
const app = initializeApp(
|
|
7
|
+
{
|
|
8
|
+
projectId: "demo-test-firestore",
|
|
9
|
+
},
|
|
10
|
+
Date.now().toString(),
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
return getFirestore(app);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const firestoreDbAdmin = initializeFirestore();
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
|
|
3
|
+
const initializeRealtimeDB = async () => {
|
|
4
|
+
process.env.FIREBASE_DATABASE_EMULATOR_HOST = "localhost:9000";
|
|
5
|
+
process.env.FIREBASE_DATABASE_AUTH_EMULATOR_HOST = "localhost:9000";
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires,global-require
|
|
7
|
+
const admin = require("@firebase/rules-unit-testing");
|
|
8
|
+
const testEnv = await admin.initializeTestEnvironment({
|
|
9
|
+
projectId: "demo-test",
|
|
10
|
+
database: {
|
|
11
|
+
rules: fs.readFileSync("database.rules.json", "utf-8"),
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
const db = testEnv.authenticatedContext("db").database();
|
|
15
|
+
|
|
16
|
+
return db;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const realtimeDbAdmin = initializeRealtimeDB();
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type Tea = {
|
|
2
|
+
name: string;
|
|
3
|
+
type: "Green" | "Hong" | "White" | "Puerh" | "Oolong";
|
|
4
|
+
origin: string;
|
|
5
|
+
amount: number;
|
|
6
|
+
year: number;
|
|
7
|
+
__key: number | string;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export const teas = [
|
|
11
|
+
{ id: 0, name: "Bi Luo Chun", type: "Green", origin: "China", amount: 50, year: 2022 },
|
|
12
|
+
{ id: 1, name: "Taiping Hou Kui", type: "Green", origin: "China", amount: 150, year: 2023 },
|
|
13
|
+
{ id: 2, name: "Hon.yama Sencha", type: "Green", origin: "Japan", amount: 25, year: 2021 },
|
|
14
|
+
{ id: 3, name: "Yunnan Golden Silk", type: "Hong", origin: "China", year: 2022 },
|
|
15
|
+
{ id: 4, name: "Hong Yu", type: "Hong", origin: "Taiwan", year: 2023 },
|
|
16
|
+
{ id: 5, name: "Ming Jian GABA Oolong", type: "Oolong", origin: "Taiwan", year: 2021 },
|
|
17
|
+
{ id: 6, name: "Da hong pao", type: "Oolong", origin: "China", year: 2021 },
|
|
18
|
+
{ id: 7, name: "Shou Mei", type: "White", origin: "China", year: 2011 },
|
|
19
|
+
{ id: 8, name: "Wild White Tea", type: "White", origin: "China", year: 2017 },
|
|
20
|
+
{ id: 9, name: "Sheng HK Red Wild", type: "Puerh", origin: "China", year: 1980 },
|
|
21
|
+
];
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Firestore } from "firebase-admin/firestore";
|
|
2
|
+
import { Database } from "firebase-admin/database";
|
|
3
|
+
|
|
4
|
+
import { teas } from "./seed/seed.data";
|
|
5
|
+
|
|
6
|
+
export const seedFirestoreDatabaseAdmin = async (db: Firestore) => {
|
|
7
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
8
|
+
for (const tea of teas) {
|
|
9
|
+
const { id, ...data } = tea;
|
|
10
|
+
// eslint-disable-next-line no-await-in-loop
|
|
11
|
+
await db.collection("teas").doc(`${id}`).set(data);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export const seedRealtimeDatabaseAdmin = async (db: Database) => {
|
|
16
|
+
await db.ref("teas").set(null);
|
|
17
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
18
|
+
for (const tea of teas) {
|
|
19
|
+
const { id, ...data } = tea;
|
|
20
|
+
// eslint-disable-next-line no-await-in-loop
|
|
21
|
+
await db.ref(`teas/${id}`).set(data);
|
|
22
|
+
}
|
|
23
|
+
};
|
package/jest.config.ts
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyper-fetch/firebase-admin",
|
|
3
|
-
"version": "7.5.
|
|
3
|
+
"version": "7.5.3",
|
|
4
4
|
"description": "First class Firebase Admin adapter for Hyper Fetch",
|
|
5
5
|
"author": "Maciej Pyrc <maciekpyrc@gmail.com>, Kacper Skawina <kacper.skawina@gmail.com>",
|
|
6
6
|
"homepage": "https://hyperfetch.bettertyped.com/",
|
package/project.json
ADDED