microfact-mock-server
v1.0.5
Published
Serveur de mock pour les services de l'application Microfact. Ce projet utilise [Mirage JS](https://miragejs.com/) pour simuler les appels aux services.
Downloads
2
Readme
MicrofactMockServer
Serveur de mock pour les services de l'application Microfact. Ce projet utilise Mirage JS pour simuler les appels aux services.
Installation
npm install microfact-mock-server --save-dev
Utilisation
import { startServer, IServerConfig, IServer } from 'microfact-mock-server';
const config:Partial<IServerConfig> = {
...
}
const server:IServer = startServer(config);
Appel à placer, par exemple, avant le démarrage d'une application Angular (app.config.ts
en standalone).
Remarques :
- La
config
est optionnelle (startServer()
). - La méthode
startServer()
retourne un objetIServer
qui possède une méthodeshutdown()
pour stopper le serveur (server.shutdown()
).
Configuration
/**
* Interface de configuration du serveur
*/
export interface IServerConfig {
// Préfixe de l'url pour les appels API
urlPrefix: string;
// Namespace pour les appels API
namespace: string;
// Doit-on renvoyer un businessResult dans les réponses
businessResult: boolean;
// Nombre de catégories et d'articles à générer
seeds?: ISeeds | null;
}
/**
* Interface qui va définir le nombre de catégories et d'articles à générer
*/
export interface ISeeds {
totalCategories: number;
totalArticles: number;
}
Si aucune configuration n'est passée dans le startServer()
, la configuration par défaut est la suivante :
export const defaultConfig:IServerConfig = {
urlPrefix: 'http://localhost:46001',
namespace: 'api',
businessResult: false
}
Important : Le paramètre seeds
est optionnel. Si vous ne le passez pas, le serveur charge un jeu de données par défaut.
Le BusinessResult
Par défaut, les données sont renvoyées directement dans la réponse. Si vous souhaitez renvoyer un businessResult
dans les réponses, vous pouvez le spécifier dans la configuration.
Le format du businessResult est le suivant :
export interface IBusinessResult<T> {
result: T;
errors: IError[];
warnings: unknown[];
metadata: {
page: number;
limit: number;
total: number;
};
}
export interface IError {
code: number;
message: string;
}
Remarque : Seuls le result
et les errors
sont utilisés dans les réponses. Les autres champs ne sont pas utilisés dans ce mock.
Gestion des erreurs
Le serveur peut renvoyer des erreurs.
Si le serveur est configuré pour ne pas renvoyer de businessResult
Les erreurs sont renvoyées directement dans l'entête de la réponse errors
sous forme de chaine dont le format est le suivant code1:message1, code2:message2, ...
(les codes étant des nombres)
Si le serveur est configuré pour renvoyer un businessResult
Les erreurs sont renvoyées dans le champ errors
du businessResult
sous forme de tableau d'objets dont le format est le suivant :
export interface IError {
code: number;
message: string;
}
Données de test
Ce serveur de mock fournit des données de test pour les entités suivantes :
- Des Catégories
- get
/categories
- get
/categories/:id
- post
/categories
- put
/categories/:id
- delete
/categories/:id
- get
- Des Articles
- get
/articles
- get
/articles/:id
- post
/articles
- put
/articles/:id
- delete
/articles/:id
- get
Les url complètes sont préfixées, par defaut, par http://localhost:46001/api
(ex : http://localhost:46001/api/categories
).
Comme vu précédement ceci est modifiable via la configuration.
Catégories
- id (string) : Identifiant de la catégorie
- libelle (string) : Nom de la catégorie (unique)
Remarque : En dehors de l'identifiant, les catégories sont uniques par leur libelle
.
Une erreur est remontée si vous tentez de créer une catégorie avec un libellé déjà existant.
Un libelle
vide remonte aussi une erreur.
Articles
- id (string) : Identifiant de l'article
- nom (string) : Nom de l'article
- codeArticle (string) : Code de l'article (unique)
- puht (number) : Prix unitaire hors taxe
- disponibilite (number) : Disponibilité de l'article
- 0 : abandonné
- 1 : en stock
- 2 : en rupture
- 3 : épuisé
- categoryIds (string[]) : Identifiants des catégories de l'article
Remarques :
- En dehors de l'identifiant, les articles sont uniques par leur
codeArticle
. Une erreur est remontée si vous tentez de créer un article avec uncodeArticle
déjà existant. - Les champs
codeArticle
etnom
vides remontent une erreur. - Un prix inférieur ou égal à 0 remonte une erreur.