def testToJSonResponse(self): description = ["col1", "col2", "col3"] data = [("1", "2", "3"), ("a", "b", "c"), ("One", "Two", "Three")] req_id = 4 table = DataTable(description, data) start_str_default = r"google.visualization.Query.setResponse" start_str_handler = r"MyHandlerFunction" json_str = table.ToJSon().strip() json_response = table.ToJSonResponse(req_id=req_id) self.assertEqual(json_response.find(start_str_default + "("), 0) json_response_obj = json.loads(json_response[len(start_str_default) + 1:-2]) self.assertEqual(json_response_obj["table"], json.loads(json_str)) self.assertEqual(json_response_obj["version"], "0.6") self.assertEqual(json_response_obj["reqId"], str(req_id)) self.assertEqual(json_response_obj["status"], "ok") json_response = table.ToJSonResponse( req_id=req_id, response_handler=start_str_handler) self.assertEqual(json_response.find(start_str_handler + "("), 0) json_response_obj = json.loads(json_response[len(start_str_handler) + 1:-2]) self.assertEqual(json_response_obj["table"], json.loads(json_str))
def testToResponse(self): description = ["col1", "col2", "col3"] data = [("1", "2", "3"), ("a", "b", "c"), ("One", "Two", "Three")] table = DataTable(description, data) self.assertEqual(table.ToResponse(), table.ToJSonResponse()) self.assertEqual(table.ToResponse(tqx="out:csv"), table.ToCsv()) self.assertEqual(table.ToResponse(tqx="out:html"), table.ToHtml()) self.assertRaises(DataTableException, table.ToResponse, tqx="version:0.1") self.assertEqual( table.ToResponse(tqx="reqId:4;responseHandler:handle"), table.ToJSonResponse(req_id=4, response_handler="handle")) self.assertEqual(table.ToResponse(tqx="out:csv;reqId:4"), table.ToCsv()) self.assertEqual(table.ToResponse(order_by="col2"), table.ToJSonResponse(order_by="col2")) self.assertEqual( table.ToResponse(tqx="out:html", columns_order=("col3", "col2", "col1")), table.ToHtml(columns_order=("col3", "col2", "col1"))) self.assertRaises(ValueError, table.ToResponse, tqx="SomeWrongTqxFormat") self.assertRaises(DataTableException, table.ToResponse, tqx="out:bad")
def testToJSonResponse(self): description = ["col1", "col2", "col3"] data = [("1", "2", "3"), ("a", "b", "c"), ("One", "Two", "Three")] req_id = 4 table = DataTable(description, data) start_str_default = r"google.visualization.Query.setResponse" start_str_handler = r"MyHandlerFunction" default_params = ( r"\s*'version'\s*:\s*'0.6'\s*,\s*'reqId'\s*:\s*'%s'\s*," r"\s*'status'\s*:\s*'OK'\s*" % req_id) regex1 = re.compile("%s\(\s*\{%s,\s*'table'\s*:\s*{(.*)}\s*\}\s*\);" % (start_str_default, default_params)) regex2 = re.compile("%s\(\s*\{%s,\s*'table'\s*:\s*{(.*)}\s*\}\s*\);" % (start_str_handler, default_params)) json_str = table.ToJSon().strip() json_response = table.ToJSonResponse(req_id=req_id) match = regex1.findall(json_response) self.assertEquals(len(match), 1) # We want to match against the json_str without the curly brackets. self.assertEquals(match[0], json_str[1:-1]) json_response = table.ToJSonResponse( req_id=req_id, response_handler=start_str_handler) match = regex2.findall(json_response) self.assertEquals(len(match), 1) # We want to match against the json_str without the curly brackets. self.assertEquals(match[0], json_str[1:-1])