microfact-mock-server v1.0.5
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-devUtilisation
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
configest optionnelle (startServer()). - La méthode
startServer()retourne un objetIServerqui 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 uncodeArticledéjà existant. - Les champs
codeArticleetnomvides remontent une erreur. - Un prix inférieur ou égal à 0 remonte une erreur.