# -*- coding: utf-8; -*- from unittest.mock import patch from sqlalchemy import orm from pyramid.httpexceptions import HTTPNotFound from wuttaweb.views import people from tests.util import WebTestCase class TestPersonView(WebTestCase): def make_view(self): return people.PersonView(self.request) def test_includeme(self): self.pyramid_config.include('wuttaweb.views.people') def test_get_query(self): view = self.make_view() query = view.get_query(session=self.session) self.assertIsInstance(query, orm.Query) def test_configure_grid(self): model = self.app.model view = self.make_view() grid = view.make_grid(model_class=model.Setting) self.assertEqual(grid.linked_columns, []) view.configure_grid(grid) self.assertIn('full_name', grid.linked_columns) def test_configure_form(self): model = self.app.model view = self.make_view() form = view.make_form(model_class=model.Person) # required fields with patch.object(view, 'creating', new=True): form.set_fields(form.get_model_fields()) self.assertEqual(form.required_fields, {}) view.configure_form(form) self.assertTrue(form.required_fields) self.assertFalse(form.required_fields['middle_name']) person = model.Person(full_name="Barney Rubble") user = model.User(username='barney', person=person) self.session.add(user) self.session.commit() # users field with patch.object(view, 'viewing', new=True): form = view.make_form(model_instance=person) self.assertEqual(form.defaults, {}) view.configure_form(form) self.assertIn('_users', form.defaults) def test_autocomplete_query(self): model = self.app.model person1 = model.Person(full_name="George Jones") self.session.add(person1) person2 = model.Person(full_name="George Strait") self.session.add(person2) self.session.commit() view = self.make_view() with patch.object(view, 'Session', return_value=self.session): # both people match query = view.autocomplete_query('george') self.assertEqual(query.count(), 2) # just 1 match query = view.autocomplete_query('jones') self.assertEqual(query.count(), 1) # no matches query = view.autocomplete_query('sally') self.assertEqual(query.count(), 0) def test_view_profile(self): self.pyramid_config.include('wuttaweb.views.common') self.pyramid_config.include('wuttaweb.views.auth') self.pyramid_config.add_route('people', '/people/') model = self.app.model person = model.Person(full_name="Barney Rubble") self.session.add(person) self.session.commit() # sanity check view = self.make_view() self.request.matchdict = {'uuid': person.uuid} response = view.view_profile(session=self.session) self.assertEqual(response.status_code, 200) def test_make_user(self): self.pyramid_config.include('wuttaweb.views.common') model = self.app.model person = model.Person(full_name="Barney Rubble") self.session.add(person) self.session.commit() # sanity check view = self.make_view() self.request.matchdict = {'uuid': person.uuid} response = view.make_user() # nb. this always redirects for now self.assertEqual(response.status_code, 302)