1.0.5 • Published 1 month ago

microfact-mock-server v1.0.5

Weekly downloads
-
License
-
Repository
-
Last release
1 month ago

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 objet IServer qui possède une méthode shutdown() 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
  • Des Articles
    • get /articles
    • get /articles/:id
    • post /articles
    • put /articles/:id
    • delete /articles/:id

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 un codeArticle déjà existant.
  • Les champs codeArticle et nom vides remontent une erreur.
  • Un prix inférieur ou égal à 0 remonte une erreur.
1.0.2

1 month ago

1.0.5

1 month ago

1.0.4

1 month ago

1.0.3

1 month ago

1.0.1

1 month ago