Commit 74a34fc7 authored by Jérémie Passerat's avatar Jérémie Passerat

Tests note ok

parent f2868d89
......@@ -604,6 +604,7 @@ class noter_contenu(Resource):
@contenus.doc(params={'id_contenu': "l'id du contenu déja noté"})
@contenus.doc(params={'version': "la version du contenu concernée par la note "})
@contenus.doc(params={'auteur': "l'auteur de la note"})
@contenus.doc(description="recuperer la note donnée par un auteur à un contenu")
class RecupererNoteDonneAUnContenu(Resource):
@contenus.response(200, "note du contenu")
@jwt_required()
......@@ -612,6 +613,17 @@ class RecupererNoteDonneAUnContenu(Resource):
return str(ContenuDao().recupererNoteContenu(id_contenu["$oid"], request.args.get("version"),
request.args.get("auteur"))), 200
@contenus.route("/recupererNoteGlobale")
@contenus.doc(params={'id_contenu': "l'id du contenu "})
@contenus.doc(params={'version': "la version du contenu concernée par la note "})
@contenus.doc(description="recuperer la note globale d'un contenu (dans une version donnée")
class RecupererNoteDonneAUnContenu(Resource):
@contenus.response(200, "note du contenu")
@jwt_required()
def get(self):
id_contenu = json.loads(request.args.get("id_contenu"))
return str(ContenuDao().recupererNoteGlobaleContenu(id_contenu["$oid"], request.args.get("version"))), 200
## récupérer le texte de la version en cours du contenu
@contenus.route("/getTexteContenu/<id_json>")
......
......@@ -218,6 +218,8 @@ class ContenuDao:
def supprimer_contenu(self, id_contenu):
import shutil
if self.existe_en_tiers(id_contenu) != 0:
self.dissocier_contenu(id_contenu)
......@@ -234,11 +236,13 @@ class ContenuDao:
# @param la note associee au contenu
def supprimer_tiers(self, id_tiers, auteur, version, note):
# on distingue le cas ou une note a été donnée ou non
if note == "-":
self.base_donnees.utilisateur.update({"nom": auteur},
{"$pull": {
"tiers": [{"contenu": ObjectId(id_tiers)}, {"version": version}]}})
else:
self.base_donnees.utilisateur.update({"nom": auteur},
{"$pull": {
......@@ -630,12 +634,32 @@ class ContenuDao:
# @param version la version du contenu notée
# @param auteur l'auteur qui met la note
def recupererNoteContenu(self, id_contenu, version, auteur):
if type(id_contenu) == str:
id_contenu = ObjectId(id_contenu)
if type(version) == str:
version = int(version)
contenus_tiers = self.base_donnees.utilisateur.find_one({"nom": auteur})["tiers"]
for contenu in contenus_tiers:
if len(contenu) == 3 and contenu[0]["contenu"] == id_contenu and contenu[1]["version"] == version:
return json.dumps(contenu[2]["note"])
return '-'
## Fonction permettant de récupérer une note globale pour une version d'un contenu
# @param id_contenu l'id du contenu concerné
# @param version la version du contenu notée
def recupererNoteGlobaleContenu(self, id_contenu, version):
if int(version) == self.get_version_courante(id_contenu):
return self.base_donnees.contenu.find_one({"_id": ObjectId(id_contenu)})["versionEnCours"]["note"] \
/ self.base_donnees.contenu.find_one({"_id": ObjectId(id_contenu)})["versionEnCours"]["nbreNotes"]
else:
historique = self.base_donnees.contenu.find_one({"_id": ObjectId(id_contenu)})["historique"]
return "popapopapa"
## Fonction permettant de changer la moyenne d'une version d'un contenu à l'insertion d'une nouvelle note
# @param id_contenu l'id du contenu concerné
# @param version la version du contenu notée
......
# from testUtils import *
#
from testUtils import *
#
# def test_contenu(client):
# login = creerUtilisateurRandom(client)
# id = creerContenuRandom(client, login)
#
#
# # get contenu par id
# rv = client.get("/contenus/getContenu/" + json.dumps(id), headers=get_headers(client))
# assert rv.status_code == 200
......@@ -61,7 +61,6 @@
# # on lui assigne un contenu
# id = creerContenuRandom(client, login)
#
#
# # on créée un second utilisateur quelconque et on lui donne le contenu ci dessus dans ses tiers
# loginDeux = creerUtilisateurRandom(client)
# data = {"id_tiers": json.dumps(id), "auteur": loginDeux, "version": 1}
......@@ -118,3 +117,73 @@
# supprimerUtilisateur(client, login)
# supprimerUtilisateur(client, loginDeux)
# supprimerUtilisateur(client, loginTrois)
def test_notation_contenu(client):
# on créée un utilisateur quelconque
login = creerUtilisateurRandom(client)
# on lui assigne un contenu
id = creerContenuRandom(client, login)
# on créée un second utilisateur quelconque et on lui donne le contenu ci dessus dans ses tiers
loginDeux = creerUtilisateurRandom(client)
data = {"id_tiers": json.dumps(id), "auteur": loginDeux, "version": 1}
rv = client.patch("/contenus/ajouterTiers", json=data, headers=get_headers(client))
assert rv.status_code == 201
# login2 note le contenu
data = {"auteur": loginDeux, "id_contenu": json.dumps(id), "version": 1, "note": 4}
rv = client.patch("/contenus/noterContenu", json=data, headers=get_headers(client))
assert rv.status_code == 200
# pour essai, on récupère la note juste mise
rv = client.get("/contenus/recupererNote?id_contenu=" + json.dumps(id) + "&version=1&auteur=" + loginDeux,
headers=get_headers(client))
assert rv.status_code == 200
# la note ressort en caracteres et non en entier
assert json.loads(rv.data) == '4'
# on teste la note globale du contenu
rv = client.get("/contenus/recupererNoteGlobale?id_contenu=" + json.dumps(id) + "&version=1",
headers=get_headers(client))
assert rv.status_code == 200
print("popapopapa : ", json.loads(rv.data))
assert json.loads(rv.data) == '4.0'
# un troisieme utilisateur note
# login2 note le contenu
loginTrois = creerUtilisateurRandom(client)
data = {"auteur": loginTrois, "id_contenu": json.dumps(id), "version": 1, "note": 3}
rv = client.patch("/contenus/noterContenu", json=data, headers=get_headers(client))
assert rv.status_code == 200
# pour essai, on récupère la note juste mise
rv = client.get("/contenus/recupererNote?id_contenu=" + json.dumps(id) + "&version=1&auteur=" + loginTrois,
headers=get_headers(client))
assert rv.status_code == 200
# la note ressort en caracteres et non en entier
assert json.loads(rv.data) == '3'
# on teste la note globale du contenu
rv = client.get("/contenus/recupererNoteGlobale?id_contenu=" + json.dumps(id) + "&version=1",
headers=get_headers(client))
assert rv.status_code == 200
print("popapopapa : ", json.loads(rv.data))
assert json.loads(rv.data) == '3.5'
# on supprime le tiers & le contenu
rv = client.delete("/contenus/deleteTiers?id_tiers=" + json.dumps(id) + "&auteur=" + loginDeux + "&note=4",
headers=get_headers(client))
assert rv.status_code == 200
# on supprime le tiers & le contenu
rv = client.delete("/contenus/deleteTiers?id_tiers=" + json.dumps(id) + "&auteur=" + loginTrois + "&note=3",
headers=get_headers(client))
assert rv.status_code == 200
rv = client.delete("/contenus/deletePerso/" + json.dumps(id), headers=get_headers(client))
assert rv.status_code == 200
# et les trois utilisateurs
supprimerUtilisateur(client, login)
supprimerUtilisateur(client, loginDeux)
supprimerUtilisateur(client, loginTrois)
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment