def test_form_format(self):
self._publish_xls_form_to_project()
view = XFormViewSet.as_view({
'get': 'form'
})
formid = self.xform.pk
data = {
"name": "transportation",
"title": "transportation_2011_07_25",
"default_language": "default",
"id_string": "transportation_2011_07_25",
"type": "survey",
}
request = self.factory.get('/', **self.extra)
# test for unsupported format
response = view(request, pk=formid, format='csvzip')
self.assertEqual(response.status_code, 400)
self.assertEqual(response.get('Last-Modified'), None)
# test for supported formats
response = view(request, pk=formid, format='json')
self.assertEqual(response.status_code, 200)
self.assertNotEqual(response.get('Last-Modified'), None)
self.assertDictContainsSubset(data, response.data)
response = view(request, pk=formid, format='xml')
self.assertEqual(response.status_code, 200)
self.assertNotEqual(response.get('Last-Modified'), None)
response_doc = minidom.parseString(response.data)
response = view(request, pk=formid, format='xls')
self.assertEqual(response.status_code, 200)
self.assertNotEqual(response.get('Last-Modified'), None)
xml_path = os.path.join(
settings.PROJECT_ROOT, "apps", "main", "tests", "fixtures",
"transportation", "transportation.xml")
with open(xml_path) as xml_file:
expected_doc = minidom.parse(xml_file)
model_node = [
n for n in
response_doc.getElementsByTagName("h:head")[0].childNodes
if n.nodeType == Node.ELEMENT_NODE and
n.tagName == "model"][0]
# check for UUID and remove
uuid_nodes = [
node for node in model_node.childNodes
if node.nodeType == Node.ELEMENT_NODE
and node.getAttribute("nodeset") == "/transportation/formhub/uuid"]
self.assertEqual(len(uuid_nodes), 1)
uuid_node = uuid_nodes[0]
uuid_node.setAttribute("calculate", "''")
# check content without UUID
response_xml = response_doc.toxml().replace(
self.xform.version, u"201411120717")
self.assertEqual(response_xml, expected_doc.toxml())
评论列表
文章目录