def test_repr(self): person = Person("Curie", "Marie", "Skłodowska") timestamp = "2019-11-14T14:31:39.629853" person._id = ObjectId("5dcd7273b35ba17779361c4e") person.created_time = datetime.fromisoformat(timestamp) value = f"_id='5dcd7273b35ba17779361c4e'," \ "given='Marie',middle='Skłodowska'," \ f"last_name='Curie',created_time='{timestamp}'" self.assertEqual(value, repr(person))
def find(self, given: Optional[str] = None, middle: Optional[str] = None, family: Optional[str] = None) -> Iterable: """ Initialize a Person """ if not (given or middle or family): raise ValueError("all arguments are empty or None") query = {} if given is not None: query["given"] = given if middle is not None: query["middle"] = middle if family is not None: query["family"] = family for p in self.collection.find(query): person = Person(p["family"], p["given"], p["middle"]) person._id = p["_id"] person.created_time = p["created_time"] yield person
def insert(self, person: Person): person._id = self.collection.insert_one(vars(person)).inserted_id