Ejemplo n.º 1
0
 def test_likes_multiple_users_increment_remove_likes_decrement(
         self, client, fake_auth, mock_asset):
     course_users = Course.find_by_id(mock_asset.course_id).users
     user_iterator = (user for user in course_users
                      if user not in mock_asset.users)
     different_user_1 = next(user_iterator)
     different_user_2 = next(user_iterator)
     fake_auth.login(different_user_1.id)
     response = self._api_like_asset(asset_id=mock_asset.id,
                                     client=client,
                                     expected_status_code=200)
     assert response.json['likes'] == 1
     assert response.json['liked'] is True
     fake_auth.login(different_user_2.id)
     response = self._api_like_asset(asset_id=mock_asset.id,
                                     client=client,
                                     expected_status_code=200)
     assert response.json['likes'] == 2
     assert response.json['liked'] is True
     fake_auth.login(different_user_1.id)
     response = self._api_remove_like_asset(asset_id=mock_asset.id,
                                            client=client,
                                            expected_status_code=200)
     assert response.json['likes'] == 1
     assert response.json['liked'] is False
     fake_auth.login(different_user_2.id)
     response = self._api_remove_like_asset(asset_id=mock_asset.id,
                                            client=client,
                                            expected_status_code=200)
     assert response.json['likes'] == 0
     assert response.json['liked'] is False
Ejemplo n.º 2
0
 def test_teacher_view_asset(self, client, fake_auth, mock_asset):
     """Authorized user can view asset."""
     course = Course.find_by_id(mock_asset.course_id)
     instructors = list(filter(lambda u: is_teaching(u), course.users))
     fake_auth.login(instructors[0].id)
     asset = _api_get_asset(asset_id=mock_asset.id, client=client)
     assert asset['id'] == mock_asset.id
Ejemplo n.º 3
0
 def test_delete_asset_by_teacher(self, client, fake_auth, mock_asset,
                                  mock_category):
     """Authorized user can delete asset."""
     course = Course.find_by_id(mock_asset.course_id)
     instructors = list(filter(lambda u: is_teaching(u), course.users))
     fake_auth.login(instructors[0].id)
     self._verify_delete_asset(mock_asset.id, client)
Ejemplo n.º 4
0
 def test_teacher_download(self, app, client, fake_auth, mock_asset):
     """Authorized user can download asset."""
     course = Course.find_by_id(mock_asset.course_id)
     instructors = list(filter(lambda u: is_teaching(u), course.users))
     fake_auth.login(instructors[0].id)
     # TODO: Mock S3 so authorized user actually gets download. For now, 404 oddly indicates success.
     self._api_download_asset(app,
                              asset_id=mock_asset.id,
                              client=client,
                              expected_status_code=404)
Ejemplo n.º 5
0
 def test_errant_remove_like_does_not_decrement(self, client, fake_auth,
                                                mock_asset):
     course_users = Course.find_by_id(mock_asset.course_id).users
     different_user = next(user for user in course_users
                           if user not in mock_asset.users)
     fake_auth.login(different_user.id)
     asset = _api_get_asset(asset_id=mock_asset.id, client=client)
     assert asset['likes'] == 0
     assert asset['liked'] is False
     response = self._api_remove_like_asset(asset_id=mock_asset.id,
                                            client=client,
                                            expected_status_code=200)
     assert response.json['likes'] == 0
     assert response.json['liked'] is False
Ejemplo n.º 6
0
 def test_likes_same_user_does_not_increment(self, client, fake_auth,
                                             mock_asset):
     course_users = Course.find_by_id(mock_asset.course_id).users
     different_user = next(user for user in course_users
                           if user not in mock_asset.users)
     fake_auth.login(different_user.id)
     response = self._api_like_asset(asset_id=mock_asset.id,
                                     client=client,
                                     expected_status_code=200)
     assert response.json['likes'] == 1
     response = self._api_like_asset(asset_id=mock_asset.id,
                                     client=client,
                                     expected_status_code=200)
     assert response.json['likes'] == 1
Ejemplo n.º 7
0
 def test_like_asset_by_course_user(self, client, fake_auth, mock_asset):
     """Another user in the same court can like an asset."""
     course_users = Course.find_by_id(mock_asset.course_id).users
     different_user = next(user for user in course_users
                           if user not in mock_asset.users)
     fake_auth.login(different_user.id)
     asset = _api_get_asset(asset_id=mock_asset.id, client=client)
     assert asset['likes'] == 0
     assert asset['liked'] is False
     response = self._api_like_asset(asset_id=mock_asset.id,
                                     client=client,
                                     expected_status_code=200)
     assert response.json['likes'] == 1
     assert response.json['liked'] is True
     asset = _api_get_asset(asset_id=mock_asset.id, client=client)
     assert asset['likes'] == 1
     assert asset['liked'] is True
Ejemplo n.º 8
0
 def test_increment_asset_view_count(self, client, fake_auth, mock_asset):
     course = Course.find_by_id(mock_asset.course_id)
     instructors = list(filter(lambda u: is_teaching(u), course.users))
     # Instructor 1 increments view count.
     fake_auth.login(instructors[0].id)
     asset = _api_get_asset(asset_id=mock_asset.id, client=client)
     assert asset['views'] == 1
     # Instructor 2 increments view count.
     fake_auth.login(instructors[1].id)
     asset = _api_get_asset(asset_id=mock_asset.id, client=client)
     assert asset['views'] == 2
     # Repeat views do not increment,
     fake_auth.login(instructors[0].id)
     asset = _api_get_asset(asset_id=mock_asset.id, client=client)
     assert asset['views'] == 2
     # Views by asset owners do not increment.
     fake_auth.login(mock_asset.users[0].id)
     asset = _api_get_asset(asset_id=mock_asset.id, client=client)
     assert asset['views'] == 2