From 0eab14a3341b5016ec57df6586fdde6217f181e5 Mon Sep 17 00:00:00 2001 From: Waqas Khalid Date: Wed, 26 Nov 2014 16:00:54 +0500 Subject: [PATCH] In user profile changing page should reposition window to top When we change the page using pagination in the user profile page the data gets updated but the position of the window remains at pagination. It should change position of window to top. TNL-107 --- .../discussion/views/discussion_user_profile_view.coffee | 1 + common/test/acceptance/pages/lms/discussion.py | 5 +++++ common/test/acceptance/tests/discussion/test_discussion.py | 7 +++++++ 3 files changed, 13 insertions(+) diff --git a/common/static/coffee/src/discussion/views/discussion_user_profile_view.coffee b/common/static/coffee/src/discussion/views/discussion_user_profile_view.coffee index 1f192e12e2..94cb5f1c63 100644 --- a/common/static/coffee/src/discussion/views/discussion_user_profile_view.coffee +++ b/common/static/coffee/src/discussion/views/discussion_user_profile_view.coffee @@ -37,6 +37,7 @@ if Backbone? @numPages = response.num_pages @discussion.reset(response.discussion_data, {silent: false}) history.pushState({}, "", url) + $("html, body").animate({ scrollTop: 0 }); error: => DiscussionUtil.discussionAlert( gettext("Sorry"), diff --git a/common/test/acceptance/pages/lms/discussion.py b/common/test/acceptance/pages/lms/discussion.py index 0fd2a9bcd0..d7c62313e3 100644 --- a/common/test/acceptance/pages/lms/discussion.py +++ b/common/test/acceptance/pages/lms/discussion.py @@ -1,5 +1,6 @@ from contextlib import contextmanager +from bok_choy.javascript import wait_for_js from bok_choy.page_object import PageObject from bok_choy.promise import EmptyPromise, Promise @@ -343,6 +344,10 @@ class DiscussionUserProfilePage(CoursePage): self.q(css='section.user-profile div.sidebar-username').text[0] == self.username ) + @wait_for_js + def is_window_on_top(self): + return self.browser.execute_script("return $('html, body').offset().top") == 0 + def get_shown_thread_ids(self): elems = self.q(css="article.discussion-thread") return [elem.get_attribute("id")[7:] for elem in elems] diff --git a/common/test/acceptance/tests/discussion/test_discussion.py b/common/test/acceptance/tests/discussion/test_discussion.py index 7d8f188f6a..68d6e5f143 100644 --- a/common/test/acceptance/tests/discussion/test_discussion.py +++ b/common/test/acceptance/tests/discussion/test_discussion.py @@ -419,6 +419,7 @@ class DiscussionUserProfileTest(UniqueCourseTest): current_page = 1 total_pages = max(num_threads - 1, 1) / self.PAGE_SIZE + 1 all_pages = range(1, total_pages + 1) + return page def _check_page(): # ensure the page being displayed as "current" is the expected one @@ -479,6 +480,12 @@ class DiscussionUserProfileTest(UniqueCourseTest): def test_151_threads(self): self.check_pages(151) + def test_pagination_window_reposition(self): + page = self.check_pages(50) + page.click_next_page() + page.wait_for_ajax() + self.assertTrue(page.is_window_on_top()) + @attr('shard_1') class DiscussionSearchAlertTest(UniqueCourseTest):