UPD: improved tests.
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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,34 +96,23 @@ 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)
|
||||||
|
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)
|
setting_name = 'groups_{}'.format(role_name)
|
||||||
app_config = apps.get_app_config('dav_events')
|
app_config = apps.get_app_config('dav_events')
|
||||||
group_names = getattr(app_config.settings, setting_name)
|
setattr(app_config.settings, setting_name, [role_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)
|
|
||||||
|
|
||||||
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
|
||||||
|
|||||||
Reference in New Issue
Block a user