diff --git a/src/tixlcontrol/tests/test_items.py b/src/tixlcontrol/tests/test_items.py index 8daf4350a..ae5bc195e 100644 --- a/src/tixlcontrol/tests/test_items.py +++ b/src/tixlcontrol/tests/test_items.py @@ -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)