From dc37c110df011dc57e364de4fdaa7d61cca778cb Mon Sep 17 00:00:00 2001 From: heinzel Date: Thu, 21 Mar 2019 20:28:46 +0100 Subject: [PATCH] UPD: improved tests. --- dav_auth/tests/test_emails.py | 15 +++++++ dav_base/tests/generic.py | 4 +- dav_events/tests/test_emails.py | 15 +++++++ dav_events/tests/test_screenshots.py | 63 ++++++++++++++-------------- 4 files changed, 62 insertions(+), 35 deletions(-) diff --git a/dav_auth/tests/test_emails.py b/dav_auth/tests/test_emails.py index d343f2a..cd47159 100644 --- a/dav_auth/tests/test_emails.py +++ b/dav_auth/tests/test_emails.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +from django.apps import apps from django.contrib.auth import get_user_model from django.core import mail as django_mail from django.test import TestCase @@ -16,6 +17,12 @@ class EmailsTestCase(TestCase): model = get_user_model() self.user = model.objects.create_user(username=TEST_USERNAME, password=TEST_PASSWORD, email=TEST_EMAIL) + self.email_sender = 'Automatic Software Test ' + self.email_subject_prefix = '[Test]' + app_config = apps.get_app_config('dav_base') + app_config.settings.email_sender = self.email_sender + app_config.settings.email_subject_prefix = self.email_subject_prefix + def test_send(self): password = TEST_PASSWORD[::-1] @@ -24,8 +31,16 @@ class EmailsTestCase(TestCase): self.assertEqual(len(django_mail.outbox), 1) mail = django_mail.outbox[0] + recipient = u'"%s" <%s>' % (self.user.get_full_name(), self.user.email) recipients = mail.recipients() self.assertIn(recipient, recipients) self.assertEqual(len(recipients), 1) + + self.assertEqual(mail.from_email, self.email_sender) + + subject = u'Zugangsdaten' + subject = u'{} {}'.format(self.email_subject_prefix, subject) + self.assertEqual(mail.subject, subject) + self.assertIn(password, mail.body) diff --git a/dav_base/tests/generic.py b/dav_base/tests/generic.py index b786ba4..3f27902 100644 --- a/dav_base/tests/generic.py +++ b/dav_base/tests/generic.py @@ -1,14 +1,12 @@ import datetime import os import sys -import time import urllib from unittest import skip, SkipTest from django.contrib.staticfiles.testing import StaticLiveServerTestCase from django.test import SimpleTestCase, TestCase, tag from django.urls import reverse from selenium import webdriver -from selenium.common.exceptions import TimeoutException from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC @@ -237,7 +235,7 @@ class ScreenshotTestCase(SeleniumTestCase): title = location base_name = u'{timestamp}-{prefix}{sequence}{title}.png'.format( - timestamp=datetime.datetime.now().strftime('%Y%m%d-%H%M%S'), + timestamp=datetime.datetime.now().strftime('%Y%m%d-%H%M%S.%f'), prefix=self.screenshot_prefix, sequence=sequence, title=title, diff --git a/dav_events/tests/test_emails.py b/dav_events/tests/test_emails.py index d4496cd..c8a306d 100644 --- a/dav_events/tests/test_emails.py +++ b/dav_events/tests/test_emails.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +from django.apps import apps from django.contrib.auth import get_user_model from django.core import mail as django_mail from django.test import TestCase @@ -10,6 +11,12 @@ from .. import emails class EmailsTestCase(TestCase): def setUp(self): + self.email_sender = 'Automatic Software Test ' + self.email_subject_prefix = '[Test]' + app_config = apps.get_app_config('dav_base') + app_config.settings.email_sender = self.email_sender + app_config.settings.email_subject_prefix = self.email_subject_prefix + model = get_user_model() self.recipient = model.objects.create_user(username='recipient@example.com', email='recipient@example.com', @@ -50,10 +57,18 @@ Line 3 END""" self.assertEqual(len(django_mail.outbox), 1) mail = django_mail.outbox[0] + recipient = u'"%s" <%s>' % (self.recipient.get_full_name(), self.recipient.email) recipients = mail.recipients() self.assertIn(recipient, recipients) self.assertEqual(len(recipients), 1) + + self.assertEqual(mail.from_email, self.email_sender) + + subject = u'Veranstaltung geändert' + subject = u'{} {}'.format(self.email_subject_prefix, subject) + self.assertEqual(mail.subject, subject) + self.assertIn(self.recipient.first_name, mail.body) self.assertIn(self.editor.get_full_name(), mail.body) self.assertIn(unicode(self.event), mail.body) diff --git a/dav_events/tests/test_screenshots.py b/dav_events/tests/test_screenshots.py index 2a2cd87..99452be 100644 --- a/dav_events/tests/test_screenshots.py +++ b/dav_events/tests/test_screenshots.py @@ -24,15 +24,15 @@ TEST_EVENT_DATA_S = { 'last_day': '26.12.2019', 'country': 'CH', 'location': u'St. Antönien', - 'transport_other': 'Helikopter', + 'transport_other': 'Helikopter & SUV', 'meeting_point': 'dav', 'meeting_time': '10:29', 'return_arrival_time': '20:14', 'arrival_previous_day': True, - 'basecamp': u'Grand Hôtel', + 'basecamp': u'Grand Hôtel Belvedere', 'accommodation': 'NONE', 'meals_other': u'Fünf-Sterne-Küche per Zimmerservice und Minibar', - 'requirements_add': u'Fußnoten: https://de.wikipedia.org/wiki/Heliskiing', + 'requirements_add': u': https://de.wikipedia.org/wiki/Heliskiing', 'pre_meeting_1': '10.12.2019 18:35', 'trainer_firstname': u'Trainer1 Ö.', 'trainer_familyname': u'Ä. Tourenleiter', @@ -43,19 +43,19 @@ TEST_EVENT_DATA_S = { 'charge': '1800', 'additional_costs': None, 'course_topic_1': u'Grundkentnisse in der neusten Willy-Bögner-Kollektion', - 'course_topic_2': u'Ein- und Aussteigen am Heliköpter', + 'course_topic_2': u'Ein- & Aussteigen am Heliköpter', 'course_topic_3': u'Cocktailkunde für dekadentes Après-Ski', 'course_topic_4': u'Und vieles möhr', 'course_goal_1': [ - u'Güt aussehen', + u'"Gut" aussehen', u'Lässig sein', u'Geld scheißen', ], - 'title': u'Heli-Sking-Kurs für Snobs', + 'title': u'Heli-Skiing-Kurs für Snobs', 'description': [ u'Hier steht jetzt so allerhand Scheiß.', u'z.B. eine ÜRL: https://de.wikipedia.org (leider öhne Ümläüte)', - u'oder eine E-Mail-Ädresse: heinzel@alpenverein-karlsruhe.de' + u'& eine E-Mail-Ädresse: ' ], 'internal_note': [ u'Automatisierter Software Test', @@ -72,7 +72,7 @@ TEST_EVENT_DATA_W = { 'transport': 'public', 'meeting_point_other': u'Bahnhof der Schloßgartenbahn', 'departure_time': '07:00', - 'departure_ride': u'Schloßgartenbahn in Richtung Schloßgartenbahnbahnhof', + 'departure_ride': u'Schloßgartenbahn in Richtung "Schloßgartenbahnbahnhof"', 'return_departure_time': '19', 'return_arrival_time': '19:10', 'trainer_phone': u'+555 666 AB (Büro)', @@ -80,7 +80,7 @@ TEST_EVENT_DATA_W = { 'description': [ u'Hier steht jetzt so allerhand Scheiß.', u'z.B. eine ÜRL: https://de.wikipedia.org (leider öhne Ümläüte)', - u'oder eine E-Mail-Ädresse: heinzel@alpenverein-karlsruhe.de' + u'& eine E-Mail-Ädresse: ' ], 'internal_note': [ u'Automatisierter Software Test', @@ -96,34 +96,23 @@ class TestCase(ScreenshotTestCase): screenshot_prefix = 'dav_events-' def create_user_for_role(self, role_name, first_name, last_name): - user = None + group = Group(name=role_name) + group.save() + + user_model = get_user_model() + email = '{}@localhost'.format(role_name) + user_name = email + password = TEST_PASSWORD + user = user_model.objects.create_user(username=user_name, password=password, email=user_name, + first_name=first_name, last_name=last_name) + user.groups.add(group) + setting_name = 'groups_{}'.format(role_name) app_config = apps.get_app_config('dav_events') - group_names = getattr(app_config.settings, setting_name) - if group_names: - group_name = group_names[0] - group = Group(name=group_name) - group.save() - user_model = get_user_model() - email = '{}@localhost'.format(role_name) - user_name = email - password = TEST_PASSWORD - user = user_model.objects.create_user(username=user_name, password=password, email=user_name, - first_name=first_name, last_name=last_name) - user.groups.add(group) + setattr(app_config.settings, setting_name, [role_name]) return user - def setUp(self): - super(TestCase, self).setUp() - - self.manager_super = self.create_user_for_role('manager_super', 'Manager Super', 'Tourenreferent') - self.manager_w = self.create_user_for_role('manager_w', 'Manager W', 'BereichsleiterWandern') - self.manager_s = self.create_user_for_role('manager_s', 'Manager S', 'BereichsleiterSki') - self.publisher_print = self.create_user_for_role('publisher_print', 'Publisher Print', 'RedaktionPrint') - self.publisher_web = self.create_user_for_role('publisher_web', 'Publisher Web', 'RedaktionWeb') - self.publisher_facebook = self.create_user_for_role('publisher_facebook', 'Publisher Facebook', 'RedaktionFacebook') - def login(self, username, password): self.get(reverse('dav_auth:login')) c = self.selenium @@ -515,6 +504,16 @@ class TestCase(ScreenshotTestCase): if screenshots: self.save_screenshot('event_list_after', sequence=sequence_name) + def setUp(self): + super(TestCase, self).setUp() + + self.manager_super = self.create_user_for_role('manager_super', 'Manager Super', 'Tourenreferent') + self.manager_w = self.create_user_for_role('manager_w', 'Manager W', 'BereichsleiterWandern') + self.manager_s = self.create_user_for_role('manager_s', 'Manager S', 'BereichsleiterSki') + self.publisher_print = self.create_user_for_role('publisher_print', 'Publisher Print', 'RedaktionPrint') + self.publisher_web = self.create_user_for_role('publisher_web', 'Publisher Web', 'RedaktionWeb') + self.publisher_facebook = self.create_user_for_role('publisher_facebook', 'Publisher Facebook', 'RedaktionFacebook') + def test_screenshots(self): #self.quit_selenium = False c = self.selenium