Skip to content

Commit

Permalink
Merge branch 'release/0.13.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
polosson committed May 14, 2021
2 parents 6698020 + 2be1a4b commit be6e1f4
Show file tree
Hide file tree
Showing 232 changed files with 11,065 additions and 6,318 deletions.
12 changes: 8 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
name : CI
on : [push, pull_request]
jobs :
name: CI
on:
push:
branches: [develop, master]
pull_request:
types: [opened]
jobs:
client-linting:
name : "Client: Linting"
runs-on : ubuntu-latest
Expand Down Expand Up @@ -40,7 +44,7 @@ jobs :
runs-on : ubuntu-latest
strategy :
matrix:
php: [7.4, 7.3, 7.2, 7.1]
php: [7.3, 7.4, 8.0]
defaults : { run: { working-directory: ./server }}
services :
mysql:
Expand Down
23 changes: 23 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,29 @@ Tous les changements notables sur le projet sont documentés dans ce fichier.

Ce projet adhère au principe du [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## 0.13.0 (2021-05-14)

- Corrige un problème avec le nom de la base de données de test (#128 et #129).
- Ajoute la création / suppression de devis pour les événements (#5).
- __[CHANGEMENT CRITIQUE]__ Robert2 requiert maintenant au minimum PHP 7.3 pour fonctionner (#78).
- Ajoute le support de la version 8.0 de PHP (#71).
- Ajoute la possibilité de renseigner une référence (numéro client) aux bénéficiaires (#122).
- Améliore les données affichées dans les PDF (fiches de sortie, devis et factures), en y ajoutant la référence
(numéro client) du bénéficiaire (voir #122) et les numéros de téléphone des techniciens et des bénéficiaires.
- Corrige l'affichage des numéros légaux de l'entreprise (SIRET, etc.) sur les devis et factures.
- Corrige le nom des fichiers uploadés comme documents du matériel pour qu'il conserve son extension (#132).
- N'affiche plus les tags protégés (tags système) dans la page des étiquettes, pour éviter les confusions (#134).
- Accorde en nombre le terme "durée X jour(s)" dans les événements (#135).
- Corrige les problèmes d'affichage de la page de gestion des caractéristiques spéciales de matériel (#133).
- Empêche la suppression d'un événement si celui-ci est confirmé, même si la poubelle est affichée (#137).
- Corrige le problème d'affichage des titres des pages quand on change d'onglet (#142).
- Affiche la description de l'événement dans la fiche de sortie en PDF et améliore son affichage à
l'étape 5 de la modification d'événement (#139).
- Permet la configuration du type d'affichage du matériel dans les fiches de sortie, pour le classer soit par
sous-catégories, soit par parcs, ou bien sans classement particulier (#139).
- Ajoute la possibilité de renseigner un poste occupé pour chaque technicien d'un événement (#140).
- Permet l'ajout d'une photo associée au matériel (#138).

## 0.12.0 (2021-03-29)

- Améliore le calcul du matériel restant dans les événements.
Expand Down
81 changes: 63 additions & 18 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,29 @@ doivent donc être rédigés en français uniquement.

Le code, lui, à l'exception des commentaires, doit être exclusivement en anglais, pas de variable ou de nom de migration en français.

Attention ⚠️ , cela ne veut pas dire que Robert n'est pas traduit : Robert2 est aussi disponible en anglais et doit continuer à l'être.
Attention ⚠️, cela ne veut pas dire que Robert n'est pas traduit : Robert2 est aussi disponible en anglais et doit continuer à l'être.
Merci donc de bien vouloir prendre en compte le fait que chaque texte affiché dans l'interface de Robert doit pouvoir être traduit et si possible,
veuillez spécifier les traductions anglaises de vos ajouts en français dans vos pull requests.

## Branches Git

Pour nommer ses branches, le projet utilise le modèle appelé « Git Flow ».
Voir [cette page](https://git-flow.readthedocs.io/fr/latest/presentation.html) pour plus de détails sur ce workflow,
mais voici un tuto rapide :

Les deux branches principales qui **existent en permanence** sont :
- `master` : la branche sur laquelle se trouve l'application telle qu'elle a été releasée en dernier.
On ne peut y merger que des branches `release/x.x.x` ou `hotfix/x.x.x`. Aucun commit ne doit y être ajouté directement.
Cette branche est considérée comme la "branche stable releasée".
- `develop` : la branche sur laquelle on merge toutes les branches de nouvelles fonctionnalités (nommées `feature/...`).
On peut aussi y faire quelques commits directs, uniquement quand il s'agit de petites corrections.
Cette branche est considérée comme la "branche stable non-releasée".

Quand vous voulez modifier le code, commencez par créer une branche `feature/nom-de-la-fonctionnalité`, qui est basée sur `develop`.
Ensuite, utilisez cette branche pour créer une pull-request dont la branche de destination est `develop`.
Avant d'être mergée, le fonctionnement de l'application sur cette branche doit impérativement être stable et dépourvu de bug.
Une fois la PR mergée, la branche doit être supprimée.

## Version et Changelog

Robert2 utilise la nomenclature de version [Semantic Versionning (semver)](https://semver.org/) pour ses numéros de version. La version actuelle qui
Expand Down Expand Up @@ -81,7 +100,7 @@ Cette commande vous permet de lancer un serveur de développement front-end, ave
qui servira les sources JS, CSS et les assets, à l'adresse `http://localhost:8081/`.

Pour travailler, créez un fichier `.env` dans le dossier `server/` qui contient la variable `APP_ENV=development`,
puis ouvrez l'application sur son serveur back-end (par ex. `http://robert.local`).
puis ouvrez l'application sur son serveur back-end (par ex. `http://robert2.local`).

#### `yarn build`

Expand All @@ -90,7 +109,7 @@ _(Pensez à exécuter cette commande et à commiter le résultat dans votre PR l

## URL de l'API en développement

En développement, l'hôte par défaut utilisé par la partie client pour communiquer avec l'API est `http://robert.local`.
En développement, l'hôte par défaut utilisé par la partie client pour communiquer avec l'API est `http://robert2.local`.

Si vous souhaitez modifier ceci, vous pouvez créer un fichier `.env.development.local` à la racine du dossier
client et surcharger la variable d'environnement `VUE_APP_API_URL` avec votre propre URL d'API (par
Expand Down Expand Up @@ -118,35 +137,60 @@ composer rollback # Annule la dernière migration exécutée sur votre b

## Tests unitaires

Nous utilisons __Jest__ pour les tests unitaires côté front et __PHPUnit__ pour les tests unitaires côté back.
Nous utilisons __Jest__ pour les tests unitaires côté front. Il n'y a pas de pre-requis, il suffit
de les lancer comme ceci :

Pour pouvoir lancer les tests de la partie client, il n'y a pas de pre-requis, par contre pour les tests back,
vous aurez besoin d'une base de données dédiée aux tests, nommée de la même manière que votre base de données
Robert2, mais suffixée avec `_test` (exemple : `robert2_test`).
```bash
# - Se placer dans le dossier client/
cd client

# - Lancer tous les tests
yarn test

Une fois les indications ci-dessus suivis, exécutez les tests via :
# - Ou bien, en mode watch
yarn test --watch
```

Pour les tests unitaires côté back, nous utilisons __PHPUnit__. Pour ceux-ci, vous aurez besoin d'une
base de données dédiée aux tests. Par défaut, cette base s'appelle `robert2_test`, mais vous pouvez
spécifier un autre nom en ajoutant la ligne `"testDatabase": "le_nom_que_vous_voulez"` dans le fichier
`server/src/App/Config/settings.json`.

Ensuite, vous pouvez exécuter les tests via :

```bash
# - Pour la partie client
yarn test [--watch]
# - Se placer dans le dossier server/
cd server

# - Pour la partie serveur
# - Lancer tous les tests
composer test

# - Pour ne lancer qu'une testSuite à la fois :
composer testapi Test # - testSuite des contrôleurs
composer testmodels Test # - testSuite des modèles
composer testlibs Test # - testSuite des libs
composer testother Test # - testSuite des "autres" (fonctions, config, install...)

# - On peut aussi ne lancer qu'un seul fichier de test en particulier, par ex. :
composer testmodels EventTest # - Lance les tests du fichier tests/models/EventTest.php
```

### Qu'est-ce que l'on teste ?

Côté back, des tests unitaires doivent être mis en place au moins pour tous les modèles, les routes d'API
ainsi que pour les fonctions et classes utilitaires.
ainsi que pour les fonctions et classes utilitaires.

Côté front, tous les utilitaires doivent être testés.

N'hésitez pas, bien sûr, à tester aussi des parties du code qui ne sont pas spécifiées ci-dessus, plus il y a de test, mieux c'est !
N'hésitez pas, bien sûr, à tester aussi des parties du code qui ne sont pas spécifiées ci-dessus,
plus il y a de test, mieux c'est !

## Linting

Le projet suit des règles strictes de linting (avec PHPCS pour la partie back et ESLint pour la partie Front).
Un fichier `.editorconfig` existe à la racine du projet pour permettre aux IDE d'automatiser la présentation de base du code.
Le projet suit des règles strictes de linting (avec PHPCS pour le back et ESLint pour le Front).
Un fichier `.editorconfig` existe à la racine du projet pour permettre aux IDE d'automatiser la
présentation de base du code (voir [editorconfig.org](https://editorconfig.org/), ainsi que
[l'extension VSCode](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig) dédiée).

Vous avez la possibilité de vérifier que votre code respecte bien ces conventions via :

Expand Down Expand Up @@ -209,15 +253,16 @@ composer lint
│   └── views # - Dossier contenant les vues Twig de l'application.
│   │   ├── blocks # - Les blocks communs, comme le loading, etc.
│   │   ├── install # - Toutes les pages de l'assistant d'installation
│   │   ── pdf # - Les vues des sorties PDF (factures, fiches d'événement, etc.)
│   │   ── webclient.twig # - Point d'entrée de l'application Robert2 (front-end)
│   │   ── pdf # - Les vues des sorties PDF (factures, fiches d'événement, etc.)
│   │   ── webclient.twig # - Point d'entrée de l'application Robert2 (front-end)
│   │   └── install.twig # - Point d'entrée de l'assistant d'installation
── tests
── tests
│   ├── endpoints # - Tests unitaires (PHPUnit) des controllers.
│   ├── Fixtures
│   │   ├── files # - Fichiers associés aux données (voir server/data) à utiliser pour les fixtures.
│   │   ├── seed # - Données utilisées pour les tables de la DB de test, au format JSON.
│   │   └── tmp # - Dossier utilisé pour stocker la structure SQL (créée à la volée) de la DB de test, pour reset.
│   ├── libs # - Tests unitaires (PHPUnit) des libs.
│   ├── models # - Tests unitaires (PHPUnit) des modèles.
│   └── other # - Tests unitaires (PHPUnit) des fonctions utilitaires et autres classes.
```
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.12.0
0.13.0
6 changes: 3 additions & 3 deletions bin/release
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ done
releaseName="Robert2-${VERSION}"
distFolder="./dist/${releaseName}"

echo "
echo -e "
____ _ _ ____
| _ \ ___ | |__ ___ _ __| |_|___ \\
| |_) / _ \| '_ \ / _ \ '__| __| __) |
Expand Down Expand Up @@ -44,7 +44,7 @@ if $isProduction; then
sed -i -E "s/$CHANGELOG_REGEX/$VERSION \($(date '+%Y-%m-%d')\)/i" ./CHANGELOG.md
echo $VERSION > ./VERSION
else
echo -e "\e[1m\e[33m\n** MODE TESTING ** → omission de la mise à jour du Changelog et de la version !\e[0m"
echo -e "\e[1m\e[33m\n** MODE TESTING ** → omission de la mise à jour du Changelog et du fichier de version !\e[0m"
fi

echo -e "\e[1m\e[34m\nSuppression de l'ancien dossier \"dist\"...\e[0m"
Expand Down Expand Up @@ -87,7 +87,7 @@ chmod 777 src/App/Config
chmod 777 src/install

echo -e "\e[1m\e[34mInstallation des dépendances back...\e[0m"
query='del(."require-dev")|del(.autoload."psr-4"."Robert2\\Tests\\")|del(.autoload."psr-4"."Robert2\\Fixtures\\")|del(.scripts."create-migration")|del(.scripts."lint")|del(.scripts."test")|del(.scripts."testapi")|del(.scripts."testmodels")|del(.scripts."testother")'
query='del(."require-dev")|del(.autoload."psr-4"."Robert2\\Tests\\")|del(.autoload."psr-4"."Robert2\\Fixtures\\")|del(.scripts."create-migration")|del(.scripts."lint")|del(.scripts."test")|del(.scripts."testapi")|del(.scripts."testmodels")|del(.scripts."testlibs")|del(.scripts."testother")'
jq $query composer.json > tmp.composer.json
mv tmp.composer.json composer.json
composer update --lock --quiet
Expand Down
2 changes: 1 addition & 1 deletion client/.env.development
Original file line number Diff line number Diff line change
@@ -1 +1 @@
VUE_APP_API_URL='http://robert.local'
VUE_APP_API_URL='http://robert2.local'
2 changes: 1 addition & 1 deletion client/dist/css/app.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion client/dist/css/chunk-vendors.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion client/dist/js/app.js

Large diffs are not rendered by default.

Loading

0 comments on commit be6e1f4

Please sign in to comment.