def test_basic(self): manip = SONManipulator() collection = self.db.test def incoming_is_identity(son): return son == manip.transform_incoming(son, collection) qcheck.check_unittest(self, incoming_is_identity, qcheck.gen_mongo_dict(3)) def outgoing_is_identity(son): return son == manip.transform_outgoing(son, collection) qcheck.check_unittest(self, outgoing_is_identity, qcheck.gen_mongo_dict(3))
def test_ns_injection(self): manip = NamespaceInjector() collection = self.db.test def incoming_adds_ns(son): son = manip.transform_incoming(son, collection) assert "_ns" in son return son["_ns"] == collection.name() qcheck.check_unittest(self, incoming_adds_ns, qcheck.gen_mongo_dict(3)) def outgoing_is_identity(son): return son == manip.transform_outgoing(son, collection) qcheck.check_unittest(self, outgoing_is_identity, qcheck.gen_mongo_dict(3))
def test_id_injection(self): manip = ObjectIdInjector() collection = self.db.test def incoming_adds_id(son): son = manip.transform_incoming(son, collection) assert "_id" in son return True qcheck.check_unittest(self, incoming_adds_id, qcheck.gen_mongo_dict(3)) def outgoing_is_identity(son): return son == manip.transform_outgoing(son, collection) qcheck.check_unittest(self, outgoing_is_identity, qcheck.gen_mongo_dict(3))
def test_from_then_to_dict(self): def helper(dict): self.assertEqual(dict, (BSON.from_dict(dict)).to_dict()) helper({}) helper({"test": u"hello"}) self.assert_(isinstance(BSON.from_dict({"hello": "world"}) .to_dict()["hello"], types.UnicodeType)) helper({"mike": -10120}) helper({"long": long(10)}) helper({"really big long": 2147483648}) helper({u"hello": 0.0013109}) helper({"something": True}) helper({"false": False}) helper({"an array": [1, True, 3.8, u"world"]}) helper({"an object": {"test": u"something"}}) helper({"a binary": Binary("test", 100)}) helper({"a binary": Binary("test", 128)}) helper({"a binary": Binary("test", 254)}) helper({"another binary": Binary("test")}) helper(SON([(u'test dst', datetime.datetime(1993, 4, 4, 2))])) helper({"big float": float(10000000000)}) def from_then_to_dict(dict): return dict == (BSON.from_dict(dict)).to_dict() qcheck.check_unittest(self, from_then_to_dict, qcheck.gen_mongo_dict(3))
def test_ns_injection(self): manip = NamespaceInjector() collection = self.db.test def incoming_adds_ns(son): son = manip.transform_incoming(son, collection) assert "_ns" in son return son["_ns"] == collection.name qcheck.check_unittest(self, incoming_adds_ns, qcheck.gen_mongo_dict(3)) def outgoing_is_identity(son): return son == manip.transform_outgoing(son, collection) qcheck.check_unittest(self, outgoing_is_identity, qcheck.gen_mongo_dict(3))
def test_from_then_to_dict(self): def helper(dict): self.assertEqual(dict, (BSON.from_dict(dict)).to_dict()) helper({}) helper({"test": u"hello"}) self.assert_( isinstance( BSON.from_dict({ "hello": "world" }).to_dict()["hello"], types.UnicodeType)) helper({"mike": -10120}) helper({"long": long(10)}) helper({"really big long": 2147483648}) helper({u"hello": 0.0013109}) helper({"something": True}) helper({"false": False}) helper({"an array": [1, True, 3.8, u"world"]}) helper({"an object": {"test": u"something"}}) helper({"a binary": Binary("test", 100)}) helper({"a binary": Binary("test", 128)}) helper({"a binary": Binary("test", 254)}) helper({"another binary": Binary("test")}) helper(SON([(u'test dst', datetime.datetime(1993, 4, 4, 2))])) helper({"big float": float(10000000000)}) def from_then_to_dict(dict): return dict == (BSON.from_dict(dict)).to_dict() qcheck.check_unittest(self, from_then_to_dict, qcheck.gen_mongo_dict(3))
def test_insert_find_one(self): db = self.db db.test.remove({}) self.assertEqual(db.test.find().count(), 0) doc = {"hello": u"world"} id = db.test.insert(doc) self.assertEqual(db.test.find().count(), 1) self.assertEqual(doc, db.test.find_one()) self.assertEqual(doc["_id"], id) self.assert_(isinstance(id, ObjectId)) def remove_insert_find_one(dict): db.test.remove({}) db.test.insert(dict) return db.test.find_one() == dict qcheck.check_unittest(self, remove_insert_find_one, qcheck.gen_mongo_dict(3))
def test_encode_then_decode(self): def helper(dict): self.assertEqual(dict, (BSON.encode(dict)).decode()) helper({}) helper({"test": u"hello"}) self.assert_( isinstance( BSON.encode({ "hello": "world" }).decode()["hello"], unicode)) helper({"mike": -10120}) helper({"long": long(10)}) helper({"really big long": 2147483648}) helper({u"hello": 0.0013109}) helper({"something": True}) helper({"false": False}) helper({"an array": [1, True, 3.8, u"world"]}) helper({"an object": {"test": u"something"}}) helper({"a binary": Binary("test", 100)}) helper({"a binary": Binary("test", 128)}) helper({"a binary": Binary("test", 254)}) helper({"another binary": Binary("test")}) helper(SON([(u'test dst', datetime.datetime(1993, 4, 4, 2))])) helper( SON([(u'test negative dst', datetime.datetime(1, 1, 1, 1, 1, 1))])) helper({"big float": float(10000000000)}) helper({"ref": DBRef("coll", 5)}) helper({"ref": DBRef("coll", 5, foo="bar", bar=4)}) helper({"ref": DBRef("coll", 5, "foo")}) helper({"ref": DBRef("coll", 5, "foo", foo="bar")}) helper({"ref": Timestamp(1, 2)}) helper({"foo": MinKey()}) helper({"foo": MaxKey()}) def encode_then_decode(dict): return dict == (BSON.encode(dict)).decode() qcheck.check_unittest(self, encode_then_decode, qcheck.gen_mongo_dict(3))
def test_encode_then_decode(self): def helper(dict): self.assertEqual(dict, (BSON.encode(dict)).decode()) helper({}) helper({"test": u"hello"}) self.assert_(isinstance(BSON.encode({"hello": "world"}) .decode()["hello"], unicode)) helper({"mike": -10120}) helper({"long": long(10)}) helper({"really big long": 2147483648}) helper({u"hello": 0.0013109}) helper({"something": True}) helper({"false": False}) helper({"an array": [1, True, 3.8, u"world"]}) helper({"an object": {"test": u"something"}}) helper({"a binary": Binary("test", 100)}) helper({"a binary": Binary("test", 128)}) helper({"a binary": Binary("test", 254)}) helper({"another binary": Binary("test")}) helper(SON([(u'test dst', datetime.datetime(1993, 4, 4, 2))])) helper(SON([(u'test negative dst', datetime.datetime(1, 1, 1, 1, 1, 1))])) helper({"big float": float(10000000000)}) helper({"ref": DBRef("coll", 5)}) helper({"ref": DBRef("coll", 5, foo="bar", bar=4)}) helper({"ref": DBRef("coll", 5, "foo")}) helper({"ref": DBRef("coll", 5, "foo", foo="bar")}) helper({"ref": Timestamp(1, 2)}) helper({"foo": MinKey()}) helper({"foo": MaxKey()}) helper({"$field": Code("function(){ return true; }")}) helper({"$field": Code("return function(){ return x; }", scope={'x': False})}) def encode_then_decode(dict): return dict == (BSON.encode(dict)).decode() qcheck.check_unittest(self, encode_then_decode, qcheck.gen_mongo_dict(3))
def test_id_shuffling(self): manip = ObjectIdShuffler() collection = self.db.test def incoming_moves_id(son_in): son = manip.transform_incoming(son_in, collection) if not "_id" in son: return True for (k, v) in son.items(): self.assertEqual(k, "_id") break return son_in == son self.assert_(incoming_moves_id({})) self.assert_(incoming_moves_id({"_id": 12})) self.assert_(incoming_moves_id({"hello": "world", "_id": 12})) self.assert_(incoming_moves_id(SON([("hello", "world"), ("_id", 12)]))) def outgoing_is_identity(son): return son == manip.transform_outgoing(son, collection) qcheck.check_unittest(self, outgoing_is_identity, qcheck.gen_mongo_dict(3))