ran unittest2pytest
This commit is contained in:
		| @@ -2,6 +2,7 @@ import unittest | ||||
|  | ||||
| from mongoengine import * | ||||
| from tests.utils import MongoDBTestCase | ||||
| import pytest | ||||
|  | ||||
| __all__ = ("TestDynamicDocument",) | ||||
|  | ||||
| @@ -25,15 +26,15 @@ class TestDynamicDocument(MongoDBTestCase): | ||||
|         p.name = "James" | ||||
|         p.age = 34 | ||||
|  | ||||
|         self.assertEqual(p.to_mongo(), {"_cls": "Person", "name": "James", "age": 34}) | ||||
|         self.assertEqual(p.to_mongo().keys(), ["_cls", "name", "age"]) | ||||
|         assert p.to_mongo() == {"_cls": "Person", "name": "James", "age": 34} | ||||
|         assert p.to_mongo().keys() == ["_cls", "name", "age"] | ||||
|         p.save() | ||||
|         self.assertEqual(p.to_mongo().keys(), ["_id", "_cls", "name", "age"]) | ||||
|         assert p.to_mongo().keys() == ["_id", "_cls", "name", "age"] | ||||
|  | ||||
|         self.assertEqual(self.Person.objects.first().age, 34) | ||||
|         assert self.Person.objects.first().age == 34 | ||||
|  | ||||
|         # Confirm no changes to self.Person | ||||
|         self.assertFalse(hasattr(self.Person, "age")) | ||||
|         assert not hasattr(self.Person, "age") | ||||
|  | ||||
|     def test_change_scope_of_variable(self): | ||||
|         """Test changing the scope of a dynamic field has no adverse effects""" | ||||
| @@ -47,7 +48,7 @@ class TestDynamicDocument(MongoDBTestCase): | ||||
|         p.save() | ||||
|  | ||||
|         p = self.Person.objects.get() | ||||
|         self.assertEqual(p.misc, {"hello": "world"}) | ||||
|         assert p.misc == {"hello": "world"} | ||||
|  | ||||
|     def test_delete_dynamic_field(self): | ||||
|         """Test deleting a dynamic field works""" | ||||
| @@ -62,19 +63,19 @@ class TestDynamicDocument(MongoDBTestCase): | ||||
|         p.save() | ||||
|  | ||||
|         p = self.Person.objects.get() | ||||
|         self.assertEqual(p.misc, {"hello": "world"}) | ||||
|         assert p.misc == {"hello": "world"} | ||||
|         collection = self.db[self.Person._get_collection_name()] | ||||
|         obj = collection.find_one() | ||||
|         self.assertEqual(sorted(obj.keys()), ["_cls", "_id", "misc", "name"]) | ||||
|         assert sorted(obj.keys()) == ["_cls", "_id", "misc", "name"] | ||||
|  | ||||
|         del p.misc | ||||
|         p.save() | ||||
|  | ||||
|         p = self.Person.objects.get() | ||||
|         self.assertFalse(hasattr(p, "misc")) | ||||
|         assert not hasattr(p, "misc") | ||||
|  | ||||
|         obj = collection.find_one() | ||||
|         self.assertEqual(sorted(obj.keys()), ["_cls", "_id", "name"]) | ||||
|         assert sorted(obj.keys()) == ["_cls", "_id", "name"] | ||||
|  | ||||
|     def test_reload_after_unsetting(self): | ||||
|         p = self.Person() | ||||
| @@ -88,12 +89,12 @@ class TestDynamicDocument(MongoDBTestCase): | ||||
|         p = self.Person.objects.create() | ||||
|         p.update(age=1) | ||||
|  | ||||
|         self.assertEqual(len(p._data), 3) | ||||
|         self.assertEqual(sorted(p._data.keys()), ["_cls", "id", "name"]) | ||||
|         assert len(p._data) == 3 | ||||
|         assert sorted(p._data.keys()) == ["_cls", "id", "name"] | ||||
|  | ||||
|         p.reload() | ||||
|         self.assertEqual(len(p._data), 4) | ||||
|         self.assertEqual(sorted(p._data.keys()), ["_cls", "age", "id", "name"]) | ||||
|         assert len(p._data) == 4 | ||||
|         assert sorted(p._data.keys()) == ["_cls", "age", "id", "name"] | ||||
|  | ||||
|     def test_fields_without_underscore(self): | ||||
|         """Ensure we can query dynamic fields""" | ||||
| @@ -103,16 +104,18 @@ class TestDynamicDocument(MongoDBTestCase): | ||||
|         p.save() | ||||
|  | ||||
|         raw_p = Person.objects.as_pymongo().get(id=p.id) | ||||
|         self.assertEqual(raw_p, {"_cls": u"Person", "_id": p.id, "name": u"Dean"}) | ||||
|         assert raw_p == {"_cls": u"Person", "_id": p.id, "name": u"Dean"} | ||||
|  | ||||
|         p.name = "OldDean" | ||||
|         p.newattr = "garbage" | ||||
|         p.save() | ||||
|         raw_p = Person.objects.as_pymongo().get(id=p.id) | ||||
|         self.assertEqual( | ||||
|             raw_p, | ||||
|             {"_cls": u"Person", "_id": p.id, "name": "OldDean", "newattr": u"garbage"}, | ||||
|         ) | ||||
|         assert raw_p == { | ||||
|             "_cls": u"Person", | ||||
|             "_id": p.id, | ||||
|             "name": "OldDean", | ||||
|             "newattr": u"garbage", | ||||
|         } | ||||
|  | ||||
|     def test_fields_containing_underscore(self): | ||||
|         """Ensure we can query dynamic fields""" | ||||
| @@ -127,14 +130,14 @@ class TestDynamicDocument(MongoDBTestCase): | ||||
|         p.save() | ||||
|  | ||||
|         raw_p = WeirdPerson.objects.as_pymongo().get(id=p.id) | ||||
|         self.assertEqual(raw_p, {"_id": p.id, "_name": u"Dean", "name": u"Dean"}) | ||||
|         assert raw_p == {"_id": p.id, "_name": u"Dean", "name": u"Dean"} | ||||
|  | ||||
|         p.name = "OldDean" | ||||
|         p._name = "NewDean" | ||||
|         p._newattr1 = "garbage"  # Unknown fields won't be added | ||||
|         p.save() | ||||
|         raw_p = WeirdPerson.objects.as_pymongo().get(id=p.id) | ||||
|         self.assertEqual(raw_p, {"_id": p.id, "_name": u"NewDean", "name": u"OldDean"}) | ||||
|         assert raw_p == {"_id": p.id, "_name": u"NewDean", "name": u"OldDean"} | ||||
|  | ||||
|     def test_dynamic_document_queries(self): | ||||
|         """Ensure we can query dynamic fields""" | ||||
| @@ -143,10 +146,10 @@ class TestDynamicDocument(MongoDBTestCase): | ||||
|         p.age = 22 | ||||
|         p.save() | ||||
|  | ||||
|         self.assertEqual(1, self.Person.objects(age=22).count()) | ||||
|         assert 1 == self.Person.objects(age=22).count() | ||||
|         p = self.Person.objects(age=22) | ||||
|         p = p.get() | ||||
|         self.assertEqual(22, p.age) | ||||
|         assert 22 == p.age | ||||
|  | ||||
|     def test_complex_dynamic_document_queries(self): | ||||
|         class Person(DynamicDocument): | ||||
| @@ -166,8 +169,8 @@ class TestDynamicDocument(MongoDBTestCase): | ||||
|         p2.age = 10 | ||||
|         p2.save() | ||||
|  | ||||
|         self.assertEqual(Person.objects(age__icontains="ten").count(), 2) | ||||
|         self.assertEqual(Person.objects(age__gte=10).count(), 1) | ||||
|         assert Person.objects(age__icontains="ten").count() == 2 | ||||
|         assert Person.objects(age__gte=10).count() == 1 | ||||
|  | ||||
|     def test_complex_data_lookups(self): | ||||
|         """Ensure you can query dynamic document dynamic fields""" | ||||
| @@ -175,12 +178,12 @@ class TestDynamicDocument(MongoDBTestCase): | ||||
|         p.misc = {"hello": "world"} | ||||
|         p.save() | ||||
|  | ||||
|         self.assertEqual(1, self.Person.objects(misc__hello="world").count()) | ||||
|         assert 1 == self.Person.objects(misc__hello="world").count() | ||||
|  | ||||
|     def test_three_level_complex_data_lookups(self): | ||||
|         """Ensure you can query three level document dynamic fields""" | ||||
|         self.Person.objects.create(misc={"hello": {"hello2": "world"}}) | ||||
|         self.assertEqual(1, self.Person.objects(misc__hello__hello2="world").count()) | ||||
|         assert 1 == self.Person.objects(misc__hello__hello2="world").count() | ||||
|  | ||||
|     def test_complex_embedded_document_validation(self): | ||||
|         """Ensure embedded dynamic documents may be validated""" | ||||
| @@ -198,11 +201,13 @@ class TestDynamicDocument(MongoDBTestCase): | ||||
|         embedded_doc_1.validate() | ||||
|  | ||||
|         embedded_doc_2 = Embedded(content="this is not a url") | ||||
|         self.assertRaises(ValidationError, embedded_doc_2.validate) | ||||
|         with pytest.raises(ValidationError): | ||||
|             embedded_doc_2.validate() | ||||
|  | ||||
|         doc.embedded_field_1 = embedded_doc_1 | ||||
|         doc.embedded_field_2 = embedded_doc_2 | ||||
|         self.assertRaises(ValidationError, doc.validate) | ||||
|         with pytest.raises(ValidationError): | ||||
|             doc.validate() | ||||
|  | ||||
|     def test_inheritance(self): | ||||
|         """Ensure that dynamic document plays nice with inheritance""" | ||||
| @@ -212,11 +217,9 @@ class TestDynamicDocument(MongoDBTestCase): | ||||
|  | ||||
|         Employee.drop_collection() | ||||
|  | ||||
|         self.assertIn("name", Employee._fields) | ||||
|         self.assertIn("salary", Employee._fields) | ||||
|         self.assertEqual( | ||||
|             Employee._get_collection_name(), self.Person._get_collection_name() | ||||
|         ) | ||||
|         assert "name" in Employee._fields | ||||
|         assert "salary" in Employee._fields | ||||
|         assert Employee._get_collection_name() == self.Person._get_collection_name() | ||||
|  | ||||
|         joe_bloggs = Employee() | ||||
|         joe_bloggs.name = "Joe Bloggs" | ||||
| @@ -224,11 +227,11 @@ class TestDynamicDocument(MongoDBTestCase): | ||||
|         joe_bloggs.age = 20 | ||||
|         joe_bloggs.save() | ||||
|  | ||||
|         self.assertEqual(1, self.Person.objects(age=20).count()) | ||||
|         self.assertEqual(1, Employee.objects(age=20).count()) | ||||
|         assert 1 == self.Person.objects(age=20).count() | ||||
|         assert 1 == Employee.objects(age=20).count() | ||||
|  | ||||
|         joe_bloggs = self.Person.objects.first() | ||||
|         self.assertIsInstance(joe_bloggs, Employee) | ||||
|         assert isinstance(joe_bloggs, Employee) | ||||
|  | ||||
|     def test_embedded_dynamic_document(self): | ||||
|         """Test dynamic embedded documents""" | ||||
| @@ -249,26 +252,23 @@ class TestDynamicDocument(MongoDBTestCase): | ||||
|         embedded_1.list_field = ["1", 2, {"hello": "world"}] | ||||
|         doc.embedded_field = embedded_1 | ||||
|  | ||||
|         self.assertEqual( | ||||
|             doc.to_mongo(), | ||||
|             { | ||||
|                 "embedded_field": { | ||||
|                     "_cls": "Embedded", | ||||
|                     "string_field": "hello", | ||||
|                     "int_field": 1, | ||||
|                     "dict_field": {"hello": "world"}, | ||||
|                     "list_field": ["1", 2, {"hello": "world"}], | ||||
|                 } | ||||
|             }, | ||||
|         ) | ||||
|         assert doc.to_mongo() == { | ||||
|             "embedded_field": { | ||||
|                 "_cls": "Embedded", | ||||
|                 "string_field": "hello", | ||||
|                 "int_field": 1, | ||||
|                 "dict_field": {"hello": "world"}, | ||||
|                 "list_field": ["1", 2, {"hello": "world"}], | ||||
|             } | ||||
|         } | ||||
|         doc.save() | ||||
|  | ||||
|         doc = Doc.objects.first() | ||||
|         self.assertEqual(doc.embedded_field.__class__, Embedded) | ||||
|         self.assertEqual(doc.embedded_field.string_field, "hello") | ||||
|         self.assertEqual(doc.embedded_field.int_field, 1) | ||||
|         self.assertEqual(doc.embedded_field.dict_field, {"hello": "world"}) | ||||
|         self.assertEqual(doc.embedded_field.list_field, ["1", 2, {"hello": "world"}]) | ||||
|         assert doc.embedded_field.__class__ == Embedded | ||||
|         assert doc.embedded_field.string_field == "hello" | ||||
|         assert doc.embedded_field.int_field == 1 | ||||
|         assert doc.embedded_field.dict_field == {"hello": "world"} | ||||
|         assert doc.embedded_field.list_field == ["1", 2, {"hello": "world"}] | ||||
|  | ||||
|     def test_complex_embedded_documents(self): | ||||
|         """Test complex dynamic embedded documents setups""" | ||||
| @@ -296,44 +296,41 @@ class TestDynamicDocument(MongoDBTestCase): | ||||
|         embedded_1.list_field = ["1", 2, embedded_2] | ||||
|         doc.embedded_field = embedded_1 | ||||
|  | ||||
|         self.assertEqual( | ||||
|             doc.to_mongo(), | ||||
|             { | ||||
|                 "embedded_field": { | ||||
|                     "_cls": "Embedded", | ||||
|                     "string_field": "hello", | ||||
|                     "int_field": 1, | ||||
|                     "dict_field": {"hello": "world"}, | ||||
|                     "list_field": [ | ||||
|                         "1", | ||||
|                         2, | ||||
|                         { | ||||
|                             "_cls": "Embedded", | ||||
|                             "string_field": "hello", | ||||
|                             "int_field": 1, | ||||
|                             "dict_field": {"hello": "world"}, | ||||
|                             "list_field": ["1", 2, {"hello": "world"}], | ||||
|                         }, | ||||
|                     ], | ||||
|                 } | ||||
|             }, | ||||
|         ) | ||||
|         assert doc.to_mongo() == { | ||||
|             "embedded_field": { | ||||
|                 "_cls": "Embedded", | ||||
|                 "string_field": "hello", | ||||
|                 "int_field": 1, | ||||
|                 "dict_field": {"hello": "world"}, | ||||
|                 "list_field": [ | ||||
|                     "1", | ||||
|                     2, | ||||
|                     { | ||||
|                         "_cls": "Embedded", | ||||
|                         "string_field": "hello", | ||||
|                         "int_field": 1, | ||||
|                         "dict_field": {"hello": "world"}, | ||||
|                         "list_field": ["1", 2, {"hello": "world"}], | ||||
|                     }, | ||||
|                 ], | ||||
|             } | ||||
|         } | ||||
|         doc.save() | ||||
|         doc = Doc.objects.first() | ||||
|         self.assertEqual(doc.embedded_field.__class__, Embedded) | ||||
|         self.assertEqual(doc.embedded_field.string_field, "hello") | ||||
|         self.assertEqual(doc.embedded_field.int_field, 1) | ||||
|         self.assertEqual(doc.embedded_field.dict_field, {"hello": "world"}) | ||||
|         self.assertEqual(doc.embedded_field.list_field[0], "1") | ||||
|         self.assertEqual(doc.embedded_field.list_field[1], 2) | ||||
|         assert doc.embedded_field.__class__ == Embedded | ||||
|         assert doc.embedded_field.string_field == "hello" | ||||
|         assert doc.embedded_field.int_field == 1 | ||||
|         assert doc.embedded_field.dict_field == {"hello": "world"} | ||||
|         assert doc.embedded_field.list_field[0] == "1" | ||||
|         assert doc.embedded_field.list_field[1] == 2 | ||||
|  | ||||
|         embedded_field = doc.embedded_field.list_field[2] | ||||
|  | ||||
|         self.assertEqual(embedded_field.__class__, Embedded) | ||||
|         self.assertEqual(embedded_field.string_field, "hello") | ||||
|         self.assertEqual(embedded_field.int_field, 1) | ||||
|         self.assertEqual(embedded_field.dict_field, {"hello": "world"}) | ||||
|         self.assertEqual(embedded_field.list_field, ["1", 2, {"hello": "world"}]) | ||||
|         assert embedded_field.__class__ == Embedded | ||||
|         assert embedded_field.string_field == "hello" | ||||
|         assert embedded_field.int_field == 1 | ||||
|         assert embedded_field.dict_field == {"hello": "world"} | ||||
|         assert embedded_field.list_field == ["1", 2, {"hello": "world"}] | ||||
|  | ||||
|     def test_dynamic_and_embedded(self): | ||||
|         """Ensure embedded documents play nicely""" | ||||
| @@ -352,18 +349,18 @@ class TestDynamicDocument(MongoDBTestCase): | ||||
|         person.address.city = "Lundenne" | ||||
|         person.save() | ||||
|  | ||||
|         self.assertEqual(Person.objects.first().address.city, "Lundenne") | ||||
|         assert Person.objects.first().address.city == "Lundenne" | ||||
|  | ||||
|         person = Person.objects.first() | ||||
|         person.address = Address(city="Londinium") | ||||
|         person.save() | ||||
|  | ||||
|         self.assertEqual(Person.objects.first().address.city, "Londinium") | ||||
|         assert Person.objects.first().address.city == "Londinium" | ||||
|  | ||||
|         person = Person.objects.first() | ||||
|         person.age = 35 | ||||
|         person.save() | ||||
|         self.assertEqual(Person.objects.first().age, 35) | ||||
|         assert Person.objects.first().age == 35 | ||||
|  | ||||
|     def test_dynamic_embedded_works_with_only(self): | ||||
|         """Ensure custom fieldnames on a dynamic embedded document are found by qs.only()""" | ||||
| @@ -380,10 +377,10 @@ class TestDynamicDocument(MongoDBTestCase): | ||||
|             name="Eric", address=Address(city="San Francisco", street_number="1337") | ||||
|         ).save() | ||||
|  | ||||
|         self.assertEqual(Person.objects.first().address.street_number, "1337") | ||||
|         self.assertEqual( | ||||
|             Person.objects.only("address__street_number").first().address.street_number, | ||||
|             "1337", | ||||
|         assert Person.objects.first().address.street_number == "1337" | ||||
|         assert ( | ||||
|             Person.objects.only("address__street_number").first().address.street_number | ||||
|             == "1337" | ||||
|         ) | ||||
|  | ||||
|     def test_dynamic_and_embedded_dict_access(self): | ||||
| @@ -408,20 +405,20 @@ class TestDynamicDocument(MongoDBTestCase): | ||||
|         person["address"]["city"] = "Lundenne" | ||||
|         person.save() | ||||
|  | ||||
|         self.assertEqual(Person.objects.first().address.city, "Lundenne") | ||||
|         assert Person.objects.first().address.city == "Lundenne" | ||||
|  | ||||
|         self.assertEqual(Person.objects.first().phone, "555-1212") | ||||
|         assert Person.objects.first().phone == "555-1212" | ||||
|  | ||||
|         person = Person.objects.first() | ||||
|         person.address = Address(city="Londinium") | ||||
|         person.save() | ||||
|  | ||||
|         self.assertEqual(Person.objects.first().address.city, "Londinium") | ||||
|         assert Person.objects.first().address.city == "Londinium" | ||||
|  | ||||
|         person = Person.objects.first() | ||||
|         person["age"] = 35 | ||||
|         person.save() | ||||
|         self.assertEqual(Person.objects.first().age, 35) | ||||
|         assert Person.objects.first().age == 35 | ||||
|  | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|   | ||||
		Reference in New Issue
	
	Block a user