diff --git a/.coveragerc b/.coveragerc index e0242aa..d842a7b 100644 --- a/.coveragerc +++ b/.coveragerc @@ -9,7 +9,12 @@ source = theme users omit = + logs/tests/*.py + logs/migrations/*.py media/tests/*.py media/migrations/*.py + sporz/tests/*.py + sporz/migrations/*.py + theme/tests/*.py users/tests/*.py users/migrations/*.py diff --git a/logs/templates/logs/delete.html b/logs/templates/logs/delete.html deleted file mode 100644 index fbe648c..0000000 --- a/logs/templates/logs/delete.html +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "logs/sidebar.html" %} -{% comment %} -SPDX-License-Identifier: GPL-3.0-or-later -{% endcomment %} - -{% block title %}Supression d'action{% endblock %} - -{% block content %} -
- {% csrf_token %} -

Attention, voulez-vous vraiment annuler cette action {{ objet_name }} ( {{ objet }} ) ?

- -
-{% endblock %} diff --git a/logs/tests/__init__.py b/logs/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/logs/tests/test_templates.py b/logs/tests/test_templates.py new file mode 100644 index 0000000..9c6b0e9 --- /dev/null +++ b/logs/tests/test_templates.py @@ -0,0 +1,29 @@ +# -*- mode: python; coding: utf-8 -*- +# SPDX-License-Identifier: GPL-3.0-or-later + +from django.test import TestCase +from django.urls import reverse + +from users.models import User + +""" +Test that every page render +""" + + +class TemplateTests(TestCase): + def setUp(self): + self.user = User.objects.create_superuser( + username="admin", + password="adminadmin", + email="admin@example.com", + ) + self.client.force_login(self.user) + + def test_logs_index(self): + response = self.client.get(reverse("logs:index")) + self.assertEqual(response.status_code, 200) + + def test_logs_stats_actions(self): + response = self.client.get(reverse("logs:stats-actions")) + self.assertEqual(response.status_code, 200) diff --git a/media/fields.py b/media/fields.py index 58ad2f6..360de58 100644 --- a/media/fields.py +++ b/media/fields.py @@ -23,7 +23,7 @@ class ISBNField(CharField): kwargs['verbose_name'] = kwargs[ 'verbose_name'] if 'verbose_name' in kwargs else u'ISBN' kwargs['validators'] = [isbn_validator] - super(ISBNField, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) def formfield(self, **kwargs): defaults = { @@ -31,10 +31,10 @@ class ISBNField(CharField): 'validators': [isbn_validator], } defaults.update(kwargs) - return super(ISBNField, self).formfield(**defaults) + return super().formfield(**defaults) def deconstruct(self): - name, path, args, kwargs = super(ISBNField, self).deconstruct() + name, path, args, kwargs = super().deconstruct() # Only include clean_isbn in kwarg if it's not the default value if not self.clean_isbn: kwargs['clean_isbn'] = self.clean_isbn @@ -49,7 +49,7 @@ class ISBNField(CharField): if self.clean_isbn and value not in EMPTY_VALUES: cleaned_isbn = value.replace(' ', '').replace('-', '').upper() setattr(model_instance, self.attname, cleaned_isbn) - return super(ISBNField, self).pre_save(model_instance, add) + return super().pre_save(model_instance, add) def __unicode__(self): return self.value diff --git a/media/forms.py b/media/forms.py index 6630da6..8d928dc 100644 --- a/media/forms.py +++ b/media/forms.py @@ -7,14 +7,6 @@ import urllib.request from django.forms import ModelForm -from .models import Emprunt - - -class EmpruntForm(ModelForm): - class Meta: - model = Emprunt - fields = ['media'] - class MediaAdminForm(ModelForm): def __init__(self, *args, **kwargs): diff --git a/media/tests/__init__.py b/media/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/media/tests/test_templates.py b/media/tests/test_templates.py new file mode 100644 index 0000000..bdc694a --- /dev/null +++ b/media/tests/test_templates.py @@ -0,0 +1,65 @@ +# -*- mode: python; coding: utf-8 -*- +# SPDX-License-Identifier: GPL-3.0-or-later + +from django.test import TestCase +from django.urls import reverse + +from media.models import Auteur, Media +from users.models import User +from django.forms.models import model_to_dict +""" +Test that every page render +""" + + +class TemplateTests(TestCase): + def setUp(self): + self.user = User.objects.create_superuser( + username="admin", + password="adminadmin", + email="admin@example.com", + ) + self.client.force_login(self.user) + + # Create an author + self.dummy_author = Auteur.objects.create(name="Test author") + + # Create media + self.dummy_media1 = Media.objects.create( + title="Test media", + side_identifier="T M", + ) + self.dummy_media1.authors.add(self.dummy_author) + self.dummy_media2 = Media.objects.create( + title="Test media bis", + side_identifier="T M 2", + external_url="https://example.com/", + ) + self.dummy_media2.authors.add(self.dummy_author) + + def test_media_media_changelist(self): + response = self.client.get(reverse('admin:media_media_changelist')) + self.assertEqual(response.status_code, 200) + + def test_media_media_add(self): + response = self.client.get(reverse('admin:media_media_add')) + self.assertEqual(response.status_code, 200) + + def test_media_isbn_download(self): + data = { + '_continue': True, + 'isbn': "0316358525", + } + response = self.client.post(reverse( + 'admin:media_media_change', + args=[self.dummy_media1.id], + ), data=data) + self.assertEqual(response.status_code, 200) + + def test_media_emprunt_changelist(self): + response = self.client.get(reverse('admin:media_emprunt_changelist')) + self.assertEqual(response.status_code, 200) + + def test_media_emprunt_add(self): + response = self.client.get(reverse('admin:media_emprunt_add')) + self.assertEqual(response.status_code, 200) diff --git a/media/validators.py b/media/validators.py index c678608..d528ed1 100644 --- a/media/validators.py +++ b/media/validators.py @@ -8,7 +8,6 @@ Based on https://github.com/secnot/django-isbn-field from django.core.exceptions import ValidationError from django.utils.translation import ugettext_lazy as _ -from six import string_types from stdnum import isbn @@ -16,16 +15,16 @@ def isbn_validator(raw_isbn): """Check string is a valid ISBN number""" isbn_to_check = raw_isbn.replace('-', '').replace(' ', '') - if not isinstance(isbn_to_check, string_types): - raise ValidationError(_(u'Invalid ISBN: Not a string')) + if not isinstance(isbn_to_check, str): + raise ValidationError(_('Invalid ISBN: Not a string')) if len(isbn_to_check) != 10 and len(isbn_to_check) != 13: - raise ValidationError(_(u'Invalid ISBN: Wrong length')) + raise ValidationError(_('Invalid ISBN: Wrong length')) if not isbn.is_valid(isbn_to_check): - raise ValidationError(_(u'Invalid ISBN: Failed checksum')) + raise ValidationError(_('Invalid ISBN: Failed checksum')) if isbn_to_check != isbn_to_check.upper(): - raise ValidationError(_(u'Invalid ISBN: Only upper case allowed')) + raise ValidationError(_('Invalid ISBN: Only upper case allowed')) return True diff --git a/sporz/models.py b/sporz/models.py index 096c14e..926b88b 100644 --- a/sporz/models.py +++ b/sporz/models.py @@ -108,7 +108,7 @@ class Player(models.Model): ) def __str__(self): - return str(self.user) + return str(self.name) class Meta: verbose_name = _("player") diff --git a/users/tests/__init__.py b/users/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/users/tests/test_templates.py b/users/tests/test_templates.py new file mode 100644 index 0000000..1a8b9c9 --- /dev/null +++ b/users/tests/test_templates.py @@ -0,0 +1,50 @@ +# -*- mode: python; coding: utf-8 -*- +# SPDX-License-Identifier: GPL-3.0-or-later + +from django.core import mail +from django.test import TestCase +from django.urls import reverse + +from users.models import User + +""" +Test that every page render +""" + + +class TemplateTests(TestCase): + def setUp(self): + self.user = User.objects.create_superuser( + username="admin", + password="adminadmin", + email="admin@example.com", + ) + self.client.force_login(self.user) + + def test_users_edit_info(self): + response = self.client.get(reverse('users:edit-info')) + self.assertEqual(response.status_code, 200) + + def test_users_user_changelist(self): + response = self.client.get(reverse('admin:users_user_changelist')) + self.assertEqual(response.status_code, 200) + + def test_users_user_creation_form(self): + response = self.client.get(reverse('admin:users_user_add')) + self.assertEqual(response.status_code, 200) + + def test_users_user_add_init_mail(self): + """ + Test that an initialization mail is send when a new user is added + """ + data = { + 'username': "test_user", + 'email': "test@example.com", + 'first_name': "Test", + 'last_name': "User", + } + response = self.client.post(reverse( + 'admin:users_user_add', + ), data=data) + self.assertEqual(len(mail.outbox), 1) + self.assertEqual(response.status_code, 302)