UPD: improved tests.

This commit is contained in:
2019-03-21 20:28:46 +01:00
parent 1bcd479304
commit dc37c110df
4 changed files with 62 additions and 35 deletions

View File

@@ -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 <root@localhost>'
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)

View File

@@ -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,

View File

@@ -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 <root@localhost>'
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)

View File

@@ -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'<Fußnoten>: 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: <heinzel@alpenverein-karlsruhe.de>'
],
'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: <heinzel@alpenverein-karlsruhe.de>'
],
'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