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 -*- # -*- coding: utf-8 -*-
from django.apps import apps
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.core import mail as django_mail from django.core import mail as django_mail
from django.test import TestCase from django.test import TestCase
@@ -16,6 +17,12 @@ class EmailsTestCase(TestCase):
model = get_user_model() model = get_user_model()
self.user = model.objects.create_user(username=TEST_USERNAME, password=TEST_PASSWORD, email=TEST_EMAIL) 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): def test_send(self):
password = TEST_PASSWORD[::-1] password = TEST_PASSWORD[::-1]
@@ -24,8 +31,16 @@ class EmailsTestCase(TestCase):
self.assertEqual(len(django_mail.outbox), 1) self.assertEqual(len(django_mail.outbox), 1)
mail = django_mail.outbox[0] mail = django_mail.outbox[0]
recipient = u'"%s" <%s>' % (self.user.get_full_name(), self.user.email) recipient = u'"%s" <%s>' % (self.user.get_full_name(), self.user.email)
recipients = mail.recipients() recipients = mail.recipients()
self.assertIn(recipient, recipients) self.assertIn(recipient, recipients)
self.assertEqual(len(recipients), 1) 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) self.assertIn(password, mail.body)

View File

@@ -1,14 +1,12 @@
import datetime import datetime
import os import os
import sys import sys
import time
import urllib import urllib
from unittest import skip, SkipTest from unittest import skip, SkipTest
from django.contrib.staticfiles.testing import StaticLiveServerTestCase from django.contrib.staticfiles.testing import StaticLiveServerTestCase
from django.test import SimpleTestCase, TestCase, tag from django.test import SimpleTestCase, TestCase, tag
from django.urls import reverse from django.urls import reverse
from selenium import webdriver from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support import expected_conditions as EC
@@ -237,7 +235,7 @@ class ScreenshotTestCase(SeleniumTestCase):
title = location title = location
base_name = u'{timestamp}-{prefix}{sequence}{title}.png'.format( 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, prefix=self.screenshot_prefix,
sequence=sequence, sequence=sequence,
title=title, title=title,

View File

@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.apps import apps
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.core import mail as django_mail from django.core import mail as django_mail
from django.test import TestCase from django.test import TestCase
@@ -10,6 +11,12 @@ from .. import emails
class EmailsTestCase(TestCase): class EmailsTestCase(TestCase):
def setUp(self): 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() model = get_user_model()
self.recipient = model.objects.create_user(username='recipient@example.com', self.recipient = model.objects.create_user(username='recipient@example.com',
email='recipient@example.com', email='recipient@example.com',
@@ -50,10 +57,18 @@ Line 3 END"""
self.assertEqual(len(django_mail.outbox), 1) self.assertEqual(len(django_mail.outbox), 1)
mail = django_mail.outbox[0] mail = django_mail.outbox[0]
recipient = u'"%s" <%s>' % (self.recipient.get_full_name(), self.recipient.email) recipient = u'"%s" <%s>' % (self.recipient.get_full_name(), self.recipient.email)
recipients = mail.recipients() recipients = mail.recipients()
self.assertIn(recipient, recipients) self.assertIn(recipient, recipients)
self.assertEqual(len(recipients), 1) 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.recipient.first_name, mail.body)
self.assertIn(self.editor.get_full_name(), mail.body) self.assertIn(self.editor.get_full_name(), mail.body)
self.assertIn(unicode(self.event), mail.body) self.assertIn(unicode(self.event), mail.body)

View File

@@ -24,15 +24,15 @@ TEST_EVENT_DATA_S = {
'last_day': '26.12.2019', 'last_day': '26.12.2019',
'country': 'CH', 'country': 'CH',
'location': u'St. Antönien', 'location': u'St. Antönien',
'transport_other': 'Helikopter', 'transport_other': 'Helikopter & SUV',
'meeting_point': 'dav', 'meeting_point': 'dav',
'meeting_time': '10:29', 'meeting_time': '10:29',
'return_arrival_time': '20:14', 'return_arrival_time': '20:14',
'arrival_previous_day': True, 'arrival_previous_day': True,
'basecamp': u'Grand Hôtel', 'basecamp': u'Grand Hôtel Belvedere',
'accommodation': 'NONE', 'accommodation': 'NONE',
'meals_other': u'Fünf-Sterne-Küche per Zimmerservice und Minibar', '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', 'pre_meeting_1': '10.12.2019 18:35',
'trainer_firstname': u'Trainer1 Ö.', 'trainer_firstname': u'Trainer1 Ö.',
'trainer_familyname': u'Ä. Tourenleiter', 'trainer_familyname': u'Ä. Tourenleiter',
@@ -43,19 +43,19 @@ TEST_EVENT_DATA_S = {
'charge': '1800', 'charge': '1800',
'additional_costs': None, 'additional_costs': None,
'course_topic_1': u'Grundkentnisse in der neusten Willy-Bögner-Kollektion', '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_3': u'Cocktailkunde für dekadentes Après-Ski',
'course_topic_4': u'Und vieles möhr', 'course_topic_4': u'Und vieles möhr',
'course_goal_1': [ 'course_goal_1': [
u'Güt aussehen', u'"Gut" aussehen',
u'Lässig sein', u'Lässig sein',
u'Geld scheißen', u'Geld scheißen',
], ],
'title': u'Heli-Sking-Kurs für Snobs', 'title': u'Heli-Skiing-Kurs für Snobs',
'description': [ 'description': [
u'Hier steht jetzt so allerhand Scheiß.', u'Hier steht jetzt so allerhand Scheiß.',
u'z.B. eine ÜRL: https://de.wikipedia.org (leider öhne Ümläüte)', 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': [ 'internal_note': [
u'Automatisierter Software Test', u'Automatisierter Software Test',
@@ -72,7 +72,7 @@ TEST_EVENT_DATA_W = {
'transport': 'public', 'transport': 'public',
'meeting_point_other': u'Bahnhof der Schloßgartenbahn', 'meeting_point_other': u'Bahnhof der Schloßgartenbahn',
'departure_time': '07:00', '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_departure_time': '19',
'return_arrival_time': '19:10', 'return_arrival_time': '19:10',
'trainer_phone': u'+555 666 AB (Büro)', 'trainer_phone': u'+555 666 AB (Büro)',
@@ -80,7 +80,7 @@ TEST_EVENT_DATA_W = {
'description': [ 'description': [
u'Hier steht jetzt so allerhand Scheiß.', u'Hier steht jetzt so allerhand Scheiß.',
u'z.B. eine ÜRL: https://de.wikipedia.org (leider öhne Ümläüte)', 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': [ 'internal_note': [
u'Automatisierter Software Test', u'Automatisierter Software Test',
@@ -96,14 +96,9 @@ class TestCase(ScreenshotTestCase):
screenshot_prefix = 'dav_events-' screenshot_prefix = 'dav_events-'
def create_user_for_role(self, role_name, first_name, last_name): def create_user_for_role(self, role_name, first_name, last_name):
user = None group = Group(name=role_name)
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() group.save()
user_model = get_user_model() user_model = get_user_model()
email = '{}@localhost'.format(role_name) email = '{}@localhost'.format(role_name)
user_name = email user_name = email
@@ -112,18 +107,12 @@ class TestCase(ScreenshotTestCase):
first_name=first_name, last_name=last_name) first_name=first_name, last_name=last_name)
user.groups.add(group) user.groups.add(group)
setting_name = 'groups_{}'.format(role_name)
app_config = apps.get_app_config('dav_events')
setattr(app_config.settings, setting_name, [role_name])
return user 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): def login(self, username, password):
self.get(reverse('dav_auth:login')) self.get(reverse('dav_auth:login'))
c = self.selenium c = self.selenium
@@ -515,6 +504,16 @@ class TestCase(ScreenshotTestCase):
if screenshots: if screenshots:
self.save_screenshot('event_list_after', sequence=sequence_name) 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): def test_screenshots(self):
#self.quit_selenium = False #self.quit_selenium = False
c = self.selenium c = self.selenium