def test_rereduce(self): input = StringIO('["rereduce", ' '["def fun(keys, values, rereduce): return sum(values)"], ' '[1, 2, 3]]\n') output = StringIO() view.run(input=input, output=output) self.assertEqual(output.getvalue(), '[true, [6]]\n')
def test_reduce(self): input = StringIO( '["reduce", ' '["def fun(keys, values): return sum(values)"], ' "[[null, 1], [null, 2], [null, 3]]]\n" ) output = StringIO() view.run(input=input, output=output) self.assertEqual(output.getvalue(), "[true, [6]]\n")
def test_i18n(self): input = StringIO( '["add_fun", "def fun(doc): yield doc[\\"test\\"], doc"]\n' '["map_doc", {"test": "b\xc3\xa5r"}]\n' ) output = StringIO() view.run(input=input, output=output) self.assertEqual(output.getvalue(), "true\n" '[[["b\xc3\xa5r", {"test": "b\xc3\xa5r"}]]]\n')
def test_reduce(self): input = StringIO(b'["reduce", ' b'["def fun(keys, values): return sum(values)"], ' b'[[null, 1], [null, 2], [null, 3]]]\n') output = StringIO() view.run(input=input, output=output) self.assertEqual(output.getvalue(), b'[true, [6]]\n')
def test_map_doc(self): input = StringIO('["add_fun", "def fun(doc): yield None, doc"]\n' '["map_doc", {"foo": "bar"}]\n') output = StringIO() view.run(input=input, output=output) self.assertEqual(output.getvalue(), 'true\n' '[[[null, {"foo": "bar"}]]]\n')
def test_update_wrong_method(self): import json request = { 'method': 'GET', 'query': {}, 'body': '', } commands = [ self.command_ddoc_add(), [ 'ddoc', '_design/test_update', ['updates', 'inc'], [None, request] ], ] input = StringIO(b'\n'.join(json.dumps(c).encode('utf-8') for c in commands)) output = StringIO() view.run(input=input, output=output) results = [ json.loads(l.decode('utf-8')) for l in output.getvalue().strip().split(b'\n') ] self.assertEqual(len(results), 2) self.assertEqual(results[1][2]['status'], 405)
def test_reduce_empty(self): input = StringIO(b'["reduce", ' b'["def fun(keys, values): return sum(values)"], ' b'[]]\n') output = StringIO() view.run(input=input, output=output) self.assertEqual(output.getvalue(), b'[true, [0]]\n')
def test_i18n(self): input = StringIO(b'["add_fun", "def fun(doc): yield doc[\\"test\\"], doc"]\n' b'["map_doc", {"test": "b\xc3\xa5r"}]\n') output = StringIO() view.run(input=input, output=output) self.assertEqual(output.getvalue(), b'true\n' b'[[["b\xc3\xa5r", {"test": "b\xc3\xa5r"}]]]\n')
def test_reduce_with_logging(self): input = StringIO('["reduce", ' '["def fun(keys, values): log(\'Summing %r\' % (values,)); return sum(values)"], ' '[[null, 1], [null, 2], [null, 3]]]\n') output = StringIO() view.run(input=input, output=output) self.assertEqual(output.getvalue(), '{"log": "Summing (1, 2, 3)"}\n' '[true, [6]]\n')
def test_map_doc_with_logging_json(self): fun = 'def fun(doc): log([1, 2, 3]); yield None, doc' input = StringIO('["add_fun", "%s"]\n' '["map_doc", {"foo": "bar"}]\n' % fun) output = StringIO() view.run(input=input, output=output) self.assertEqual(output.getvalue(), 'true\n' '{"log": "[1, 2, 3]"}\n' '[[[null, {"foo": "bar"}]]]\n')
def test_map_doc_with_logging(self): fun = b'def fun(doc): log(\'running\'); yield None, doc' input = StringIO(b'["add_fun", "' + fun + b'"]\n' b'["map_doc", {"foo": "bar"}]\n') output = StringIO() view.run(input=input, output=output) self.assertEqual(output.getvalue(), b'true\n' b'{"log": "running"}\n' b'[[[null, {"foo": "bar"}]]]\n')
def test_update(self): import json request = { 'method': 'POST', 'query': {}, 'body': '', } commands = [ self.command_ddoc_add(), [ 'ddoc', '_design/test_update', ['updates', 'inc'], [None, request] ], [ 'ddoc', '_design/test_update', ['updates', 'inc'], [{'field': 41, 'other_field': 'x'}, request] ], ] input = StringIO(b'\n'.join(json.dumps(c).encode('utf-8') for c in commands)) output = StringIO() view.run(input=input, output=output) results = [ json.loads(l.decode('utf-8')) for l in output.getvalue().strip().split(b'\n') ] self.assertEqual(len(results), 3) self.assertEqual(results[0], True) self.assertEqual(results[1], ['up', None, {'body': '.'}]) self.assertEqual( results[2], ['up', {'field': 42, 'other_field': 'x'}, {'body': '.'}])
def test_add_fun(self): input = StringIO('["add_fun", "def fun(doc): yield None, doc"]\n') output = StringIO() view.run(input=input, output=output) self.assertEquals(output.getvalue(), 'true\n')
def test_reset(self): input = StringIO('["reset"]\n') output = StringIO() view.run(input=input, output=output) self.assertEquals(output.getvalue(), 'true\n')
def test_map_doc_with_logging(self): fun = "def fun(doc): log('running'); yield None, doc" input = StringIO('["add_fun", "%s"]\n' '["map_doc", {"foo": "bar"}]\n' % fun) output = StringIO() view.run(input=input, output=output) self.assertEqual(output.getvalue(), "true\n" '{"log": "running"}\n' '[[[null, {"foo": "bar"}]]]\n')