3
0
Fork 0

fix: add make_person() method for people, auth handlers

This commit is contained in:
Lance Edgar 2025-01-27 15:48:28 -06:00
parent 06524dc4ed
commit 57ff7ec1d3
4 changed files with 75 additions and 1 deletions

View file

@ -225,6 +225,17 @@ class AuthHandler(GenericHandler):
if person:
return person.user
def make_person(self, **kwargs):
"""
Make and return a new
:class:`~wuttjamaican.db.model.base.Person`.
This is a convenience wrapper around
:class:`~wuttjamaican.people.PeopleHandler.make_person()`.
"""
people = self.app.get_people_handler()
return people.make_person(**kwargs)
def make_user(self, session=None, **kwargs):
"""
Make and return a new

View file

@ -39,6 +39,30 @@ class PeopleHandler(GenericHandler):
things.
"""
def make_person(self, **kwargs):
"""
Make and return a new Person.
This mostly a convenience wrapper; it will auto-populate the
:attr:`~wuttjamaican.db.model.base.Person.full_name` if not
specified.
:param \**kwargs: All kwargs are passed as-is to the model
class constructor.
:rtype: :class:`~wuttjamaican.db.model.base.Person`
"""
model = self.app.model
if 'full_name' not in kwargs:
full_name = self.app.make_full_name(kwargs.get('first_name'),
kwargs.get('middle_name'),
kwargs.get('last_name'))
if full_name:
kwargs['full_name'] = full_name
return model.Person(**kwargs)
def get_person(self, obj, **kwargs):
"""
Return the :class:`~wuttjamaican.db.model.base.Person`

View file

@ -17,7 +17,7 @@ else:
def setUp(self):
self.config = WuttaConfig()
self.app = self.config.get_app()
self.handler = mod.AuthHandler(self.config)
self.handler = self.make_handler()
self.engine = sa.create_engine('sqlite://')
self.app.model.Base.metadata.create_all(bind=self.engine)
@ -30,6 +30,9 @@ else:
def make_session(self):
return self.app.make_session(bind=self.engine)
def make_handler(self):
return mod.AuthHandler(self.config)
def test_authenticate_user(self):
model = self.app.model
barney = model.User(username='barney')
@ -133,6 +136,24 @@ else:
user = self.handler.get_user(myperson)
self.assertIs(user, myuser)
def test_make_person(self):
model = self.app.model
handler = self.handler
person = handler.make_person()
self.assertIsInstance(person, model.Person)
self.assertIsNone(person.first_name)
self.assertIsNone(person.last_name)
self.assertIsNone(person.full_name)
self.assertNotIn(person, self.session)
person = handler.make_person(first_name='Barney', last_name='Rubble')
self.assertIsInstance(person, model.Person)
self.assertEqual(person.first_name, 'Barney')
self.assertEqual(person.last_name, 'Rubble')
self.assertEqual(person.full_name, 'Barney Rubble')
self.assertNotIn(person, self.session)
def test_make_user(self):
model = self.app.model

View file

@ -36,3 +36,21 @@ else:
self.session.commit()
person = handler.get_person(myuser)
self.assertIs(person, myperson)
def test_make_person(self):
model = self.app.model
handler = self.make_handler()
person = handler.make_person()
self.assertIsInstance(person, model.Person)
self.assertIsNone(person.first_name)
self.assertIsNone(person.last_name)
self.assertIsNone(person.full_name)
self.assertNotIn(person, self.session)
person = handler.make_person(first_name='Barney', last_name='Rubble')
self.assertIsInstance(person, model.Person)
self.assertEqual(person.first_name, 'Barney')
self.assertEqual(person.last_name, 'Rubble')
self.assertEqual(person.full_name, 'Barney Rubble')
self.assertNotIn(person, self.session)