Skip to content

Cadavre exquis - Test TU (Jest), database DDL migration (Sqitch), data format validation (Joi)...

Notifications You must be signed in to change notification settings

AgathePons/cadavre_exquis

Repository files navigation

Cadavre exquis

Le projet est consultable à cette adresse.

En 1925, Jacques Prévert, André Breton, Frida Kahlo et une poignée d'autres figures emblématiques de l'époque s'ennuyaient et décidèrent de jouer à un jeu très simple mais hilarant (enfin, ça, ils ne le savaient pas avant d'y jouer mais ils l'ont rapidement constaté). En groupe de 3 à 5 personnes, chacun écrit une partie d'une phrase sur un papier, le plie de façon à masquer ce qu'il/elle a écrit et passe le papier à son voisin, qui écrit la suite... sans connaître le début. La première phrase générée, le cadavre exquis boira le vin nouveau, donna son nom au jeu.

Projet

En s'inspirant du cadavre exquis, ce projet propose de piocher sujet, adjectif, verbe et complément dans une base de donnée, pour construire des phrases originales.

Un formulaire permet de rentrer une ou plusieurs valeurs. Si ces valeurs proposées par l'utilisateur sont nouvelles, elles sont ajoutées à la base de données pour compléter la collection de mots possibles.

Les technos utilisées

Le projet tourne sous NodeJS avec un serveur Express. Une doc swagger est disponible sur la route /api-docs. Des logs complets et utils sont fournis grâce à :

  • debug pour des logs en console
  • bunyan pour sauvegarder des fichiers de log

Base de donnée

La base de donnée est PostgreSQL. Pour gérer les migrations de type DDL sur la base de données, un Sqitch est mis en place. Le projet utilise le design pattern data mapper.

Tests unitaires

Ce projet a été l'occasion d'une initiation aux tests unitaires grâce à l'utilisation du package JEST.

Validation des données

Une validation des données entrées par les utilisateurs est faite via joi.

Pour installer le projet

Cloner le projet

git clone git@github.com:AgathePons/cadavre_exquis.git

Installer les dépendances

npm i

Créer le fichier .env en se servant du .env.example.

La base de données

Créer une base de donnée (en super user)

createdb ma_db

Installer sqitch.

Créer le fichier sqitch.conf en se servant du sqitch.conf.example.

Deployer la base de données

sqitch deploy

Verifier la base de données

sqitch verify

Revenir en arrière

sqitch revert

Seeder la base de données

psql -U <user> -d <dbname> -f data/import_data.sql

Faire tourner le projet

En mode production

npm start

En mode dev

npm run dev

Les tests unitaires

Jouer les tests

npm test

Note Sqitch

Initier le Sqitch

sqitch init nom_projet --engine pg --target db:pg:ma_bdd --top-dir migrations