diff --git a/django/test/testcases.py b/django/test/testcases.py index e8a4c1f873..010827fe67 100644 --- a/django/test/testcases.py +++ b/django/test/testcases.py @@ -230,11 +230,13 @@ class TransactionTestCase(unittest.TestCase): def _test_model_setup(self): if hasattr(self, 'test_models'): - print self.test_models + #print self.test_models if self.__module__.endswith('tests'): app_label = self.__module__.split('.')[:-1][-1] + app_path = '.'.join(self.__module__.split('.')[:-1]) else: app_label = self.__module__.split('.')[:-2][-1] + app_path = '.'.join(self.__module__.split('.')[:-2]) from django.db.models.loading import cache from django.utils import importlib from django.db import models @@ -244,7 +246,7 @@ class TransactionTestCase(unittest.TestCase): app_mods = cache.app_models[app_label] for tm in self.test_models: #print "importing %s " % tm - im = importlib.import_module(tm) + im = importlib.import_module(app_path + '.' + tm) #cache.app_store[im] = len(cache.app_store) #print "finding model classes" mod_classes = [f for f in im.__dict__.values() if hasattr(f,'__bases__') and issubclass(f,models.Model)] @@ -302,11 +304,13 @@ class TransactionTestCase(unittest.TestCase): def _test_model_teardown(self): if hasattr(self, 'test_models'): - print self.test_models + #print self.test_models if self.__module__.endswith('tests'): app_label = self.__module__.split('.')[:-1][-1] + app_path = '.'.join(self.__module__.split('.')[:-1]) else: app_label = self.__module__.split('.')[:-2][-1] + app_path = '.'.join(self.__module__.split('.')[:-2]) from django.db.models.loading import cache from django.utils import importlib from django.db import models @@ -327,10 +331,10 @@ class TransactionTestCase(unittest.TestCase): cache.write_lock.acquire() try: app_mods = cache.app_models[app_label] - print app_mods + #print app_mods for tm in self.test_models: #print "importing %s " % tm - im = importlib.import_module(tm) + im = importlib.import_module(app_path + '.' + tm) #cache.app_store[im] = len(cache.app_store) #print "finding model classes" mod_classes = [f for f in im.__dict__.values() if hasattr(f,'__bases__') and issubclass(f,models.Model)] diff --git a/docs/howto/windmill-tests.txt b/docs/howto/windmill-tests.txt index 08931d8a97..5445dc4de9 100644 --- a/docs/howto/windmill-tests.txt +++ b/docs/howto/windmill-tests.txt @@ -1,40 +1,38 @@ .. _howto-windmill-tests: Writing a Functional Tests with Windmill -======================================= +======================================== .. currentmodule:: django.test -If you need to provide custom file storage -- a common example is storing files -on some remote system -- you can do so by defining a custom storage class. -You'll need to follow these steps: +If you need to test overall behaviors of your site, ajax widgets or rendered +html, then functional tests are the solution. Django includes support for the +popular `Windmill`_ framework. Writing a windmill test +is simple, following these steps: -#. Your custom storage system must be a subclass of - ``django.core.files.storage.Storage``:: +.. _Windmill: http://getwindmill.com +#. Your windmill tests must be their own module, named ``wmtests`` or ``windmilltests``. + - from django.core.files.storage import Storage +#. Django must be able to run any function in the module without arguments. +:: + from windmill.conf import global_settings + ADMIN_URL = "%s/test_admin/admin" % global_settings.TEST_URL + from windmill.authoring import WindmillTestClient + from django.test.utils import calling_func_name - class MyStorage(Storage): - ... + def test_loginAndSetup(): + '''Mostly just a proof of concept to test working order of tests.''' + client = WindmillTestClient(calling_func_name()) -#. Django must be able to instantiate your storage system without any arguments. - This means that any settings should be taken from ``django.conf.settings``:: + client.open(url='http://localhost:8000/admin') + client.waits.forPageLoad(timeout=u'20000') + ... - from django.conf import settings - from django.core.files.storage import Storage - - class MyStorage(Storage): - def __init__(self, option=None): - if not option: - option = settings.CUSTOM_STORAGE_OPTIONS - ... - -#. Your storage class must implement the ``_open()`` and ``_save()`` methods, - along with any other methods appropriate to your storage class. See below for - more on these methods. - - In addition, if your class provides local file storage, it must override - the ``path()`` method. +#. Your windmill testing module must load any files other than the module loader + in ``__init__.py``. + :: + from primary.py import * Your custom storage system may override any of the storage methods explained in :ref:`ref-files-storage`, but you **must** implement the following methods: diff --git a/docs/topics/testing.txt b/docs/topics/testing.txt index 2a01df9e87..d4e1eb8eaf 100644 --- a/docs/topics/testing.txt +++ b/docs/topics/testing.txt @@ -414,7 +414,7 @@ is why Django makes it easy to integrate with 3rd party test runners via the :setting:`TEST_RUNNER` setting. For convenience, Django ships a runner for the framework used in testing the :ref:`admin interface, ` Windmill_. Details on integrating Windmill tests with Django are available -:ref:`here. ` +:ref:`here. ` .. _Twill: http://twill.idyll.org/ .. _Windmill: http://www.getwindmill.com/ @@ -981,6 +981,8 @@ This flush/load procedure is repeated for each test in the test case, so you can be certain that the outcome of a test will not be affected by another test, or by the order of test execution. +.. _topics-testing-urlconf: + URLconf configuration ~~~~~~~~~~~~~~~~~~~~~ @@ -1014,6 +1016,35 @@ For example:: This test case will use the contents of ``myapp.test_urls`` as the URLconf for the duration of the test case. +.. _topics-testing-testmodels: + +Test-Only Models configuration +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. versionadded:: 1.1 + +.. attribute:: TransactionTestCase.test_models + +If you want to test your application with models that are only available during specific +test cases, ``django.test.TransactionTestCase`` provides the ability to customize the models +configuration for the duration of the execution of a test suite. If your +``TransactionTestCase`` instance defines an ``test_models`` attribute, the ``TransactionTestCase`` will load +the value of that attribute as a module, and load the models contained within for the +duration of that test. + +For example:: + + from django.test import TransactionTestCase + + class TestMyViews(TransactionTestCase): + test_models = ['test_models'] + + def testIndexPageView(self): + # Here you'd test your view using ``Client``. + +This test case will load the contents of ``myapp.test_models`` and add +any subclass of ``django.db.models.Model`` to ``myapp.models``. + .. _emptying-test-outbox: Emptying the test outbox diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py index b59c959184..382dfd662b 100644 --- a/tests/regressiontests/admin_views/tests.py +++ b/tests/regressiontests/admin_views/tests.py @@ -27,7 +27,7 @@ except NameError: class AdminViewBasicTest(TestCase): fixtures = ['admin-views-users.xml', 'admin-views-colors.xml', 'admin-views-fabrics.xml'] - test_models = ['regressiontests.admin_views.test_models'] + test_models = ['test_models'] # Store the bit of the URL where the admin is registered as a class # variable. That way we can test a second AdminSite just by subclassing # this test case and changing urlbit. diff --git a/tests/regressiontests/admin_views/windmilltests/__init__.py b/tests/regressiontests/admin_views/windmilltests/__init__.py index 9f87a74cdb..6a0abd005a 100644 --- a/tests/regressiontests/admin_views/windmilltests/__init__.py +++ b/tests/regressiontests/admin_views/windmilltests/__init__.py @@ -36,491 +36,4 @@ from django.test.utils import calling_func_name # import functest # functest.modules_passed = [] # functest.modules_failed = [] - -def test_loginAndSetup(): - '''Mostly just a proof of concept to test working order of tests.''' - client = WindmillTestClient(calling_func_name()) - - # print dir(client) - # print dir(client.open) - # print dir(client.commands) - # print client.commands() - - client.open(url=ADMIN_URL) - client.waits.forPageLoad(timeout=u'20000') - client.open(url=ADMIN_URL) - client.waits.forPageLoad(timeout=u'20000') - client.type(text=u'super', id=u'id_username') - client.type(text=u'secret', id=u'id_password') - client.click(value=u'Log in') - client.waits.forPageLoad(timeout=u'20000') - client.asserts.assertNode(xpath=u"//div[@id='content-main']/div/table/tbody/tr[1]/th") - client.asserts.assertNode(link=u'Articles') - client.asserts.assertNode(link=u'Add') - client.asserts.assertNode(link=u'Change') - client.asserts.assertNode(link=u'Admin_Views') - client.asserts.assertNode(xpath=u"//div[@id='user-tools']/strong") - client.click(xpath=u"//div[@id='content-main']/div/table/tbody/tr[22]/td/a") - client.waits.forPageLoad(timeout=u'20000') - client.type(text=u'Test Section', id=u'id_name') - client.click(name=u'_save') - client.waits.forPageLoad(timeout=u'20000') - client.asserts.assertNode(link=u'Section object') - client.click(link=u' Admin_views ') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(link=u'Add', timeout=u'8000') - client.click(link=u'Add') - client.waits.forPageLoad(timeout=u'20000') - client.type(text=u'Test 1', id=u'id_title') - client.type(text=u'This is test content.', id=u'id_content') - client.click(link=u'Today') - client.click(link=u'Now') - client.click(id=u'id_section') - client.select(option=u'Section object', id=u'id_section') - client.click(value=u'1') - #client.asserts.assertValue(validator=u'2009-06-16', id=u'id_date_0') - #client.asserts.assertValue(validator=u'13:31:21', id=u'id_date_1') - client.asserts.assertNode(id=u'id_section') - client.click(name=u'_save') - client.waits.forPageLoad(timeout=u'20000') - client.asserts.assertNode(link=u'This is test content.') - client.asserts.assertNode(xpath=u"//div[@id='changelist']/form/table/tbody/tr/td[2]") - client.asserts.assertNode(xpath=u"//div[@id='changelist']/form/table/tbody/tr/td[3]") - client.asserts.assertNode(xpath=u"//div[@id='changelist']/form/table/tbody/tr/td[4]") - client.asserts.assertNode(xpath=u"//div[@id='changelist']/form/table/tbody/tr/td[5]") - client.asserts.assertNode(xpath=u"//div[@id='changelist']/form/table/tbody/tr/th") - client.click(link=u'Today') - client.waits.forPageLoad(timeout=u'20000') - client.asserts.assertNode(xpath=u"//div[@id='changelist']/form/table/tbody/tr/th") - client.click(link=u' Home ') - client.waits.forPageLoad(timeout=u'20000') - -def test_changeListNamingLinkingHistory(): - '''Creating a Model with strings for pk, and checking history.''' - client = WindmillTestClient(calling_func_name()) - client.open(url=ADMIN_URL) - client.waits.forPageLoad(timeout=u'20000') - # client.open(url=ADMIN_URL) - # client.type(text=u'super', id=u'id_username') - # client.type(text=u'secret', id=u'id_password') - # client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(link=u'Model with string primary keys', timeout=u'8000') - client.click(link=u'Model with string primary keys') - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u' Add model with string primary key ') - client.waits.forPageLoad(timeout=u'20000') - client.type(text=u'hello', id=u'id_id') - client.click(name=u'_save') - client.waits.forPageLoad(timeout=u'20000') - #client.asserts.assertNode(link=u'hello') - client.click(link=u'hello') - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'History') - client.waits.forPageLoad(timeout=u'20000') - client.asserts.assertNode(xpath=u"//table[@id='change-history']/tbody/tr/td") - client.click(link=u'hello') - client.waits.forPageLoad(timeout=u'20000') - client.asserts.assertValue(validator=u'hello', id=u'id_id') - client.click(link=u'Delete') - client.waits.forPageLoad(timeout=u'20000') - client.asserts.assertNode(xpath=u"//div[@id='content']/ul/li") - client.asserts.assertNode(link=u'hello') - client.click(value=u"Yes, I'm sure") - client.waits.forPageLoad(timeout=u'20000') - client.asserts.assertText(xpath=u"//div[@id='changelist']/form/p", validator=u'\n\n1 model with string primary key\n\n\n') - client.click(link=u' Home ') - -def test_filtersSearchOnChangeList(): - '''Testing Updates and Filters/Search on Person Models''' - client = WindmillTestClient(calling_func_name()) - - client.open(url=ADMIN_URL) - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'Persons') - client.asserts.assertNode(link=u'John Mauchly') - client.asserts.assertNode(link=u'Grace Hooper') - client.asserts.assertNode(link=u'Guido van Rossum') - client.asserts.assertSelected(validator=u'Male', id=u'id_form-0-gender') - client.asserts.assertValue(validator=u'1', id=u'id_form-1-gender') - client.asserts.assertSelected(validator=u'Male', id=u'id_form-2-gender') - client.asserts.assertValue(validator=u'on', id=u'id_form-0-alive') - client.asserts.assertValue(validator=u'on', id=u'id_form-1-alive') - client.asserts.assertValue(validator=u'on', id=u'id_form-2-alive') - client.click(link=u'John Mauchly') - client.asserts.assertValue(validator=u'John Mauchly', id=u'id_name') - client.asserts.assertSelected(validator=u'Male', id=u'id_gender') - client.asserts.assertValue(validator=u'on', id=u'id_alive') - client.check(id=u'id_alive') - client.click(xpath=u"//form[@id='person_form']/div/fieldset/div[2]") - client.click(id=u'id_gender') - client.select(option=u'Female', id=u'id_gender') - client.click(value=u'2') - client.click(id=u'id_name') - client.type(text=u'John Mauchly Updated', id=u'id_name') - client.click(name=u'_save') - client.asserts.assertSelected(validator=u'Female', id=u'id_form-0-gender') - client.asserts.assertValue(validator=u'on', id=u'id_form-0-alive') - client.asserts.assertNode(link=u'John Mauchly Updated') - client.click(id=u'searchbar') - client.type(text=u'John', id=u'searchbar') - client.click(value=u'Search') - client.asserts.assertNode(link=u'John Mauchly Updated') - client.click(link=u'3 total') - client.type(text=u'Grace', id=u'searchbar') - client.click(value=u'Search') - client.asserts.assertNode(link=u'Grace Hooper') - client.click(link=u'3 total') - client.asserts.assertNode(link=u'Guido van Rossum') - client.click(link=u'Female') - client.asserts.assertNode(link=u'John Mauchly Updated') - client.click(link=u'All') - client.asserts.assertNode(link=u'Guido van Rossum') - client.click(link=u' Home ') - -def test_defaultDeleteAdminAction(): - '''Admin Actions test. Test the default delete action.''' - client = WindmillTestClient(calling_func_name()) - - client.open(url=ADMIN_URL) - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'Fabrics') - client.check(name=u'_selected_action') - client.click(name=u'action') - client.select(option=u'Delete selected fabrics', name=u'action') - client.click(value=u'delete_selected') - client.click(name=u'index') - client.click(value=u"Yes, I'm sure") - client.asserts.assertNode(link=u'Vertical') - client.asserts.assertNode(link=u'Horizontal') - -def test_dateTimeModelsandWidgets(): - client = WindmillTestClient(calling_func_name()) - - client.open(url=ADMIN_URL) - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'Articles') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(link=u'Date', timeout=u'8000') - client.click(link=u'Date') - client.waits.forPageLoad(timeout=u'20000') - client.asserts.assertText(xpath=u"//div[@id='changelist']/form/table/tbody/tr/td[2]", validator=u'March 18, 2000, 11:54 a.m.') - client.asserts.assertText(xpath=u"//div[@id='changelist']/form/table/tbody/tr[2]/td[2]", validator=u'March 18, 2008, 11:54 a.m.') - client.asserts.assertText(xpath=u"//div[@id='changelist']/form/table/tbody/tr/td[4]", validator=u'2000') - client.asserts.assertText(xpath=u"//div[@id='changelist']/form/table/tbody/tr[2]/td[4]", validator=u'2008') - client.asserts.assertText(xpath=u"//div[@id='changelist']/form/table/tbody/tr[3]/td[4]", validator=u'2009') - client.click(link=u'Modeladmin year') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(link=u'Content', timeout=u'8000') - client.click(link=u'Content') - client.waits.forPageLoad(timeout=u'20000') - client.asserts.assertText(xpath=u"//div[@id='changelist']/form/table/tbody/tr/td[4]", validator=u'2008') - client.click(xpath=u"//div[@id='changelist']/form/table/tbody/tr/th/a") - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(xpath=u"//a[@id='calendarlink0']/img", timeout=u'8000') - client.click(xpath=u"//a[@id='calendarlink0']/img") - client.click(link=u'Cancel') - client.click(xpath=u"//a[@id='clocklink0']/img") - client.click(link=u'Midnight') - client.click(id=u'id_date_1') - client.asserts.assertValue(validator=u'00:00:00', id=u'id_date_1') - client.click(xpath=u"//a[@id='clocklink0']/img") - client.click(link=u'6 a.m.') - client.asserts.assertValue(validator=u'06:00:00', id=u'id_date_1') - client.click(xpath=u"//a[@id='clocklink0']/img") - client.click(link=u'Noon') - client.click(id=u'id_date_1') - client.asserts.assertValue(validator=u'12:00:00', id=u'id_date_1') - client.click(link=u'Articles') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(link=u' Add article ', timeout=u'8000') - client.click(link=u' Add article ') - client.waits.forPageLoad(timeout=u'20000') - client.type(text=u'Test Art', id=u'id_title') - client.type(text=u'

Test

', id=u'id_content') - client.click(xpath=u"//a[@id='calendarlink0']/img") - client.click(link=u'17') - client.click(xpath=u"//a[@id='clocklink0']/img") - client.click(link=u'6 a.m.') - client.click(id=u'id_section') - client.select(option=u'Section object', id=u'id_section') - client.click(value=u'1') - client.click(name=u'_save') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(xpath=u"//div[@id='changelist']/form/table/tbody/tr/th/a", timeout=u'8000') - client.click(xpath=u"//div[@id='changelist']/form/table/tbody/tr/th/a") - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(timeout=u'8000', id=u'id_content') - client.click(id=u'id_content') - client.type(text=u'

Test This

', id=u'id_content') - client.click(name=u'_continue') - client.waits.forPageLoad(timeout=u'20000') - client.asserts.assertValue(validator=u'

Test This

', id=u'id_content') - client.click(link=u'Articles') - client.waits.forPageLoad(timeout=u'20000') - client.check(name=u'_selected_action') - client.click(name=u'action') - client.check(name=u'_selected_action') - client.click(link=u' Home ') - client.waits.forPageLoad(timeout=u'20000') - -def test_inlineEditandCreate(): - client = WindmillTestClient(calling_func_name()) - - client.open(url=ADMIN_URL) - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'Parents') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(link=u' Add parent ', timeout=u'8000') - client.click(link=u' Add parent ') - client.waits.forPageLoad(timeout=u'20000') - client.type(text=u'Papa', id=u'id_name') - client.type(text=u'Billy', id=u'id_child_set-0-name') - client.type(text=u'Bobby', id=u'id_child_set-1-name') - client.type(text=u'Betty', id=u'id_child_set-2-name') - client.click(name=u'_save') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(link=u'Parent object', timeout=u'8000') - client.click(link=u'Parent object') - client.waits.forPageLoad(timeout=u'20000') - client.asserts.assertValue(validator=u'Billy', id=u'id_child_set-0-name') - client.asserts.assertValue(validator=u'Bobby', id=u'id_child_set-1-name') - client.asserts.assertValue(validator=u'Betty', id=u'id_child_set-2-name') - client.click(link=u'Home') - client.waits.forPageLoad(timeout=u'20000') - - -def test_adminActionEmptyModels(): - client = WindmillTestClient(calling_func_name()) - - client.open(url=ADMIN_URL) - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'Empty models') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(link=u' Add empty model ', timeout=u'8000') - client.click(link=u' Add empty model ') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(timeout=u'8000', name=u'_save') - client.click(name=u'_save') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(link=u' Add empty model ', timeout=u'8000') - client.click(link=u' Add empty model ') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(timeout=u'8000', name=u'_continue') - client.click(name=u'_continue') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(link=u'Empty models', timeout=u'8000') - client.click(link=u'Empty models') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(link=u'Primary key = 2', timeout=u'8000') - client.click(link=u'Primary key = 2') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(timeout=u'8000', name=u'_addanother') - client.click(name=u'_addanother') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(timeout=u'8000', name=u'_save') - client.click(name=u'_save') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(link=u'Primary key = 3', timeout=u'8000') - client.click(link=u'Primary key = 3') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(timeout=u'8000', name=u'_addanother') - client.click(name=u'_addanother') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(timeout=u'8000', name=u'_save') - client.click(name=u'_save') - client.waits.forPageLoad(timeout=u'20000') - client.check(xpath=u"//div[@id='changelist']/form/table/tbody/tr[2]/td[1]/input") - client.check(name=u'_selected_action') - client.click(name=u'action') - client.select(option=u'Delete selected empty models', name=u'action') - client.click(value=u'delete_selected') - client.click(name=u'index') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(timeout=u'8000', value=u"Yes, I'm sure") - client.click(value=u"Yes, I'm sure") - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(link=u'Primary key = 2', timeout=u'8000') - client.click(link=u'Primary key = 2') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(link=u'Delete', timeout=u'8000') - client.click(link=u'Delete') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(timeout=u'8000', value=u"Yes, I'm sure") - client.click(value=u"Yes, I'm sure") - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(link=u' Home ', timeout=u'8000') - client.click(link=u' Home ') - client.waits.forPageLoad(timeout=u'20000') - -def test_parentChildRelationship(): - client = WindmillTestClient(calling_func_name()) - - client.open(url=ADMIN_URL) - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(xpath=u"//div[@id='content-main']/div/table/tbody/tr[21]/td/a", timeout=u'8000') - client.click(xpath=u"//div[@id='content-main']/div/table/tbody/tr[21]/td/a") - client.click(name=u'_save') - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'Recommender object') - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'Home') - client.waits.forPageLoad(timeout=u'20000') - client.click(xpath=u"//div[@id='content-main']/div/table/tbody/tr[20]/td/a") - client.click(id=u'id_recommender') - client.select(option=u'Recommender object', id=u'id_recommender') - client.click(value=u'1') - client.click(name=u'_save') - client.waits.forPageLoad(timeout=u'20000') - client.open(url=ADMIN_URL) - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'Languages') - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u' Add language ') - client.waits.forPageLoad(timeout=u'20000') - client.type(text=u'en', id=u'id_iso') - client.type(text=u'testEnglish', id=u'id_name') - client.type(text=u'test', id=u'id_english_name') - client.click(xpath=u"//form[@id='language_form']/div/fieldset/div[4]/div/label") - client.check(id=u'id_shortlist') - client.click(name=u'_save') - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u' Home ') - client.waits.forPageLoad(timeout=u'20000') - -def test_AdminAuthContrib(): - client = WindmillTestClient(calling_func_name()) - - client.open(url=ADMIN_URL) - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(link=u'Users', timeout=u'8000') - client.click(link=u'Users') - client.waits.forPageLoad(timeout=u'20000') - #print client.commands.getPageText() - client.asserts.assertNode(link=u'adduser') - client.asserts.assertNode(link=u'changeuser') - client.asserts.assertNode(link=u'deleteuser') - client.asserts.assertNode(link=u'joepublic') - client.asserts.assertNode(link=u'super') - client.click(link=u'Yes') - client.waits.forPageLoad(timeout=u'20000') - client.asserts.assertNode(link=u'adduser') - client.asserts.assertNode(link=u'changeuser') - client.asserts.assertNode(link=u'deleteuser') - # client.asserts.assertNode(link=u'super') - # client.click(link=u'6 total') - # client.waits.forPageLoad(timeout=u'20000') - # client.waits.forElement(link=u'super', timeout=u'8000') - client.click(link=u'super') - client.waits.forPageLoad(timeout=u'20000') - client.waits.forElement(link=u'Clear all', timeout=u'8000') - client.click(link=u'Clear all') - client.click(link=u'Choose all') - client.click(name=u'_continue') - client.waits.forPageLoad(timeout=u'20000') - client.asserts.assertValue(validator=u'2007-05-30', id=u'id_date_joined_0') - client.asserts.assertValue(validator=u'13:20:10', id=u'id_date_joined_1') - client.asserts.assertValue(validator=u'Super', id=u'id_first_name') - client.asserts.assertValue(validator=u'User', id=u'id_last_name') - client.asserts.assertValue(validator=u'super@example.com', id=u'id_email') - client.asserts.assertValue(validator=u'on', id=u'id_is_staff') - client.asserts.assertValue(validator=u'on', id=u'id_is_active') - client.asserts.assertValue(validator=u'on', id=u'id_is_superuser') - client.asserts.assertValue(validator=u'super', id=u'id_username') - client.click(link=u'Users') - client.waits.forPageLoad(timeout=u'20000') - client.type(text=u'super', id=u'searchbar') - client.click(value=u'Search') - client.waits.forPageLoad(timeout=u'20000') - client.asserts.assertNode(link=u'super') - client.click(link=u' Home ') - client.waits.forPageLoad(timeout=u'20000') - - -def test_contribFlatSitesRedirect(): - client = WindmillTestClient(calling_func_name()) - - client.open(url=ADMIN_URL) - client.waits.forPageLoad(timeout=u'20000') - #print client.commands.getPageText() - client.click(xpath=u"//div[@id='content-main']/div[table/caption/a/text()='Flatpages']/table/tbody/tr[1]/td/a") - client.waits.forPageLoad(timeout=u'20000') - #print client.commands.getPageText() - client.click(id=u'id_url') - client.type(text=u'/testflat/test/', id=u'id_url') - client.type(text=u'Test Flat', id=u'id_title') - client.type(text=u'This is some unique test content.', id=u'id_content') - client.select(id='id_sites', val=u'1') - client.click(id=u'fieldsetcollapser1') - client.check(id=u'id_enable_comments') - client.click(name=u'_save') - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'/testflat/test/') - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'Home') - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'Flat pages') - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u' Home ') - client.waits.forPageLoad(timeout=u'20000') - client.click(xpath=u"//div[@id='content-main']/div[table/caption/a/text()='Sites']/table/tbody/tr[1]/th/a") - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'example.com') - client.waits.forPageLoad(timeout=u'20000') - client.click(id=u'id_domain') - client.doubleClick(id=u'id_domain') - client.type(text=u'localhost:8000', id=u'id_domain') - client.click(name=u'_save') - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u' Home ') - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'Flat pages') - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'/testflat/test/') - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'View on site') - client.waits.forPageLoad(timeout=u'20000') - client.asserts.assertText(xpath=u'/html/body', validator=u'\nThis is some unique test content.\n') - client.goBack() - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'Home') - client.waits.forPageLoad(timeout=u'20000') - client.click(xpath=u"//div[@id='content-main']/div[table/caption/a/text()='Redirects']/table/tbody/tr[1]/th/a") - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u' Add redirect ') - client.waits.forPageLoad(timeout=u'20000') - client.click(xpath=u"//ul[@id='id_site']/li/label") - client.waits.forPageLoad(timeout=u'20000') - client.click(id=u'id_site_0') - client.radio(id=u'id_site_0') - client.click(id=u'id_old_path') - client.type(text=u'/events/test', id=u'id_old_path') - client.type(text=u'/', id=u'id_new_path') - client.type(text=u'/test_admin/', id=u'id_new_path') - client.click(id=u'id_new_path') - client.doubleClick(id=u'id_new_path') - client.type(text=u'/testflat/test/', id=u'id_new_path') - client.click(name=u'_save') - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'/events/test') - client.waits.forPageLoad(timeout=u'20000') - client.click(link=u'Home') - client.waits.forPageLoad(timeout=u'20000') - client.open(url=u'http://localhost:8000/events/test') - client.waits.forPageLoad(timeout=u'8000') - client.asserts.assertText(xpath=u'/html/body', validator=u'\nThis is some unique test content.\n') - client.open(url=u'http://localhost:8000/test_admin/admin/') - client.waits.forPageLoad(timeout=u'8000') - client.click(link=u'Log out') - client.waits.forPageLoad(timeout=u'20000') - - -def test_ensureLogout(): - client = WindmillTestClient(calling_func_name()) - - client.open(url=ADMIN_URL) - client.waits.forPageLoad(timeout=u'20000') - client.open(url="%s/accounts/logout"% global_settings.TEST_URL) - client.waits.forPageLoad(timeout=u'20000') - client.asserts.assertText(xpath=u"//div[@id='content']/h1", validator=u'Logged out') - client.asserts.assertText(xpath=u"//div[@id='content']/p", validator=u'Thanks for spending some quality time with the Web site today.') - client.asserts.assertNode(link=u'Log in again') \ No newline at end of file +from primary import * diff --git a/tests/regressiontests/admin_views/windmilltests/primary.py b/tests/regressiontests/admin_views/windmilltests/primary.py new file mode 100644 index 0000000000..7f31cae0c4 --- /dev/null +++ b/tests/regressiontests/admin_views/windmilltests/primary.py @@ -0,0 +1,493 @@ +from windmill.authoring import WindmillTestClient +from django.test.utils import calling_func_name +from windmill.conf import global_settings +ADMIN_URL = "%s/test_admin/admin" % global_settings.TEST_URL + + +def test_loginAndSetup(): + '''Mostly just a proof of concept to test working order of tests.''' + client = WindmillTestClient(calling_func_name()) + + # print dir(client) + # print dir(client.open) + # print dir(client.commands) + # print client.commands() + + client.open(url=ADMIN_URL) + client.waits.forPageLoad(timeout=u'20000') + client.open(url=ADMIN_URL) + client.waits.forPageLoad(timeout=u'20000') + client.type(text=u'super', id=u'id_username') + client.type(text=u'secret', id=u'id_password') + client.click(value=u'Log in') + client.waits.forPageLoad(timeout=u'20000') + client.asserts.assertNode(xpath=u"//div[@id='content-main']/div/table/tbody/tr[1]/th") + client.asserts.assertNode(link=u'Articles') + client.asserts.assertNode(link=u'Add') + client.asserts.assertNode(link=u'Change') + client.asserts.assertNode(link=u'Admin_Views') + client.asserts.assertNode(xpath=u"//div[@id='user-tools']/strong") + client.click(xpath=u"//div[@id='content-main']/div/table/tbody/tr[22]/td/a") + client.waits.forPageLoad(timeout=u'20000') + client.type(text=u'Test Section', id=u'id_name') + client.click(name=u'_save') + client.waits.forPageLoad(timeout=u'20000') + client.asserts.assertNode(link=u'Section object') + client.click(link=u' Admin_views ') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(link=u'Add', timeout=u'8000') + client.click(link=u'Add') + client.waits.forPageLoad(timeout=u'20000') + client.type(text=u'Test 1', id=u'id_title') + client.type(text=u'This is test content.', id=u'id_content') + client.click(link=u'Today') + client.click(link=u'Now') + client.click(id=u'id_section') + client.select(option=u'Section object', id=u'id_section') + client.click(value=u'1') + #client.asserts.assertValue(validator=u'2009-06-16', id=u'id_date_0') + #client.asserts.assertValue(validator=u'13:31:21', id=u'id_date_1') + client.asserts.assertNode(id=u'id_section') + client.click(name=u'_save') + client.waits.forPageLoad(timeout=u'20000') + client.asserts.assertNode(link=u'This is test content.') + client.asserts.assertNode(xpath=u"//div[@id='changelist']/form/table/tbody/tr/td[2]") + client.asserts.assertNode(xpath=u"//div[@id='changelist']/form/table/tbody/tr/td[3]") + client.asserts.assertNode(xpath=u"//div[@id='changelist']/form/table/tbody/tr/td[4]") + client.asserts.assertNode(xpath=u"//div[@id='changelist']/form/table/tbody/tr/td[5]") + client.asserts.assertNode(xpath=u"//div[@id='changelist']/form/table/tbody/tr/th") + client.click(link=u'Today') + client.waits.forPageLoad(timeout=u'20000') + client.asserts.assertNode(xpath=u"//div[@id='changelist']/form/table/tbody/tr/th") + client.click(link=u' Home ') + client.waits.forPageLoad(timeout=u'20000') + +def test_changeListNamingLinkingHistory(): + '''Creating a Model with strings for pk, and checking history.''' + client = WindmillTestClient(calling_func_name()) + client.open(url=ADMIN_URL) + client.waits.forPageLoad(timeout=u'20000') + # client.open(url=ADMIN_URL) + # client.type(text=u'super', id=u'id_username') + # client.type(text=u'secret', id=u'id_password') + # client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(link=u'Model with string primary keys', timeout=u'8000') + client.click(link=u'Model with string primary keys') + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u' Add model with string primary key ') + client.waits.forPageLoad(timeout=u'20000') + client.type(text=u'hello', id=u'id_id') + client.click(name=u'_save') + client.waits.forPageLoad(timeout=u'20000') + #client.asserts.assertNode(link=u'hello') + client.click(link=u'hello') + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'History') + client.waits.forPageLoad(timeout=u'20000') + client.asserts.assertNode(xpath=u"//table[@id='change-history']/tbody/tr/td") + client.click(link=u'hello') + client.waits.forPageLoad(timeout=u'20000') + client.asserts.assertValue(validator=u'hello', id=u'id_id') + client.click(link=u'Delete') + client.waits.forPageLoad(timeout=u'20000') + client.asserts.assertNode(xpath=u"//div[@id='content']/ul/li") + client.asserts.assertNode(link=u'hello') + client.click(value=u"Yes, I'm sure") + client.waits.forPageLoad(timeout=u'20000') + client.asserts.assertText(xpath=u"//div[@id='changelist']/form/p", validator=u'\n\n1 model with string primary key\n\n\n') + client.click(link=u' Home ') + +def test_filtersSearchOnChangeList(): + '''Testing Updates and Filters/Search on Person Models''' + client = WindmillTestClient(calling_func_name()) + + client.open(url=ADMIN_URL) + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'Persons') + client.asserts.assertNode(link=u'John Mauchly') + client.asserts.assertNode(link=u'Grace Hooper') + client.asserts.assertNode(link=u'Guido van Rossum') + client.asserts.assertSelected(validator=u'Male', id=u'id_form-0-gender') + client.asserts.assertValue(validator=u'1', id=u'id_form-1-gender') + client.asserts.assertSelected(validator=u'Male', id=u'id_form-2-gender') + client.asserts.assertValue(validator=u'on', id=u'id_form-0-alive') + client.asserts.assertValue(validator=u'on', id=u'id_form-1-alive') + client.asserts.assertValue(validator=u'on', id=u'id_form-2-alive') + client.click(link=u'John Mauchly') + client.asserts.assertValue(validator=u'John Mauchly', id=u'id_name') + client.asserts.assertSelected(validator=u'Male', id=u'id_gender') + client.asserts.assertValue(validator=u'on', id=u'id_alive') + client.check(id=u'id_alive') + client.click(xpath=u"//form[@id='person_form']/div/fieldset/div[2]") + client.click(id=u'id_gender') + client.select(option=u'Female', id=u'id_gender') + client.click(value=u'2') + client.click(id=u'id_name') + client.type(text=u'John Mauchly Updated', id=u'id_name') + client.click(name=u'_save') + client.asserts.assertSelected(validator=u'Female', id=u'id_form-0-gender') + client.asserts.assertValue(validator=u'on', id=u'id_form-0-alive') + client.asserts.assertNode(link=u'John Mauchly Updated') + client.click(id=u'searchbar') + client.type(text=u'John', id=u'searchbar') + client.click(value=u'Search') + client.asserts.assertNode(link=u'John Mauchly Updated') + client.click(link=u'3 total') + client.type(text=u'Grace', id=u'searchbar') + client.click(value=u'Search') + client.asserts.assertNode(link=u'Grace Hooper') + client.click(link=u'3 total') + client.asserts.assertNode(link=u'Guido van Rossum') + client.click(link=u'Female') + client.asserts.assertNode(link=u'John Mauchly Updated') + client.click(link=u'All') + client.asserts.assertNode(link=u'Guido van Rossum') + client.click(link=u' Home ') + +def test_defaultDeleteAdminAction(): + '''Admin Actions test. Test the default delete action.''' + client = WindmillTestClient(calling_func_name()) + + client.open(url=ADMIN_URL) + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'Fabrics') + client.check(name=u'_selected_action') + client.click(name=u'action') + client.select(option=u'Delete selected fabrics', name=u'action') + client.click(value=u'delete_selected') + client.click(name=u'index') + client.click(value=u"Yes, I'm sure") + client.asserts.assertNode(link=u'Vertical') + client.asserts.assertNode(link=u'Horizontal') + +def test_dateTimeModelsandWidgets(): + client = WindmillTestClient(calling_func_name()) + + client.open(url=ADMIN_URL) + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'Articles') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(link=u'Date', timeout=u'8000') + client.click(link=u'Date') + client.waits.forPageLoad(timeout=u'20000') + client.asserts.assertText(xpath=u"//div[@id='changelist']/form/table/tbody/tr/td[2]", validator=u'March 18, 2000, 11:54 a.m.') + client.asserts.assertText(xpath=u"//div[@id='changelist']/form/table/tbody/tr[2]/td[2]", validator=u'March 18, 2008, 11:54 a.m.') + client.asserts.assertText(xpath=u"//div[@id='changelist']/form/table/tbody/tr/td[4]", validator=u'2000') + client.asserts.assertText(xpath=u"//div[@id='changelist']/form/table/tbody/tr[2]/td[4]", validator=u'2008') + client.asserts.assertText(xpath=u"//div[@id='changelist']/form/table/tbody/tr[3]/td[4]", validator=u'2009') + client.click(link=u'Modeladmin year') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(link=u'Content', timeout=u'8000') + client.click(link=u'Content') + client.waits.forPageLoad(timeout=u'20000') + client.asserts.assertText(xpath=u"//div[@id='changelist']/form/table/tbody/tr/td[4]", validator=u'2008') + client.click(xpath=u"//div[@id='changelist']/form/table/tbody/tr/th/a") + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(xpath=u"//a[@id='calendarlink0']/img", timeout=u'8000') + client.click(xpath=u"//a[@id='calendarlink0']/img") + client.click(link=u'Cancel') + client.click(xpath=u"//a[@id='clocklink0']/img") + client.click(link=u'Midnight') + client.click(id=u'id_date_1') + client.asserts.assertValue(validator=u'00:00:00', id=u'id_date_1') + client.click(xpath=u"//a[@id='clocklink0']/img") + client.click(link=u'6 a.m.') + client.asserts.assertValue(validator=u'06:00:00', id=u'id_date_1') + client.click(xpath=u"//a[@id='clocklink0']/img") + client.click(link=u'Noon') + client.click(id=u'id_date_1') + client.asserts.assertValue(validator=u'12:00:00', id=u'id_date_1') + client.click(link=u'Articles') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(link=u' Add article ', timeout=u'8000') + client.click(link=u' Add article ') + client.waits.forPageLoad(timeout=u'20000') + client.type(text=u'Test Art', id=u'id_title') + client.type(text=u'

Test

', id=u'id_content') + client.click(xpath=u"//a[@id='calendarlink0']/img") + client.click(link=u'17') + client.click(xpath=u"//a[@id='clocklink0']/img") + client.click(link=u'6 a.m.') + client.click(id=u'id_section') + client.select(option=u'Section object', id=u'id_section') + client.click(value=u'1') + client.click(name=u'_save') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(xpath=u"//div[@id='changelist']/form/table/tbody/tr/th/a", timeout=u'8000') + client.click(xpath=u"//div[@id='changelist']/form/table/tbody/tr/th/a") + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(timeout=u'8000', id=u'id_content') + client.click(id=u'id_content') + client.type(text=u'

Test This

', id=u'id_content') + client.click(name=u'_continue') + client.waits.forPageLoad(timeout=u'20000') + client.asserts.assertValue(validator=u'

Test This

', id=u'id_content') + client.click(link=u'Articles') + client.waits.forPageLoad(timeout=u'20000') + client.check(name=u'_selected_action') + client.click(name=u'action') + client.check(name=u'_selected_action') + client.click(link=u' Home ') + client.waits.forPageLoad(timeout=u'20000') + +def test_inlineEditandCreate(): + client = WindmillTestClient(calling_func_name()) + + client.open(url=ADMIN_URL) + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'Parents') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(link=u' Add parent ', timeout=u'8000') + client.click(link=u' Add parent ') + client.waits.forPageLoad(timeout=u'20000') + client.type(text=u'Papa', id=u'id_name') + client.type(text=u'Billy', id=u'id_child_set-0-name') + client.type(text=u'Bobby', id=u'id_child_set-1-name') + client.type(text=u'Betty', id=u'id_child_set-2-name') + client.click(name=u'_save') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(link=u'Parent object', timeout=u'8000') + client.click(link=u'Parent object') + client.waits.forPageLoad(timeout=u'20000') + client.asserts.assertValue(validator=u'Billy', id=u'id_child_set-0-name') + client.asserts.assertValue(validator=u'Bobby', id=u'id_child_set-1-name') + client.asserts.assertValue(validator=u'Betty', id=u'id_child_set-2-name') + client.click(link=u'Home') + client.waits.forPageLoad(timeout=u'20000') + + +def test_adminActionEmptyModels(): + client = WindmillTestClient(calling_func_name()) + + client.open(url=ADMIN_URL) + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'Empty models') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(link=u' Add empty model ', timeout=u'8000') + client.click(link=u' Add empty model ') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(timeout=u'8000', name=u'_save') + client.click(name=u'_save') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(link=u' Add empty model ', timeout=u'8000') + client.click(link=u' Add empty model ') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(timeout=u'8000', name=u'_continue') + client.click(name=u'_continue') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(link=u'Empty models', timeout=u'8000') + client.click(link=u'Empty models') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(link=u'Primary key = 2', timeout=u'8000') + client.click(link=u'Primary key = 2') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(timeout=u'8000', name=u'_addanother') + client.click(name=u'_addanother') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(timeout=u'8000', name=u'_save') + client.click(name=u'_save') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(link=u'Primary key = 3', timeout=u'8000') + client.click(link=u'Primary key = 3') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(timeout=u'8000', name=u'_addanother') + client.click(name=u'_addanother') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(timeout=u'8000', name=u'_save') + client.click(name=u'_save') + client.waits.forPageLoad(timeout=u'20000') + client.check(xpath=u"//div[@id='changelist']/form/table/tbody/tr[2]/td[1]/input") + client.check(name=u'_selected_action') + client.click(name=u'action') + client.select(option=u'Delete selected empty models', name=u'action') + client.click(value=u'delete_selected') + client.click(name=u'index') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(timeout=u'8000', value=u"Yes, I'm sure") + client.click(value=u"Yes, I'm sure") + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(link=u'Primary key = 2', timeout=u'8000') + client.click(link=u'Primary key = 2') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(link=u'Delete', timeout=u'8000') + client.click(link=u'Delete') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(timeout=u'8000', value=u"Yes, I'm sure") + client.click(value=u"Yes, I'm sure") + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(link=u' Home ', timeout=u'8000') + client.click(link=u' Home ') + client.waits.forPageLoad(timeout=u'20000') + +def test_parentChildRelationship(): + client = WindmillTestClient(calling_func_name()) + + client.open(url=ADMIN_URL) + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(xpath=u"//div[@id='content-main']/div/table/tbody/tr[21]/td/a", timeout=u'8000') + client.click(xpath=u"//div[@id='content-main']/div/table/tbody/tr[21]/td/a") + client.click(name=u'_save') + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'Recommender object') + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'Home') + client.waits.forPageLoad(timeout=u'20000') + client.click(xpath=u"//div[@id='content-main']/div/table/tbody/tr[20]/td/a") + client.click(id=u'id_recommender') + client.select(option=u'Recommender object', id=u'id_recommender') + client.click(value=u'1') + client.click(name=u'_save') + client.waits.forPageLoad(timeout=u'20000') + client.open(url=ADMIN_URL) + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'Languages') + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u' Add language ') + client.waits.forPageLoad(timeout=u'20000') + client.type(text=u'en', id=u'id_iso') + client.type(text=u'testEnglish', id=u'id_name') + client.type(text=u'test', id=u'id_english_name') + client.click(xpath=u"//form[@id='language_form']/div/fieldset/div[4]/div/label") + client.check(id=u'id_shortlist') + client.click(name=u'_save') + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u' Home ') + client.waits.forPageLoad(timeout=u'20000') + +def test_AdminAuthContrib(): + client = WindmillTestClient(calling_func_name()) + + client.open(url=ADMIN_URL) + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(link=u'Users', timeout=u'8000') + client.click(link=u'Users') + client.waits.forPageLoad(timeout=u'20000') + #print client.commands.getPageText() + client.asserts.assertNode(link=u'adduser') + client.asserts.assertNode(link=u'changeuser') + client.asserts.assertNode(link=u'deleteuser') + client.asserts.assertNode(link=u'joepublic') + client.asserts.assertNode(link=u'super') + client.click(link=u'Yes') + client.waits.forPageLoad(timeout=u'20000') + client.asserts.assertNode(link=u'adduser') + client.asserts.assertNode(link=u'changeuser') + client.asserts.assertNode(link=u'deleteuser') + # client.asserts.assertNode(link=u'super') + # client.click(link=u'6 total') + # client.waits.forPageLoad(timeout=u'20000') + # client.waits.forElement(link=u'super', timeout=u'8000') + client.click(link=u'super') + client.waits.forPageLoad(timeout=u'20000') + client.waits.forElement(link=u'Clear all', timeout=u'8000') + client.click(link=u'Clear all') + client.click(link=u'Choose all') + client.click(name=u'_continue') + client.waits.forPageLoad(timeout=u'20000') + client.asserts.assertValue(validator=u'2007-05-30', id=u'id_date_joined_0') + client.asserts.assertValue(validator=u'13:20:10', id=u'id_date_joined_1') + client.asserts.assertValue(validator=u'Super', id=u'id_first_name') + client.asserts.assertValue(validator=u'User', id=u'id_last_name') + client.asserts.assertValue(validator=u'super@example.com', id=u'id_email') + client.asserts.assertValue(validator=u'on', id=u'id_is_staff') + client.asserts.assertValue(validator=u'on', id=u'id_is_active') + client.asserts.assertValue(validator=u'on', id=u'id_is_superuser') + client.asserts.assertValue(validator=u'super', id=u'id_username') + client.click(link=u'Users') + client.waits.forPageLoad(timeout=u'20000') + client.type(text=u'super', id=u'searchbar') + client.click(value=u'Search') + client.waits.forPageLoad(timeout=u'20000') + client.asserts.assertNode(link=u'super') + client.click(link=u' Home ') + client.waits.forPageLoad(timeout=u'20000') + + +def test_contribFlatSitesRedirect(): + client = WindmillTestClient(calling_func_name()) + + client.open(url=ADMIN_URL) + client.waits.forPageLoad(timeout=u'20000') + #print client.commands.getPageText() + client.click(xpath=u"//div[@id='content-main']/div[table/caption/a/text()='Flatpages']/table/tbody/tr[1]/td/a") + client.waits.forPageLoad(timeout=u'20000') + #print client.commands.getPageText() + client.click(id=u'id_url') + client.type(text=u'/testflat/test/', id=u'id_url') + client.type(text=u'Test Flat', id=u'id_title') + client.type(text=u'This is some unique test content.', id=u'id_content') + client.select(id='id_sites', val=u'1') + client.click(id=u'fieldsetcollapser1') + client.check(id=u'id_enable_comments') + client.click(name=u'_save') + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'/testflat/test/') + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'Home') + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'Flat pages') + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u' Home ') + client.waits.forPageLoad(timeout=u'20000') + client.click(xpath=u"//div[@id='content-main']/div[table/caption/a/text()='Sites']/table/tbody/tr[1]/th/a") + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'example.com') + client.waits.forPageLoad(timeout=u'20000') + client.click(id=u'id_domain') + client.doubleClick(id=u'id_domain') + client.type(text=u'localhost:8000', id=u'id_domain') + client.click(name=u'_save') + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u' Home ') + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'Flat pages') + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'/testflat/test/') + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'View on site') + client.waits.forPageLoad(timeout=u'20000') + client.asserts.assertText(xpath=u'/html/body', validator=u'\nThis is some unique test content.\n') + client.goBack() + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'Home') + client.waits.forPageLoad(timeout=u'20000') + client.click(xpath=u"//div[@id='content-main']/div[table/caption/a/text()='Redirects']/table/tbody/tr[1]/th/a") + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u' Add redirect ') + client.waits.forPageLoad(timeout=u'20000') + client.click(xpath=u"//ul[@id='id_site']/li/label") + client.waits.forPageLoad(timeout=u'20000') + client.click(id=u'id_site_0') + client.radio(id=u'id_site_0') + client.click(id=u'id_old_path') + client.type(text=u'/events/test', id=u'id_old_path') + client.type(text=u'/', id=u'id_new_path') + client.type(text=u'/test_admin/', id=u'id_new_path') + client.click(id=u'id_new_path') + client.doubleClick(id=u'id_new_path') + client.type(text=u'/testflat/test/', id=u'id_new_path') + client.click(name=u'_save') + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'/events/test') + client.waits.forPageLoad(timeout=u'20000') + client.click(link=u'Home') + client.waits.forPageLoad(timeout=u'20000') + client.open(url=u'http://localhost:8000/events/test') + client.waits.forPageLoad(timeout=u'8000') + client.asserts.assertText(xpath=u'/html/body', validator=u'\nThis is some unique test content.\n') + client.open(url=u'http://localhost:8000/test_admin/admin/') + client.waits.forPageLoad(timeout=u'8000') + client.click(link=u'Log out') + client.waits.forPageLoad(timeout=u'20000') + + +def test_ensureLogout(): + client = WindmillTestClient(calling_func_name()) + + client.open(url=ADMIN_URL) + client.waits.forPageLoad(timeout=u'20000') + client.open(url="%s/accounts/logout"% global_settings.TEST_URL) + client.waits.forPageLoad(timeout=u'20000') + client.asserts.assertText(xpath=u"//div[@id='content']/h1", validator=u'Logged out') + client.asserts.assertText(xpath=u"//div[@id='content']/p", validator=u'Thanks for spending some quality time with the Web site today.') + client.asserts.assertNode(link=u'Log in again') \ No newline at end of file diff --git a/tests/runtests.py b/tests/runtests.py index 9fa238ac6f..463a1492b4 100755 --- a/tests/runtests.py +++ b/tests/runtests.py @@ -178,8 +178,12 @@ def django_tests(verbosity, interactive, test_labels): if not hasattr(settings, 'TEST_RUNNER'): settings.TEST_RUNNER = 'django.test.simple.run_tests' #establish coverage settings for the regression suite - settings.COVERAGE_MODULE_EXCLUDES = ['modeltests*', 'regressiontests*', 'from .* import .*', 'import .*',] - settings.COVERAGE_CODE_EXCLUDES = ['def __unicode__\(self\):', 'def get_absolute_url\(self\):'] + settings.COVERAGE_MODULE_EXCLUDES = ['modeltests*', 'regressiontests*'] + settings.COVERAGE_CODE_EXCLUDES = ['def __unicode__\(self\):', + 'def get_absolute_url\(self\):', + 'from .* import .*', + 'import .*', + 'from *'] # depending on how this is run, we might need to tell the coverage libraries to consider django.* settings.COVERAGE_ADDITIONAL_MODULES = ['django']