|
1 | 1 | import json |
2 | | -from unittest.mock import MagicMock |
| 2 | +from unittest.mock import MagicMock, NonCallableMock |
3 | 3 |
|
4 | 4 | import pytest |
5 | 5 | from django.contrib.admin.models import CHANGE, LogEntry |
@@ -50,16 +50,46 @@ def test_style_bold_first_word(): |
50 | 50 |
|
51 | 51 | @pytest.mark.django_db |
52 | 52 | @pytest.mark.parametrize( |
53 | | - "case,test_input,field,expected", |
| 53 | + "case,test_input,field,expected,log", |
54 | 54 | [ |
55 | | - (1, MagicMock(avatar="image.jpg"), "avatar", "image.jpg"), |
56 | | - (2, MagicMock(avatar="image.jpg"), lambda u: u.avatar, "image.jpg"), |
57 | | - (3, MagicMock(avatar=MagicMock(url="image.jpg")), "avatar", "image.jpg"), |
| 55 | + (1, MagicMock(avatar="image.jpg"), "avatar", "image.jpg", None), |
| 56 | + (2, MagicMock(avatar="image.jpg"), lambda u: u.avatar, "image.jpg", None), |
| 57 | + (3, MagicMock(avatar=MagicMock(url="image.jpg")), "avatar", "image.jpg", None), |
| 58 | + # Properly set file field but empty (no image uploaded) |
| 59 | + ( |
| 60 | + 4, |
| 61 | + MagicMock(avatar=MagicMock(__bool__=lambda x: False)), |
| 62 | + "avatar", |
| 63 | + "/static/vendor/adminlte/img/user2-160x160.jpg", |
| 64 | + None, |
| 65 | + ), |
| 66 | + # No avatar field set |
| 67 | + ( |
| 68 | + 5, |
| 69 | + MagicMock( |
| 70 | + avatar="image.jpg", |
| 71 | + ), |
| 72 | + None, |
| 73 | + "/static/vendor/adminlte/img/user2-160x160.jpg", |
| 74 | + None, |
| 75 | + ), |
| 76 | + # No proper avatar field set |
| 77 | + ( |
| 78 | + 6, |
| 79 | + MagicMock(avatar=NonCallableMock(spec_set=["__bool__"], __bool__=lambda x: True)), |
| 80 | + "avatar", |
| 81 | + "/static/vendor/adminlte/img/user2-160x160.jpg", |
| 82 | + "Avatar field must be", |
| 83 | + ), |
58 | 84 | ], |
59 | 85 | ) |
60 | | -def test_get_user_avatar(case, test_input, field, expected, custom_jazzmin_settings): |
| 86 | +def test_get_user_avatar(case, test_input, field, expected, log, custom_jazzmin_settings, caplog): |
61 | 87 | """ |
62 | 88 | We can specify the name of a charfield or imagefield on our user model, or a callable that receives our user |
63 | 89 | """ |
64 | 90 | custom_jazzmin_settings["user_avatar"] = field |
65 | 91 | assert jazzmin.get_user_avatar(test_input) == expected |
| 92 | + if log: |
| 93 | + assert log in caplog.text |
| 94 | + else: |
| 95 | + assert not caplog.text |
0 commit comments