UPD: more and better tests.
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
import time
|
||||
from django.apps import apps
|
||||
from django.contrib.auth import get_user_model
|
||||
@@ -12,9 +11,10 @@ from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import Select
|
||||
|
||||
from dav_base.tests.generic import ScreenshotTestCase
|
||||
from dav_auth.tests.generic import SeleniumAuthMixin
|
||||
|
||||
from dav_base.tests.generic import skip_unless_tag_option, ScreenshotTestCase
|
||||
|
||||
TEST_TRAINER_EMAIL = 'trainer@localhost'
|
||||
TEST_PASSWORD = u'me||ön 2'
|
||||
TEST_EVENT_DATA_S = {
|
||||
'mode': 'training',
|
||||
@@ -36,7 +36,7 @@ TEST_EVENT_DATA_S = {
|
||||
'pre_meeting_1': '10.12.2019 18:35',
|
||||
'trainer_firstname': u'Trainer1 Ö.',
|
||||
'trainer_familyname': u'Ä. Tourenleiter',
|
||||
'trainer_email': 'trainer@localhost',
|
||||
'trainer_email': TEST_TRAINER_EMAIL,
|
||||
'trainer_2_fullname': u'Trainer2 Überflieger',
|
||||
'trainer_3_fullname': u'Trainer3 Weißalles',
|
||||
'deadline': 'month',
|
||||
@@ -88,11 +88,28 @@ TEST_EVENT_DATA_W = {
|
||||
u' heinzel =u}',
|
||||
],
|
||||
}
|
||||
TEST_EVENT_DATA_M = {
|
||||
'sport': 'M',
|
||||
'first_day': '21.6.2018',
|
||||
'trainer_firstname': u'Other',
|
||||
'trainer_familyname': u'Trainer',
|
||||
'trainer_email': 'other.trainer@localhost',
|
||||
'title': u'MTB-Zeitreise > 2018',
|
||||
'description': [
|
||||
u'Hier steht jetzt so allerhand Scheiß.',
|
||||
u'z.B. eine ÜRL: https://de.wikipedia.org (leider öhne Ümläüte)',
|
||||
u'& eine E-Mail-Ädresse: <heinzel@alpenverein-karlsruhe.de>'
|
||||
],
|
||||
'internal_note': [
|
||||
u'Automatisierter Software Test',
|
||||
u'Viele Grüße',
|
||||
u' heinzel =u}',
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
@skip_unless_tag_option()
|
||||
@tag('screenshots')
|
||||
class TestCase(ScreenshotTestCase):
|
||||
@tag('screenshots', 'browser')
|
||||
class TestCase(SeleniumAuthMixin, ScreenshotTestCase):
|
||||
screenshot_prefix = 'dav_events-'
|
||||
|
||||
def create_user_for_role(self, role_name, first_name, last_name):
|
||||
@@ -113,21 +130,6 @@ class TestCase(ScreenshotTestCase):
|
||||
|
||||
return user
|
||||
|
||||
def login(self, username, password):
|
||||
self.get(reverse('dav_auth:login'))
|
||||
c = self.selenium
|
||||
username_field = self.wait_on_presence(c, (By.ID, 'id_username'))
|
||||
username_field.clear()
|
||||
username_field.send_keys(username)
|
||||
password_field = c.find_element_by_id('id_password')
|
||||
password_field.clear()
|
||||
password_field.send_keys(password)
|
||||
password_field.send_keys(Keys.RETURN)
|
||||
self.wait_until_stale(c, password_field)
|
||||
|
||||
def logout(self):
|
||||
self.get(reverse('dav_auth:logout'))
|
||||
|
||||
def create_event(self, event_data, auth=False, screenshots=True):
|
||||
data = event_data
|
||||
c = self.selenium
|
||||
@@ -300,18 +302,26 @@ class TestCase(ScreenshotTestCase):
|
||||
|
||||
if 'trainer_firstname' in data:
|
||||
field = self.wait_on_presence(c, (By.ID, 'id_trainer_firstname'))
|
||||
if auth:
|
||||
field.clear()
|
||||
field.send_keys(data['trainer_firstname'])
|
||||
|
||||
if 'trainer_familyname' in data:
|
||||
field = c.find_element_by_id('id_trainer_familyname')
|
||||
if auth:
|
||||
field.clear()
|
||||
field.send_keys(data['trainer_familyname'])
|
||||
|
||||
if 'trainer_email' in data:
|
||||
field = c.find_element_by_id('id_trainer_email')
|
||||
if auth:
|
||||
field.clear()
|
||||
field.send_keys(data['trainer_email'])
|
||||
|
||||
if 'trainer_phone' in data:
|
||||
field = c.find_element_by_id('id_trainer_phone')
|
||||
if auth:
|
||||
field.clear()
|
||||
field.send_keys(data['trainer_phone'])
|
||||
|
||||
if 'trainer_2_fullname' in data:
|
||||
@@ -466,6 +476,61 @@ class TestCase(ScreenshotTestCase):
|
||||
if screenshots:
|
||||
self.save_screenshot('event_list_after', sequence=sequence_name)
|
||||
|
||||
def clone_event(self, title, screenshots=True):
|
||||
c = self.selenium
|
||||
|
||||
sequence_name = 'clone_event'
|
||||
|
||||
c.get(self.complete_url(reverse('dav_events:root')))
|
||||
button = self.wait_on_presence(c, (By.ID, 'btn-events-list'))
|
||||
button.click()
|
||||
self.wait_until_stale(c, button)
|
||||
|
||||
if screenshots:
|
||||
self.save_screenshot('event_list_before', sequence=sequence_name)
|
||||
|
||||
link = c.find_element_by_link_text(title)
|
||||
link.click()
|
||||
self.wait_until_stale(c, link)
|
||||
|
||||
if screenshots:
|
||||
self.save_screenshot('event_details', sequence=sequence_name)
|
||||
|
||||
button = c.find_element_by_id('btn-clone')
|
||||
button.click()
|
||||
self.wait_until_stale(c, button)
|
||||
|
||||
for i in range(0, 11):
|
||||
try:
|
||||
button = c.find_element_by_id('btn-form-next')
|
||||
except NoSuchElementException:
|
||||
break
|
||||
|
||||
if screenshots:
|
||||
self.save_screenshot('form', sequence=sequence_name)
|
||||
|
||||
try:
|
||||
field = c.find_element_by_id('id_deadline')
|
||||
radio = field.find_element_by_css_selector('input[value=\'OTHER\']')
|
||||
radio.click()
|
||||
except NoSuchElementException:
|
||||
pass
|
||||
|
||||
button.click()
|
||||
self.wait_until_stale(c, button)
|
||||
else:
|
||||
self.fail('Too many sub forms')
|
||||
|
||||
if screenshots:
|
||||
self.save_screenshot('summary', sequence=sequence_name)
|
||||
|
||||
button = c.find_element_by_id('btn-form-submit')
|
||||
button.click()
|
||||
self.wait_until_stale(c, button)
|
||||
|
||||
if screenshots:
|
||||
self.save_screenshot('event-list-after', sequence=sequence_name)
|
||||
|
||||
def accept_event(self, title, screenshots=True):
|
||||
c = self.selenium
|
||||
|
||||
@@ -504,6 +569,44 @@ class TestCase(ScreenshotTestCase):
|
||||
if screenshots:
|
||||
self.save_screenshot('event_list_after', sequence=sequence_name)
|
||||
|
||||
def confirm_publication_event(self, title, channel='all', screenshots=True):
|
||||
c = self.selenium
|
||||
|
||||
sequence_name = 'confirm_publication'
|
||||
|
||||
c.get(self.complete_url(reverse('dav_events:root')))
|
||||
button = self.wait_on_presence(c, (By.ID, 'btn-events-list'))
|
||||
button.click()
|
||||
self.wait_until_stale(c, button)
|
||||
|
||||
if screenshots:
|
||||
self.save_screenshot('event_list_before', sequence=sequence_name)
|
||||
|
||||
link = c.find_element_by_link_text(title)
|
||||
link.click()
|
||||
self.wait_until_stale(c, link)
|
||||
|
||||
if screenshots:
|
||||
self.save_screenshot('event_details', sequence=sequence_name)
|
||||
|
||||
button = c.find_element_by_id('btn-confirmpublication')
|
||||
button.click()
|
||||
time.sleep(.5)
|
||||
if screenshots:
|
||||
self.save_screenshot('confirmpublication_modal', sequence=sequence_name)
|
||||
|
||||
button = c.find_element_by_css_selector('#btn-confirmpublication-{}'.format(channel))
|
||||
button.click()
|
||||
self.wait_until_stale(c, button)
|
||||
if screenshots:
|
||||
self.save_screenshot('confirmed_{}'.format(channel), sequence=sequence_name)
|
||||
|
||||
link = c.find_element_by_link_text(ugettext('Veranstaltungsliste'))
|
||||
link.click()
|
||||
self.wait_until_stale(c, link)
|
||||
if screenshots:
|
||||
self.save_screenshot('event_list_after', sequence=sequence_name)
|
||||
|
||||
def setUp(self):
|
||||
super(TestCase, self).setUp()
|
||||
|
||||
@@ -523,18 +626,38 @@ class TestCase(ScreenshotTestCase):
|
||||
|
||||
self.create_event(TEST_EVENT_DATA_S, auth=False)
|
||||
self.create_event(TEST_EVENT_DATA_W, auth=True)
|
||||
self.create_event(TEST_EVENT_DATA_M, auth=True)
|
||||
|
||||
link = c.find_element_by_link_text(TEST_EVENT_DATA_W['title'])
|
||||
link.click()
|
||||
self.wait_until_stale(c, link)
|
||||
self.save_screenshot('owner_event_details')
|
||||
|
||||
self.logout()
|
||||
self.logout(c)
|
||||
|
||||
self.login(self.manager_s.username, TEST_PASSWORD)
|
||||
self.login(c, self.manager_s.username, TEST_PASSWORD)
|
||||
self.accept_event(TEST_EVENT_DATA_S['title'])
|
||||
self.logout()
|
||||
self.logout(c)
|
||||
|
||||
self.login(self.manager_super.username, TEST_PASSWORD)
|
||||
self.login(c, self.manager_super.username, TEST_PASSWORD)
|
||||
self.accept_event(TEST_EVENT_DATA_W['title'])
|
||||
self.logout()
|
||||
self.logout(c)
|
||||
|
||||
self.login(c, self.publisher_web.username, TEST_PASSWORD)
|
||||
self.confirm_publication_event(TEST_EVENT_DATA_S['title'], channel='web')
|
||||
self.logout(c)
|
||||
|
||||
self.login(c, self.publisher_facebook.username, TEST_PASSWORD)
|
||||
self.confirm_publication_event(TEST_EVENT_DATA_S['title'], channel='facebook')
|
||||
self.logout(c)
|
||||
|
||||
self.login(c, self.publisher_facebook.username, TEST_PASSWORD)
|
||||
self.confirm_publication_event(TEST_EVENT_DATA_W['title'], channel='facebook')
|
||||
self.logout(c)
|
||||
|
||||
self.login(c, self.publisher_web.username, TEST_PASSWORD)
|
||||
self.confirm_publication_event(TEST_EVENT_DATA_W['title'], channel='web')
|
||||
self.logout(c)
|
||||
|
||||
self.login(c, TEST_TRAINER_EMAIL, TEST_PASSWORD)
|
||||
self.clone_event(TEST_EVENT_DATA_S['title'])
|
||||
|
||||
Reference in New Issue
Block a user