SlideShare une entreprise Scribd logo
1  sur  32
Vos fixtures en 30 sec avec
loopback-fixtures
Samy Ghribi
Meetup Loopback #2 - 28 juin 2016
loopback.getCurrentContext().get(‘CurrentUser’)
Samy Ghribi (GitHub : @sghribi)
Je suis développeur à Theodo
Je viens du monde du PHP, Symfony2 (soyez gentils 😃)
J’ai découvert Loopback le mois dernier (idem 😃)
Je veux pouvoir visualiser
l’historique des investissements
sur les 5 dernières années
Client
Ça marche !
On va te faire un joli graphique
:)
Moi
Tada !
Client
Moi
Mon problème
● Jeux de données pour tester
● Jeux de données initiales nécessaires au fonctionnement de
mon application
● Données aléatoires ?
● Simple et rapide !
Prenons un exemple !
Modèle "User”
Nom
Email
Date de naissance
{
"name": "User",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"birthDate": {
"type": "date"
}
}
}
La méthode "à la main”
var users = [
{
"name”: "Jean Michel”,
"email”:
"jean.michel@gmail.com”,
"birthDate”: new Date(1990, 1,
1)
},
{
"name”: "Anne Delarue”,
"email”:
"delarue.anne@hotmail.fr”,
"birthDate”: new Date(1985, 3,
1)
},
// Etc ...
];
app.models.User.create(users, done);
Sympa, mais pas plus de 10...
et fastidieuse
La méthode "programmatique”
var users = [];
for (var i = 1; i <= 10; i++) {
users.push({
"name": "User n°"+i,
"email": "email"+i+"@gmail.com",
"birthDate": new Date(1990, i, 1)
});
}
app.models.User.create(users, done);
La méthode "programmatique”
name email birthdate
User n°1 email1@gmail.com ‘1990-01-01’
User n°2 email2@gmail.com ‘1990-02-01’
User n°3 email3@gmail.com ‘1990-03-01’
User n°4 email4@gmail.com ‘1990-04-01’
… … …
var users = [];
for (var i = 1; i <= 10; i++) {
users.push({
"name": "User n°"+i,
"email": "email"+i+"@gmail.com",
"birthDate": new Date(1990, i, 1)
});
}
Tant que ça reste simple, ça va
Et maintenant avec deux modèles ?
{
"name": "User",
"properties": {
// name, email, birthDate
},
"relations": {
"group": {
"type": "belongsTo",
"model": "Group",
"foreignKey": "groupId"
}
}
}
“User”
{
"name": "Group",
"properties": {
"name": {
"type": "string"
}
},
"relations": {
"users": {
"type": "hasMany",
"model": "User",
"foreignKey": "groupId"
}
}
}
“Group”
Et maintenant avec deux modèles ?
var users = [];
var groups = [];
for (var i = 1; i <= 10; i++) {
users.push({
"name": "User n°"+i,
"email": "email"+i+"@gmail.com",
"birthDate": new Date(1990, i, 1)
});
}
for (var i = 0; i < 5; i++) {
groups.push({
“name”: “Group”+(2*i),
“users”: [users[2*i], users[2*i+1]]
});
}
Et maintenant avec deux modèles ?
var users = [];
var groups = [];
for (var i = 1; i <= 10; i++) {
users.push({
"name": "User n°"+i,
"email": "email"+i+"@gmail.com",
"birthDate": new Date(1990, i, 1)
});
}
for (var i = 0; i < 5; i++) {
groups.push({
“name”: “Group”+(2*i),
“users”: [users[2*i], users[2*i+1]]
});
}
Ça commence à devenir le bazar !
loopback-fixtures
“loopback-fixtures”, késako ?
Composant loopback
Module NPM
Inspiré de “nelmio/alice” de PHP
Comment on l’utilise ?
npm install loopback-fixtures --save
{
// Some other stuff...
"loopback-fixtures": {}
}
server/component-config.json
1. Installation module
2. Activation du composant
Group:
group{1..3}:
name: "Groupe n°{@} depuis les fixtures"
User:
user{1..10}:
name: "User n°{@} : {{name.lastName}}"
groupId: @group.*
email: "{{internet.email}}"
birthDate: "{{date.past}}"
fixture/data/data.yml
3. Définition de vos fixtures
Chargement de données
Group:
group{1..3}:
name: "Groupe n°{@} depuis les fixtures"
User:
user{1..10}:
name: "User n°{@} : {{name.lastName}}"
groupId: @group.*
email: "{{internet.email}}"
birthDate: "{{date.past}}"
fixture/data/data.yml
Se base sur le modèle de
données Loopback
Fichier YAML
Chargement de données
User:
user_alice:
name: "Alice"
email: "alice@gmail.com"
birthDate: "1993-06-24"
user_bob:
name: "Bob"
email: "bob@gmail.com"
birthDate: "1993-06-24"
fixture/data/data.yml
Nom du modèle
Identifiant unique
Données
Gammes d’objets
User:
user_{1..500}:
name: "User n°{@}"
email: "user{@}@gmail.com"
birthDate: "1993-06-24"
fixture/data/data.yml
identifier{1...n} : réplique n fois la ligne
"aaa{@}bbb" : {@} renvoie l’indice de l’itération courante
Gammes d’objets
User:
user_{1..500}:
name: "User n°{@}"
email: "user{@}@gmail.com"
birthDate: "1993-06-24"
fixture/data/data.yml
User:
user_1:
name: "User n°1"
email: "user1@gmail.com"
birthDate: "1993-06-24"
user_2:
name: "User n°2"
email: "user2@gmail.com"
birthDate: "1993-06-24"
# … 500 fois au total
fixture/data/data.yml
Données aléatoires
User:
user_{1..500}:
name: "{{name.firstName}} {{name.lastName}}"
email: "{{internet.email}}"
birthDate: "{{date.past}}"
fixture/data/data.yml
Intégration de faker.js
En dernier recours…
User:
user_samy:
name: "Jean Michel"
weight: "(function() { return Math.random()*100;})()"
fixture/data/data.yml
Vraiment en dernier recours !
Références entre modèles (simple)
Group:
group_jaune:
name: "Les jaunes"
User:
samy:
name: "Samy"
groupId: @group_jaune
fixture/data/data.yml
group_jaune doit être
défini avant son utilisation
Références entre modèles (wildcard)
Group:
group_jaune:
name: "Les jaunes"
group_bleu:
name: "Les bleus"
les_rouges:
name: "Les rouges"
User:
samy:
name: "Samy"
groupId: @group_.*
fixture/data/data.yml
Sélection aléatoire parmi les références
qui matchent
Exemple : @group_.*
➔ group_jaune match OK
➔ group_bleu match OK
➔ les_rouges match KO
⇒ group_jaune ou group_bleu
Bilan
Group:
group{1..8}:
name: "Groupe n°{@} depuis les fixtures"
User:
user{1..100}:
name: "User n°{@} : {{name.lastName}}"
groupId: @group.*
email: "{{internet.email}}"
birthDate: "{{date.past}}"
fixture/data/data.yml
Usages
{
// other stuff...
"loopback-fixtures": {
"autoLoad": true
}
}
server/component-config.json
Chargement au
démarrage
app.loadFixtures()
Depuis Loopback
(promesse)
./node_modules/loopback-fixtures/load-fixtures.js
Depuis le shell
Autres cas d’usages : migrations, tests fonctionnels [, etc]
Quelques options
"autoLoad": true/false : chargement au démarrage de l’appli ?
"append": true/false : ajoute et/ou efface les données ?
"fixturePath": "/fixtures/data" : dossier de fixtures
Client
Moi
Questions ?
npm install loopback-fixtures
(github.com/sghribi/loopback-fixtures)
Samy Ghribi

Contenu connexe

En vedette

Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projetjollivetc
 
Les Promises en Javascript
Les Promises en JavascriptLes Promises en Javascript
Les Promises en JavascriptBenoit Zohar
 
Promise and Bluebird
Promise and BluebirdPromise and Bluebird
Promise and BluebirdDaniel Ku
 
Créer, Pousser et Lancer un serveur RESTful en 10 min.
Créer, Pousser et Lancer un serveur RESTful en 10 min.Créer, Pousser et Lancer un serveur RESTful en 10 min.
Créer, Pousser et Lancer un serveur RESTful en 10 min.Anthony Faucogney
 
XebiCon'16 : Angular2, React, Vue.js - Bien choisir son framework Front-End. ...
XebiCon'16 : Angular2, React, Vue.js - Bien choisir son framework Front-End. ...XebiCon'16 : Angular2, React, Vue.js - Bien choisir son framework Front-End. ...
XebiCon'16 : Angular2, React, Vue.js - Bien choisir son framework Front-End. ...Publicis Sapient Engineering
 

En vedette (7)

Utilizing Bluebird Promises
Utilizing Bluebird PromisesUtilizing Bluebird Promises
Utilizing Bluebird Promises
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projet
 
Les Promises en Javascript
Les Promises en JavascriptLes Promises en Javascript
Les Promises en Javascript
 
Promise and Bluebird
Promise and BluebirdPromise and Bluebird
Promise and Bluebird
 
Créer, Pousser et Lancer un serveur RESTful en 10 min.
Créer, Pousser et Lancer un serveur RESTful en 10 min.Créer, Pousser et Lancer un serveur RESTful en 10 min.
Créer, Pousser et Lancer un serveur RESTful en 10 min.
 
XebiCon'16 : Angular2, React, Vue.js - Bien choisir son framework Front-End. ...
XebiCon'16 : Angular2, React, Vue.js - Bien choisir son framework Front-End. ...XebiCon'16 : Angular2, React, Vue.js - Bien choisir son framework Front-End. ...
XebiCon'16 : Angular2, React, Vue.js - Bien choisir son framework Front-End. ...
 
Vue.js for beginners
Vue.js for beginnersVue.js for beginners
Vue.js for beginners
 

Similaire à Vos fixtures en 30 sec avec loopback fixtures

Les générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidienLes générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidienNicolas Carlo
 
Nouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde MicrosoftNouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde Microsoftdavrous
 
La métrique, ce n'est pas que pour le devops
La métrique, ce n'est pas que pour le devopsLa métrique, ce n'est pas que pour le devops
La métrique, ce n'est pas que pour le devopsPatrick Allaert
 
La mesure, ce n'est pas que pour le devops
La mesure, ce n'est pas que pour le devopsLa mesure, ce n'est pas que pour le devops
La mesure, ce n'est pas que pour le devopsOlivier Garcia
 
Patterns et bonnes pratiques autour de JavaScript
Patterns et bonnes pratiques autour de JavaScriptPatterns et bonnes pratiques autour de JavaScript
Patterns et bonnes pratiques autour de JavaScriptMicrosoft Technet France
 
Découverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanDécouverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanMicrosoft
 
Quelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application webQuelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application web5pidou
 
GPars et PrettyTime - Paris JUG 2011 - Guillaume Laforge
GPars et PrettyTime - Paris JUG 2011 - Guillaume LaforgeGPars et PrettyTime - Paris JUG 2011 - Guillaume Laforge
GPars et PrettyTime - Paris JUG 2011 - Guillaume LaforgeGuillaume Laforge
 
Plop : un micro-générateur pour se simplifier la vie au quotidien
Plop : un micro-générateur pour se simplifier la vie au quotidienPlop : un micro-générateur pour se simplifier la vie au quotidien
Plop : un micro-générateur pour se simplifier la vie au quotidienNicolas Carlo
 
Premier pas de web scrapping avec R
Premier pas de  web scrapping avec RPremier pas de  web scrapping avec R
Premier pas de web scrapping avec RCdiscount
 
Standards e-learning - xAPI : Point d’étape
Standards e-learning - xAPI : Point d’étapeStandards e-learning - xAPI : Point d’étape
Standards e-learning - xAPI : Point d’étapeFFFOD
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonyVincent Composieux
 
La Duck Conf 2018 : "How to make your mobile happy?"
La Duck Conf 2018 : "How to make your mobile happy?"La Duck Conf 2018 : "How to make your mobile happy?"
La Duck Conf 2018 : "How to make your mobile happy?"OCTO Technology
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Microsoft
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Microsoft
 
Cours de C++, en français, 2002 - Cours 2.1
Cours de C++, en français, 2002 - Cours 2.1Cours de C++, en français, 2002 - Cours 2.1
Cours de C++, en français, 2002 - Cours 2.1Laurent BUNIET
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFSDenis Voituron
 

Similaire à Vos fixtures en 30 sec avec loopback fixtures (20)

Les générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidienLes générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidien
 
Algo poo ts
Algo poo tsAlgo poo ts
Algo poo ts
 
Cours de Génie Logiciel / ESIEA 2016-17
Cours de Génie Logiciel / ESIEA 2016-17Cours de Génie Logiciel / ESIEA 2016-17
Cours de Génie Logiciel / ESIEA 2016-17
 
Nouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde MicrosoftNouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde Microsoft
 
La métrique, ce n'est pas que pour le devops
La métrique, ce n'est pas que pour le devopsLa métrique, ce n'est pas que pour le devops
La métrique, ce n'est pas que pour le devops
 
La mesure, ce n'est pas que pour le devops
La mesure, ce n'est pas que pour le devopsLa mesure, ce n'est pas que pour le devops
La mesure, ce n'est pas que pour le devops
 
Patterns et bonnes pratiques autour de JavaScript
Patterns et bonnes pratiques autour de JavaScriptPatterns et bonnes pratiques autour de JavaScript
Patterns et bonnes pratiques autour de JavaScript
 
Découverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanDécouverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet Spartan
 
Cours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 compositeCours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 composite
 
Quelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application webQuelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application web
 
GPars et PrettyTime - Paris JUG 2011 - Guillaume Laforge
GPars et PrettyTime - Paris JUG 2011 - Guillaume LaforgeGPars et PrettyTime - Paris JUG 2011 - Guillaume Laforge
GPars et PrettyTime - Paris JUG 2011 - Guillaume Laforge
 
Plop : un micro-générateur pour se simplifier la vie au quotidien
Plop : un micro-générateur pour se simplifier la vie au quotidienPlop : un micro-générateur pour se simplifier la vie au quotidien
Plop : un micro-générateur pour se simplifier la vie au quotidien
 
Premier pas de web scrapping avec R
Premier pas de  web scrapping avec RPremier pas de  web scrapping avec R
Premier pas de web scrapping avec R
 
Standards e-learning - xAPI : Point d’étape
Standards e-learning - xAPI : Point d’étapeStandards e-learning - xAPI : Point d’étape
Standards e-learning - xAPI : Point d’étape
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs Symfony
 
La Duck Conf 2018 : "How to make your mobile happy?"
La Duck Conf 2018 : "How to make your mobile happy?"La Duck Conf 2018 : "How to make your mobile happy?"
La Duck Conf 2018 : "How to make your mobile happy?"
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
 
Cours de C++, en français, 2002 - Cours 2.1
Cours de C++, en français, 2002 - Cours 2.1Cours de C++, en français, 2002 - Cours 2.1
Cours de C++, en français, 2002 - Cours 2.1
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFS
 

Vos fixtures en 30 sec avec loopback fixtures

  • 1. Vos fixtures en 30 sec avec loopback-fixtures Samy Ghribi Meetup Loopback #2 - 28 juin 2016
  • 2. loopback.getCurrentContext().get(‘CurrentUser’) Samy Ghribi (GitHub : @sghribi) Je suis développeur à Theodo Je viens du monde du PHP, Symfony2 (soyez gentils 😃) J’ai découvert Loopback le mois dernier (idem 😃)
  • 3. Je veux pouvoir visualiser l’historique des investissements sur les 5 dernières années Client Ça marche ! On va te faire un joli graphique :) Moi
  • 4.
  • 7. Mon problème ● Jeux de données pour tester ● Jeux de données initiales nécessaires au fonctionnement de mon application ● Données aléatoires ? ● Simple et rapide !
  • 9. Modèle "User” Nom Email Date de naissance { "name": "User", "properties": { "name": { "type": "string" }, "email": { "type": "string" }, "birthDate": { "type": "date" } } }
  • 10. La méthode "à la main” var users = [ { "name”: "Jean Michel”, "email”: "jean.michel@gmail.com”, "birthDate”: new Date(1990, 1, 1) }, { "name”: "Anne Delarue”, "email”: "delarue.anne@hotmail.fr”, "birthDate”: new Date(1985, 3, 1) }, // Etc ... ]; app.models.User.create(users, done); Sympa, mais pas plus de 10... et fastidieuse
  • 11. La méthode "programmatique” var users = []; for (var i = 1; i <= 10; i++) { users.push({ "name": "User n°"+i, "email": "email"+i+"@gmail.com", "birthDate": new Date(1990, i, 1) }); } app.models.User.create(users, done);
  • 12. La méthode "programmatique” name email birthdate User n°1 email1@gmail.com ‘1990-01-01’ User n°2 email2@gmail.com ‘1990-02-01’ User n°3 email3@gmail.com ‘1990-03-01’ User n°4 email4@gmail.com ‘1990-04-01’ … … … var users = []; for (var i = 1; i <= 10; i++) { users.push({ "name": "User n°"+i, "email": "email"+i+"@gmail.com", "birthDate": new Date(1990, i, 1) }); } Tant que ça reste simple, ça va
  • 13. Et maintenant avec deux modèles ? { "name": "User", "properties": { // name, email, birthDate }, "relations": { "group": { "type": "belongsTo", "model": "Group", "foreignKey": "groupId" } } } “User” { "name": "Group", "properties": { "name": { "type": "string" } }, "relations": { "users": { "type": "hasMany", "model": "User", "foreignKey": "groupId" } } } “Group”
  • 14. Et maintenant avec deux modèles ? var users = []; var groups = []; for (var i = 1; i <= 10; i++) { users.push({ "name": "User n°"+i, "email": "email"+i+"@gmail.com", "birthDate": new Date(1990, i, 1) }); } for (var i = 0; i < 5; i++) { groups.push({ “name”: “Group”+(2*i), “users”: [users[2*i], users[2*i+1]] }); }
  • 15. Et maintenant avec deux modèles ? var users = []; var groups = []; for (var i = 1; i <= 10; i++) { users.push({ "name": "User n°"+i, "email": "email"+i+"@gmail.com", "birthDate": new Date(1990, i, 1) }); } for (var i = 0; i < 5; i++) { groups.push({ “name”: “Group”+(2*i), “users”: [users[2*i], users[2*i+1]] }); } Ça commence à devenir le bazar !
  • 17. “loopback-fixtures”, késako ? Composant loopback Module NPM Inspiré de “nelmio/alice” de PHP
  • 18. Comment on l’utilise ? npm install loopback-fixtures --save { // Some other stuff... "loopback-fixtures": {} } server/component-config.json 1. Installation module 2. Activation du composant Group: group{1..3}: name: "Groupe n°{@} depuis les fixtures" User: user{1..10}: name: "User n°{@} : {{name.lastName}}" groupId: @group.* email: "{{internet.email}}" birthDate: "{{date.past}}" fixture/data/data.yml 3. Définition de vos fixtures
  • 19. Chargement de données Group: group{1..3}: name: "Groupe n°{@} depuis les fixtures" User: user{1..10}: name: "User n°{@} : {{name.lastName}}" groupId: @group.* email: "{{internet.email}}" birthDate: "{{date.past}}" fixture/data/data.yml Se base sur le modèle de données Loopback Fichier YAML
  • 20. Chargement de données User: user_alice: name: "Alice" email: "alice@gmail.com" birthDate: "1993-06-24" user_bob: name: "Bob" email: "bob@gmail.com" birthDate: "1993-06-24" fixture/data/data.yml Nom du modèle Identifiant unique Données
  • 21. Gammes d’objets User: user_{1..500}: name: "User n°{@}" email: "user{@}@gmail.com" birthDate: "1993-06-24" fixture/data/data.yml identifier{1...n} : réplique n fois la ligne "aaa{@}bbb" : {@} renvoie l’indice de l’itération courante
  • 22. Gammes d’objets User: user_{1..500}: name: "User n°{@}" email: "user{@}@gmail.com" birthDate: "1993-06-24" fixture/data/data.yml User: user_1: name: "User n°1" email: "user1@gmail.com" birthDate: "1993-06-24" user_2: name: "User n°2" email: "user2@gmail.com" birthDate: "1993-06-24" # … 500 fois au total fixture/data/data.yml
  • 23. Données aléatoires User: user_{1..500}: name: "{{name.firstName}} {{name.lastName}}" email: "{{internet.email}}" birthDate: "{{date.past}}" fixture/data/data.yml Intégration de faker.js
  • 24. En dernier recours… User: user_samy: name: "Jean Michel" weight: "(function() { return Math.random()*100;})()" fixture/data/data.yml Vraiment en dernier recours !
  • 25. Références entre modèles (simple) Group: group_jaune: name: "Les jaunes" User: samy: name: "Samy" groupId: @group_jaune fixture/data/data.yml group_jaune doit être défini avant son utilisation
  • 26. Références entre modèles (wildcard) Group: group_jaune: name: "Les jaunes" group_bleu: name: "Les bleus" les_rouges: name: "Les rouges" User: samy: name: "Samy" groupId: @group_.* fixture/data/data.yml Sélection aléatoire parmi les références qui matchent Exemple : @group_.* ➔ group_jaune match OK ➔ group_bleu match OK ➔ les_rouges match KO ⇒ group_jaune ou group_bleu
  • 27. Bilan Group: group{1..8}: name: "Groupe n°{@} depuis les fixtures" User: user{1..100}: name: "User n°{@} : {{name.lastName}}" groupId: @group.* email: "{{internet.email}}" birthDate: "{{date.past}}" fixture/data/data.yml
  • 28. Usages { // other stuff... "loopback-fixtures": { "autoLoad": true } } server/component-config.json Chargement au démarrage app.loadFixtures() Depuis Loopback (promesse) ./node_modules/loopback-fixtures/load-fixtures.js Depuis le shell Autres cas d’usages : migrations, tests fonctionnels [, etc]
  • 29. Quelques options "autoLoad": true/false : chargement au démarrage de l’appli ? "append": true/false : ajoute et/ou efface les données ? "fixturePath": "/fixtures/data" : dossier de fixtures
  • 31.
  • 32. Questions ? npm install loopback-fixtures (github.com/sghribi/loopback-fixtures) Samy Ghribi

Notes de l'éditeur

  1. Rajouter exemples ave faker.js ?