Skip to content
Merged
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
69 changes: 69 additions & 0 deletions lms/djangoapps/teams/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,49 @@ def test_bad_course_id(self):
response = self.client.get(bad_team_url)
self.assertEqual(404, response.status_code)

def get_user_course_specific_teams_list(self):
"""Gets the list of user course specific teams."""

# Create a course two
course_two = CourseFactory.create(
teams_configuration={
"max_team_size": 1,
"topics": [
{
"name": "Test topic for course two",
"id": 1,
"description": "Description for test topic for course two."
}
]
}
)

# Login and enroll user in both course course
self.client.login(username=self.user.username, password=self.test_password)
CourseEnrollmentFactory.create(user=self.user, course_id=self.course.id)
CourseEnrollmentFactory.create(user=self.user, course_id=course_two.id)

# Create teams in both courses
course_one_team = CourseTeamFactory.create(name="Course one team", course_id=self.course.id, topic_id=1)
course_two_team = CourseTeamFactory.create(name="Course two team", course_id=course_two.id, topic_id=1) # pylint: disable=unused-variable

# Check that initially list of user teams in course one is empty
course_one_teams_url = reverse('teams_dashboard', args=[self.course.id])
response = self.client.get(course_one_teams_url)
self.assertIn('"teams": {"count": 0', response.content)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry, I didn't realize we were expecting JSON here! Why don't you do:
team_count = json.loads(response.content)['teams']['count']
and then check team_count is what you expect it to be?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've been corrected — JSON isn't being returned here.


# Add user to a course one team
course_one_team.add_user(self.user)

# Check that list of user teams in course one is not empty, it is one now
response = self.client.get(course_one_teams_url)
self.assertIn('"teams": {"count": 1', response.content)

# Check that list of user teams in course two is still empty
course_two_teams_url = reverse('teams_dashboard', args=[course_two.id])
response = self.client.get(course_two_teams_url)
self.assertIn('"teams": {"count": 0', response.content)


class TeamAPITestCase(APITestCase, SharedModuleStoreTestCase):
"""Base class for Team API test cases."""
Expand Down Expand Up @@ -372,6 +415,32 @@ def get_teams_list(self, expected_status=200, data=None, no_course_id=False, **k
data.update({'course_id': self.test_course_1.id})
return self.make_call(reverse('teams_list'), expected_status, 'get', data, **kwargs)

def get_user_course_specific_teams_list(self):
"""Gets the list of user course specific teams."""

# Create and enroll user in both courses
user = self.create_and_enroll_student(
courses=[self.test_course_1, self.test_course_2],
username='test_user_enrolled_both_courses'
)
course_one_data = {'course_id': self.test_course_1.id, 'username': user}
course_two_data = {'course_id': self.test_course_2.id, 'username': user}

# Check that initially list of user teams in course one is empty
team_list = self.get_teams_list(user=user, expected_status=200, data=course_one_data)
self.assertEqual(team_list['count'], 0)

# Add user to a course one team
self.solar_team.add_user(self.users[user])

# Check that list of user teams in course one is not empty now
team_list = self.get_teams_list(user=user, expected_status=200, data=course_one_data)
self.assertEqual(team_list['count'], 1)

# Check that list of user teams in course two is still empty
team_list = self.get_teams_list(user=user, expected_status=200, data=course_two_data)
self.assertEqual(team_list['count'], 0)

def build_team_data(self, name="Test team", course=None, description="Filler description", **kwargs):
"""Creates the payload for creating a team. kwargs can be used to specify additional fields."""
data = kwargs
Expand Down
2 changes: 1 addition & 1 deletion lms/djangoapps/teams/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ def get(self, request, course_id):

user = request.user

user_teams = CourseTeam.objects.filter(membership__user=user)
user_teams = CourseTeam.objects.filter(membership__user=user, course_id=course.id)
user_teams_data = self._serialize_and_paginate(
MyTeamsPagination,
user_teams,
Expand Down