Skip to content

Commit 0ae58c4

Browse files
committed
Added unit tests for CloudflareImagesWidget
1 parent 45e4633 commit 0ae58c4

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed

tests/test_widget.py

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
"""
2+
Tests related to the CloudflareImagesWidget
3+
"""
4+
5+
from unittest.mock import Mock, patch
6+
from django.test import TestCase
7+
from django.utils.datastructures import MultiValueDict
8+
from cloudflare_images.widget import CloudflareImagesWidget
9+
10+
11+
class CloudflareImagesWidgetTests(TestCase):
12+
"""
13+
Test case for the CloudflareImagesWidget
14+
"""
15+
16+
def setUp(self):
17+
self.widget = CloudflareImagesWidget()
18+
19+
def test_template_name(self):
20+
template_name = self.widget.template_name
21+
self.assertEqual(template_name, "widget.html")
22+
23+
def test_value_from_datadict_with_value(self):
24+
data = MultiValueDict({"test_field": ["image_id_123"]})
25+
files = MultiValueDict()
26+
result = self.widget.value_from_datadict(data, files, "test_field")
27+
self.assertEqual(result, "image_id_123")
28+
29+
def test_value_from_datadict_without_value(self):
30+
data = MultiValueDict()
31+
files = MultiValueDict()
32+
result = self.widget.value_from_datadict(data, files, "test_field")
33+
self.assertIsNone(result)
34+
35+
def test_value_from_datadict_with_empty_value(self):
36+
data = MultiValueDict({"test_field": [""]})
37+
files = MultiValueDict()
38+
result = self.widget.value_from_datadict(data, files, "test_field")
39+
self.assertEqual(result, "")
40+
41+
@patch("cloudflare_images.widget.Config")
42+
@patch("cloudflare_images.widget.CloudflareImagesService")
43+
def test_get_context_with_value(self, mock_service, mock_config):
44+
mock_service.return_value.get_url.return_value = (
45+
"https://example.com/image_id_123/public"
46+
)
47+
mock_config.return_value.upload_endpoint = "/test/api"
48+
49+
context = self.widget.get_context(
50+
"test_field", "image_id_123", {"class": "test"}
51+
)
52+
53+
self.assertEqual(context["widget"]["value"], "image_id_123")
54+
self.assertEqual(
55+
context["widget"]["url"], "https://example.com/image_id_123/public"
56+
)
57+
self.assertEqual(context["widget"]["upload_endpoint"], "/test/api")
58+
59+
@patch("cloudflare_images.widget.Config")
60+
@patch("cloudflare_images.widget.CloudflareImagesService")
61+
def test_get_context_without_value(self, mock_service, mock_config):
62+
mock_config.return_value.upload_endpoint = "/test/api"
63+
64+
context = self.widget.get_context("test_field", None, {"class": "test"})
65+
66+
self.assertIsNone(context["widget"]["value"])
67+
self.assertIsNone(context["widget"]["url"])
68+
self.assertEqual(context["widget"]["upload_endpoint"], "/test/api")
69+
mock_service.return_value.get_url.assert_not_called()
70+
71+
@patch("cloudflare_images.widget.Config")
72+
@patch("cloudflare_images.widget.CloudflareImagesService")
73+
def test_get_context_with_empty_value(self, mock_service, mock_config):
74+
mock_config.return_value.upload_endpoint = "/test/api"
75+
76+
context = self.widget.get_context("test_field", "", {"class": "test"})
77+
78+
self.assertEqual(context["widget"]["value"], "")
79+
self.assertIsNone(context["widget"]["url"])
80+
self.assertEqual(context["widget"]["upload_endpoint"], "/test/api")
81+
mock_service.return_value.get_url.assert_not_called()
82+
83+
def test_media_css(self):
84+
media = CloudflareImagesWidget.Media.css
85+
self.assertEqual(media["all"], ["css/widget.css"])
86+
87+
def test_media_js(self):
88+
media = CloudflareImagesWidget.Media.js
89+
self.assertEqual(media, ["js/widget.js"])

0 commit comments

Comments
 (0)