Improvement… may be.

This commit is contained in:
Trullemans Gregory 2020-10-19 14:14:14 +02:00
parent 11e2e56a5f
commit 8f25e3a03c
13 changed files with 133 additions and 80 deletions

View File

@ -5,4 +5,5 @@ coverage==5.0.3
django-spaghetti-and-meatballs==0.2.2 django-spaghetti-and-meatballs==0.2.2
docutils==0.16 docutils==0.16
pytest==5.3.5 pytest==5.3.5
pytest-django
black==19.10b0 black==19.10b0

View File

@ -3,10 +3,9 @@
from django.db import models from django.db import models
from django.contrib.auth.models import User from django.contrib.auth.models import User
# Create your models here.
class Message(models.Model): class Message(models.Model):
""" """
Communication entre user Communication entre utilisateur de l'application
""" """
writer = models.ForeignKey( writer = models.ForeignKey(
@ -22,3 +21,6 @@ class Message(models.Model):
is_read = models.BooleanField(default=False) is_read = models.BooleanField(default=False)
message_title = models.CharField(max_length=255, verbose_name="Title") message_title = models.CharField(max_length=255, verbose_name="Title")
message_body = models.TextField(null=True, blank=True, verbose_name="Message",) message_body = models.TextField(null=True, blank=True, verbose_name="Message",)
def __str__(self):
return "%s - %s : %s" % (self.writer, self.date_of_writing, self.message_title)

View File

@ -1,3 +0,0 @@
from django.test import TestCase
# Create your tests here.

View File

@ -0,0 +1,12 @@
# coding=UTF-8
from datetime import datetime
from .models import Message
from django.contrib.auth.models import User
import pytest
def test_message_tostring():
timing = datetime.now()
u = User(username='fred', password='fredpassword')
m = Message(writer=u, date_of_writing=timing, message_title="test")
assert str(m) == "fred - " + str(timing) + " : test"

View File

@ -1,38 +0,0 @@
from django.test import TestCase
from .models import Point, Competition, Division, Level
class TestModelCompetition(TestCase):
"""
Tests relatifs à la classe `Compétition`.
"""
def test_str_(self):
""" Vérifie la représentation textuelle de la classe. """
competition = Competition(name="Belgian Open Trampoline", acronym="BOT")
self.assertEqual("Belgian Open Trampoline (BOT)", str(competition))
class TestModelDivision(TestCase):
"""
Tests relatifs à la classe `Division`.
"""
def test_str_(self):
""" Vérifie la représentation textuelle de la classe. """
competition = Competition(name="Belgian Open Trampoline", acronym="BOT")
division = Division(name="Division 1", acronym="D1", competition=competition)
self.assertEqual("Division 1 (D1)", str(division))
class TestModelLevel(TestCase):
"""
Tests relatifs à la classe `Level`.
"""
def test_str_(self):
""" Vérifie la représentation textuelle de la classe. """
competition = Competition(name="Belgian Open Trampoline", acronym="BOT")
division = Division(name="Division 1", acronym="D1", competition=competition)
level = Level(name="Argent", acronym="Ag", division=division)
self.assertEqual("Argent (Ag)", str(level))

View File

@ -0,0 +1,45 @@
# coding=UTF-8
import pytest
from .models import (
Point,
Competition,
Division,
Level
)
# class TestModelCompetition(TestCase):
# """
# Tests relatifs à la classe `Compétition`.
# """
def test_competition_str_():
""" Vérifie la représentation textuelle de la classe. """
competition = Competition(name="Belgian Open Trampoline", acronym="BOT")
assert "Belgian Open Trampoline (BOT)" == str(competition)
# class TestModelDivision(TestCase):
# """
# Tests relatifs à la classe `Division`.
# """
def test_division_str_():
""" Vérifie la représentation textuelle de la classe. """
competition = Competition(name="Belgian Open Trampoline", acronym="BOT")
division = Division(name="Division 1", acronym="D1", competition=competition)
assert "Division 1 (D1)" == str(division)
# class TestModelLevel(TestCase):
# """
# Tests relatifs à la classe `Level`.
# """
def test_level_str_():
""" Vérifie la représentation textuelle de la classe. """
competition = Competition(name="Belgian Open Trampoline", acronym="BOT")
division = Division(name="Division 1", acronym="D1", competition=competition)
level = Level(name="Argent", acronym="Ag", division=division)
assert "Argent (Ag)" == str(level)

View File

@ -1,3 +0,0 @@
# from django.test import TestCase
# Create your tests here.

View File

@ -0,0 +1,22 @@
# coding=UTF-8
from .models import (
Club,
Place,
Country
)
import pytest
# class GymnastTestCase():
def test_country_tostring():
c = Country(namefr="Belgique", iso2="56")
assert str(c) == "Belgique (56)"
def test_place_tostring():
p = Place(name="FATC", city="Lillois")
assert str(p) == "FATC (Lillois)"
def test_club_tostring():
p = Place(name="FATC", city="Lillois")
club = Club(place=p, name="FATC2")
assert str(club) == "FATC2 (à Lillois)"

View File

@ -294,13 +294,15 @@ def routine_detail(request, routineid):
@login_required @login_required
@require_http_methods(["GET", "POST"]) @require_http_methods(["GET", "POST"])
def routine_create_or_update(request, routineid=None): def routine_create_or_update(request, routine_id=None):
""" """ Création d'une série.
Création d'une série.
Args:
routine_id (int): identifiant d'un object de classe <routine>.
""" """
if routineid: if routine_id:
routine = get_object_or_404(Routine, pk=routineid) routine = get_object_or_404(Routine, pk=routine_id)
else: else:
routine = None routine = None
@ -318,7 +320,7 @@ def routine_create_or_update(request, routineid=None):
else: else:
form = RoutineForm(instance=routine) form = RoutineForm(instance=routine)
context = {"form": form, "routineid": routineid} context = {"form": form, "routineid": routine_id}
return render(request, "routine_create.html", context) return render(request, "routine_create.html", context)
@ -402,7 +404,7 @@ def __construct_routine(
min_diff_skill = total_difficulty_score min_diff_skill = total_difficulty_score
max_diff_skill = total_difficulty_score + 3 max_diff_skill = total_difficulty_score + 3
else: else:
if math.ceil(total_difficulty_score / max_routine_length) < max_skill_difficulty: if math.ceil(total_difficulty_score / max_routine_length) <= max_skill_difficulty:
min_diff_skill = math.ceil(max((total_difficulty_score / max_routine_length) - 5, 0)) min_diff_skill = math.ceil(max((total_difficulty_score / max_routine_length) - 5, 0))
else: else:
return return
@ -440,7 +442,7 @@ def __construct_routine(
def suggest_routine( def suggest_routine(
request, request,
max_routine_length = 3, max_routine_length = 2,
total_difficulty_score=None, total_difficulty_score=None,
competition=True, competition=True,
logic=True, logic=True,
@ -466,7 +468,7 @@ def suggest_routine(
if not gymnast: if not gymnast:
gymnast = Gymnast.objects.get(pk=14) gymnast = Gymnast.objects.get(pk=14)
total_difficulty_score = 30 total_difficulty_score = 26
if gymnast: if gymnast:
max_skill_difficulty = Educative.objects.values('difficulty').filter(cando__gymnast=gymnast).order_by( max_skill_difficulty = Educative.objects.values('difficulty').filter(cando__gymnast=gymnast).order_by(
@ -475,12 +477,6 @@ def suggest_routine(
else: else:
max_skill_difficulty = Skill.objects.values('difficulty').order_by("-difficulty")[:1][0]["difficulty"] * 10 max_skill_difficulty = Skill.objects.values('difficulty').order_by("-difficulty")[:1][0]["difficulty"] * 10
# print(max_skill_difficulty)
# if not total_difficulty_score:
# total_difficulty_score = 30
# max_routine_length = 3
# difficulty_scores = range(5, 45, 5) # difficulty_scores = range(5, 45, 5)
# for total_difficulty_score in difficulty_scores: # for total_difficulty_score in difficulty_scores:
# print("===============================================================================================") # print("===============================================================================================")

View File

@ -1,7 +1,7 @@
# coding=UTF-8 # coding=UTF-8
from django import forms from django import forms
from datetime import date
from .models import ( from .models import (
Accident, Accident,
Gymnast, Gymnast,
@ -17,7 +17,7 @@ class AccidentForm(forms.ModelForm):
"date": forms.DateInput( "date": forms.DateInput(
attrs={ attrs={
"class": "form-control datepicker", "class": "form-control datepicker",
"value": date.today().strftime("%Y-%m-%d"), # "value": date.today().strftime("%Y-%m-%d"),
} }
), ),
"gymnast": forms.HiddenInput(), "gymnast": forms.HiddenInput(),

View File

@ -128,7 +128,7 @@ class Gymnast(Markdownizable):
) )
@property @property
def nextAge(self): def next_age(self):
""" Renvoie l'âge prochain du gymnaste. """ """ Renvoie l'âge prochain du gymnaste. """
return (self.age) + 1 return (self.age) + 1

View File

@ -1,24 +1,39 @@
from django.test import TestCase # coding=UTF-8
from datetime import date from datetime import date
from .models import Gymnast, Accident from .models import Gymnast, Accident
from datetime import datetime
import pytest
# class GymnastTestCase():
def test_gymnast_tostring():
g = Gymnast(lastname="Pauchou", firstname="Fred")
assert str(g) == "Pauchou, Fred"
class GymnastTestCase(TestCase): def test_gymnaste_get_age():
def test_str_(self): g = Gymnast(lastname="Pauchou", firstname="Fred", birthdate=datetime.strptime('03/07/1985', '%d/%m/%Y'));
g = Gymnast(lastname="Pauchou", firstname="Fred") assert g.age == 35
self.assertEqual("Pauchou, Fred", str(g))
def test_age(self): def test_gymnaste_get_next_age():
pass g = Gymnast(lastname="Pauchou", firstname="Fred", birthdate=datetime.strptime('03/07/1985', '%d/%m/%Y'));
assert g.next_age == 36
def test_nextAge(self): def test_gymnaste_next_birthday():
pass g = Gymnast(lastname="Pauchou", firstname="Fred", birthdate=datetime.strptime('03/07/1985', '%d/%m/%Y'));
assert g.next_birthday == datetime.strptime('03/07/2021', '%d/%m/%Y')
def test_gymnast_known_skills():
# @Fred : Comment tester cela ?
pass
class AccidentTestCase(TestCase): def test_gymnast_actual_year_of_pratice():
def test_str_(self): # @Fred : Comment tester cela ?
timing = date.today() pass
g = Gymnast(lastname="Pauchou", firstname="Fred")
accident = Accident(gymnast=g, date=timing) # class AccidentTestCase():
self.assertEqual("Pauchou, Fred (%s)" % (timing), str(accident))
def test_accident_tostring():
timing = date.today()
g = Gymnast(lastname="Pauchou", firstname="Fred")
a = Accident(gymnast=g, date=timing)
assert "Pauchou, Fred (%s)" % (timing) == str(a)

4
src/pytest.ini Normal file
View File

@ -0,0 +1,4 @@
[pytest]
DJANGO_SETTINGS_MODULE = khana.settings
python_files = tests.py test_*.py *_tests.py