diff --git a/001-simple-tr/reahl/simple-tr/.reahlalias b/001-simple-tr/reahl/simple-tr/.reahlalias
index 55a7899..4eaf44d 100644
--- a/001-simple-tr/reahl/simple-tr/.reahlalias
+++ b/001-simple-tr/reahl/simple-tr/.reahlalias
@@ -1,3 +1 @@
- unit setup -- check
- unit setup -- -q pytest --addopts '-s --pyargs addressbook2_dev'
- demosetup setup -- -q pytest --addopts '-s -o python_functions=demo_setup --pyargs addressbook2_dev'
+ unit setup -- -q pytest --addopts '-s --pyargs simple_tr_dev'
diff --git a/001-simple-tr/reahl/simple-tr/.reahlproject b/001-simple-tr/reahl/simple-tr/.reahlproject
index d41d524..fe6c07e 100644
--- a/001-simple-tr/reahl/simple-tr/.reahlproject
+++ b/001-simple-tr/reahl/simple-tr/.reahlproject
@@ -8,4 +8,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/001-simple-tr/reahl/simple-tr/addressbook2_dev/test_addressbook2.py b/001-simple-tr/reahl/simple-tr/addressbook2_dev/test_addressbook2.py
deleted file mode 100644
index eec780b..0000000
--- a/001-simple-tr/reahl/simple-tr/addressbook2_dev/test_addressbook2.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# To run this test do:
-# pytest --pyargs addressbook2_dev.test_addressbook2
-# or
-# reahl unit
-#
-# To set up a demo database for playing with, do:
-# pytest -o python_functions=demo_setup --pyargs addressbook2_dev.test_addressbook2
-# or
-# reahl demosetup
-
-from __future__ import print_function, unicode_literals, absolute_import, division
-
-from reahl.tofu.pytestsupport import with_fixtures
-
-from addressbook2 import Address
-
-from reahl.sqlalchemysupport_dev.fixtures import SqlAlchemyFixture
-
-
-@with_fixtures(SqlAlchemyFixture)
-def demo_setup(sql_alchemy_fixture):
- sql_alchemy_fixture.commit = True
- Address(email_address='friend1@some.org', name='Friend1').save()
- Address(email_address='friend2@some.org', name='Friend2').save()
- Address(email_address='friend3@some.org', name='Friend3').save()
- Address(email_address='friend4@some.org', name='Friend4').save()
diff --git a/001-simple-tr/reahl/simple-tr/simple_tr.py b/001-simple-tr/reahl/simple-tr/simple_tr.py
index 324eb2e..f30d6d9 100644
--- a/001-simple-tr/reahl/simple-tr/simple_tr.py
+++ b/001-simple-tr/reahl/simple-tr/simple_tr.py
@@ -30,19 +30,25 @@ def fields(self, fields):
fields.separator = Field(label='Separated by (Regular Expression)', required=True)
fields.joiner = Field(label='Join with (Character String)', required=True)
- @property
+ @property
def has_data(self):
return self.input_text and self.separator and self.joiner
- @exposed('save')
+ @exposed('save', 'clear_inputs')
def events(self, events):
events.save = Event(label='Perform Tr')
+ events.clear_inputs = Event(label='Clear Inputs', action=Action(self.clear_inputs))
@property
def translated_string(self):
import re
return re.sub(self.separator, self.joiner, self.input_text)
+ def clear_inputs(self):
+ self.input_text = ''
+ self.separator = ''
+ self.joiner = ''
+
class MyPage(HTML5Page):
def __init__(self, view):
@@ -61,7 +67,7 @@ def __init__(self, view):
class InputForm(Form):
def __init__(self, view, tr):
- super(__class__, self).__init__(view, 'address_form')
+ super(__class__, self).__init__(view, 'tr_input_form')
inputs = self.add_child(FieldSet(view, legend_text='Enter data then click button'))
inputs.use_layout(FormLayout())
@@ -86,8 +92,29 @@ def __init__(self, view):
self.add_child(P(view, text=tr.translated_string))
+class ClearInputsPage(HTML5Page):
+ def __init__(self, view):
+ super(ClearInputsPage, self).__init__(view)
+ self.body.add_child(ClearInputsForm(view))
+
+
+class ClearInputsForm(Form):
+ def __init__(self, view):
+ super(ClearInputsForm, self).__init__(view, 'clear_inputs_form')
+
+ inputs = self.add_child(FieldSet(view, legend_text='Clear all inputs'))
+ inputs.use_layout(FormLayout())
+
+ tr = TR.for_current_session()
+ button = inputs.add_child(Button(self, tr.events.clear_inputs))
+ button.use_layout(ButtonLayout(style='primary'))
+
+
class MyUI(UserInterface):
def assemble(self):
+ clear_inputs_view = self.define_view('/clear', title='Clear Inputs', page=ClearInputsPage.factory())
home = self.define_view('/', title='x marksthe spot', page=MyPage.factory())
self.define_transition(TR.events.save, home, home)
+ self.define_transition(TR.events.clear_inputs, clear_inputs_view, home)
+
diff --git a/001-simple-tr/reahl/simple-tr/addressbook2_dev/__init__.py b/001-simple-tr/reahl/simple-tr/simple_tr_dev/__init__.py
similarity index 100%
rename from 001-simple-tr/reahl/simple-tr/addressbook2_dev/__init__.py
rename to 001-simple-tr/reahl/simple-tr/simple_tr_dev/__init__.py
diff --git a/001-simple-tr/reahl/simple-tr/simple_tr_dev/test_simple_tr.py b/001-simple-tr/reahl/simple-tr/simple_tr_dev/test_simple_tr.py
new file mode 100644
index 0000000..d6c0d73
--- /dev/null
+++ b/001-simple-tr/reahl/simple-tr/simple_tr_dev/test_simple_tr.py
@@ -0,0 +1,38 @@
+# To run this test do:
+# pytest --pyargs addressbook2_dev.test_addressbook2
+# or
+# reahl unit
+#
+# To set up a demo database for playing with, do:
+# pytest -o python_functions=demo_setup --pyargs addressbook2_dev.test_addressbook2
+# or
+# reahl demosetup
+
+from __future__ import print_function, unicode_literals, absolute_import, division
+
+from reahl.tofu.pytestsupport import with_fixtures
+from reahl.webdev.tools import XPath
+from reahl.web_dev.fixtures import WebFixture
+
+from simple_tr import MyUI
+
+
+@with_fixtures(WebFixture)
+def test_can_translate_delimiter(web_fixture):
+ """A user can log in by going to the Log in page.
+ The name of the currently logged in user is displayed on the home page."""
+
+ wsgi_app = web_fixture.new_wsgi_app(site_root=MyUI, enable_js=True)
+ web_fixture.reahl_server.set_app(wsgi_app)
+ browser = web_fixture.driver_browser
+
+ #import pdb;pdb.set_trace()
+
+ browser.open('/')
+
+ assert not web_fixture.driver_browser.is_element_present(XPath.paragraph_containing('my=dash=delimited=sentence'))
+ browser.type(XPath.input_labelled('Input Text'), 'my-dash-delimited-sentence')
+ browser.type(XPath.input_labelled('Separated by (Regular Expression)'), '-')
+ browser.type(XPath.input_labelled('Join with (Character String)'), '=')
+ browser.click(XPath.button_labelled('Perform Tr'))
+ assert web_fixture.driver_browser.wait_for_element_present(XPath.paragraph_containing('my=dash=delimited=sentence'))