def test_new_builder(self): # new builder, no arguments b = libhoney.Builder() self.assertEqual(b._fields._data, {}) self.assertEqual(b._fields._dyn_fields, set()) # new builder, passed in data and dynfields expected_data = {"aa": 1} expected_dyn_fns = set([sample_dyn_fn]) b = libhoney.Builder(expected_data, expected_dyn_fns) self.assertEqual(b._fields._data, expected_data) self.assertEqual(b._fields._dyn_fields, expected_dyn_fns) # new builder, inherited data and dyn_fields libhoney._fields._data = expected_data libhoney._fields._dyn_fields = expected_dyn_fns b = libhoney.Builder() self.assertEqual(b._fields._data, expected_data) self.assertEqual(b._fields._dyn_fields, expected_dyn_fns) # new builder, merge inherited data and dyn_fields and arguments def sample_dyn_fn2(): return 5 expected_data = {"aa": 1, "b": 2} expected_dyn_fns = set([sample_dyn_fn, sample_dyn_fn2]) b = libhoney.Builder({"b": 2}, [sample_dyn_fn2]) self.assertEqual(b._fields._data, expected_data) self.assertEqual(b._fields._dyn_fields, expected_dyn_fns)
def test_add(self): b = libhoney.Builder() expected_data = {"a": 1, "b": 3} b.add(expected_data) self.assertEqual(b._fields._data, expected_data) expected_data.update({"c": 3, "d": 4}) b.add({"c": 3, "d": 4}) self.assertEqual(b._fields._data, expected_data)
def test_add_dynamic_field(self): b = libhoney.Builder() expected_dyn_fns = set() self.assertEqual(b._fields._dyn_fields, expected_dyn_fns) b.add_dynamic_field(sample_dyn_fn) expected_dyn_fns.add(sample_dyn_fn) self.assertEqual(b._fields._dyn_fields, expected_dyn_fns) with self.assertRaises(TypeError): b.add_dynamic_field("foo")
def test_clone_builder(self): b = libhoney.Builder() b.dataset = "newds" b.add_field("e", 9) b.add_dynamic_field(sample_dyn_fn) c = b.clone() self.assertEqual(b._fields, c._fields) c.add_field("f", 10) b.add_field("g", 11) self.assertEqual(b._fields._data, {"e": 9, "g": 11}) self.assertEqual(c._fields._data, {"e": 9, "f": 10}) self.assertEqual(c.dataset, "newds")
def test_new_event(self): b = libhoney.Builder() b.sample_rate = 5 expected_data = {"a": 1, "b": 3} b.add(expected_data) ev = b.new_event() self.assertEqual(b._fields, ev._fields) self.assertEqual(ev.sample_rate, 5) ev.add_field("3", "c") self.assertNotEqual(b._fields, ev._fields) # move to event testing when written self.assertEqual(json.loads(str(ev)), {"a": 1, "3": "c", "b": 3})
def test_add_field(self): b = libhoney.Builder() expected_data = {} self.assertEqual(b._fields._data, expected_data) b.add_field("foo", 4) expected_data["foo"] = 4 self.assertEqual(b._fields._data, expected_data) b.add_field("bar", "baz") expected_data["bar"] = "baz" self.assertEqual(b._fields._data, expected_data) b.add_field("foo", 6) expected_data["foo"] = 6 self.assertEqual(b._fields._data, expected_data)