Skip to content

Commit 933154a

Browse files
committed
test: add tests for enclosure object
1 parent 3a7708a commit 933154a

File tree

5 files changed

+67
-5
lines changed

5 files changed

+67
-5
lines changed

genrss/__init__.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import pytz
77

8-
__all__ = ('GenRSS', 'Enclosure',)
8+
__all__ = ('GenRSS', 'Item', 'Enclosure')
99

1010
ElementT = TypeVar('ElementT')
1111
RSS_DEFAULT_GENERATOR = f'Generated by genrss for python'
@@ -116,10 +116,8 @@ def to_element(self) -> ElementT:
116116

117117
for category in self.categories:
118118
item.append(create_element('category', CDATA(category)))
119-
120119
if self.enclosure:
121120
item.append(self.enclosure.to_element())
122-
123121
if self.pub_date:
124122
item.append(create_element('pubDate', self.pub_date))
125123

tests/conftest.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import pytest
2+
3+
IMAGE_URL = 'http://s3.smartfridge.me/image.jpg'
4+
5+
6+
@pytest.fixture(params=[
7+
pytest.param((IMAGE_URL, None, None), id='+/-/-'),
8+
pytest.param((IMAGE_URL, 1000, None), id='+/+/-'),
9+
pytest.param((IMAGE_URL, 1000, 'image/png'), id='+/+/+'),
10+
pytest.param((IMAGE_URL, None, 'image/png'), id='+/-/+'),
11+
])
12+
def enclosure_tuple(request):
13+
return request.param
14+
15+
16+
@pytest.fixture(params=[
17+
pytest.param(dict(url=IMAGE_URL), id='+/-/-'),
18+
pytest.param(dict(url=IMAGE_URL, size=1000), id='+/+/-'),
19+
pytest.param(dict(url=IMAGE_URL, size=1000, type='image/png'), id='+/+/+'),
20+
pytest.param(dict(url=IMAGE_URL, type='image/png'), id='+/-/+'),
21+
])
22+
def enclosure_dict(request):
23+
return request.param

tests/test_enclosure.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import pytest
2+
from genrss import Enclosure
3+
4+
5+
def test_init_fails():
6+
with pytest.raises(TypeError):
7+
Enclosure()
8+
assert False
9+
10+
11+
def test_init(enclosure_tuple):
12+
url, size, type = enclosure_tuple
13+
enclosure = Enclosure(url, size, type)
14+
assert enclosure.url == url
15+
assert enclosure.size == (size or 0)
16+
assert enclosure.type == (type or 'image/jpeg')
17+
18+
19+
def test_init_from_dict(enclosure_dict):
20+
enclosure = Enclosure.from_dict(enclosure_dict)
21+
assert enclosure.url == enclosure_dict.get('url')
22+
assert enclosure.size == enclosure_dict.get('size', 0)
23+
assert enclosure.type == enclosure_dict.get('type', 'image/jpeg')

tests/test_rss.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import pytz
55
import pytest
6-
from genrss import RSS_DEFAULT_GENERATOR
6+
from genrss import RSS_DEFAULT_GENERATOR, Item
77
from tests.support import create_rss
88

99

@@ -109,3 +109,11 @@ def test_feed_categories():
109109
assert xml
110110
assert '<category><![CDATA[Category 1]]></category>' \
111111
'<category><![CDATA[Category 2]]></category>' in xml
112+
113+
114+
def test_feed_bad_items():
115+
feed = create_rss(items=['item'])
116+
xml = feed.xml()
117+
assert xml
118+
assert '<item>' not in xml
119+

tests/test_rss_item.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,14 @@ def test_item_enclosure(feed):
9393
xml = feed.xml()
9494
assert xml
9595
assert '<enclosure length="{}" type="{}" url="{}"/>' \
96-
'</item>'.format(0, 'image/jpeg', enclosure.url) in xml
96+
'</item>'.format(0, 'image/jpeg', enclosure.url) in xml
97+
98+
99+
def test_item_enclosure_from_dict(feed, enclosure_dict):
100+
create_item(feed, enclosure=enclosure_dict)
101+
xml = feed.xml()
102+
assert xml
103+
assert '<enclosure length="{}" type="{}" url="{}"/>' \
104+
'</item>'.format(enclosure_dict.get('size', 0),
105+
enclosure_dict.get('type', 'image/jpeg'),
106+
enclosure_dict.get('url')) in xml

0 commit comments

Comments
 (0)