roadhouse-mock
A set of factories to create simple mock handlers for CRUD data in Angular.
Basic Example Setup
The most concise way to create mock handlers is like so
// A bunch of boilerplate up here so you are still in control
require( "angular-mocks" );
var rhMock = require( "roadhouse-mock" );
var data = {
list: [ { key: "value 1" }, { key: "value2" } ],
otherList: require( "./stuff" )
};
angular.module( "e2e-mocks", [ "ngMockE2E" ] )
.run( [ "$httpBackend", "APIRoot",
function ( $httpBackend, APIRoot )
{
rhMock.setApiRoot( APIRoot );
rhMock.$httpBackend = $httpBackend;
// These are the lines where it gets good
rhMock.create( "list", [ "GET", "POST" ], data.list );
rhMock.create( "list/:itemId", [ "PUT", "DELETE" ], data.list );
rhMock.create( "other-list", [ "GET" ], data.otherList );
} ] );
angular.module( "App" ).requires.push( "e2e-mocks" );
Long-Form Example Setup
create( path, methods, list )
sets up handlers with the methods used below, which you can also use directly, if you like.
//... Just like before the `run` block above ...
.run( [ "$httpBackend", "APIRoot",
function ( $httpBackend, APIRoot )
{
rhMock.setApiRoot( APIRoot );
// rhMock doesn't need to know $httpBackend when used like this
// GET a list
$httpBackend.whenRoute( "GET", APIRoot + "list" )
.respond( rhMock.createList( data.list ) );
// POST to a list
$httpBackend.whenRoute( "POST", APIRoot + "list" )
.respond( rhMock.createPost( data.list ) );
// PUT to a list
$httpBackend.whenRoute( "PUT", APIRoot + "list" )
.respond( rhMock.createPut( data.list ) );
// DELETE from a list
$httpBackend.whenRoute( "DELETE", APIRoot + "list" )
.respond( rhMock.createDelete( data.list ) );
// you can still use any typical handlers as well
$httpBackend.whenRoute( "GET", APIRoot + "/other-list" )
.respond( function ( method, url, data )
{
data = JSON.parse( data );
if( data.email === userObj.email )
{
return [ 200, data.otherList ];
}
return [ 401 ];
} );
}
] );
angular.module( "App" ).requires.push( "e2e-mocks" );
Additional Options
[ "skip", "take", "offset", "limit", "page", "rhcurrentpage", "search" ]
skipQueriesInList, default An array of params that will be ignored when filtering paged responses.
"skip"
skipParamName, default The parameter that the paged response will use to skip a number of items from the available list.
"take"
takeParamName, default The parameter that the paged response will use to take a number of items from the available list.