Moved tests out of package dir.

This commit is contained in:
Lance Edgar 2013-07-22 19:22:18 -07:00
parent 68650a5488
commit 134613aadd
11 changed files with 7 additions and 7 deletions

69
tests/__init__.py Normal file
View file

@ -0,0 +1,69 @@
import unittest
from mock import Mock
from pyramid import testing
class TestCase(unittest.TestCase):
"""
Base class for all test suites.
"""
def setUp(self):
self.config = testing.setUp()
# self.config = testing.setUp(settings={
# 'mako.directories': [
# 'rattail.pyramid:templates',
# 'edbob.pyramid:templates',
# ],
# })
def tearDown(self):
testing.tearDown()
def mock_query():
"""
Mock object used to simulate a ``sqlalchemy.Query`` instance.
"""
query = Mock()
query.return_value = query
query.outerjoin.return_value = query
query.join.return_value = query
query.filter.return_value = query
query.distinct.return_value = query
query.order_by.return_value = query
return query
# class DataTestCase(TestCase):
# """
# Base class for all test suites which require fixture data.
# """
# def setUp(self):
# from sqlalchemy import create_engine
# from edbob import db
# from rattail.pyramid import Session
# from edbob.db.util import install_core_schema
# from edbob.db.extensions import activate_extension
# from rattail.pyramid.tests.fixtures import load_fixtures
# engine = create_engine('postgresql://rattail:1pKglVgdHOP1MYGVdUZr@localhost/rattail.test')
# db.engines = {'default': engine}
# db.engine = engine
# db.Session.configure(bind=engine)
# Session.configure(bind=engine)
# install_core_schema(engine)
# activate_extension('rattail', engine)
# load_fixtures(engine)
# super(DataTestCase, self).setUp()
# # def tearDown(self):
# # from rattail.pyramid import Session
# # super(DataTestCase, self).tearDown()
# # Session.configure(bind=None)

28
tests/fixtures.py Normal file
View file

@ -0,0 +1,28 @@
import fixture
from rattail.db import model
class DepartmentData(fixture.DataSet):
class grocery:
number = 1
name = 'Grocery'
class supplements:
number = 2
name = 'Supplements'
def load_fixtures(engine):
dbfixture = fixture.SQLAlchemyFixture(
env={
'DepartmentData': model.Department,
},
engine=engine)
data = dbfixture.data(DepartmentData)
data.setup()

0
tests/forms/__init__.py Normal file
View file

View file

@ -0,0 +1,25 @@
from mock import Mock
from .. import TestCase
from rattail.pyramid.forms import simpleform
class FormRendererTests(TestCase):
def test_field_div(self):
form = Mock()
form.errors_for = Mock(return_value=[])
renderer = simpleform.FormRenderer(form)
renderer.field_div('test', '<p>test</p>')
def test_field_div_with_errors(self):
form = Mock()
form.errors_for = Mock(return_value=["Bogus testing error."])
renderer = simpleform.FormRenderer(form)
renderer.field_div('test', '<p>test</p>')
def test_referrer_field(self):
form = Mock()
renderer = simpleform.FormRenderer(form)
renderer.referrer_field()

11
tests/test_helpers.py Normal file
View file

@ -0,0 +1,11 @@
import datetime
from . import TestCase
from rattail.pyramid import helpers
class HelpersTests(TestCase):
def test_pretty_date(self):
helpers.pretty_date(datetime.date(2013, 6, 19))

11
tests/test_root.py Normal file
View file

@ -0,0 +1,11 @@
from . import TestCase
class RootTests(TestCase):
"""
Test root module.
"""
def test_includeme(self):
self.config.include('rattail.pyramid')

13
tests/test_subscribers.py Normal file
View file

@ -0,0 +1,13 @@
from mock import Mock
from . import TestCase
from rattail.pyramid import subscribers
class SubscribersTests(TestCase):
def test_before_render(self):
event = Mock()
event.__setitem__ = Mock()
subscribers.before_render(event)

11
tests/test_views.py Normal file
View file

@ -0,0 +1,11 @@
from . import TestCase
class ViewTests(TestCase):
"""
Test root views module.
"""
def test_includeme(self):
self.config.include('rattail.pyramid.views')

0
tests/views/__init__.py Normal file
View file

View file

@ -0,0 +1,95 @@
from mock import Mock
from pyramid import testing
from .. import TestCase, mock_query
from rattail.pyramid.views import autocomplete
class BareAutocompleteViewTests(TestCase):
def view(self, **kwargs):
request = testing.DummyRequest(**kwargs)
return autocomplete.AutocompleteView(request)
def test_attributes(self):
view = self.view()
self.assertRaises(AttributeError, getattr, view, 'mapped_class')
self.assertRaises(AttributeError, getattr, view, 'fieldname')
def test_filter_query(self):
view = self.view()
query = Mock()
filtered = view.filter_query(query)
self.assertIs(filtered, query)
def test_make_query(self):
view = self.view()
# No mapped_class defined for view.
self.assertRaises(AttributeError, view.make_query, 'test')
def test_query(self):
view = self.view()
query = Mock()
view.make_query = Mock(return_value=query)
filtered = view.query('test')
self.assertIs(filtered, query)
def test_display(self):
view = self.view()
instance = Mock()
# No fieldname defined for view.
self.assertRaises(AttributeError, view.display, instance)
def test_call(self):
# Empty or missing query term yields empty list.
view = self.view(params={})
self.assertEqual(view(), [])
view = self.view(params={'term': None})
self.assertEqual(view(), [])
view = self.view(params={'term': ''})
self.assertEqual(view(), [])
view = self.view(params={'term': '\t'})
self.assertEqual(view(), [])
# No mapped_class defined for view.
view = self.view(params={'term': 'bogus'})
self.assertRaises(AttributeError, view)
class SampleAutocompleteViewTests(TestCase):
def setUp(self):
super(SampleAutocompleteViewTests, self).setUp()
self.Session_query = autocomplete.Session.query
self.query = mock_query()
autocomplete.Session.query = self.query
def tearDown(self):
super(SampleAutocompleteViewTests, self).tearDown()
autocomplete.Session.query = self.Session_query
def view(self, **kwargs):
request = testing.DummyRequest(**kwargs)
view = autocomplete.AutocompleteView(request)
view.mapped_class = Mock()
view.fieldname = 'thing'
return view
def test_make_query(self):
view = self.view()
view.mapped_class.thing.ilike.return_value = 'whatever'
self.assertIs(view.make_query('test'), self.query)
view.mapped_class.thing.ilike.assert_called_with('%test%')
self.query.filter.assert_called_with('whatever')
self.query.order_by.assert_called_with(view.mapped_class.thing)
def test_call(self):
self.query.all.return_value = [
Mock(uuid='1', thing='first'),
Mock(uuid='2', thing='second'),
]
view = self.view(params={'term': 'bogus'})
self.assertEqual(view(), [
{'label': 'first', 'value': '1'},
{'label': 'second', 'value': '2'},
])

View file

@ -0,0 +1,93 @@
from mock import Mock
from pyramid import testing
from .. import TestCase, mock_query
from rattail.pyramid.views import departments
class DepartmentsGridTests(TestCase):
def view(self, **kwargs):
request = testing.DummyRequest(**kwargs)
return departments.DepartmentsGrid(request)
def test_filter_map(self):
view = self.view()
view.make_filter_map = Mock(return_value='gotcha')
self.assertEqual(view.filter_map(), 'gotcha')
view.make_filter_map.assert_called_with(ilike=['name'])
def test_filter_config(self):
view = self.view()
view.make_filter_config = Mock(return_value='yep')
self.assertEqual(view.filter_config(), 'yep')
view.make_filter_config.assert_called_with(
include_filter_name=True, filter_type_name='lk')
def test_sort_map(self):
view = self.view()
view.make_sort_map = Mock(return_value='really')
self.assertEqual(view.sort_map(), 'really')
view.make_sort_map.assert_called_with('number', 'name')
def test_grid_allowed(self):
view = self.view()
view.request.has_perm = Mock(return_value=True)
view.make_grid = Mock()
g = view.grid()
self.assertTrue(g.clickable)
self.assertEqual(g.click_route_name, 'department.read')
self.assertTrue(g.editable)
self.assertEqual(g.edit_route_name, 'department.update')
self.assertTrue(g.deletable)
self.assertEqual(g.delete_route_name, 'department.delete')
def test_grid_restricted(self):
view = self.view()
view.request.has_perm = Mock(return_value=False)
grid = Mock(
clickable=False, click_route_name=None,
editable=False, edit_route_name=None,
deletable=False, delete_route_name=None)
view.make_grid = Mock(return_value=grid)
g = view.grid()
self.assertFalse(g.clickable)
self.assertEqual(g.click_route_name, None)
self.assertFalse(g.editable)
self.assertEqual(g.edit_route_name, None)
self.assertFalse(g.deletable)
self.assertEqual(g.delete_route_name, None)
class DepartmentCrudTests(TestCase):
def view(self, **kwargs):
request = testing.DummyRequest(**kwargs)
return departments.DepartmentCrud(request)
def test_fieldset(self):
view = self.view()
fieldset = Mock()
view.make_fieldset = Mock(return_value=fieldset)
fs = view.fieldset(Mock())
self.assertIs(fs, fieldset)
class DepartmentsByVendorGridTests(TestCase):
def view(self, **kwargs):
request = testing.DummyRequest(**kwargs)
return departments.DepartmentsByVendorGrid(request)
def test_query(self):
query = mock_query()
view = self.view(params={'uuid': '1'})
view.make_query = Mock(return_value=query)
self.assertIs(view.query(), query)
def test_grid(self):
view = self.view()
grid = Mock()
view.make_grid = Mock(return_value=grid)
self.assertIs(view.grid(), grid)