# -*- coding: utf-8; -*- from tests.views.utils import WebTestCase from pyramid.httpexceptions import HTTPNotFound from wuttaweb.views import settings class TestAppInfoView(WebTestCase): def make_view(self): return settings.AppInfoView(self.request) def test_index(self): # sanity/coverage check view = self.make_view() response = view.index() def test_configure_get_simple_settings(self): # sanity/coverage check view = self.make_view() simple = view.configure_get_simple_settings() def test_configure_get_context(self): # sanity/coverage check view = self.make_view() context = view.configure_get_context() class TestSettingView(WebTestCase): def make_view(self): return settings.SettingView(self.request) def test_index_get_grid_data(self): # empty data by default view = self.make_view() data = view.index_get_grid_data(session=self.session) self.assertEqual(len(data), 0) # unless we save some settings self.app.save_setting(self.session, 'foo', 'bar') self.session.commit() data = view.index_get_grid_data(session=self.session) self.assertEqual(len(data), 1) def test_get_instance(self): view = self.make_view() self.request.matchdict = {'name': 'foo'} # setting not found setting = view.get_instance(session=self.session) self.assertIsInstance(setting, HTTPNotFound) # setting is returned self.app.save_setting(self.session, 'foo', 'bar') self.session.commit() setting = view.get_instance(session=self.session) self.assertEqual(setting, {'name': 'foo', 'value': 'bar'}) def test_get_instance_title(self): setting = {'name': 'foo', 'value': 'bar'} view = self.make_view() title = view.get_instance_title(setting) self.assertEqual(title, 'foo') def test_make_model_form(self): view = self.make_view() view.editing = True form = view.make_model_form() self.assertEqual(form.fields, ['name', 'value']) self.assertIn('name', form) self.assertIn('value', form) dform = form.get_deform() self.assertNotIn('name', dform) self.assertIn('value', dform) def test_persist(self): model = self.app.model view = self.make_view() # setup self.app.save_setting(self.session, 'foo', 'bar') self.session.commit() self.assertEqual(self.session.query(model.Setting).count(), 1) # setting is updated self.request.matchdict = {'name': 'foo'} view.persist({'name': 'foo', 'value': 'frazzle'}, session=self.session) self.session.commit() self.assertEqual(self.session.query(model.Setting).count(), 1) self.assertEqual(self.app.get_setting(self.session, 'foo'), 'frazzle')