Unit tests for quotas

This commit is contained in:
Raphael Michel
2015-01-15 17:51:43 +01:00
parent 2977002cbd
commit a506376c31
+64 -6
View File
@@ -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)