A Rails engine for exposing API endpoints for manipulating factories that can be used in frontend tests
Ruby HTML CSS JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
app/controllers/factory_girl_api
bin
config
lib
spec
.gitignore
.rubocop.yml
Gemfile
Gemfile.lock
MIT-LICENSE
README.md
Rakefile
factory_girl_api.gemspec

README.md

factory_girl_api Gem Version

The factory_girl_api gem is a Rails Engine that integrates with factory_girl to add API routes for manipulating factories that can be used for context setup in frontend tests.

It cooperates with angular-factory-girl-api, which provides an Angular service that will make the proper requests to your server during tests.

Installation

Add factory_girl_api to your Gemfile:

group :test do
  gem 'factory_girl_api'
end

Then mount the engine in your routes file:

Rails.application.routes.draw do
  mount FactoryGirlApi::Engine => '/api/v1/test_helpers' if Rails.env.test?
end

Routes Added

The factory_girl_api gem adds three routes at the location it is mounted at.

Method Route Description
POST /factories Calls FactoryGirl.create and returns the result
POST /database Sets up the database
DELETE /database Rolls back the database to a clean state

POST /factories

This is the primary endpoint installed by the gem. It accepts the following parameters:

{
  factory: {
    name: 'string',
    attributes: { object ... },
    traits: [ array ... ]
  }
}

The name parameter is required. All other parameters are optional. When used, this calls FactoryGirl.create with the provided options, then renders the resulting model as JSON.

Since this calls FactoryGirl.create, it will modify the database, so it should be surrounded by calls to /database to control database cleanup.

POST /database

This endpoint does nothing on its own. Each usage of this endpoint should be paired with a call to DELETE /database, which will delete all records created in the database between the two calls.

DELETE /database

Uses DatabaseCleaner to delete all records created since the previous call to POST /database. This can be used to clean up DB context after creating records with factories.