diff --git a/common/test/acceptance/pages/lms/discussion.py b/common/test/acceptance/pages/lms/discussion.py index affe1f83e2..2b2f17d9a8 100644 --- a/common/test/acceptance/pages/lms/discussion.py +++ b/common/test/acceptance/pages/lms/discussion.py @@ -444,9 +444,9 @@ class DiscussionUserProfilePage(CoursePage): return ( self.q(css='section.discussion-user-threads[data-course-id="{}"]'.format(self.course_id)).present and - self.q(css='section.user-profile div.sidebar-username').present + self.q(css='section.user-profile a.leaner-profile-link').present and - self.q(css='section.user-profile div.sidebar-username').text[0] == self.username + self.q(css='section.user-profile a.leaner-profile-link').text[0] == self.username ) @wait_for_js @@ -526,6 +526,10 @@ class DiscussionUserProfilePage(CoursePage): "Window is on top" ).fulfill() + def click_on_sidebar_username(self): + self.wait_for_page() + self.q(css='.leaner-profile-link').first.click() + class DiscussionTabHomePage(CoursePage, DiscussionPageMixin): diff --git a/common/test/acceptance/tests/discussion/test_discussion.py b/common/test/acceptance/tests/discussion/test_discussion.py index 9faa4077c4..597df3ad3f 100644 --- a/common/test/acceptance/tests/discussion/test_discussion.py +++ b/common/test/acceptance/tests/discussion/test_discussion.py @@ -19,6 +19,8 @@ from ...pages.lms.discussion import ( DiscussionTabHomePage, DiscussionSortPreferencePage, ) +from ...pages.lms.learner_profile import LearnerProfilePage + from ...fixtures.course import CourseFixture, XBlockFixtureDesc from ...fixtures.discussion import ( SingleThreadViewFixture, @@ -753,6 +755,24 @@ class DiscussionUserProfileTest(UniqueCourseTest): page.wait_for_ajax() self.assertTrue(page.is_window_on_top()) + def test_redirects_to_learner_profile(self): + """ + Scenario: Verify that learner-profile link is present on forum discussions page and we can navigate to it. + + Given that I am on discussion forum user's profile page. + And I can see a username on left sidebar + When I click on my username. + Then I will be navigated to Learner Profile page. + And I can my username on Learner Profile page + """ + learner_profile_page = LearnerProfilePage(self.browser, self.PROFILED_USERNAME) + + page = self.check_pages(1) + page.click_on_sidebar_username() + + learner_profile_page.wait_for_page() + self.assertTrue(learner_profile_page.field_is_visible('username')) + @attr('shard_1') class DiscussionSearchAlertTest(UniqueCourseTest): diff --git a/lms/djangoapps/django_comment_client/forum/views.py b/lms/djangoapps/django_comment_client/forum/views.py index 57f61e1de0..1e66a97c9f 100644 --- a/lms/djangoapps/django_comment_client/forum/views.py +++ b/lms/djangoapps/django_comment_client/forum/views.py @@ -9,6 +9,7 @@ import xml.sax.saxutils as saxutils from django.contrib.auth.decorators import login_required from django.core.context_processors import csrf +from django.core.urlresolvers import reverse from django.contrib.auth.models import User from django.http import Http404, HttpResponseBadRequest from django.views.decorators.http import require_GET @@ -411,16 +412,18 @@ def user_profile(request, course_key, user_id): 'annotated_content_info': _attr_safe_json(annotated_content_info), }) else: + django_user = User.objects.get(id=user_id) context = { 'course': course, 'user': request.user, - 'django_user': User.objects.get(id=user_id), + 'django_user': django_user, 'profiled_user': profiled_user.to_dict(), 'threads': _attr_safe_json(threads), 'user_info': _attr_safe_json(user_info), 'annotated_content_info': _attr_safe_json(annotated_content_info), 'page': query_params['page'], 'num_pages': query_params['num_pages'], + 'learner_profile_page_url': reverse('learner_profile', kwargs={'username': django_user.username}) } return render_to_response('discussion/user_profile.html', context) diff --git a/lms/templates/discussion/_user_profile.html b/lms/templates/discussion/_user_profile.html index b6e845c45a..d4cb4668f4 100644 --- a/lms/templates/discussion/_user_profile.html +++ b/lms/templates/discussion/_user_profile.html @@ -1,7 +1,7 @@ <%! from django.utils.translation import ugettext as _, ungettext %> <%def name="span(num)">${num}
- +