Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • anjou2021/departements-notaires-v2
  • departements-notaires/departements-notaires-v2
  • jashton/departements-notaires-v2
  • m.leport/departements-notaires-v2
4 results
Show changes
Commits on Source (428)
Showing
with 1451 additions and 209 deletions
......@@ -14,10 +14,6 @@ indent_size = 2
[Makefile]
indent_style = tab
[*.md]
trim_trailing_whitespace = false
insert_final_newline = false
[*.yml]
indent_size = 2
......
......@@ -3,10 +3,10 @@ ENVIRONMENT=dev
COMPOSE_PROJECT_NAME=depnot
PHP_VERSION=7.3
COMPOSER_VERSION=1.10
NODE_VERSION=12
XDEBUG_VERSION=2.9.4
PHP_VERSION=8.1
COMPOSER_VERSION=2.2
NODE_VERSION=22
XDEBUG_VERSION=3.3.1
# XDEBUG on Windows
MY_IP=127.0.0.1
......@@ -34,3 +34,6 @@ TIMEZONE=Europe/Paris
# Docker socket
DOCKER_SOCK=/var/run/docker.sock
UID=1000
GID=1000
#!/usr/bin/env bash
export DISABLE_TTY="-T"
if git --no-pager diff --cached --name-status | grep -q "appli_sf" ; then
echo "Running Symfony test"
if ! make test
then
echo "Fix the error before commit!"
echo "Run "
echo "make fix"
echo "for automatic fix or fix it manually."
exit 1
fi
else
echo "No files modified for Symfony"
fi
export DISABLE_TTY=""
exit $?
/.idea
.env
appli_sf/private/*
appli_sf/config/secrets/*
appli_sf/tests/E2E/cypress/screenshots/
appli_sf/tests/E2E/cypress/videos/
# You can override the included template(s) by including variable overrides
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
# Dependency Scanning customization: https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#customizing-the-dependency-scanning-settings
# Container Scanning customization: https://docs.gitlab.com/ee/user/application_security/container_scanning/#customizing-the-container-scanning-settings
# Note that environment variables can be set in several places
# See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
include:
- project: 'adullact/partage-gitlab-ci'
ref: master
file: '/templates/get-version/.gitlab-ci.template.yml'
- project: 'adullact/partage-gitlab-ci'
ref: master
file: '/templates/test/shellcheck/.gitlab-ci.template.yml'
- project: 'adullact/partage-gitlab-ci'
ref: master
file: '/templates/docker/kaniko/.gitlab-ci.template.yml'
- project: 'atol-cd/partage-gitlab-ci'
ref: master
file: '/templates/composer/.gitlab-ci.template.yml'
- local: "/.gitlab/ci/10-.pre/pre.gitlab-ci.yml"
- local: "/.gitlab/ci/15-lint/lint.gitlab-ci.yml"
- project: adullact/partage-gitlab-ci
ref: master
file: "/templates/get-version/.gitlab-ci.template.yml"
- project: adullact/partage-gitlab-ci
ref: master
file: "/templates/test/shellcheck/.gitlab-ci.template.yml"
- project: adullact/partage-gitlab-ci
ref: master
file: "/templates/docker/kaniko/.gitlab-ci.template.yml"
- project: atol-cd/partage-gitlab-ci
ref: master
file: "/templates/composer/.gitlab-ci.template.yml"
- template: Security/SAST.gitlab-ci.yml
- template: Security/Secret-Detection.gitlab-ci.yml
- local: "/.gitlab/ci/40-deploy/upload.gitlab-ci.yml"
stages:
- ".pre"
- lint
- test
- pre-build
- build-test
- quality-test
- unit-test
- e2e-test
- build
- deploy
get-version:
stage: pre-build
extends: .get-version-git-template
stage: pre-build
extends: ".get-version-git-template"
build-test:
stage: build-test
extends: .composer-yarn-build-template
stage: build-test
extends: ".composer-yarn-build-template"
services:
- mariadb:10.1
variables:
MYSQL_DATABASE: notaires
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: notaires
MYSQL_ROOT_PASSWORD: password
ADU_CI_COMPOSER_PROJECT_DIR: "$CI_PROJECT_DIR/appli_sf"
ADU_CI_COMPOSER_CLI_OPTIONS: "--no-progress --no-suggest --no-interaction --no-scripts"
artifacts:
......@@ -47,32 +63,32 @@ build-test:
VERSION=$(cat "$CI_PROJECT_DIR/$ADU_CI_APP_VERSION_FILE")
cd $ADU_CI_COMPOSER_PROJECT_DIR
cp .env.dist .env
sed -i "s#DATABASE_URL=\"mysqli://notaires:password@127.0.0.1:3306/notaires\"#DATABASE_URL=\"mysqli://root:password@mariadb:3306/notaires\"#" .env
sed -i "s#DATABASE_URL=\"mysqli://notaires:password@127.0.0.1:3306/notaires\"#DATABASE_URL=\"mysqli://root:password@mariadb:3306/notaires?serverVersion=10.1\"#" .env
sed -i "s#MAILER_DSN=smtp://localhost:25#MAILER_DSN=smtp://mail:1025#" .env
sed -i "s#MAILER_SENDER=#MAILER_SENDER=sender@notaire.fr#" .env
sed -i "s#mysqli://notaires:password@database:3306/notaires#mysqli://root:password@mariadb:3306/notaires#" phpunit.xml.dist
sed -i "s#mysqli://notaires:password@database:3306/notaires#mysqli://root:password@mariadb:3306/notaires?serverVersion=10.1#" phpunit.xml.dist
composer install $ADU_CI_COMPOSER_CLI_OPTIONS
yarn install --frozen-lockfile
yarn run build
bin/console doctrine:schema:drop --force
bin/console doctrine:schema:update --force
bin/console doctrine:migrations:migrate --no-interaction
bin/console cache:clear
quality-test:
stage: quality-test
extends: .composer-yarn-build-template
stage: quality-test
extends: ".composer-yarn-build-template"
dependencies:
- build-test
services:
- mariadb:10.1
variables:
MYSQL_DATABASE: notaires
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: notaires
MYSQL_ROOT_PASSWORD: password
ADU_CI_COMPOSER_PROJECT_DIR: "$CI_PROJECT_DIR/appli_sf"
script:
- |
cd $ADU_CI_COMPOSER_PROJECT_DIR
bin/console doctrine:schema:update --force
bin/console doctrine:migrations:migrate --no-interaction
bin/console cache:clear
bin/console lint:yaml --no-interaction config
bin/console lint:yaml --no-interaction translations
......@@ -81,79 +97,73 @@ quality-test:
./vendor/bin/phpstan analyse --no-progress --no-interaction
unit-test:
stage: unit-test
extends: .composer-yarn-build-template
stage: unit-test
extends: ".composer-yarn-build-template"
dependencies:
- build-test
services:
- mariadb:10.1
variables:
MYSQL_DATABASE: notaires
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: notaires
MYSQL_ROOT_PASSWORD: password
ADU_CI_COMPOSER_PROJECT_DIR: "$CI_PROJECT_DIR/appli_sf"
script:
- |
cd $ADU_CI_COMPOSER_PROJECT_DIR
bin/console doctrine:schema:update --force
bin/console doctrine:migrations:migrate --no-interaction
bin/console cache:clear
bin/phpunit tests/UnitTests
vendor/bin/phpunit tests/UnitTests
e2e-test:
stage: e2e-test
extends: .composer-yarn-build-template
stage: e2e-test
extends: ".composer-yarn-build-template"
dependencies:
- build-test
services:
- mariadb:10.1
- name: mailhog/mailhog:latest
- name: mailhog/mailhog:latest
alias: mail
variables:
MYSQL_DATABASE: notaires
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: notaires
MYSQL_ROOT_PASSWORD: password
ADU_CI_COMPOSER_PROJECT_DIR: "$CI_PROJECT_DIR/appli_sf"
CYPRESS_BASE_URL: "http://localhost:8000"
CYPRESS_mailhogUrl: "http://mail:8025"
CYPRESS_BASE_URL: http://localhost:8000
CYPRESS_mailhogUrl: http://mail:8025
artifacts:
expire_in: 1 day
when: on_failure
when: on_failure
paths:
- e2e/cypress/screenshots
- e2e/cypress/videos
- appli_sf/tests/E2E/cypress/screenshots
- appli_sf/tests/E2E/cypress/videos
- appli_sf/var/log
script:
- |
cd $ADU_CI_COMPOSER_PROJECT_DIR
bin/console doctrine:schema:update --force
bin/console doctrine:migrations:migrate --no-interaction
bin/console cache:clear
bin/console user:add --username=admin --password=P@ssword12345 --email=admin@notaires.test --name=Administrateur --role=ROLE_ADMIN --no-interaction
bin/console user:add --username=notaire --password=P@ssword12345 --email=notaire@notaires.test --name=Notaire --role=ROLE_NOTARY --address=test --additional-address=null --postal-code=42000 --town=Testville --no-interaction
bin/console user:add --username=agent --password=P@ssword12345 --email=agent@notaires.test --name=Agent --service=test --role=ROLE_AGENT --no-interaction
symfony server:start -d
cd tests/E2E
yarn
cypress run --spec "cypress/integration/EmptyDB/*"
cypress run --config video=false,screenshotOnRunFailure=false --spec "cypress/e2e/integration/EmptyDB/*"
../../bin/console import:individus imports/individus.csv --no-interaction --quiet
cypress run --spec "cypress/integration/FullDB/*"
../../bin/console import:creances imports/creances_non_recuperables.csv --status=0 --drop_table=1 --no-interaction --quiet
../../bin/console import:creances imports/creances_recuperables.csv --status=1 --drop_table=0 --no-interaction --quiet
cypress run --config video=false,screenshotOnRunFailure=false --spec "cypress/e2e/integration/FullDB/*"
build-app:
stage: build
extends: .composer-yarn-build-template
stage: build
extends: ".composer-yarn-build-template"
variables:
ADU_CI_COMPOSER_PROJECT_DIR: "$CI_PROJECT_DIR/appli_sf"
ARCHIVE_FILES: >-
.env.dist
composer.json
composer.lock
assets/
bin/console
config/
public/
src/
templates/
translations/
vendor/
ARCHIVE_FILES: README.md .env.dist composer.json composer.lock assets/ bin/console
config/ public/ src/ templates/ translations/ vendor/
artifacts:
paths:
- "$CI_PROJECT_DIR/build-result/*"
expire_in: '30 days'
expire_in: 30 days
script:
- |
VERSION=$(cat "$CI_PROJECT_DIR/$ADU_CI_APP_VERSION_FILE")
......@@ -161,7 +171,12 @@ build-app:
composer install $ADU_CI_COMPOSER_CLI_OPTIONS
yarn install --frozen-lockfile
yarn run build
chmod -R 775 $ADU_CI_COMPOSER_PROJECT_DIR
chmod 600 $ADU_CI_COMPOSER_PROJECT_DIR/.env.dist
mkdir "$CI_PROJECT_DIR/build-result"
tar cvzf "$CI_PROJECT_DIR/build-result/app-$VERSION.tgz" $ARCHIVE_FILES > "$CI_PROJECT_DIR/tar-result.txt"
tar cvzf "$CI_PROJECT_DIR/build-result/app-$VERSION.tgz" $ARCHIVE_FILES --preserve-permissions > "$CI_PROJECT_DIR/tar-result.txt"
echo "$(cat "$CI_PROJECT_DIR/tar-result.txt" | wc -l) files added"
sast:
stage: test
---
# ##############################################################
# Create an env variable containing all modified files
list_files:
extends: .pre_common
script:
# Grab file list from git (-r is for recursive, thus should include files from several commits)
# We may also try: git diff origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME (to be tested)
- FILE_LIST=$(git diff-tree --no-commit-id --name-only -r $CI_COMMIT_SHA)
# Replace new-line with space
- FILE_LIST=$(echo "${FILE_LIST}" | tr '\n' ' ')
# Remove last character (which is a space, previously a newline)
- FILE_LIST=$(echo "${FILE_LIST}" | sed s'/.$//')
# Replace space by pathname ($CI_PROJECT_DIR)
- FILE_LIST=$(echo "${FILE_LIST}" | sed 's/ / \$\{CI_PROJECT_DIR\}\//g')
# Edge case: add pathname for the first element
- FILE_LIST=$(echo "\${CI_PROJECT_DIR}/${FILE_LIST}")
- echo $FILE_LIST
- echo "FILE_LIST=$FILE_LIST" >> file_list.env
- cat file_list.env
artifacts:
reports:
dotenv:
- file_list.env
# ##############################################################
# Create an env variable containing all modified JSON files
#list_files_json:
# extends: .pre_common
# only:
# changes:
# - "**/*.json"
# script:
# # Grab file list from git (-r is for recursive, thus should include files from several commits)
# # We may also try: git diff origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME (to be tested)
# - FILE_LIST=$(git diff-tree --no-commit-id --name-only -r $CI_COMMIT_SHA | grep -E "\.json$")
# # Replace new-line with space
# - FILE_LIST=$(echo "${FILE_LIST}" | tr '\n' ' ')
# # Remove last character (which is a space, previously a newline)
# - FILE_LIST=$(echo "${FILE_LIST}" | sed s'/.$//')
# # Replace space by pathname ($CI_PROJECT_DIR)
# - FILE_LIST=$(echo "${FILE_LIST}" | sed 's/ / \$\{CI_PROJECT_DIR\}\//g')
# # Edge case: add pathname for the first element
# - FILE_LIST=$(echo "\${CI_PROJECT_DIR}/${FILE_LIST}")
# - echo $FILE_LIST
# - echo "FILE_LIST_JSON=$FILE_LIST" >> file_list_JSON.env
# - cat file_list_JSON.env
# artifacts:
# reports:
# dotenv:
# - file_list_JSON.env
# ##############################################################
# Create an env variable containing all modified MARKDOWN files
#list_files_md:
# extends: .pre_common
# only:
# changes:
# - "*.md"
# script:
# # Grab file list from git (-r is for recursive, thus should include files from several commits)
# # We may also try: git diff origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME (to be tested)
# - FILE_LIST=$(git diff-tree --no-commit-id --name-only -r $CI_COMMIT_SHA | grep -E "\.md$")
# # Replace new-line with space
# - FILE_LIST=$(echo "${FILE_LIST}" | tr '\n' ' ')
# # Remove last character (which is a space, previously a newline)
# - FILE_LIST=$(echo "${FILE_LIST}" | sed s'/.$//')
# # Replace space by pathname ($CI_PROJECT_DIR)
# - FILE_LIST=$(echo "${FILE_LIST}" | sed 's/ / \$\{CI_PROJECT_DIR\}\//g')
# # Edge case: add pathname for the first element
# - FILE_LIST=$(echo "\${CI_PROJECT_DIR}/${FILE_LIST}")
# - echo $FILE_LIST
# - echo "FILE_LIST_MD=$FILE_LIST" >> file_list_MD.env
# - cat file_list_MD.env
# artifacts:
# reports:
# dotenv:
# - file_list_MD.env
# -----------------------------------------------------------------------------
# Common to all .pre jobs
.pre_common:
stage: .pre
image: alpine
before_script:
# Add bash and git
- apk update && apk add bash && apk add git
---
# ##############################################################
# markdownlint https://github.com/DavidAnson/markdownlint
# https://github.com/igorshubovych/markdownlint-cli
# https://gitlab.com/06kellyjac/docker_markdownlint-cli
# --> a CI job that will lint all markdown files
# ##############################################################
markdown_linter:
stage: lint
variables:
markdown_lint_version: "latest-alpine"
image:
name: registry.gitlab.com/06kellyjac/docker_markdownlint-cli:$markdown_lint_version
entrypoint:
- "/usr/bin/env"
- "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
script:
- echo "markdownlint --config .gitlab/config/markdownlint.yml -p .gitlab/config/markdownlintignore.txt /builds/departements-notaires/departements-notaires-v2"
- markdownlint --config .gitlab/config/markdownlint.yml -p .gitlab/config/markdownlintignore.txt /builds/departements-notaires/departements-notaires-v2
# rules:
# - if: $CI_PIPELINE_SOURCE == "merge_request_event"
# - if: $CI_PIPELINE_SOURCE == "push"
# - if: $CI_PIPELINE_SOURCE
# - if: $CI_COMMIT_BRANCH
# changes:
# - "*.md"
# rules:
# - changes:
# - "*.md"
# ##############################################################
# Yamllint https://yamllint.readthedocs.io
# https://github.com/adrienverge/yamllint
# https://github.com/sdesbure/docker_yamllint
# https://manpages.debian.org/buster/yamllint/yamllint.1.en.html
# --> a CI job that will lint all YAML files (compose.yml, .gitlab/ci/*.yml)
# ##############################################################
#yaml_linter:
# stage: lint
# image: sdesbure/yamllint:latest
# only:
# changes:
# - "*.yml"
# - "*.yaml"
# script:
# # Apply script only on modified files. See https://stackoverflow.com/a/56692798/375376
# - echo "yamllint -c .gitlab/config/yamllint.yml $FILE_LIST_YAML"
# - yamllint -c .gitlab/config/yamllint.yml .
# ##############################################################
# JsonLint https://github.com/zaach/jsonlint
# https://github.com/PeterDaveHello/docker-jsonlint
# https://hub.docker.com/r/peterdavehello/jsonlint/
# --> a CI job that will lint all JSON files
# ##############################################################
#json_linter:
# stage: lint
# variables:
# jsonlint_version: "1.6.3"
# image: peterdavehello/jsonlint:$jsonlint_version
# only:
# changes:
# - "**/*.json"
# script:
# - jsonlint -q $FILE_LIST_JSON
# ##############################################################
# ShellCheck https://github.com/koalaman/shellcheck/wiki/GitLab-CI
# https://git-scm.com/docs/git-ls-files
# --> a CI job that will lint all shell scripts (fail when no .sh files)
# ##############################################################
#shellcheck_linter:
# stage: .pre
# image: koalaman/shellcheck-alpine:latest
# only:
# changes:
# - "*.sh"
# script:
# - shellcheck $FILE_LIST_SH
upload_build_artefact:
stage: deploy
image: curlimages/curl:latest
script:
- 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build-result/app-*.tgz "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/Departements_et_Notaires/${CI_COMMIT_TAG}/departements-notaires-${CI_COMMIT_TAG}.tgz"'
only:
- tags
except:
- branches
---
default: true
# MD004 - Unordered list style
# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md004
MD004: false
# MD007 - Unordered list indentation
# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md007---unordered-list-indentation
MD007:
indent: 4
# MD012 - Multiple consecutive blank lines (expected: 1)
# see: https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md012---multiple-consecutive-blank-lines
MD012:
maximum: 3
# MD013 - Line length (expected: 80)
# see: https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md013---line-length
MD013:
tables: false
code_blocks: false
line_length: 120
# heading_line_length: 120
# code_block_line_length: 120
# MD024 - Multiple headings with the same content
# MD024: false
# MD045 - Images should have alternate text (alt text)
# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md045---images-should-have-alternate-text-alt-text
MD045: false
directory-to-exclude/subdir-to-exclude/
appli_sf/tests/E2E/node_modules/
appli_sf/node_modules/
appli_sf/vendor
---
extends: default
yaml-files:
- '*.yaml'
- '*.yml'
rules:
document-start:
level: warning
# 80 chars should be enough, but don't fail if a line is longer
line-length:
max: 120
level: warning
ignore: |
themes/learn/
zz-old-gitbook-documentation/
{"php":"7.4.4","version":"2.16.1:v2.16.1#c8afb599858876e95e8ebfcd97812d383fa23f02","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"binary_operator_spaces":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["return"]},"braces":{"allow_single_line_closure":true},"cast_spaces":true,"class_attributes_separation":{"elements":["method"]},"class_definition":{"single_line":true},"concat_space":true,"declare_equal_normalize":true,"function_typehint_space":true,"include":true,"increment_style":true,"lowercase_cast":true,"lowercase_static_reference":true,"magic_constant_casing":true,"magic_method_casing":true,"method_argument_space":true,"native_function_casing":true,"native_function_type_declaration_casing":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_empty_comment":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["curly_brace_block","extra","parenthesis_brace_block","square_brace_block","throw","use"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":true,"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_around_offset":true,"no_superfluous_phpdoc_tags":{"allow_mixed":true,"allow_unused_params":true},"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_unneeded_control_parentheses":true,"no_unneeded_curly_braces":true,"no_unneeded_final_method":true,"no_unused_imports":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"object_operator_without_whitespace":true,"ordered_imports":true,"php_unit_fqcn_annotation":true,"phpdoc_align":{"tags":["method","param","property","return","throws","type","var"]},"phpdoc_annotation_without_dot":true,"phpdoc_indent":true,"phpdoc_inline_tag":true,"phpdoc_no_access":true,"phpdoc_no_alias_tag":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_return_self_reference":true,"phpdoc_scalar":true,"phpdoc_separation":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":true,"phpdoc_trim":true,"phpdoc_trim_consecutive_blank_line_separation":true,"phpdoc_types":true,"phpdoc_types_order":{"null_adjustment":"always_last","sort_algorithm":"none"},"phpdoc_var_without_name":true,"return_type_declaration":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":true,"single_line_comment_style":{"comment_types":["hash"]},"single_line_throw":true,"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":{"remove_in_empty_for_expressions":true},"standardize_increment":true,"standardize_not_equals":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline_array":true,"trim_array_spaces":true,"unary_operator_spaces":true,"whitespace_after_comma_in_array":true,"yoda_style":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"no_break_comment":true,"no_closing_tag":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":true,"encoding":true,"full_opening_tag":true},"hashes":{"\/tmp\/phpcsfixer_temp.tmp\/appli_sf\/src\/Controller\/SecurityController.php":1041769156,"appli_sf\/src\/Controller\/SecurityController.php":1041769156,"\/tmp\/phpcsfixer_temp.tmp1\/appli_sf\/src\/Controller\/SecurityController.php":1041769156,"\/tmp\/phpcsfixer_temp.tmp2\/appli_sf\/src\/Controller\/SecurityController.php":1041769156,"\/tmp\/phpcsfixer_temp.tmp7\/appli_sf\/src\/Controller\/SecurityController.php":1041769156,"\/tmp\/phpcsfixer_temp.tmp8\/appli_sf\/src\/Controller\/SecurityController.php":1041769156}}
\ No newline at end of file
This diff is collapsed.
# Contribuer à Départements & Notaires
Vous voulez contribuer à Départements & Notaires, bravo ! Et merci :)
Voici les points méthodologiques et techniques importants
## 1. Au début était le ticket
Avant toute contribution, merci de créer un ticket (*issue*) dans Gitlab.
S'il s'agit d'un bug, merci de veiller à bien décrire les étapes pour reproduire le bug. Cette partie est très
importante pour permettre une revue par les pairs.
Si le ticket est lié de près ou de loin à la recherche d'individu, merci de prendre le temps de choisir un individu type
dans l'un des jeux de données de test ([données de test classique](appli_sf/imports/donnees_test.sql)
ou [données de test pour instructeurs de territoire](appli_sf/imports/donnees_test_instructeurs_territoire.sql)). Ce
point est particulièrement important car c'est lui qui permet de nous assurer du caractère reproductible d'une
situation, indépendamment du jeu de données réelles que peut avoir un département ou un autre.
Si jamais il manquait un individu dans l'un des jeux de données, il vous est possible d'en ajouter. Merci de bien
chercher qu'un tel individu n'existe pas déjà, il en existe (à fin 2023) plus de 900 !
Une fois le ticket créé, informez l'ADULLACT. Une phase d'échange s'amorce pour éventuellement préciser le ticket.
## 2. Puis vint la *merge request* (MR)
Créez une MR. Les attendus sont les suivants :
- le code
- les tests associés au code
- la documentation (rangée dans le [dossier `Documentation`](Documentation)).
Une fois la MR créé, informez l'ADULLACT.
## 3. Revue
La MR est passée en revue. Une phase d'échange s'amorce pour éventuellement préciser la MR.
## 4. Fusion
La branche est fusionnée dans le code source.
......@@ -6,17 +6,19 @@
## Configuration (facultatif - les fichiers sont créés si non présent lors de l'installation)
Créer les fichiers .env et appli_sf/.env en copiant respectivement les fichiers .env.dist et appli_sf/.env.dist et les modifier si besoin.
Créer les fichiers .env et appli_sf/.env en copiant respectivement les fichiers .env.dist et appli_sf/.env.dist et les
modifier si besoin.
Dans le fichier appli_sf/.env :
* APP_ENV : remplacer `"prod"` par `"dev"`
* DATABASE_URL : remplacer `"mysqli://notaires:password@127.0.0.1:3306/notaires"` par `"mysqli://DB_USER:DB_PASSWORD@database:3306/DB_NAME`
Dans le fichier `appli_sf/.env` :
DB_USER, DB_PASSWORD et DB_NAME sont les mêmes que dans le .env à la racine
* MAILER_DSN : remplacer `"smtp://localhost:25"` par `"smtp://mail:MAILER_SMTP_PORT"`
MAILER_SMTP_PORT est le même que dans le .env à la racine
* MAILER_SENDER : mettre une adresse email correcte
* `APP_ENV` : remplacer `"prod"` par `"dev"`
* `DATABASE_URL` : remplacer
* `"mysqli://notaires:password@127.0.0.1:3306/notaires"` par
* `"mysqli://DB_USER:DB_PASSWORD@database:3306/DB_NAME`
* `DB_USER`, `DB_PASSWORD` et `DB_NAME` sont les mêmes que dans le `.env` à la racine
* `MAILER_DSN` : remplacer `"smtp://localhost:25"` par `"smtp://mail:MAILER_SMTP_PORT"`
* `MAILER_SMTP_PORT` est le même que dans le `.env` à la racine
* `MAILER_SENDER` : mettre une adresse email correcte
## Installation
......@@ -24,7 +26,8 @@ MAILER_SMTP_PORT est le même que dans le .env à la racine
make install
```
Vérifier la présence et le contenu des fichiers .env et appli_sf/.env. Relancer les conteneurs docker en cas de modification : `make docker-restart`
Vérifier la présence et le contenu des fichiers .env et appli_sf/.env. Relancer les conteneurs docker en cas de
modification : `make docker-restart`
## Accès aux services
......@@ -34,110 +37,113 @@ Client de messagerie : `http://HTTP_HOSTNAME:MAILER_CLIENT_PORT`
\* HTTP_HOSTNAME, HTTP_PORT et MAILER_CLIENT_PORT sont définies dans le .env à la racine
## Initialiser la base données
## Initialiser la base de données
Créer un nouvel utilisateur :
Créer un nouvel utilisateur :
```
```shell
./bin/console user:add
```
Et importer les données de test :
```
```shell
./bin/console import:individus imports/individus.csv
```
## Réinitialiser le projet
Suppression des containers et volumes docker ainsi qu'un effacement des fichiers générés :
Suppression des conteneurs et volumes docker ainsi qu'un effacement des fichiers générés :
```
```shell
make clean
```
*/!\ Les fichiers .env et appli_sf/.env ne sont pas supprimés*
/!\ Les fichiers `.env` et `appli_sf/.env` ne sont pas supprimés
## Commandes à connaitre
* Commandes Symfony :
### Commandes Symfony
```
```shell
./bin/console
```
* Vider les caches Symfony :
### Vider les caches Symfony
```
```shell
./bin/console cache:clear
```
* Relancer une installation avec réinitialisation :
### Relancer une installation avec réinitialisation
```
```shell
make reset
```
*Équivalent à `make clean` suivi de `make install`*
*\/!\ Les fichiers .env et appli_sf/.env ne sont pas supprimés. Les supprimer manuellement avant pour une réinitialisation complète*
Équivalent à `make clean` suivi de `make install`
* Utiliser composer :
/!\ Les fichiers `.env` et `appli_sf/.env` ne sont pas supprimés. Les supprimer manuellement avant pour une
réinitialisation complète
```
### Utiliser composer
```shell
./bin/composer
```
* Utiliser yarn :
### Utiliser yarn
```
```shell
./bin/yarn
```
* Compiler les ressources (JS + SCSS)
```
```shell
./bin/yarn dev
```
* Activer le "watcher" pour les ressources (JS + SCSS)
```
```shell
./bin/yarn watch
```
* Démarrer les conteneurs docker
```
```shell
make docker-start
```
* Stopper les conteneurs docker
```
```shell
make docker-stop
```
* Redémarrer les conteneurs docker
```
```shell
make docker-restart
```
* Détruire les conteneurs docker
```
```shell
make docker-kill
```
## Outils d'analyse et de tests du code
* PHP_CodeSniffer :
### PHP_CodeSniffer
```
```shell
./bin/phpcs
```
* PHPStan :
### PHPStan
```
```shell
./bin/phpstan
```
......@@ -2,20 +2,26 @@
Suivre la procédure décrite [ici](HOWTO_installation_docker.md) pour l'installation du projet en local.
Les tests E2E permettent de vérifier le bon fonctionnement de l'appli. Avant de proposer une modification du code de l'appli,
Les tests E2E permettent de vérifier le bon fonctionnement de l'appli. Avant de proposer une modification du code de
l'appli,
il est très fortement conseillé de lancer ces tests en local (et d'en ajouter si besoin) :
/!\ Lancer les tests écrase les données existantes en base de données
##### En mode console :
## En mode console
* Se placer à la racine du projet et lancer `bin/cypress`
* Pour lancer un test sur un fichier de spec spécifique utiliser l'option --spec : \
`bin/cypress --spec 'cypress/integration/EmptyDB/1-login.spec.js'`
`bin/cypress --spec 'cypress/integration/EmptyDB/1-login.spec.js'`
## En mode graphique
##### En mode graphique :
* Se placer à la racine du projet et lancer `bin/cypress-gui`
Il est possible que le navigateur lancé par Cypress rencontre une des erreurs suivantes :
Il est possible que le navigateur lancé par Cypress rencontre une des erreurs suivantes :
"SIG_ABRT" sous Chrome, pas de réponse sous Firefox ou page blanche sous Electron.
Dans ce cas il faudra lancer les tests une nouvelle fois avec la commande `bin/cypress-gui`
> **NOTE :** Certains tests n'ont pas pu être automatisés et se retrouvent dans le
> fichier [TEST_E2E_D&N_v2.md](TEST_E2E_D&N_v2.md)
# Créer une version de Départements & Notaires
* Vérifier que les commit envoyés ont bien été validés par la CI de Gitlab\
Présence d'une coche verte ![Commit validé](../Images/pipeline_ok.png) associée à un commit
* Modifier le numéro de version dans `appli_sf/composer.json`, champ `version`
* Mettre à jour le CHANGELOG
* Tagguer le commit avec le même numéro de version que dans le composer.json (le build associé au tag comportera l'archive nommée avec le bon numéro de version) : git tag -a 2.1.2 -m "2.1.2"
* Pousser le commit et le tag sur le GitLab
\ No newline at end of file
## Prérequis
* [ ] Les entrées du `composer.json` sont à jour sur la dernière version (objectif : ne pas utiliser une lib avec un
trou de sécurité)
* [ ] La branche de travail est rebasée sur `master` (i.e. elle commence à partir du dernier commit de `master`)
* [ ] La CI est verte (i.e. tous les tests sont déroulés avec succès)
* [ ] Le numéro de la version à créer est saisi dans `appli_sf/composer.json`, champ `version`
* [ ] La doc
[Documentation > Opérateur > Mise à jour](https://gitlab.adullact.net/departements-notaires/departements-notaires-v2/-/blob/master/Documentation/Operateur/mise-a-jour.md)
est à jour, décrit clairement les éventuels *breaking changes* et explique comment les traiter
* [ ] Le CHANGELOG est à jour, listant les modifications / ajouts / corrections avec les liens vers les tickets
correspondants
## Tâches effectuées par l'ADULLACT
* [ ] Fusionner la branche dans `master` (rappel : la CI de la branche étant verte)
* [ ] Ajouter le tag de la version sur le commit de merge (sur master donc)
## Publication du package de la version
**Note** : depuis la version 2.5.1 (2023-11-18), l'artefact de compilation est automatiquement téléversé sur le dépôt.
* [ ] Récupérer manuellement l'artefact de build (fichier tar.gz) du tag sur la branche master
(rappel : dont la CI doit être verte)
* [ ] Envoyer ce fichier dans
le [Packages Registry](https://gitlab.adullact.net/departements-notaires/departements-notaires-v2/-/packages).
Pour publier dans le *Package registry* :
* Disposer d'un jeton d'accès privé à générer dans
les [paramètres du projet dans Gitlab](https://gitlab.adullact.net/departements-notaires/departements-notaires-v2)
Plus d'informations dans la [doc Gitlab *Personal Access
Token*](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html)
* Envoyer le fichier par une requête PUT.
Cf [Doc Gitlab Package Registry](https://docs.gitlab.com/ee/user/packages/generic_packages/#gitlab-generic-packages-repository)
Exemple de requête :
```shell
curl --header "PRIVATE-TOKEN: monToken" \
--upload-file departements-notaires-X.Y.Z.tgz \
"https://gitlab.adullact.net/api/v4/projects/605/packages/generic/Departements_et_Notaires/X.Y.Z/departements-notaires-X.Y.Z.tgz"
```
Avec :
* `605` étant l'id du dépôt Départements & Notaires v2 du gitLab d'Adullact
* `X.Y.Z` étant le numéro de version conforme à [Semver](https://semver.org/)
## Déploiement
- [ ] Déployer sur la version le [serveur de recette](https://depnot.ovh.adullact.org/)
- [ ] Importer
le [jeu de données de test](https://gitlab.adullact.net/departements-notaires/departements-notaires-v2/-/blob/master/appli_sf/imports/donnees_test.sql)
# TEST_E2E_D&N_v2.md
## 1. Installation
## 1. Installation
* Installation avec Vagrant
* Création d'un utilisateur de type admin
......@@ -9,12 +9,12 @@
1. Se connecter en tant qu'admin
1. Se rendre dans Administration > Paramètres de l'application
1. Saisir le nom de l'application : "D&N"
1. Saisir le nom de l'application : "D&N"
1. Saisir le logo de l'application : choisir le fichier `Documentation/Images/Logo-Departements-Notaires.jpg`
1. Valider
Résultat attendu : le logo doit apparaître en haut à droite de l'écran, sous l'identification et au-dessus de la
barre de navigation
barre de navigation
## 3. Recherche sur base vide
......@@ -40,17 +40,18 @@ Résultat attendu : message la personne est inconnue.
1. Nom d'usage obligatoire : `bin/console import:individus "imports/individus.csv"`
1. Nom civil obligatoire : `bin/console import:individus "imports/individus.csv" --use-civil-name=1`
Résultat attendu :
Résultat attendu :
```
```text
Fin vérification de l'entête
773/773 [============================] 100%
Fin import
```
## 5. Recherche
## 5. Recherche
Jouer les tests décrits dans [Import-individus-test-verifications.md](../Utilisateur/Import-individus-test-verifications.md).
Jouer les tests décrits
dans [Import-individus-test-verifications.md](../Operateur/Import-individus-test-verifications.md).
## 6. Création d'un utilisateur de profil Notaire
......@@ -60,7 +61,7 @@ Jouer les tests décrits dans [Import-individus-test-verifications.md](../Utilis
1. Créer l'utilisateur avec les données suivantes :
* Profil : étude notariale
* Code CRPCEN : 1
* E-mail : etude@notaire.fr
* E-mail : <etude@notaire.fr>
* Description : étude
* Adresse : Place de la République
* Complément d'adresse : 2° étage
......@@ -68,7 +69,7 @@ Jouer les tests décrits dans [Import-individus-test-verifications.md](../Utilis
* Ville : Montpellier
1. Valider
Résultat attendu :
Résultat attendu :
* Dans la liste des utilisateurs, retrouver une ligne contenu `etude@notaire.fr` ET étant de profil *Etude notariale*
......@@ -77,22 +78,26 @@ Résultat attendu :
Pour toutes les étapes suivantes se connecter en tant qu'admin
### 7.1 Création d'un instructeur
#### Etape 1
#### Création d'un instructeur - étape 1
1. Se rendre dans Administration > Gérer les instructeurs
1. Cliquer sur le bouton *Ajouter un instructeur*
1. Créer l'instructeur avec les données suivantes :
* Prénom : instructeur
* Nom : AMBIGU
* E-mail : instructeur1@notaire.fr
* E-mail : <instructeur1@notaire.fr>
* Téléphone : 06 06 06 06 06
* Type de réponse : Ambigu
* Initiales : A-Z
1. Cliquer sur le bouton *Ajouter*
Résultat attendu :
Résultat attendu :
#### Etape 2
* Dans la liste des instructeurs, retrouver une ligne contenant `instructeur1@notaire.fr` ET type de réponse *Ambigu* ET Initiales *A-Z*
#### Création d'un instructeur - étape 2
Dans la liste des instructeurs, retrouver une ligne contenant `instructeur1@notaire.fr` ET type de réponse *Ambigu* ET
Initiales *A-Z*
1. Se rendre dans Recherche
1. Effectuer une recherche de type "ambigue" :
......@@ -105,26 +110,31 @@ Résultat attendu :
* Date de naissance : 01/09/1966
Résultat attendu :
* Vérifier que l'email à bien été envoyé à l'adresse `instructeur1@notaire.fr`
### 7.2 Création d'un second instructeur
#### Etape 1
#### Création d'un second instructeur - étape 1
1. Se rendre dans Administration > Gérer les instructeurs
1. Cliquer sur le bouton *Ajouter un instructeur*
1. Créer l'instructeur avec les données suivantes :
* Prénom : instructeur
* Nom : RECUPERATION
* E-mail : instructeur@notaire.fr
* E-mail : <instructeur@notaire.fr>
* Téléphone : 06 06 06 06 06
* Type de réponse : Récupération
* Initiales : A-Z
1. Cliquer sur le bouton *Ajouter*
Résultat attendu :
Résultat attendu :
* Dans la liste des instructeurs, retrouver une ligne contenant `instructeur2@notaire.fr` ET type de réponse *
Récupération* ET Initiales *A-Z*
#### Création d'un second instructeur - étape 2
* Dans la liste des instructeurs, retrouver une ligne contenant `instructeur2@notaire.fr` ET type de réponse *Récupération* ET Initiales *A-Z*
#### Etape 2
1. Se rendre dans Recherche
1. Effectuer une recherche de type "récupération" :
1. Saisir les valeurs suivantes :
......@@ -136,26 +146,31 @@ Résultat attendu :
* Date de naissance : 06/12/1977
Résultat attendu :
* Vérifier que l'email à bien été envoyé à l'adresse `instructeur2@notaire.fr`
### 7.3 Création d'un instructeur multi-réponses et initiales communes avec un autre instructeur
#### Etape 1
1. Se rendre dans Administration > Gérer les instructeurs
1. Cliquer sur le bouton *Ajouter un instructeur*
1. Créer l'instructeur avec les données suivantes :
* Prénom : instructeur
* Nom : AMBIGU2
* E-mail : instructeur3@notaire.fr
* E-mail : <instructeur3@notaire.fr>
* Téléphone : 06 06 06 06 06
* Type de réponse : Ambigu, Récupération
* Initiales : M-Z
1. Cliquer sur le bouton *Ajouter*
Résultat attendu :
Résultat attendu :
* Dans la liste des instructeurs, retrouver une ligne contenant `instructeur3@notaire.fr` ET type de réponse *Ambigu,
Récupération* ET Initiales *M-Z*
* Dans la liste des instructeurs, retrouver une ligne contenant `instructeur3@notaire.fr` ET type de réponse *Ambigu, Récupération* ET Initiales *M-Z*
#### Etape 2
1. Se rendre dans Recherche
1. Effectuer une recherche de type "ambigue" :
1. Saisir les valeurs suivantes :
......@@ -167,7 +182,7 @@ Résultat attendu :
* Date de naissance : 01/09/1966
Résultat attendu :
* Vérifier que l'email à bien été envoyé à l'adresse `instructeur1@notaire.fr`
* Vérifier que l'email n'a pas été envoyé à l'adresse `instructeur3@notaire.fr`
......@@ -177,7 +192,7 @@ Résultat attendu :
1. Déplacer le dossier uploads dans /opt par exemple (ne fonctionne pas dans /tmp)
1. Faire un lien symbolique dans le dossier public vers le dossier uploads : `ln -s /opt/uploads uploads`
Résultat attendu :
Résultat attendu :
* Le logo s'affiche toujours dans l'entête et la page de connexion
* Les prévisus des images s'affichent bien dans les paramètres de l'application
......@@ -186,24 +201,25 @@ Résultat attendu :
1. Se positionner dans le dossier public de l'application
1. Editer le fichier styles.css
1. Retirer les commentaires /* */ autour des classes CSS
1. Retirer les commentaires `/* */` autour des classes CSS
Résultat attendu :
* Le rendu graphique de l'application est différent :
- La couleur du texte
- La couleur de fond
- La couleur des titres
- La couleur des boutons
- l'image du bandeau est remplacée par un fond uni
- les boutons de l'entete sont déplacés à gauche
- La couleur du texte
- La couleur de fond
- La couleur des titres
- La couleur des boutons
- l'image du bandeau est remplacée par un fond uni
- les boutons de l'entete sont déplacés à gauche
## 10. Création d'un template et changement de template
1. Créer un nouveau template en suivant les étapes décrites ici : [Personnalisation.md](../Utilisateur/Personnalisation.md)
1. Créer un nouveau template en suivant les étapes décrites
ici : [Personnalisation.md](../Operateur/Personnalisation.md)
1. Paramétrer le nouveau template créé
Résultat attendu :
Résultat attendu :
* Après rechargement de la page, le nouveau template est bien pris en compte
......@@ -214,9 +230,10 @@ Résultat attendu :
Résultat attendu :
* Les statistiques des 5 derniers mois s'affichent
Les statistiques des 5 derniers mois s'affichent
1. Vérifier les nombres présents dans la première colonne dans les lignes *Nombre de réponses* et *Nombre de réponses : Récupérables*
1. Vérifier les nombres présents dans la première colonne dans les lignes *Nombre de réponses* et *Nombre de réponses :
Récupérables*
1. Se rendre dans Recherche
1. Effectuer une recherche de type "récupération" :
1. Saisir les valeurs suivantes :
......@@ -226,12 +243,14 @@ Résultat attendu :
* Prénom : Aimé
* Nom d'usage : OLMO
* Date de naissance : 06/12/1977
1. Se rendre dans Statistiques
1. Vérifier les nombres présents dans la première colonne dans les lignes *Nombre de réponses* et *Nombre de réponses : Récupérables*
Résultat attendu :
* Les nombres présents dans la première colonne dans les lignes *Nombre de réponses* et *Nombre de réponses : Récupérables* ont augmenté de 1
1. Se rendre dans Statistiques
1. Vérifier les nombres présents dans la première colonne dans les lignes *Nombre de réponses* et *Nombre de réponses :
Récupérables*
Résultat attendu :
* Les nombres présents dans la première colonne dans les lignes *Nombre de réponses* et *Nombre de réponses :
Récupérables* ont augmenté de 1
## 12. Génération PDF des statistiques
......@@ -253,40 +272,42 @@ Résultat attendu :
Résultat attendu :
* La liste de toutes les recherches "Récupération" s'affichent
La liste de toutes les recherches "Récupération" s'affichent
1. Se rendre dans Recherche
1. Effectuer une recherche de type "récupération" :
1. Saisir les valeurs suivantes :
* Date de décès : 10/02/2020
* Lieu de décès : VILLEFRANCHE
* Date de l'acte de décès : 12/02/2020
* Prénom : Aimé
* Nom d'usage : OLMO
* Date de naissance : 06/12/1977
* Date de décès : 10/02/2020
* Lieu de décès : VILLEFRANCHE
* Date de l'acte de décès : 12/02/2020
* Prénom : Aimé
* Nom d'usage : OLMO
* Date de naissance : 06/12/1977
1. Se rendre dans Liste des recherches
1. Sélectionner les filtres suivants :
* Type de réponse "Récupération"
Résultat attendu :
* La liste de toutes les recherches "Récupération" s'affichent
* La recherche effectuée précédement s'affiche en haut du tableau
* La liste de toutes les recherches "Récupération" s'affichent
* La recherche effectuée précédement s'affiche en haut du tableau
## 14. Alerte décès
1. Se connecter à l'application en tant qu'admin
1. Se rendre dans Administration > Paramètres de l'application
1. Cocher "Activer l'alerte décès"
1. Renseigner le champ "Mail de destination des alertes décès" avec : alerte-deces@notaire.fr
1. Renseigner le champ "Mail de destination des alertes décès" avec : <alerte-deces@notaire.fr>
1. Se rendre dans Recherche
1. Saisir les valeurs suivantes :
* Date de décès : 10/02/2020
* Lieu de décès : VILLEFRANCHE
* Date de l'acte de décès : 12/02/2020
* Prénom : Benjamin
* Nom d'usage : DANSARD
* Date de naissance : 02/02/1957
* Date de décès : 10/02/2020
* Lieu de décès : VILLEFRANCHE
* Date de l'acte de décès : 12/02/2020
* Prénom : Benjamin
* Nom d'usage : DANSARD
* Date de naissance : 02/02/1957
Résultat attendu :
* Mail indiquant que la personne est connue
* Mail envoyé à alerte-deces@notaire.fr
\ No newline at end of file
* Mail indiquant que la personne est connue
* Mail envoyé à <alerte-deces@notaire.fr>
# Tests d'acceptation
## Création des fichiers de test
Les 4680 fichiers ont été créés avec la commande suivante :
```shell
for i in $(seq -f %02g 0 19); do
for j in B1 B2 B3 B4 C1 C2 D1 D2 E1 E2 F1 F2 F3 F4 F5 F6 F7 F8 G1 G2 G3 G4 H1 H2 H3 H4 ; do
for k in N NCT NCST; do
for l in P PCT PCST; do
echo "Conf${i}-${j}-${k}-${l}.md"
mkdir -p "Conf${i}"
touch "Conf${i}/Conf${i}-${j}-${k}-${l}.md"
done
done
done
done
```
# Test d'acceptation `Conf00-B1-N-P`
## Pré-requis
L'application doit être dans la [configuration 00](../Configurations.md#Conf00)
## Test
1. Se connecter en tant qu'étude 3
2. Aller sur l'onglet recherche et saisir les valeurs suivantes :
* Date de décès : 10/02/2020
* Lieu de décès : VILLEFRANCHE
* Date de l'acte de décès : 10/02/2020
* Prénom : Lucette
* Nom d'usage : PERRON
* Date de naissance : 01/01/1905
3. La page résultat de recherche contient : Cette personne est connue de nos services, un message électronique vous est
envoyé avec les informations relatives à votre demande.
4. L'Affichage dans le tableau mes précédentes recherches contient : aide récupérable
5. Template mail généré est : search_found.html.twig
6. Le courriel reçu par le Notaire contient : est connue du département
7. Le courriel reçu par le Notaire contient :
* 1 aide récupérable
* 1 aide non récupérable
8. Le courriel reçu par le Notaire ne contient pas "0 aide en cours d'instruction"
9. Template PDF généré est : search_found_rec.html.twig
10. Le PDF (en pièce jointe du courriel) contient :
* 1 aide récupérable
* 1 aide non récupérable
11. Le PDF (en pièce jointe du courriel) ne contient pas "0 aide en cours d'instruction"