Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TEST: Reintroducing tests #118

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions features/diary_create.feature
Original file line number Diff line number Diff line change
@@ -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éé
12 changes: 12 additions & 0 deletions features/enter.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#language: fr

Fonctionnalité: Entrer
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'était probablement un bon entraînement pour la suite... mais je pense qu'à terme ça n'a pas forcément beaucoup de sens de le garder car ce n'est pas une "fonctionnalité" au sens propre. Je ne me dis pas avant de me coucher : "Demain, il faut que je pense à entrer à partir de la page d'accueil".


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é
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ce qui est entre guillemets correspond normalement à des données. C'est un passage de paramètres.

Et le bouton "S'identifier" est affiché
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

idem.

Et le bouton "Créer un compte" est affiché
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

idem


23 changes: 23 additions & 0 deletions features/step_definitions/context.rb
Original file line number Diff line number Diff line change
@@ -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: "[email protected]"
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

46 changes: 46 additions & 0 deletions features/step_definitions/event.rb
Original file line number Diff line number Diff line change
@@ -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: '[email protected]', 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

28 changes: 28 additions & 0 deletions features/step_definitions/outcome.rb
Original file line number Diff line number Diff line change
@@ -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
17 changes: 17 additions & 0 deletions features/support/env.rb
Original file line number Diff line number Diff line change
@@ -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
16 changes: 16 additions & 0 deletions features/user_connect.feature
Original file line number Diff line number Diff line change
@@ -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 "[email protected]" 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 "[email protected]" avec le mot de passe "Eponge"
Alors l'analyste n'est pas connecté
18 changes: 18 additions & 0 deletions features/user_register.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#language : fr

Fonctionnalité: Créer un compte

Scénario: se rendre au bon endroit
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Normalement les différents scénarios correspondent à différents cas et non à différentes étapes du même cas.


Soit la page des journaux de bord
Quand l'analyste clique sur "Créer un compte"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Là encore les guillemets ne servent pas à cela. C'est par exemple pour indiquer un nom et le vérifier plus loins dans le scénario.

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é