import unittest from ...views.upload import builders from ...views.upload.data import TextData from ...views.upload.label import CategoryLabel class TestColumnBuilder(unittest.TestCase): def assert_record(self, actual, expected): self.assertEqual(actual.data['text'], expected['data']) self.assertEqual(actual.label, expected['label']) def test_can_load_default_column_names(self): row = {'text': 'Text', 'label': 'Label'} data_column = builders.DataColumn('text', TextData) label_columns = [builders.LabelColumn('label', CategoryLabel)] builder = builders.ColumnBuilder( data_column=data_column, label_columns=label_columns ) actual = builder.build(row, filename='', line_num=1) expected = {'data': 'Text', 'label': [{'text': 'Label'}]} self.assert_record(actual, expected) def test_can_load_only_text_column(self): row = {'text': 'Text', 'label': None} data_column = builders.DataColumn('text', TextData) label_columns = [builders.LabelColumn('label', CategoryLabel)] builder = builders.ColumnBuilder( data_column=data_column, label_columns=label_columns ) actual = builder.build(row, filename='', line_num=1) expected = {'data': 'Text', 'label': []} self.assert_record(actual, expected)