UPD: improved tests.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user