UNPKG

nestjs-firebase

Version:
76 lines (68 loc) 2.25 kB
import * as path from "node:path"; import { Test } from "@nestjs/testing"; import * as admin from "firebase-admin"; import { mock } from "jest-mock-extended"; import { FirebaseConstants } from "./firebase.constants"; import { FirebaseAdmin, FirebaseModuleOptions, FirebaseModuleOptionsFactory, } from "./firebase.interface"; import { FirebaseModule } from "./firebase.module"; describe("FirebaseModule", () => { jest.spyOn(admin, "initializeApp").mockReturnValue(mock<admin.app.App>()); const googleApplicationCredential = path.join( __dirname, "../../../dummy.firebase.amin.key.json", ); class TestService implements FirebaseModuleOptionsFactory { createFirebaseModuleOptions(): FirebaseModuleOptions { return { googleApplicationCredential, }; } } describe("forRoot", () => { it("should provide the firebase admin", async () => { const module = await Test.createTestingModule({ imports: [FirebaseModule.forRoot({ googleApplicationCredential })], }).compile(); const firebase = module.get<FirebaseAdmin>( FirebaseConstants.FIREBASE_TOKEN, ); expect(firebase).toBeDefined(); }); }); describe("forRootAsync", () => { describe("when the `useFactory` option is used", () => { it("should provide the firebase admin", async () => { const module = await Test.createTestingModule({ imports: [ FirebaseModule.forRootAsync({ useFactory: () => ({ googleApplicationCredential }), }), ], }).compile(); const firebase = module.get<FirebaseAdmin>( FirebaseConstants.FIREBASE_TOKEN, ); expect(firebase).toBeDefined(); }); }); describe("when the `useClass` option is used", () => { it("should provide firebase admin", async () => { const module = await Test.createTestingModule({ imports: [ FirebaseModule.forRootAsync({ useClass: TestService, }), ], }).compile(); const firebase = module.get<FirebaseAdmin>( FirebaseConstants.FIREBASE_TOKEN, ); expect(firebase).toBeDefined(); }); }); }); });