Skip to content

Commit

Permalink
Merge branch 'improve_navigation' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrea Ratto committed Oct 11, 2017
2 parents de1f9dd + 10ffcde commit b9101f0
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 13 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,6 @@ python/

# Vim
*.swp

# PyCharm
.idea/
5 changes: 3 additions & 2 deletions CHANGES.rst
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
Changelog
*********

0.0.2 (unreleased)
0.1.0 (unreleased)
==================

- Nothing changed yet.
- Add update_page and action_performed methods on navigation.
- Wait for pages to load when visiting them.


0.0.1 (2017-06-13)
Expand Down
25 changes: 22 additions & 3 deletions pypom_navigation/navigation.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,29 @@ def visit_page(self, page_id, **kwargs):
""" Visit page id reference in navigation
class
"""
page_class = self.get_page_class(page_id=page_id)
page_instance = page_class(self.page.driver, **kwargs)
page_url = urljoin(self.skin_base_url, self.get_page_url(page_id))

page_instance = self._page_instance(page_id, **kwargs)
page_instance.driver.visit(page_url)
page_instance.wait_for_page_to_load()
self.setPage(page_instance, page_id=page_id)
return page_instance

def update_page(self, page_id, **kwargs):
""" Update the wrapped page with the appropriate instance
mapped to the passed page_id
"""
page_instance = self._page_instance(page_id, **kwargs)
page_instance.wait_for_page_to_load()
self.setPage(page_instance, page_id=page_id)
return page_instance

def action_performed(self, action, **kwargs):
""" Update the wrapped page with the appropriate instance
referenced by the given action on the current page
"""
page_id = self.page_mappings[self.page_id]['actions'][action]
return self.update_page(page_id, **kwargs)

def get_page_url(self, page_id):
""" Return the page url for the current wrapped page """
return get_page_url(self.skin,
Expand All @@ -67,3 +82,7 @@ def get_page_class(self, page_id=None, fallback=None):
self.page_mappings,
page_id=page_id,
fallback=fallback)

def _page_instance(self, page_id, **kwargs):
page_class = self.get_page_class(page_id=page_id)
return page_class(self.page.driver, **kwargs)
42 changes: 34 additions & 8 deletions tests/test_navigation.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,19 @@ def credentials_mapping():
def page_mappings():
return {
'HomePage': {
'path': '/home',
'path': '/home'
},
'AnotherPage': {
'path': '/example',
'actions': {'back': 'HomePage'}
}
}


@pytest.fixture
def default_page_class():
from mock import MagicMock
return lambda *args, **kwargs: MagicMock()
return MagicMock()


def test_navigation_init(
Expand All @@ -47,25 +51,47 @@ def test_navigation_init(
skin_base_url):
""" Navigation init """

assert navigation.page == page_instance
assert page_instance.navigation == navigation
assert navigation.default_page_class == default_page_class
assert navigation.page is page_instance
assert page_instance.navigation is navigation
assert navigation.default_page_class is default_page_class
assert navigation.page_mappings == page_mappings
assert navigation.credentials_mapping == credentials_mapping
assert navigation.skin == skin
assert navigation.skin_base_url == skin_base_url
assert navigation.page_id is None


def test_visit_page(navigation, page_instance):
def test_visit_page(navigation, page_instance, default_page_class):
""" Test visit page """
navigation.page == page_instance

home_page = navigation.visit_page('HomePage')
assert navigation.page is home_page
assert navigation.page_id == 'HomePage'
assert home_page.driver.visit.assert_called_once_with(
'https://skin1-coolsite.com/home') is None
assert home_page.wait_for_page_to_load.assert_called_once() is None
assert default_page_class.assert_called_once_with(page_instance.driver) is None
assert default_page_class.return_value.navigation is navigation


def test_update_page(navigation, page_instance, default_page_class):
""" Test update page """
home_page = navigation.update_page('HomePage')
assert navigation.page is home_page
assert navigation.page_id == 'HomePage'
assert home_page.wait_for_page_to_load.assert_called_once() is None
assert default_page_class.assert_called_once_with(page_instance.driver) is None
assert default_page_class.return_value.navigation is navigation


def test_action_performed(navigation, page_instance, default_page_class):
""" Test visit page """
navigation.setPage(page_instance, 'AnotherPage')
home_page = navigation.action_performed('back')
assert navigation.page is home_page
assert navigation.page_id == 'HomePage'
assert home_page.wait_for_page_to_load.assert_called_once() is None
assert default_page_class.assert_called_once_with(page_instance.driver) is None
assert default_page_class.return_value.navigation is navigation


def test_get_credentials(navigation):
Expand Down

0 comments on commit b9101f0

Please sign in to comment.