def test_request_is_not_set_in_context___exception_is_raised(self): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = mommy.make(get_user_model()) with assertRaisesRegex(self, Exception, 'Make sure you have "django.core.context_processors.request" in "TEMPLATE_CONTEXT_PROCESSORS"'): ratings({}, item)
def test_request_is_not_set_in_context___exception_is_raised(self): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = fake_user() with assertRaisesRegex(self, Exception, 'Make sure you have "django.core.context_processors.request" in your templates context processor list'): ratings({}, item)
def test_template_name_is_not_set_in_param_or_context___default_is_used_as_template_name(self, get_mock): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = fake_user() ratings({ 'request': request, }, item, read_only=True) get_mock.assert_called_once_with('star_ratings/widget.html')
def test_request_is_not_set_in_context___exception_is_raised(self): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = fake_user() with assertRaisesRegex( self, Exception, 'Make sure you have "django.core.context_processors.request" in your templates context processor list' ): ratings({}, item)
def test_star_count_is_added_to_the_result(self, render_mock): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = fake_user() ratings({ 'request': request, }, item) context = render_mock.call_args_list[0][0][0] self.assertEqual(app_settings.STAR_RATINGS_RANGE, context['star_count'])
def test_user_is_not_authenticated_with_rating_for_object___user_rating_percentage_is_none(self, render_mock): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = AnonymousUser() ratings({ 'request': request, }, item) context = render_mock.call_args_list[0][0][0] self.assertIsNone(context['user_rating_percentage'])
def test_template_name_is_set_in_context___context_is_used_as_template_name(self, get_mock): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = fake_user() ratings({ 'request': request, 'star_ratings_template_name': 'context_template', }, item, read_only=True) get_mock.assert_called_once_with('context_template')
def test_request_user_is_added_to_the_result(self, render_mock): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = fake_user() ratings({ 'request': request, }, item) context = render_mock.call_args_list[0][0][0] self.assertEqual(request.user, context['user'])
def test_icon_width_is_not_set___icon_height_is_32(self, render_mock): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = fake_user() ratings({ 'request': request, }, item) context = render_mock.call_args_list[0][0][0] self.assertEqual(32, context['icon_width'])
def test_id_is_a_uid_with_dsr_prefix(self, render_mock): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = fake_user() ratings({ 'request': request, }, item) context = render_mock.call_args_list[0][0][0] self.assertTrue(context['id'].startswith('dsr')) self.assertIsNotNone(int(context['id'][3:], 16))
def test_icon_width_is_set___icon_height_is_correct(self, width): with patch('django.template.Template.render') as render_mock: item = mommy.make(Foo) request = RequestFactory().get('/') request.user = fake_user() ratings({ 'request': request, }, item, icon_width=width) context = render_mock.call_args_list[0][0][0] self.assertEqual(width, context['icon_width'])
def test_read_only_is_false_user_is_not_authenticated_anon_rating_is_true___editable_is_true(self, render_mock): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = AnonymousUser() ratings({ 'request': request, }, item, read_only=False) context = render_mock.call_args_list[0][0][0] self.assertTrue(context['editable']) self.assertFalse(context['read_only'])
def test_read_only_is_set_to_true___editable_is_false(self, render_mock): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = fake_user() ratings({ 'request': request, }, item, read_only=True) context = render_mock.call_args_list[0][0][0] self.assertFalse(context['editable']) self.assertTrue(context['read_only'])
def test_item_is_not_yet_rated___rating_object_for_item_is_returned(self, render_mock): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = fake_user() ratings({ 'request': request, }, item) context = render_mock.call_args_list[0][0][0] print(context) self.assertIsInstance(context['rating'], get_star_ratings_rating_model()) self.assertEqual(item, context['rating'].content_object)
def test_item_is_rated___rating_object_for_item_is_returned(self, render_mock): item = mommy.make(Foo) rating = get_star_ratings_rating_model().objects.for_instance(item) request = RequestFactory().get('/') request.user = fake_user() ratings({ 'request': request, }, item) context = render_mock.call_args_list[0][0][0] self.assertEqual(rating, context['rating'])
def test_user_is_authenticated_without_rating_for_object___user_rating_is_none(self, render_mock): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = get_user_model().objects.create_user(username='******', password='******') self.client.login(username='******', password='******') ratings({ 'request': request, }, item) context = render_mock.call_args_list[0][0][0] self.assertIsNone(context['user_rating'])
def test_user_is_authenticated_with_rating_for_object___user_rating_for_user_is_returned(self, render_mock): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = get_user_model().objects.create_user(username='******', password='******') self.client.login(username='******', password='******') rating = get_star_ratings_rating_model().objects.rate(item, 3, request.user) user_rating = UserRating.objects.get(rating=rating, user=request.user) ratings({ 'request': request, }, item) context = render_mock.call_args_list[0][0][0] self.assertEqual(user_rating, context['user_rating'])
def test_user_is_authenticated_with_rating_for_object___user_rating_percentage_for_user_is_returned(self, render_mock): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = get_user_model().objects.create_user(username='******', password='******') self.client.login(username='******', password='******') rating = get_star_ratings_rating_model().objects.rate(item, 3, request.user) user_rating = UserRating.objects.get(rating=rating, user=request.user) ratings({ 'request': request, }, item) context = render_mock.call_args_list[0][0][0] expected_avg = 100 * (user_rating.score / Decimal(app_settings.STAR_RATINGS_RANGE)) self.assertEqual(expected_avg, context['user_rating_percentage'])
def test_several_ratings_are_made___percentage_is_correct_in_result(self, scores): with patch('django.template.Template.render') as render_mock: item = mommy.make(Foo) request = RequestFactory().get('/') request.user = fake_user() for score in scores: get_star_ratings_rating_model().objects.rate(item, score, mommy.make(get_user_model())) rating = get_star_ratings_rating_model().objects.for_instance(item) ratings({ 'request': request, }, item) context = render_mock.call_args_list[0][0][0] expected_avg = 100 * (rating.average / Decimal(app_settings.STAR_RATINGS_RANGE)) self.assertEqual(expected_avg, context['percentage'])
def test_request_user_is_added_to_the_result(self): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = mommy.make(get_user_model()) res = ratings({ 'request': request, }, item) self.assertEqual(request.user, res['user'])
def test_star_count_is_added_to_the_result(self): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = mommy.make(get_user_model()) res = ratings({ 'request': request, }, item) self.assertEqual(app_settings.STAR_RATINGS_RANGE, res['star_count'])
def test_icon_width_is_not_set___icon_height_is_32(self): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = mommy.make(get_user_model()) res = ratings({ 'request': request, }, item) self.assertEqual(32, res['icon_width'])
def test_icon_width_is_set___icon_height_is_correct(self, width): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = mommy.make(get_user_model()) res = ratings({ 'request': request, }, item, icon_width=width) self.assertEqual(width, res['icon_width'])
def test_star_count_is_added_to_the_result(self): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = mommy.make(get_user_model()) res = ratings({ 'request': request, }, item) self.assertEqual(STAR_RATINGS_RANGE, res['star_count'])
def test_user_is_not_authenticated_with_rating_for_object___user_rating_is_none(self): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = AnonymousUser() res = ratings({ 'request': request, }, item) self.assertIsNone(res['user_rating'])
def test_stars_list_is_added_to_the_result(self): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = mommy.make(get_user_model()) res = ratings({ 'request': request, }, item) self.assertEqual(list(range(1, STAR_RATINGS_RANGE + 1)), res['stars'])
def test_item_is_not_yet_rated___rating_object_for_item_is_returned(self): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = mommy.make(get_user_model()) res = ratings({ 'request': request, }, item) self.assertIsInstance(res['rating'], Rating) self.assertEqual(item, res['rating'].content_object)
def test_read_only_is_false_user_is_not_authenticated_anon_rating_is_true___editable_is_true(self): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = AnonymousUser() res = ratings({ 'request': request, }, item, read_only=False) self.assertTrue(res['editable']) self.assertFalse(res['read_only'])
def test_id_is_a_uid_with_dsr_prefix(self): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = mommy.make(get_user_model()) res = ratings({ 'request': request, }, item) self.assertTrue(res['id'].startswith('dsr')) self.assertIsNotNone(int(res['id'][3:], 16))
def test_read_only_is_set_to_true___editable_is_false(self): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = mommy.make(get_user_model()) res = ratings({ 'request': request, }, item, read_only=True) self.assertFalse(res['editable']) self.assertTrue(res['read_only'])
def test_user_is_authenticated_without_rating_for_object___user_rating_is_none(self): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = mommy.make(get_user_model()) request.user.is_authenticated = lambda: True res = ratings({ 'request': request, }, item) self.assertIsNone(res['user_rating'])
def test_item_is_rated___rating_object_for_item_is_returned(self): item = mommy.make(Foo) rating = Rating.objects.for_instance(item) request = RequestFactory().get('/') request.user = mommy.make(get_user_model()) res = ratings({ 'request': request, }, item) self.assertEqual(rating, res['rating'])
def test_user_is_authenticated_without_rating_for_object___user_rating_is_none(self): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = get_user_model().objects.create_user(username='******', password='******') self.client.login(username='******', password='******') res = ratings({ 'request': request, }, item) self.assertIsNone(res['user_rating'])
def test_user_is_authenticated_with_rating_for_object___user_rating_for_user_is_returned(self): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = mommy.make(get_user_model()) request.user.is_authenticated = lambda: True rating = Rating.objects.rate(item, 3, request.user) user_rating = UserRating.objects.get(rating=rating, user=request.user) res = ratings({ 'request': request, }, item) self.assertEqual(user_rating, res['user_rating'])
def test_several_ratings_are_made___percentage_is_correct_in_result(self, scores): item = mommy.make(Foo) request = RequestFactory().get('/') request.user = mommy.make(get_user_model()) for score in scores: Rating.objects.rate(item, score, mommy.make(get_user_model())) rating = Rating.objects.for_instance(item) res = ratings({ 'request': request, }, item) expected_avg = 100 * (rating.average / Decimal(STAR_RATINGS_RANGE)) self.assertEqual(expected_avg, res['percentage'])