Expressive fixtures generator for Loopback
Add the following entry to your package.json
:
"loopback-fixtures": "git://github.com/Octopixell/loopback-fixtures.git"
Then, in your server/component-config.json
, add :
{
"loopback-fixtures": {
"fixturePath": "/fixtures/data/",
"append": false,
"autoLoad": false
}
}
Write your YML fixture file /fixture/data/data.yml
(adapt according your model) :
Group:
group{1..10}:
name: "Groupe {#} depuis les fixtures"
User:
user{1..10}:
name: "User {#} : {{name.lastName}}"
groupId: @{group{#}}
email: "{{internet.email}}"
birthDate: "2016-01-01"
favoriteNumber: "(function() { return Math.round(Math.random()*1000);})()"
-
If
autoLoad
is set totrue
, fixtures will be loaded when you start your application -
With the server:
app.loadFixtures()
(return a promise)e.g:
app.loadFixtures() .then(function() { console.log('Done!'); }) .catch(function(err) { console.log('Errors:', err); });
-
With a node command:
node ./node_modules/loopback-fixtures/lib/load-fixtures.js
-
fixturePath
(default value'/fixtures/data'
)The directory to load data fixtures from
-
append
(default valuetrue
)If set to
true
, data fixtures will be append instead of deleting all data from the database first. WARNINGfalse
will erase your database -
autoLoad
(default valuefalse
)
-
Load data according your model
-
Multiple generators :
User: user{1..45}: name: "User number {#}"
{#}
represents the current identifier for the generator -
References :
Group: group{1..3}: name: "Groupe number {#}" User: user{1..9}: name: "User number {#}" group: @{group1} # Reference to group1 owner: @{group1.owner} # Reference the owner of group1 user{10..19}: name: "User number {#}" group: @{group.*} # Reference to any random matching group
@{group1}
represents the reference forgroup1
and can be used in other fixtures@{group1.name}
represents the reference for the propertyname
withingroup1
and can be used in other fixtures@{group.*}
represents the reference for a random matching group and can be used in other fixtures -
JSON
User: userWithJson: data: '{"key":"value","key2":"value2"}'
-
Fakers :
User: user{1..10}: name: "User n°{#} : {{name.lastName}} {{name.firstName}}" email: "{{internet.email}}"
You can use Faker.js API to provide fake data
-
Custom function :
User: user{1..10}: favoriteNumber: "(function() { return Math.round(Math.random()*1000); })()"
You can use custom functions too
Samy Ghribi - For creating the initial version of this LoopBack component. Thanks Samy!
ISC