tailbone/tests/views/wutta/test_people.py
Lance Edgar 7f0c571a44 fix: improve wutta People view a bit
try to behave more like traditional tailbone, for the few things
supported so far.  taking a conservative approach here for now since
probably other things are more pressing.
2024-08-15 21:12:34 -05:00

88 lines
3 KiB
Python

# -*- coding: utf-8; -*-
from unittest.mock import patch
from sqlalchemy import orm
from tailbone.views.wutta import people as mod
from tests.util import WebTestCase
class TestPersonView(WebTestCase):
def make_view(self):
return mod.PersonView(self.request)
def test_includeme(self):
self.pyramid_config.include('tailbone.views.wutta.people')
def test_get_query(self):
view = self.make_view()
# sanity / coverage check
query = view.get_query(session=self.session)
self.assertIsInstance(query, orm.Query)
def test_configure_grid(self):
model = self.app.model
barney = model.User(username='barney')
self.session.add(barney)
self.session.commit()
view = self.make_view()
# sanity / coverage check
grid = view.make_grid(model_class=model.Person)
self.assertNotIn('first_name', grid.linked_columns)
view.configure_grid(grid)
self.assertIn('first_name', grid.linked_columns)
def test_configure_form(self):
model = self.app.model
barney = model.User(username='barney')
self.session.add(barney)
self.session.commit()
view = self.make_view()
# email field remains when viewing
with patch.object(view, 'viewing', new=True):
form = view.make_form(model_instance=barney,
fields=view.get_form_fields())
self.assertIn('email', form.fields)
view.configure_form(form)
self.assertIn('email', form)
# email field removed when editing
with patch.object(view, 'editing', new=True):
form = view.make_form(model_instance=barney,
fields=view.get_form_fields())
self.assertIn('email', form.fields)
view.configure_form(form)
self.assertNotIn('email', form)
def test_render_merge_requested(self):
model = self.app.model
barney = model.Person(display_name="Barney Rubble")
self.session.add(barney)
user = model.User(username='user')
self.session.add(user)
self.session.commit()
view = self.make_view()
# null by default
html = view.render_merge_requested(barney, 'merge_requested', None,
session=self.session)
self.assertIsNone(html)
# unless a merge request exists
barney2 = model.Person(display_name="Barney Rubble")
self.session.add(barney2)
self.session.commit()
mr = model.MergePeopleRequest(removing_uuid=barney2.uuid,
keeping_uuid=barney.uuid,
requested_by=user)
self.session.add(mr)
self.session.commit()
html = view.render_merge_requested(barney, 'merge_requested', None,
session=self.session)
self.assertIn('<span ', html)