Support empty menu response
In recent weeks many API calls return "null". Instead of letting the request fail, the parser now treats "null" as empty menu.
This commit is contained in:
+3
-2
@@ -58,8 +58,9 @@ def render_menu(menu):
|
|||||||
"""
|
"""
|
||||||
builder = LazyBuilder()
|
builder = LazyBuilder()
|
||||||
|
|
||||||
for day in _active_days(menu):
|
if menu:
|
||||||
_process_day(builder, day)
|
for day in _active_days(menu):
|
||||||
|
_process_day(builder, day)
|
||||||
|
|
||||||
return builder.toXMLFeed()
|
return builder.toXMLFeed()
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
null
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<openmensa version="2.1" xmlns="http://openmensa.org/open-mensa-v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://openmensa.org/open-mensa-v2 http://openmensa.org/open-mensa-v2.xsd">
|
||||||
|
<canteen/>
|
||||||
|
</openmensa>
|
||||||
+16
-12
@@ -16,18 +16,13 @@ def _canteen():
|
|||||||
return read_canteen_config()['griebnitzsee']
|
return read_canteen_config()['griebnitzsee']
|
||||||
|
|
||||||
|
|
||||||
def _menu():
|
def _read_menu(resource_name):
|
||||||
with open(_resource_path('input.json')) as menu_file:
|
with open(_resource_path(resource_name)) as menu_file:
|
||||||
return json.load(menu_file)
|
return json.load(menu_file)
|
||||||
|
|
||||||
|
|
||||||
def _expected_meta_feed():
|
def _read_feed(resource_name):
|
||||||
with io.open(_resource_path('meta_output.xml'), encoding='utf-8') as xml:
|
with io.open(_resource_path(resource_name), encoding='utf-8') as xml:
|
||||||
return xml.read()
|
|
||||||
|
|
||||||
|
|
||||||
def _expected_menu_feed():
|
|
||||||
with io.open(_resource_path('menu_output.xml'), encoding='utf-8') as xml:
|
|
||||||
return xml.read()
|
return xml.read()
|
||||||
|
|
||||||
|
|
||||||
@@ -37,14 +32,23 @@ def test_meta_consistency():
|
|||||||
|
|
||||||
actual = feed.render_meta(canteen, menu_feed_url)
|
actual = feed.render_meta(canteen, menu_feed_url)
|
||||||
|
|
||||||
expected = _expected_meta_feed()
|
expected = _read_feed('meta_output.xml')
|
||||||
assert expected == actual
|
assert expected == actual
|
||||||
|
|
||||||
|
|
||||||
def test_menu_consistency():
|
def test_menu_consistency():
|
||||||
menu = _menu()
|
menu = _read_menu('input.json')
|
||||||
|
|
||||||
actual = feed.render_menu(menu)
|
actual = feed.render_menu(menu)
|
||||||
|
|
||||||
expected = _expected_menu_feed()
|
expected = _read_feed('menu_output.xml')
|
||||||
|
assert expected == actual
|
||||||
|
|
||||||
|
|
||||||
|
def test_empty_menu():
|
||||||
|
menu = _read_menu('empty.json')
|
||||||
|
|
||||||
|
actual = feed.render_menu(menu)
|
||||||
|
|
||||||
|
expected = _read_feed('empty_menu_output.xml')
|
||||||
assert expected == actual
|
assert expected == actual
|
||||||
|
|||||||
Reference in New Issue
Block a user