Skip to content

Add web test #3

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions 001-simple-tr/reahl/simple-tr/.reahlalias
Original file line number Diff line number Diff line change
@@ -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'
13 changes: 13 additions & 0 deletions 001-simple-tr/reahl/simple-tr/.reahlproject
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,17 @@
<persisted>
<class locator="simple_tr:TR"/>
</persisted>

<deps purpose="test">
<thirdpartyegg name="pytest" minversion="3.0"/>
<egg name="reahl-tofu"/>
<egg name="reahl-stubble"/>
<egg name="reahl-sqlalchemysupport"/>
<egg name="reahl-sqlitesupport"/>
<egg name="reahl-web-declarative"/>
<egg name="reahl-domain"/>
<egg name="reahl-webdev"/>
<egg name="reahl-dev"/>
</deps>

</project>

This file was deleted.

33 changes: 30 additions & 3 deletions 001-simple-tr/reahl/simple-tr/simple_tr.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand All @@ -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())
Expand All @@ -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)

38 changes: 38 additions & 0 deletions 001-simple-tr/reahl/simple-tr/simple_tr_dev/test_simple_tr.py
Original file line number Diff line number Diff line change
@@ -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'))