From 54b5420a1cfe90815c44affcbeeee08dc75b5ba2 Mon Sep 17 00:00:00 2001 From: Christophe Lejeune Date: Sun, 6 Mar 2022 16:56:51 +0100 Subject: [PATCH] TEST: Reintroducing tests * A user can register herself * A registered user can connect to the platform * A connected user can create a diary --- features/diary_create.feature | 9 ++++++ features/enter.feature | 12 ++++++++ features/step_definitions/context.rb | 23 ++++++++++++++ features/step_definitions/event.rb | 46 ++++++++++++++++++++++++++++ features/step_definitions/outcome.rb | 28 +++++++++++++++++ features/support/env.rb | 17 ++++++++++ features/user_connect.feature | 16 ++++++++++ features/user_register.feature | 18 +++++++++++ 8 files changed, 169 insertions(+) create mode 100644 features/diary_create.feature create mode 100644 features/enter.feature create mode 100644 features/step_definitions/context.rb create mode 100644 features/step_definitions/event.rb create mode 100644 features/step_definitions/outcome.rb create mode 100644 features/support/env.rb create mode 100644 features/user_connect.feature create mode 100644 features/user_register.feature diff --git a/features/diary_create.feature b/features/diary_create.feature new file mode 100644 index 0000000..db8b1a1 --- /dev/null +++ b/features/diary_create.feature @@ -0,0 +1,9 @@ +#language : fr + +Fonctionnalité: Créer un journal + +Scénario: créer un journal + + Soit l'analyste est identifié + Quand l'analyste crée un journal + Alors le journal "essai " est créé diff --git a/features/enter.feature b/features/enter.feature new file mode 100644 index 0000000..28f39b7 --- /dev/null +++ b/features/enter.feature @@ -0,0 +1,12 @@ +#language: fr + +Fonctionnalité: Entrer + +Scénario: à partir de la page d'accueil + + Soit un navigateur sur la page d'accueil + Quand l'analyste clique sur "Journal pour l'analyse qualitative" + Alors le titre "Journaux de bord" est affiché + Et le bouton "S'identifier" est affiché + Et le bouton "Créer un compte" est affiché + diff --git a/features/step_definitions/context.rb b/features/step_definitions/context.rb new file mode 100644 index 0000000..0b50924 --- /dev/null +++ b/features/step_definitions/context.rb @@ -0,0 +1,23 @@ + +Soit("un navigateur sur la page d'accueil") do + visit "/" +end + +Soit("la page des journaux de bord") do + visit "/memo/" +end + +Soit("l'analyste est identifié") do + visit "/memo/" + click_on "S'identifier" + expect(page).to have_content("S'identifier") + fill_in placeholder: 'Identifiant', with: "bob@acme.org" + fill_in placeholder: 'Mot de passe', with: "Ep0nge" + click_on "S'identifier" + expect(page).to have_content "Se déconnecter" +end + +Soit("une page comportant le bouton {string}") do |btn| + expect(page).to have_content btn +end + diff --git a/features/step_definitions/event.rb b/features/step_definitions/event.rb new file mode 100644 index 0000000..f56284e --- /dev/null +++ b/features/step_definitions/event.rb @@ -0,0 +1,46 @@ +Quand("l'analyste entre") do + visit "/memo/" +end + +Quand("l'analyste clique sur {string}") do |lien| + click_on lien +end + +Quand("l'analyste souhaite s'identifier en tant que {string} avec le mot de passe {string}") do |login, password| + click_on "S'identifier" + expect(page).to have_content("S'identifier") + fill_in placeholder: 'Identifiant', with: login + fill_in placeholder: 'Mot de passe', with: password + click_on "S'identifier" +end + +Quand("{string} souhaite créer un compte en tant que {string} avec le mot de passe {string}") do |fullname, login, password| + click_on "Créer un compte" + expect(page).to have_content("Je ne fais pas partie de l'université de Liège") + find("#newaccount").click + expect(page).to have_content("Nom complet (prénom et nom de famille)") + range = [*'0'..'9',*'A'..'F'] + hash = Array.new(36){ range.sample }.join + fill_in placeholder: 'Jack London', with: 'test'+ hash + fullname + fill_in placeholder: 'user@example.net', with: login + hash + fill_in "password", with: password + fill_in "confirm", with: password + click_on "Créer un compte" + click_on "Journaux de bord" +end + + +Quand("l'analyste crée un journal") do + visit "/memo/" + numbers = [*'0'..'9'] + cardinal = Array.new(3){ numbers.sample }.join + today_date = Date.today.strftime('%Y-%m-%d') + diary_name = 'essai ' + today_date + cardinal + fill_in placeholder: 'Mon journal de bord', with: diary_name + click_on "Créer..." + click_on "Enregistrer" + expect(page).to have_content("Ajouter un ancrage") + visit "/memo/" + expect(page).to have_content(diary_name) +end + diff --git a/features/step_definitions/outcome.rb b/features/step_definitions/outcome.rb new file mode 100644 index 0000000..02674ad --- /dev/null +++ b/features/step_definitions/outcome.rb @@ -0,0 +1,28 @@ +Alors ("le bouton {string} est affiché") do |btn| + expect(page).to have_content btn +end + +Alors ("le titre {string} est affiché") do |title| + expect(page).to have_content title +end + + +Alors("{string} est connecté") do |fullname| + expect(page).to have_content fullname + expect(page).to have_content "Se déconnecter" +end + +Alors("l'analyste n'est pas connecté") do + expect(page).to have_content "S'identifier" +end + +Alors("le journal {string} est créé") do |diary_name| + new_diary_name = "tentative réussie du "+ Date.today.strftime('%Y-%m-%d') + visit "/memo/" + click_on diary_name+Date.today.strftime('%Y-%m-%d') + page.find("h1").click + fill_in 'name', with: new_diary_name + click_on "Enregistrer" + visit "/memo/" + expect(page).to have_content(new_diary_name) +end diff --git a/features/support/env.rb b/features/support/env.rb new file mode 100644 index 0000000..2a947f6 --- /dev/null +++ b/features/support/env.rb @@ -0,0 +1,17 @@ +require 'capybara/cucumber' +require 'capybara/cuprite' + +Before do + Capybara.current_session.driver.add_headers("Accept-Language" => "fr") +end +Capybara.run_server = false +Capybara.default_driver = :cuprite +Capybara.javascript_driver = :cuprite +Capybara.app_host = ENV["APP_HOST"] || "http://localhost:3000" +Capybara.default_max_wait_time = 10 +Capybara.register_driver(:cuprite) do |app| + Capybara::Cuprite::Driver.new(app, + browser_options: { 'no-sandbox': nil }, + timeout: 30 + ) +end diff --git a/features/user_connect.feature b/features/user_connect.feature new file mode 100644 index 0000000..8fc116b --- /dev/null +++ b/features/user_connect.feature @@ -0,0 +1,16 @@ +#language : fr + +Fonctionnalité: S'identifier + +Scénario: avec un mot de passe correct + + Soit la page des journaux de bord + Quand l'analyste souhaite s'identifier en tant que "bob@acme.org" avec le mot de passe "Ep0nge" + Alors "Robert Testeur" est connecté + Et le bouton "Créer..." est affiché + +Scénario: avec un mot de passe erroné + + Soit la page des journaux de bord + Quand l'analyste souhaite s'identifier en tant que "bob@acme.org" avec le mot de passe "Eponge" + Alors l'analyste n'est pas connecté diff --git a/features/user_register.feature b/features/user_register.feature new file mode 100644 index 0000000..32e5793 --- /dev/null +++ b/features/user_register.feature @@ -0,0 +1,18 @@ +#language : fr + +Fonctionnalité: Créer un compte + +Scénario: se rendre au bon endroit + + Soit la page des journaux de bord + Quand l'analyste clique sur "Créer un compte" + Alors le titre "Créer un compte" est affiché + Et le bouton "Je fais partie de l'université de Liège" est affiché + Et le bouton "Je ne fais pas partie de l'université de Liège" est affiché + +Scénario: créer un compte + + Soit la page des journaux de bord + Quand "Robert Testeur" souhaite créer un compte en tant que "bob" avec le mot de passe "bricoleur" + Alors "Robert Testeur" est connecté +