forked from CGM_Public/pretix_original
Unit tests for quotas
This commit is contained in:
@@ -2,7 +2,7 @@ import time
|
||||
import datetime
|
||||
from selenium.webdriver.support.select import Select
|
||||
from tixlbase.models import User, Organizer, Event, OrganizerPermission, EventPermission, ItemCategory, Property, \
|
||||
PropertyValue, Question
|
||||
PropertyValue, Question, Quota, Item
|
||||
from tixlbase.tests import BrowserTest, on_platforms
|
||||
|
||||
|
||||
@@ -28,6 +28,16 @@ class ItemFormTest(BrowserTest):
|
||||
self.driver.find_element_by_css_selector('button[type="submit"]').click()
|
||||
self.driver.find_element_by_class_name("navbar-right")
|
||||
|
||||
def scroll_into_view(self, element):
|
||||
"""Scroll element into view"""
|
||||
y = element.location['y']
|
||||
self.driver.execute_script('window.scrollTo(0, {0})'.format(y))
|
||||
|
||||
def scroll_and_click(self, element):
|
||||
self.scroll_into_view(element)
|
||||
time.sleep(0.5)
|
||||
element.click()
|
||||
|
||||
|
||||
@on_platforms()
|
||||
class CategoriesTest(ItemFormTest):
|
||||
@@ -48,7 +58,7 @@ class CategoriesTest(ItemFormTest):
|
||||
))
|
||||
self.driver.find_element_by_name("name").clear()
|
||||
self.driver.find_element_by_name("name").send_keys('T-Shirts')
|
||||
self.driver.find_element_by_class_name("btn-save").click()
|
||||
self.scroll_and_click(self.driver.find_element_by_class_name("btn-save"))
|
||||
self.driver.find_element_by_class_name("alert-success")
|
||||
self.assertIn("T-Shirts", self.driver.find_element_by_css_selector(".container table").text)
|
||||
self.assertNotIn("Entry tickets", self.driver.find_element_by_css_selector(".container table").text)
|
||||
@@ -63,13 +73,13 @@ class CategoriesTest(ItemFormTest):
|
||||
self.driver.find_element_by_css_selector("table > tbody > tr:nth-child(1)").text)
|
||||
self.assertIn("T-Shirts",
|
||||
self.driver.find_element_by_css_selector("table > tbody > tr:nth-child(2)").text)
|
||||
self.driver.find_element_by_css_selector("table > tbody > tr:nth-child(1) a[href*='down']").click()
|
||||
self.scroll_and_click(self.driver.find_element_by_css_selector("table > tbody > tr:nth-child(1) a[href*='down']"))
|
||||
time.sleep(1)
|
||||
self.assertIn("Entry tickets",
|
||||
self.driver.find_element_by_css_selector("table > tbody > tr:nth-child(2)").text)
|
||||
self.assertIn("T-Shirts",
|
||||
self.driver.find_element_by_css_selector("table > tbody > tr:nth-child(1)").text)
|
||||
self.driver.find_element_by_css_selector("table > tbody > tr:nth-child(2) a[href*='up']").click()
|
||||
self.scroll_and_click(self.driver.find_element_by_css_selector("table > tbody > tr:nth-child(2) a[href*='up']"))
|
||||
time.sleep(1)
|
||||
self.assertIn("Entry tickets",
|
||||
self.driver.find_element_by_css_selector("table > tbody > tr:nth-child(1)").text)
|
||||
@@ -96,7 +106,7 @@ class PropertiesTest(ItemFormTest):
|
||||
self.driver.find_element_by_css_selector("#id_name").send_keys('Size')
|
||||
self.driver.find_element_by_name("values-0-value").send_keys('S')
|
||||
self.driver.find_element_by_name("values-1-value").send_keys('M')
|
||||
self.driver.find_element_by_class_name("btn-save").click()
|
||||
self.scroll_and_click(self.driver.find_element_by_class_name("btn-save"))
|
||||
self.driver.find_element_by_class_name("alert-success")
|
||||
self.assertIn("Size", self.driver.find_element_by_css_selector(".container table").text)
|
||||
self.driver.find_element_by_partial_link_text("Size").click()
|
||||
@@ -113,6 +123,7 @@ class PropertiesTest(ItemFormTest):
|
||||
self.driver.find_element_by_css_selector("#id_name").clear()
|
||||
self.driver.find_element_by_css_selector("#id_name").send_keys('Color')
|
||||
self.driver.find_elements_by_css_selector("div.form-group button.btn-danger")[0].click()
|
||||
self.scroll_into_view(self.driver.find_element_by_name("values-1-value"))
|
||||
self.driver.find_element_by_name("values-1-value").clear()
|
||||
self.driver.find_element_by_name("values-1-value").send_keys('red')
|
||||
self.driver.find_element_by_css_selector("button[data-formset-add]").click()
|
||||
@@ -152,7 +163,7 @@ class QuestionsTest(ItemFormTest):
|
||||
))
|
||||
self.driver.find_element_by_name("question").clear()
|
||||
self.driver.find_element_by_name("question").send_keys('How old are you?')
|
||||
self.driver.find_element_by_class_name("btn-save").click()
|
||||
self.scroll_and_click(self.driver.find_element_by_class_name("btn-save"))
|
||||
self.driver.find_element_by_class_name("alert-success")
|
||||
self.assertIn("How old", self.driver.find_element_by_css_selector(".container table").text)
|
||||
self.assertNotIn("shoe size", self.driver.find_element_by_css_selector(".container table").text)
|
||||
@@ -167,3 +178,50 @@ class QuestionsTest(ItemFormTest):
|
||||
self.driver.find_element_by_class_name("btn-danger").click()
|
||||
self.driver.find_element_by_class_name("alert-success")
|
||||
self.assertNotIn("shoe size", self.driver.find_element_by_css_selector(".container table").text)
|
||||
|
||||
|
||||
@on_platforms()
|
||||
class QuotaTest(ItemFormTest):
|
||||
|
||||
def test_create(self):
|
||||
self.driver.get('%s/control/event/%s/%s/quotas/add' % (
|
||||
self.live_server_url, self.orga1.slug, self.event1.slug
|
||||
))
|
||||
self.driver.find_element_by_name("name").send_keys('Full house')
|
||||
self.driver.find_element_by_name("size").send_keys('500')
|
||||
self.driver.find_element_by_class_name("btn-save").click()
|
||||
self.driver.find_element_by_class_name("alert-success")
|
||||
self.assertIn("Full house", self.driver.find_element_by_css_selector(".container table").text)
|
||||
|
||||
def test_update(self):
|
||||
c = Quota.objects.create(event=self.event1, name="Full house", size=500)
|
||||
item1 = Item.objects.create(event=self.event1, name="Standard")
|
||||
item2 = Item.objects.create(event=self.event1, name="Business")
|
||||
prop1 = Property.objects.create(event=self.event1, name="Level")
|
||||
item2.properties.add(prop1)
|
||||
PropertyValue.objects.create(prop=prop1, value="Silver")
|
||||
PropertyValue.objects.create(prop=prop1, value="Gold")
|
||||
self.driver.get('%s/control/event/%s/%s/quotas/%s/' % (
|
||||
self.live_server_url, self.orga1.slug, self.event1.slug, c.identity
|
||||
))
|
||||
self.driver.find_element_by_name("size").clear()
|
||||
self.driver.find_element_by_name("size").send_keys('350')
|
||||
self.scroll_and_click(self.driver.find_element_by_css_selector('.panel-group .panel:nth-child(1) .panel-title a'))
|
||||
time.sleep(1)
|
||||
self.scroll_and_click(self.driver.find_element_by_name("item_%s" % item1.identity))
|
||||
self.driver.find_element_by_css_selector('.panel-group .panel:nth-child(2) .panel-title a').click()
|
||||
time.sleep(1)
|
||||
self.scroll_and_click(self.driver.find_elements_by_css_selector("input[name=item_%s]" % item2.identity)[1])
|
||||
self.scroll_and_click(self.driver.find_element_by_class_name("btn-save"))
|
||||
self.driver.find_element_by_class_name("alert-success")
|
||||
self.assertIn("350", self.driver.find_element_by_css_selector(".container table").text)
|
||||
self.assertNotIn("500", self.driver.find_element_by_css_selector(".container table").text)
|
||||
|
||||
def test_delete(self):
|
||||
c = Quota.objects.create(event=self.event1, name="Full house", size=500)
|
||||
self.driver.get('%s/control/event/%s/%s/quotas/%s/delete' % (
|
||||
self.live_server_url, self.orga1.slug, self.event1.slug, c.identity
|
||||
))
|
||||
self.driver.find_element_by_class_name("btn-danger").click()
|
||||
self.driver.find_element_by_class_name("alert-success")
|
||||
self.assertNotIn("Full house", self.driver.find_element_by_css_selector(".container table").text)
|
||||
|
||||
Reference in New Issue
Block a user