diff --git a/README.md b/README.md index ba0fa11..5117824 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,18 @@
-

Fireboost

+

FireBoost

-![npm](https://img.shields.io/npm/v/fireboost.svg) -![Travis](https://img.shields.io/travis/39ro/fireboost) +[![npm](https://img.shields.io/npm/v/fireboost.svg)](https://www.npmjs.com/package/fireboost) +[![Travis](https://img.shields.io/travis/39ro/fireboost)](https://travis-ci.com/github/39ro/fireboost) ![NPM](https://img.shields.io/npm/l/fireboost) [![Code Style: Google](https://img.shields.io/badge/code%20style-google-blueviolet.svg)](https://github.com/google/gts)
-Helpers used for common admin tasks on Firebase (Authentication, Firestore). +A library including methods to `boost` your development with Firebase (Authentication, Firestore). -### Installation: +## Installation: - To install fireboost using npm, open a terminal/console window and enter the following command: ``` @@ -28,13 +28,12 @@ const fireBoost = new FireBoost();
-### Documentation: +## Documentation: ### Authentication Initializate fireboost with a Firebase App ```javascript import * as admin from 'firebase-admin'; -import {FireBoost} from 'fireboost'; const serviceAccount = require('./service-account.json'); @@ -43,18 +42,17 @@ const app = admin.initializeApp({ databaseURL: "__YOUR__DATABASE_URL__" }); -const appAuthRef = new FireBoost().auth(app); +const appAuthRef = fireBoost.auth(app); ``` ###### API - **deleteAllUsers**
-_Delete all userRecors found in your Firebase App_ +_Delete all userRecords found in your Firebase App_ ```javascript appAuthRef.deleteAllUsers() - // teardown - .then(() => app.delete()) - .catch(console.log); +// teardown +.then(() => app.delete()) ``` @@ -111,7 +109,7 @@ utilDocRef.renameField({oldFieldKey: 'newFieldKey'}) ### Just a reminder -This in a unofficial library for Firestore (https://firebase.google.com/docs/firestore) we recommend replicating the operation, where it's possible, in a test project to check if the output is what expected before to run any operation in a production environment. +This in a unofficial library for Firebase (Authentication, Firestore) we recommend replicating the operation, where it's possible, in a test project to check if the output is what expected before to run any operation in a production environment. Thanks for using and testing this library! ### Contributing diff --git a/src/auth.ts b/src/auth.ts index 503f9f0..dd1cafa 100644 --- a/src/auth.ts +++ b/src/auth.ts @@ -7,6 +7,12 @@ export class FireBoostAuth { this.auth = app.auth(); } + /* + * Delete all existing users found in initialized Firebase app + * appAuthRef.deleteAllUsers() + * // teardown + * .then(() => app.delete()) + */ async deleteAllUsers(nextPageToken?: string): Promise { const listUsersResult = await this.auth.listUsers(10, nextPageToken); const usersID: string[] = listUsersResult.users.map( @@ -18,7 +24,7 @@ export class FireBoostAuth { for (const uid of listUsers.usersID) { await this.auth.deleteUser(uid); - console.log('Deleted Auth User: ', uid); + console.log('Deleted user: ', uid); } if (listUsers.token) { diff --git a/src/fireboost.ts b/src/fireboost.ts index 6035e34..e3db7d5 100644 --- a/src/fireboost.ts +++ b/src/fireboost.ts @@ -1,4 +1,4 @@ -import { FirestoreAdminUtils } from './firestore'; +import { FireBoostFirestore } from './firestore'; import { FireBoostAuth } from './auth'; import * as admin from 'firebase-admin'; @@ -7,7 +7,7 @@ export class FireBoost { return new FireBoostAuth(app); } - firestore(): FirestoreAdminUtils { - return new FirestoreAdminUtils(); + firestore(): FireBoostFirestore { + return new FireBoostFirestore(); } } diff --git a/src/firestore.ts b/src/firestore.ts index 4a54a16..057bdc4 100644 --- a/src/firestore.ts +++ b/src/firestore.ts @@ -137,7 +137,7 @@ export class CollectionReferenceHelper extends ReferenceHelper< } } -export class FirestoreAdminUtils { +export class FireBoostFirestore { ref(r: DocumentReference): DocumentReferenceHelper; ref(r: CollectionReference): CollectionReferenceHelper; ref(r: T) { diff --git a/test/integration/auth.test.ts b/test/integration/auth.test.ts deleted file mode 100644 index 426bc9a..0000000 --- a/test/integration/auth.test.ts +++ /dev/null @@ -1,10 +0,0 @@ -import * as admin from 'firebase-admin'; -import { FireBoost } from '../../src/fireboost'; -import { FireBoostAuth } from '../../src/auth'; - - -test('FireBoost().firestore()', () => { - const app = admin.initializeApp() - expect(new FireBoost().auth(app)).toBeInstanceOf(FireBoostAuth); - app.delete(); -}); diff --git a/test/integration/fireboost.test.ts b/test/integration/fireboost.test.ts index 7441ce4..14a2bbd 100644 --- a/test/integration/fireboost.test.ts +++ b/test/integration/fireboost.test.ts @@ -1,6 +1,36 @@ +import * as admin from 'firebase-admin'; import { FireBoost } from '../../src/fireboost'; -import { FirestoreAdminUtils } from '../../src/firestore'; + +import { CollectionReferenceHelper, DocumentReferenceHelper, FireBoostFirestore } from '../../src/firestore'; +import { FireBoostAuth } from '../../src/auth'; + +let db: admin.firestore.Firestore; +let app: admin.app.App; + +beforeAll(async () => { + // Init application + app = admin.initializeApp(); + db = app.firestore(); +}); + +afterAll(async () => { + await admin.app().delete(); +}); test('FireBoost().firestore()', () => { - expect(new FireBoost().firestore()).toBeInstanceOf(FirestoreAdminUtils); + expect(new FireBoost().firestore()).toBeInstanceOf(FireBoostFirestore); +}); + +test('FireBoost().auth()', () => { + expect(new FireBoost().auth(app)).toBeInstanceOf(FireBoostAuth); +}); + +test('FireBoost().firestore().ref() as Collection', () => { + const colRef = db.collection('test'); + expect(new FireBoost().firestore().ref(colRef)).toBeInstanceOf(CollectionReferenceHelper); +}); + +test('FireBoost().firestore().ref() as Document', () => { + const docRef = db.collection('test').doc('123'); + expect(new FireBoost().firestore().ref(docRef)).toBeInstanceOf(DocumentReferenceHelper); }); diff --git a/test/integration/firestore.test.ts b/test/integration/firestore.test.ts deleted file mode 100644 index e544d67..0000000 --- a/test/integration/firestore.test.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { firestore } from 'firebase-admin'; -import { FireBoost } from '../../src/fireboost'; - -import { CollectionReferenceHelper } from '../../src/firestore'; -import * as admin from 'firebase-admin'; - -let db: firestore.Firestore; - -beforeAll(async () => { - // Init application - const app = admin.initializeApp() - db = app.firestore(); -}); - -afterAll(async () => { - await admin.app().delete(); -}); - -test('FireBoost().firestore().ref() as Collection', () => { - const colRef = db.collection('test'); - expect(new FireBoost().firestore().ref(colRef)).toBeInstanceOf(CollectionReferenceHelper); -}); - -test('FireBoost().firestore().ref() as Document', () => { - const colRef = db.collection('test'); - expect(new FireBoost().firestore().ref(colRef)).toBeInstanceOf(CollectionReferenceHelper); -}); diff --git a/test/unit/firestore/collection.test.ts b/test/unit/firestore/collection.test.ts index fca7941..4d4d226 100644 --- a/test/unit/firestore/collection.test.ts +++ b/test/unit/firestore/collection.test.ts @@ -1,7 +1,7 @@ import * as firebaseTesting from '@firebase/testing'; -import { TestFirestoreAdminUtils } from '../../utils/firestore-test'; +import { TestFireBoostFirestore } from '../../utils/firestore-test'; -const adminUtilsFirestore = new TestFirestoreAdminUtils(); +const adminUtilsFirestore = new TestFireBoostFirestore(); jest.mock('firebase-admin', () => { return { @@ -13,7 +13,7 @@ jest.mock('firebase-admin', () => { const PROJECT_ID = `firestore-utils-project-${new Date().getTime()}`; -let app; +let app: firebase.app.App; let db: firebaseTesting.firestore.Firestore; beforeAll(async () => { diff --git a/test/unit/firestore/document.test.ts b/test/unit/firestore/document.test.ts index afca755..f4b390b 100644 --- a/test/unit/firestore/document.test.ts +++ b/test/unit/firestore/document.test.ts @@ -1,7 +1,7 @@ import * as firebaseTesting from '@firebase/testing'; -import { TestFirestoreAdminUtils } from '../../utils/firestore-test'; +import { TestFireBoostFirestore } from '../../utils/firestore-test'; -const adminUtilsFirestore = new TestFirestoreAdminUtils(); +const adminUtilsFirestore = new TestFireBoostFirestore(); jest.mock('firebase-admin', () => { return { @@ -13,7 +13,7 @@ jest.mock('firebase-admin', () => { const PROJECT_ID = `firestore-utils-project-${new Date().getTime()}`; -let app; +let app: firebase.app.App; let db: firebaseTesting.firestore.Firestore; beforeAll(async () => { diff --git a/test/utils/firestore-test.ts b/test/utils/firestore-test.ts index e90bd91..be6b78c 100644 --- a/test/utils/firestore-test.ts +++ b/test/utils/firestore-test.ts @@ -8,9 +8,9 @@ import { import TestCollectionReference = firebaseTesting.firestore.CollectionReference; import TestDocumentReference = firebaseTesting.firestore.DocumentReference; -import { CollectionReferenceHelper, DocumentReferenceHelper, FirestoreAdminUtils } from '../../src/firestore'; +import { CollectionReferenceHelper, DocumentReferenceHelper, FireBoostFirestore } from '../../src/firestore'; -export class TestFirestoreAdminUtils implements FirestoreAdminUtils { +export class TestFireBoostFirestore implements FireBoostFirestore { ref(r: TestDocumentReference): DocumentReferenceHelper; ref(r: TestCollectionReference): CollectionReferenceHelper; ref(r: DocumentReference): DocumentReferenceHelper;