GithubHelp home page GithubHelp logo

glo4002-eq5's Introduction

G.R.A.I.S.S.E

Gestionnaire de Réservation Agile et Intelligent de Salle Saisi pour les Entreprises

Créé par l'équipe #5

Nom matricule
Alex Gagnon 111 044 926
Clotioloman Yeo 909 272 477
François Lachance-Guillemette 111 080 517
Jean-Philippe Giroux 111 088 846
Kouamé Ange Martial Konan 909 318 064
Marie-Christine Noreau 910 049 538
Xavier Bourgeois-Vézina 111 102 056

Scénarios

User story statut
Assigner périodiquement des salles aux demandes terminé
Assignation en lot des salles aux demandes terminé
Maximiser les places dans la salle terminé
Ordonner les demandes par priorité terminé
Notifier par courriel après l'assignation terminé
Annuler une demande terminé
Notifier par courriel lors d'une annulation terminé
Afficher une demande terminé
Permettre la réservation d'une salle terminé
Afficher les demandes d'un organisateur terminé
Conserver l'historique pas fait

Comment fonctionne notre API

Tout d'abord, vous devez créer un booker. Voici comment faire:

Bookings bookings = new Bookings(new BookingInMemoryRepository());
Boardrooms boardrooms = new Boardrooms(new BoardroomInMemoryRepository());
Reservations reservations = new Reservations(new ReservationInMemoryRepository(), boardrooms, bookings);

booker = new Booker(bookings, reservations);

Ensuite, enregistrer des triggers pour déclencher l'assignation des bookings selon différents critères. Voici un exemple utilisant un ThresholdTrigger:

ThresholdTrigger thresholdTrigger = new ThresholdTrigger(3);
booker.registerTrigger(thresholdTrigger);

Dans cet exemple, le trigger sera déclenché lorsque le booker atteindra 3 bookings à assigner.

Finalement, ajouter des bookings pour déclencher l'assignation. Pour créer un booking vous devez lui fournir le nombre de siège minimum nécessaire pour le client:

User bookingOwner = userRepository.retrieve(email);
int aNumberOfSeatsNeeded = 10;

Booking booking1 = new Booking(bookingOwner, aNumberOfSeatsNeeded);
Booking booking2 = new Booking(bookingOwner, aNumberOfSeatsNeeded);
Booking booking3 = new Booking(bookingOwner, aNumberOfSeatsNeeded);

booker.addBooking(booking1);
booker.addBooking(booking2);
booker.addBooking(booking3);

Comment exécuter nos tests

Dans Eclipse, il suffit d'appuyer sur le Projet principal (GRAISSE), et de le lancer en tant que "Maven Install". Ceci construira tout le projet, lancera les tests unitaires, ainsi que les tests d'acceptation

Problèmes avec le test de performance

Il est roulable à partir de l'UI JMeter, mais nous n'avons pas trouvé de façon d'exécuter notre serveur lorsque nous voulions exécuter les tests d'integrations dans Maven.

Donc il suffit d'exécuter en tant qu'application Java "RestMain" dans le package "ca.ulaval.glo4002.GRAISSE.rest.service", lancer les tests à partir de l'UI JMeter, et les tests seront exécutés correctement.

Notes aux correcteurs

Décisions à communiquer

JavaMailMailSender

Tel que suggéré par Jean-Nicolas, cette classe n'est pas testée unitairement car elle est extrèmement dépendante de JavaMail. Considérant que la librairie, en théorie, fonctionne très bien, c'est la seule couche du système qui a 0% de couverture de code.

Demandes spéciales

Tenir compte que nous avons eu quelques difficultés dans l'équipe, et que nous avons réussi à implémenter la plupart des fonctionnalités malgré cela.

Ce qui a été fait depuis lundi le 13 avril :

  • Le service REST et les ID reliés
  • Pratiquement tous les tests d'acceptation
  • Test de performance (qui fonctionne presque)
  • Notifier lors d'une annulation

Tests non réalisés

Test de la base de données

Ce test n'est pas implémenté puisque nous n'avons tout simplement pas de base de données

Suggestions

Fournir TOUTES les diapos avant le cours.

glo4002-eq5's People

Contributors

francoislg avatar holygrinder avatar jpgiroux avatar lilperso avatar mcnoreau avatar milkncookie avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

glo4002-eq5's Issues

enlever les négatifs dans les nom de méthodes

enlever les Not et autre négation dans les nom de méthodes.

Certaines méthodes ne pourrais avoir plus aucun but (apporte rien de nouveau à la clarification ou à l'élégance du code. (oui oui, j'ai bien dit élégance) (oui oui, c'est bien une parenthèse dans une parenthèse so what..)) elle devrons donc être effacées.

BDD, test d'acceptation

Voir Doc de jBehave et Lab sur le sujet https://github.com/jni-/med.

Créer un sous module uat (user acceptance test).
Créer les context
Créer les stories
Créer les Steps (Given When Then)
Créer les fixtures

Cette issue est plutôt général et devrait couvrir TOUTES les users storys "terminé".
Vu la grande charge de travail que cette issue engendre et ma grande lâcheté à ne pas vouloir créer 5 issue pour chaque user story, il en vient donc la responsabilité de TOUS de mener à terme cette issue.

assign -> isAbleToAssign

diviser les méthodes "assign" qui retourne un booléen en "assign" et "isAbleToAssign".

la partie "isAbleToAssign" vérifie la possibilité d'assignation.

la partie "assign" fait le traitement et lance une exception en cas d'erreur.

Ajouter les informations nécessaires au Readme

Noms et matricules de tous les membres de l'équipe
Numéro d'équipe
Liste des scénarios avec leur statut (terminé (et donc correctement testé), en cours …)
Sommaire très court expliquant comment utiliser votre application
Toutes notes que vous désirez transmettre aux correcteurs

refactor des exceptions dans des packages séparés

Suite au merge de issue18 dans dev (encore des petits conflits wierd à cause du refactor de nom de package) Le refactor des exceptions dans des packages séparés à été écraser.

J'ai donc créer une nouvelle branch que j'ai reseter au commit en question.

Mais avant de relancer le travail, j'aimerais qu'on discute de la chose en question. On en as pas parler et je me pause la question si c'est réellement un bon move... ou s'il n'y aurait pas une meilleur façon (subpackage exception au lieu de 3 nouveau package distinct)

des idées?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.