def test_find_update_fields(self): doc = {'a': {'b': {'c': 1}}, 'e.f': 1, 'g.h': {'i': {'j': 1}}} self.assertEqual(OplogThread._find_update_fields('a', doc), [(['a'], doc['a'])]) self.assertEqual(OplogThread._find_update_fields('a.b', doc), [(['a', 'b'], doc['a']['b'])]) self.assertEqual(OplogThread._find_update_fields('a.b.c', doc), [(['a', 'b', 'c'], doc['a']['b']['c'])]) self.assertEqual(OplogThread._find_update_fields('x', doc), []) self.assertEqual(OplogThread._find_update_fields('a.b.x', doc), []) self.assertEqual(OplogThread._find_update_fields('e.f', doc), [(['e.f'], doc['e.f'])]) self.assertEqual(OplogThread._find_update_fields('e', doc), [(['e.f'], doc['e.f'])]) self.assertEqual(OplogThread._find_update_fields('g.h.i.j', doc), [(['g.h', 'i', 'j'], doc['g.h']['i']['j'])]) # Test multiple matches doc = {'a.b': 1, 'a.c': 2, 'e.f.h': 3, 'e.f.i': 4} matches = OplogThread._find_update_fields('a', doc) self.assertEqual(len(matches), 2) self.assertIn((['a.b'], doc['a.b']), matches) self.assertIn((['a.c'], doc['a.c']), matches) matches = OplogThread._find_update_fields('e.f', doc) self.assertEqual(len(matches), 2) self.assertIn((['e.f.h'], doc['e.f.h']), matches) self.assertIn((['e.f.i'], doc['e.f.i']), matches) # Test updates to array fields doc = {'a.b.1': 9, 'a.b.3': 10, 'a.b.4.c': 11} matches = OplogThread._find_update_fields('a.b', doc) self.assertEqual(len(matches), 3) self.assertIn((['a.b.1'], doc['a.b.1']), matches) self.assertIn((['a.b.3'], doc['a.b.3']), matches) self.assertIn((['a.b.4.c'], doc['a.b.4.c']), matches)
def test_find_update_fields(self): doc = {"a": {"b": {"c": 1}}, "e.f": 1, "g.h": {"i": {"j": 1}}} self.assertEqual(OplogThread._find_update_fields("a", doc), [(["a"], doc["a"])]) self.assertEqual( OplogThread._find_update_fields("a.b", doc), [(["a", "b"], doc["a"]["b"])] ) self.assertEqual( OplogThread._find_update_fields("a.b.c", doc), [(["a", "b", "c"], doc["a"]["b"]["c"])], ) self.assertEqual(OplogThread._find_update_fields("x", doc), []) self.assertEqual(OplogThread._find_update_fields("a.b.x", doc), []) self.assertEqual( OplogThread._find_update_fields("e.f", doc), [(["e.f"], doc["e.f"])] ) self.assertEqual( OplogThread._find_update_fields("e", doc), [(["e.f"], doc["e.f"])] ) self.assertEqual( OplogThread._find_update_fields("g.h.i.j", doc), [(["g.h", "i", "j"], doc["g.h"]["i"]["j"])], ) # Test multiple matches doc = {"a.b": 1, "a.c": 2, "e.f.h": 3, "e.f.i": 4} matches = OplogThread._find_update_fields("a", doc) self.assertEqual(len(matches), 2) self.assertIn((["a.b"], doc["a.b"]), matches) self.assertIn((["a.c"], doc["a.c"]), matches) matches = OplogThread._find_update_fields("e.f", doc) self.assertEqual(len(matches), 2) self.assertIn((["e.f.h"], doc["e.f.h"]), matches) self.assertIn((["e.f.i"], doc["e.f.i"]), matches) # Test updates to array fields doc = {"a.b.1": 9, "a.b.3": 10, "a.b.4.c": 11} matches = OplogThread._find_update_fields("a.b", doc) self.assertEqual(len(matches), 3) self.assertIn((["a.b.1"], doc["a.b.1"]), matches) self.assertIn((["a.b.3"], doc["a.b.3"]), matches) self.assertIn((["a.b.4.c"], doc["a.b.4.c"]), matches)
def test_find_update_fields(self): doc = {'a': {'b': {'c': 1}}, 'e.f': 1, 'g.h': {'i': {'j': 1}}} self.assertEqual(OplogThread._find_update_fields('a', doc), [(['a'], doc['a'])]) self.assertEqual(OplogThread._find_update_fields('a.b', doc), [(['a', 'b'], doc['a']['b'])]) self.assertEqual(OplogThread._find_update_fields('a.b.c', doc), [(['a', 'b', 'c'], doc['a']['b']['c'])]) self.assertEqual(OplogThread._find_update_fields('x', doc), []) self.assertEqual(OplogThread._find_update_fields('a.b.x', doc), []) self.assertEqual(OplogThread._find_update_fields('e.f', doc), [(['e.f'], doc['e.f'])]) self.assertEqual(OplogThread._find_update_fields('e', doc), [(['e.f'], doc['e.f'])]) self.assertEqual(OplogThread._find_update_fields('g.h.i.j', doc), [(['g.h', 'i', 'j'], doc['g.h']['i']['j'])]) # Test multiple matches doc = {'a.b': 1, 'a.c': 2, 'e.f.h': 3, 'e.f.i': 4} matches = OplogThread._find_update_fields('a', doc) self.assertEqual(len(matches), 2) self.assertIn((['a.b'], doc['a.b']), matches) self.assertIn((['a.c'], doc['a.c']), matches) matches = OplogThread._find_update_fields('e.f', doc) self.assertEqual(len(matches), 2) self.assertIn((['e.f.h'], doc['e.f.h']), matches) self.assertIn((['e.f.i'], doc['e.f.i']), matches) # Test updates to array fields doc = {'a.b.1': 9, 'a.b.3': 10, 'a.b.4.c': 11} matches = OplogThread._find_update_fields('a.b', doc) self.assertEqual(len(matches), 3) self.assertIn((['a.b.1'], doc['a.b.1']), matches) self.assertIn((['a.b.3'], doc['a.b.3']), matches) self.assertIn((['a.b.4.c'], doc['a.b.4.c']), matches)
def test_find_update_fields(self): doc = {"a": {"b": {"c": 1}}, "e.f": 1, "g.h": {"i": {"j": 1}}} self.assertEqual(OplogThread._find_update_fields("a", doc), [(["a"], doc["a"])]) self.assertEqual(OplogThread._find_update_fields("a.b", doc), [(["a", "b"], doc["a"]["b"])]) self.assertEqual( OplogThread._find_update_fields("a.b.c", doc), [(["a", "b", "c"], doc["a"]["b"]["c"])], ) self.assertEqual(OplogThread._find_update_fields("x", doc), []) self.assertEqual(OplogThread._find_update_fields("a.b.x", doc), []) self.assertEqual(OplogThread._find_update_fields("e.f", doc), [(["e.f"], doc["e.f"])]) self.assertEqual(OplogThread._find_update_fields("e", doc), [(["e.f"], doc["e.f"])]) self.assertEqual( OplogThread._find_update_fields("g.h.i.j", doc), [(["g.h", "i", "j"], doc["g.h"]["i"]["j"])], ) # Test multiple matches doc = {"a.b": 1, "a.c": 2, "e.f.h": 3, "e.f.i": 4} matches = OplogThread._find_update_fields("a", doc) self.assertEqual(len(matches), 2) self.assertIn((["a.b"], doc["a.b"]), matches) self.assertIn((["a.c"], doc["a.c"]), matches) matches = OplogThread._find_update_fields("e.f", doc) self.assertEqual(len(matches), 2) self.assertIn((["e.f.h"], doc["e.f.h"]), matches) self.assertIn((["e.f.i"], doc["e.f.i"]), matches) # Test updates to array fields doc = {"a.b.1": 9, "a.b.3": 10, "a.b.4.c": 11} matches = OplogThread._find_update_fields("a.b", doc) self.assertEqual(len(matches), 3) self.assertIn((["a.b.1"], doc["a.b.1"]), matches) self.assertIn((["a.b.3"], doc["a.b.3"]), matches) self.assertIn((["a.b.4.c"], doc["a.b.4.c"]), matches)