/firestore-testing-helpers

firestore testing helper

Primary LanguageTypeScriptMIT LicenseMIT

Firestore Testing Helpers


This project is under development.

Please feel free to PullRequest and Issue.


This repository provides several helpers to facilitate testing in environments that use Firestore.

Installation

$ npm i -D firestore-testing-helpers

Emulator Connector Store

It provides an independent Firebase Connection for each test. Thus, you will be relieved from a very annoying test with runInBand.

import { FirebaseEmulatorConnectorStore } from "firestore-testing-helpers";
import { target } from '../path/to/test/target';


describe('User', () => {
  let connection;
  beforeAll(() => {
    connection = FirebaseEmulatorConnectorStore.getConnector().getAdminApp().firestore();
  });
...
});

Seeder

Helper to import fixture to firestore easily. It provides the ability to import specific data to a specific path as shown below.

import {Seeder} from 'firestore-testing-helpers';

export class UserSeeder extends Seeder {
  protected call() {
     return this.import('users', {
       john: {
         name: 'John',
         age: 28,
         __collections__: {}
       }
     });
  }
}

Seeder is very simple, just run the run method at test time.

import { FirebaseEmulatorConnectorStore } from "firestore-testing-helpers";
import { UserSeeder } from './fixtures/UserSeeder';

describe('User', () => {
  beforeAll(() => {
    return (new UserSeeder(FirestoreEmulatorConnectorStore.getConnector().getAdminFirestore())).run();
  });
...
});

Export

If you want to export the existing remote firestore data, please execute the following command.

$ firestore-export -a /path/to/serviceAccount.json -p collection/document