Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

firebase-factories

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

firebase-factories

Factories for creating test data and saving it to firebase

  • 0.0.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

Firebase Factories

Define factories for your models and use the factory to save data to your firebase.

Example

  1. Define a factory with factories.define
  2. Use this factory definition to create and save new data to firebase

factories.define

const factories = require('firebase-factories')({firebase: new Firebase(<my-firebase-root>)})

const UserFactory = factories.define('User', {
  // define the root of where this collection lives
  root: 'users',
  // provide a function that tells the factory how to calculate ids for the
  // newly generated users n is a number that gets incremented with every factory
  // of this type that gets created
  id: (n, options) => {
    return `test-user-${id}`
  },
  // provide a function that returns an object which will be used as the user record
  attributes: (n, options) => {
    const defaults = {info: {name: `User ${n}`, uid: `test-uid-${n}`}}
    if (options.isAdmin) {
      defaults.info.admin = true
    }
    return defaults
  },
  // return a promise that gets called after the user is saved
  // this is useful for setting up other records that need to 
  // exist in order to look up the user id
  afterSave: (n, options, user) => {
    return firebase.child(`uids/${user.info.uid}`).set(user.$id)
  }
})

Create and save data

  • Use the Factory.create(overrides = {}, options = {}) method on your factory definition
    • overrides is an object that will override the default attributes from your factory definition
    • options is an object that will get passed into the attributes function. See example usage for creating regular users vs. creating admin users.
  • These new objects will get saved to firebase with whatever you return from the attributes function in the factory definition.
  • There will be two other properties attached to these saved records:
    • $id: the id of the object
    • $save: a function that returns a promise that resolves after the record is saved and the afterSave() callback is completed
const userRegular = UserFactory.create()
const userAdmin = UserFactory.create({}, {isAdmin: true})
const userJane = UserFactory.create({info: {name: 'Jane'}})

Promise.all([
  userRegular.$save(), 
  userAdmin.$save(), 
  userJane.$save(), 
]).then((values) => {
  console.log('All the users have been saved')
  console.log(userRegular.$id, userRegular.info.name)
  console.log(userAdmin.$id, userAdmin.info.name)
  console.log(userJane.$id, userJane.info.name)
})

TODO

  • tests (use firebase-server to create tests)
  • js standard

Keywords

FAQs

Package last updated on 11 Jul 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc