Skip to content

Commit

Permalink
FEATURE: create & modify viewpoints (see Hypertopic#69,Hypertopic#92,H…
Browse files Browse the repository at this point in the history
…ypertopic#58)

Co-Authored-By: Yi ZHANG <chriszyyy@gmail.com>
Co-Authored-By: Quoc Nhat Han TRAN <quoc_nhat_han.tran@utt.fr>
Co-Authored-By: Caroline <caroline.dequidt@worldonline.fr>
  • Loading branch information
4 people committed Jun 13, 2018
1 parent 5c3fc6c commit a3f06af
Show file tree
Hide file tree
Showing 23 changed files with 1,077 additions and 282 deletions.
32 changes: 32 additions & 0 deletions .github/issue_template.md
@@ -0,0 +1,32 @@
## Content

Please describe the issue here...

---

## Checklist

Please check that your issue is correctly described:

### Mandatory

- [ ] Its topic must be different from the topic of any other existing ticket (open or closed).
- [ ] The ticket must be written in English.
- [ ] Its title must be as short, as user-centered and as explicit as possible:
- If it is a feature, the title must be the user action (beginning with a verb, and please not `manage`),
- If it is a bug, the title must describe the intended behavior (with `should`).
- [ ] It must be labeled with a type:
- `Feature` for a new behavior,
- `Fix` for the intended behavior which would be different from the current one,
- `Refactoring` for the exact same behavior but developed in a different way (for better performance, better maintainability, etc.).

### Optional

- [ ] It may be labeled with the affected page (application screen):
- `Portfolio page`,
- `Item page`,
- `Viewpoint page`.
- [ ] It might be labeled with deprecated pieces of Hypertopic software implementing earlier versions of this `feature`:
- `Replace LaSuli v2`,
- `Replace Porphyry v6`.
- [ ] If the ticket is for a suggested `fix`, please help us by providing both the intended behavior and the current one as well as a scenario to reproduce the problem.
36 changes: 36 additions & 0 deletions .github/pull_request_template.md
@@ -0,0 +1,36 @@
## Content

Please describe your contribution here...

---

## Checklist

Please check that your pull request is correct:

- Each commit:
- [ ] corresponds to a contribution that should be notified to users,
- [ ] does not generate new errors or warnings at compile or test time,
- [ ] must be attributed to its real authors (with correct GitHub IDs and [correct syntax for multiple authors](https://help.github.com/articles/creating-a-commit-with-multiple-authors/)).
- The title of a commit should:
- [ ] begin with a contribution type
- `FEATURE` for a behaviour allowing a user to do something new,
- `FIX` for a behaviour which has been changed in order to meet user’s expectations,
- `TEST` when it concerns an acceptance test,
- `PROCESS` for a change in the way the software is built, tested, deployed,
- `DOC` when it concerns only internal documentation (however it is better to combine it with the contribution that required this documentation change),
- [ ] be followed by a colon (`:`) with one space after and no space before,
- [ ] be followed by a title as short, as user-centered and as explicit as possible
- If it is a feature, the title must be the user action (beginning with a verb, and please not `manage`),
- If it is a fix, the title must describe the intended behavior (with `should`).
- [ ] ends with a reference to the corresponding ticket with the following syntax:
- `(closes #xx)` if xx is a feature ticket (and the commit is a complete implementation),
- `(fixes #xx)` if xx is a fix ticket (and the commit is a complete fix),
- `(see #xx)` otherwise,
- Each committed line is:
- [ ] useful (it would not work if removed)
- if it is a comment line, its information could not be conveyed by better variables and function naming, better code structuring, or better commit message,
- [ ] related to this very contribution (feature, fix...),
- [ ] in English (with the exception of Gherkin scenarios in French and resulting steps),
- [ ] without any typo in variable, class or function names,
- [ ] correctly indented (spaces rather than tabs, same number of characters as in the rest of the file).
13 changes: 3 additions & 10 deletions .gitignore
@@ -1,18 +1,11 @@
# See https://help.github.com/ignore-files/ for more about ignoring files.

# dependencies
/node_modules

# testing
/coverage
node_modules
package-lock.json

# production
/build
build

# misc
.DS_Store
.env
npm-debug.log*
yarn-debug.log*
yarn-error.log*

15 changes: 15 additions & 0 deletions .travis.yml
@@ -0,0 +1,15 @@
language: node_js
node_js: lts/*

addons:
chrome: stable

cache:
directories:
- ~/.rvm/gems
- node_modules

install:
- npm install
- npm start >/dev/null &
- gem install cucumber rspec capybara selenium-webdriver chromedriver-helper
9 changes: 9 additions & 0 deletions README.md
Expand Up @@ -31,7 +31,16 @@ Build for production

npm run build

Tests requirements
------------------

gem install cucumber rspec capybara selenium-webdriver chromedriver-helper

If it fails on macOS because of `libffi`, it can be fixed by brewing and linking an up-to-date version of the library (at your own risk).

Run tests
---------

Once application is launched in development mode:

npm run test
25 changes: 25 additions & 0 deletions features/create_viewpoint.feature
@@ -0,0 +1,25 @@
#language: fr

Fonctionnalité: Créer un point de vue

Soit un nouveau nom de point de vue généré

Scénario: Accéder à la page de création de point de vue
Soit l'utilisateur ouvre la page d'accueil du site
Quand l'utilisateur crée un nouveau point de vue
Alors la page de point de vue s'ouvre
Et la page de point de vue contient un champ de texte dans le titre
Et la page de point de vue contient un bouton homepage

Scénario: Créer un point de vue

Soit l'utilisateur ouvre la page de création de nouveau point de vue
Quand l'utilisateur entre le nom de point de vue
Alors le champ de texte disparaît
Et le titre de page devient le nom de point de vue

Scénario: Visualiser le point de vue créé

Soit l'utilisateur ouvre la page de création de nouveau point de vue
Quand l'utilisateur revient au portfolio
Alors le portfolio contient le nom de point de vue
24 changes: 24 additions & 0 deletions features/get_number_selected_items_assigned_to_topic.feature
@@ -0,0 +1,24 @@
#language: fr

Fonctionnalité: Pour chaque rubrique, récupérer le nombre d'items sélectionnés qui lui sont assignés

Contexte:

Soit la rubrique "Ateliers du Carmel du Mans" contenue dans la rubrique "Artiste"
Et la rubrique "XIXe s." contenue dans la rubrique "Datation"
Et 21 items décrits par "Ateliers du Carmel du Mans" et "XIXe s."

Scénario: quand aucune rubrique n'est sélectionnée

Soit "vitraux" le portfolio ouvert
Alors il doit y avoir au moins 18 items sélectionnés décrits par "Artiste"
Et il doit y avoir au moins 18 items sélectionnés décrits par "Datation"

Scénario: quand une rubrique est sélectionnée

Soit "vitraux" le portfolio ouvert
Et "Artiste" une des rubriques développées
Et "Datation" une des rubriques développées
Quand on sélectionne la rubrique "Ateliers du Carmel du Mans"
Alors il doit y avoir au moins 18 items sélectionnés décrits par "Ateliers du Carmel du Mans"
Et il doit y avoir au moins 18 items sélectionnés décrits par "XIXe s."
20 changes: 20 additions & 0 deletions features/items_with_same_topic.feature
@@ -0,0 +1,20 @@
#language: fr

Fonctionnalité: À partir d'un item, obtenir ceux qui sont dans la même rubrique

Contexte:
Soit le point de vue "Histoire de l'art" rattaché au portfolio "vitraux"
Soit le corpus "Vitraux - Dr. Krieger" rattaché au portfolio "vitraux"
Soit la rubrique "Donateur" rattachée au point de vue "Histoire de l'art"
Soit la rubrique "Figuration du donateur" contenue dans la rubrique "Donateur"
Soit l'item "BSS 007" rattaché à la rubrique "Figuration du donateur"
Soit l'item "BSS 018" rattaché à la rubrique "Figuration du donateur"

Scénario:

Soit "BSS 007" l'item affiché
Quand on choisit la rubrique "Figuration du donateur"
Alors le titre affiché est "VITRAUX"
Et l'item "BSS 007" est affiché
Et l'item "BSS 018" est affiché
Et les rubriques "Figuration du donateur" sont sélectionnées
30 changes: 30 additions & 0 deletions features/portfolio_consult.feature
@@ -0,0 +1,30 @@
#language: fr

Fonctionnalité: Consulter un portfolio

Contexte:
Soit le point de vue "Histoire de l'art" rattaché au portfolio "vitraux"
Soit le point de vue "Histoire des religions" rattaché au portfolio "vitraux"
Soit le corpus "Vitraux - Bénel" rattaché au portfolio "vitraux"
Soit le corpus "Vitraux - Recensement" rattaché au portfolio "vitraux"

Scénario: Consulter le portfolio spécifié dans la configuration

Soit "vitraux" le portfolio spécifié dans la configuration
Quand un visiteur ouvre la page d'accueil du site
Alors le titre affiché est "VITRAUX"
Et un des points de vue affichés est "Histoire de l'art"
Et un des points de vue affichés est "Histoire des religions"
Et un des corpus affichés est "Vitraux - Bénel"
Et un des corpus affichés est "Vitraux - Recensement"

Scénario: Consulter le portfolio correspondant au serveur virtuel

Soit "indéfini" le portfolio spécifié dans la configuration
Quand un visiteur ouvre la page d‘accueil d‘un site dont l‘adresse commence par "vitraux."
Alors le titre affiché est "VITRAUX"
Et un des points de vue affichés est "Histoire de l'art"
Et un des points de vue affichés est "Histoire des religions"
Et un des corpus affichés est "Vitraux - Bénel"
Et un des corpus affichés est "Vitraux - Recensement"

38 changes: 38 additions & 0 deletions features/portfolio_select.feature
@@ -0,0 +1,38 @@
#language: fr

Fonctionnalité: Ajouter une rubrique à la sélection actuelle

Contexte:
Soit le point de vue "Histoire de l'art" rattaché au portfolio "vitraux"
Soit le point de vue "Histoire des religions" rattaché au portfolio "vitraux"

Soit le corpus "Vitraux - Bénel" rattaché au portfolio "vitraux"
Soit le corpus "Vitraux - Recensement" rattaché au portfolio "vitraux"

Soit la rubrique "Ateliers du Carmel du Mans" rattachée au point de vue "Histoire de l'art"
Soit la rubrique "1868" rattachée au point de vue "Histoire de l'art"
Soit la rubrique "David Tremlett" rattachée au point de vue "Histoire de l'art"

Soit l'item "DSN 001" rattaché à la rubrique "Ateliers du Carmel du Mans"
Soit l'item "DSN 001" rattaché à la rubrique "1868"
Soit l'item "DSN 003" rattaché à la rubrique "Atelier du Carmel du Mans"
Soit l'item "Villenauxe-la-Grande" rattaché à la rubrique "David Tremlett"

Scénario: quand elle est vide
Soit la liste des rubriques sélectionnées est vide
Et "Artiste" une des rubriques développées
Quand on sélectionne la rubrique "Ateliers du Carmel du Mans"
Alors les rubriques "Ateliers du Carmel du Mans" sont surlignées
Et l'item "DSN 001" est affiché
Et l'item "DSN 003" est affiché
Et l'item "Villenauxe-la-Grande" n'est pas affiché

Scénario: quand elle est non vide
Soit les rubriques "Ateliers du Carmel du Mans" sont sélectionnées
Et "Datation" une des rubriques développées
Et "XIXe s." une des rubriques développées
Quand on sélectionne la rubrique "1868"
Alors les rubriques "Ateliers du Carmel du Mans|1868" sont surlignées
Et l'item "DSN 001" est affiché
Et l'item "DSN 003" n'est pas affiché
Et l'item "Villenauxe-la-Grande" n'est pas affiché
23 changes: 23 additions & 0 deletions features/step_definitions/item.rb
@@ -0,0 +1,23 @@
require 'capybara/cucumber'
require 'selenium/webdriver'

Capybara.run_server = false
Capybara.default_driver = :selenium_chrome_headless
Capybara.app_host = "http://localhost:3000"
Capybara.default_max_wait_time = 10

# Conditions

Soit("{string} l\'item affiché") do |item|
visit "/"
click_on item
end


# Events

Quand("on choisit la rubrique {string}") do |topic|
click_on topic
end

# Outcomes

0 comments on commit a3f06af

Please sign in to comment.