Merge pull request #58 from jqb/develop

Support for Dataset subclassing
This commit is contained in:
Kenneth Reitz 2012-04-20 06:17:05 -07:00
commit e8c923d712
3 changed files with 29 additions and 2 deletions

View File

@ -18,4 +18,5 @@ Patches and Suggestions
- Mark Rogers
- Mark Walling
- Mike Waldner
- Joel Friedly
- Joel Friedly
- Jakub Janoszek

View File

@ -955,7 +955,7 @@ class Databook(object):
def add_sheet(self, dataset):
"""Adds given :class:`Dataset` to the :class:`Databook`."""
if type(dataset) is Dataset:
if isinstance(dataset, Dataset):
self._datasets.append(dataset)
else:
raise InvalidDatasetType

View File

@ -669,5 +669,31 @@ Old |Man |100500
)
def test_databook_add_sheet_accepts_only_dataset_instances(self):
class NotDataset(object):
def append(self, item):
pass
dataset = NotDataset()
dataset.append(self.john)
self.assertRaises(tablib.InvalidDatasetType, book.add_sheet, dataset)
def test_databook_add_sheet_accepts_dataset_subclasses(self):
class DatasetSubclass(tablib.Dataset):
pass
# just checking if subclass of tablib.Dataset can be added to Databook
dataset = DatasetSubclass()
dataset.append(self.john)
dataset.append(self.tom)
try:
book.add_sheet(dataset)
except tablib.InvalidDatasetType:
self.fail("Subclass of tablib.Dataset should be accepted by Databook.add_sheet")
if __name__ == '__main__':
unittest.main()