def setUp(self):
     columns = []
     for column_number, tag in enumerate(TestRow.TAGS):
         columns.append(Column.parse(tag))
     self.row = Row(columns=columns,
                    values=self.CONTENT,
                    row_number=self.ROW_NUMBER)
    def assertRowErrors(self,
                        row_values,
                        errors_expected,
                        schema_values=None,
                        columns=None):
        """Set up a HXL row and count the errors in it"""
        errors = []

        def callback(error):
            errors.append(error)

        if schema_values is None:
            schema = hxl.schema(hxl.data(self.DEFAULT_SCHEMA),
                                callback=callback)
        else:
            schema = hxl.schema(hxl.data(schema_values), callback=callback)

        if columns is None:
            columns = self.DEFAULT_COLUMNS

        row = Row(values=row_values,
                  columns=[Column.parse(tag) for tag in columns])

        schema.start()

        if errors_expected == 0:
            self.assertTrue(schema.validate_row(row))
        else:
            self.assertFalse(schema.validate_row(row))
        self.assertEqual(len(errors), errors_expected)
Exemple #3
0
 def setUp(self):
     self.errors = []
     self.schema = Schema(rules=[
         SchemaRule('#sector', min_occur=1),
         SchemaRule('#affected', data_type='number')
     ],
                          callback=lambda error: self.errors.append(error))
     self.row = Row(columns=[
         Column(tag='#affected'),
         Column(tag='#sector'),
         Column(tag='#sector')
     ])
Exemple #4
0
    def test_row_restrictions(self):
        row = Row(columns=[
            Column(tag='#x_test'),
            Column(tag='#subsector'),
            Column(tag='#x_test')
        ],
                  values=['WASH', '', ''])

        self.rule.min_occur = 1
        self._try_rule(row)

        self.rule.min_occur = 2
        self._try_rule(row, 1)

        self.rule.min_occur = None

        self.rule.max_occur = 1
        self._try_rule(row)

        self.rule.max_occur = 0
        self._try_rule(row, 1)
 def test_get_skip_blanks(self):
     columns = [Column.parse(tag) for tag in ['#sector', '#org', '#org']]
     row = Row(columns=columns, values=['Health', '', 'WFP'])
     # Test that row.get() returns first non-blank value
     self.assertEqual('WFP', row.get('org'))
class TestRow(unittest.TestCase):

    ROW_NUMBER = 5
    TAGS = ['#sector+list', '#org', '#country']
    CONTENT = ['Health, Education', 'WFP', 'Liberia']

    def setUp(self):
        columns = []
        for column_number, tag in enumerate(TestRow.TAGS):
            columns.append(Column.parse(tag))
        self.row = Row(columns=columns,
                       values=self.CONTENT,
                       row_number=self.ROW_NUMBER)

    def test_row_number(self):
        self.assertEqual(TestRow.ROW_NUMBER, self.row.row_number)

    def test_data(self):
        self.assertEqual(TestRow.CONTENT, self.row.values)

    def test_iteration(self):
        expectedLength = len(TestRow.TAGS)
        actualLength = 0
        for value in self.row:
            actualLength = actualLength + 1
        self.assertEqual(expectedLength, actualLength)

    def test_append(self):
        column_number = len(TestRow.TAGS)
        oldLength = len(self.row.values)
        self.row.append('Lofa County')
        self.assertEqual(oldLength + 1, len(self.row.values))

    def test_get(self):
        self.assertEqual('WFP', self.row.get('#org'))

    def test_list(self):
        self.assertEqual('Health, Education', self.row.get('#sector'))
        self.assertEqual(['Health', 'Education'],
                         self.row.get('#sector', parsed=True))
        self.assertEqual(['WFP'], self.row.get('#org', parsed=True))

    def test_get_skip_blanks(self):
        columns = [Column.parse(tag) for tag in ['#sector', '#org', '#org']]
        row = Row(columns=columns, values=['Health', '', 'WFP'])
        # Test that row.get() returns first non-blank value
        self.assertEqual('WFP', row.get('org'))

    def test_get_all(self):
        result = self.row.get_all('#org')
        self.assertTrue(type(result) is list)
        self.assertEqual(1, len(result))

    def test_dictionary(self):
        self.assertEqual(
            {
                '#country': 'Liberia',
                '#org': 'WFP',
                '#sector+list': 'Health, Education'
            }, self.row.dictionary)

    def test_outofrange(self):
        # what happens when a row is too short?
        self.row.values = self.CONTENT[0:1]
        self.assertEqual(None, self.row.get('#country'))
        self.assertEqual([], self.row.get_all('#country'))

    def test_parse_simple(self):
        column = Column.parse('#tag')
        self.assertEqual('#tag', column.tag)

    def test_parse_attributes(self):
        # Single attribute
        specs = ['#tag+foo', '#tag +foo', ' #tag +foo   ']
        for column in [Column.parse(spec) for spec in specs]:
            column = Column.parse('#tag+foo')
            self.assertEqual('#tag', column.tag)
            self.assertEqual(['foo'], sorted(column.attributes))

        # Multiple attributes
        specs = ['#tag+foo+bar', '#tag +foo +bar', ' #tag +bar+foo   ']
        for column in [Column.parse(spec) for spec in specs]:
            self.assertEqual('#tag', column.tag)
            self.assertEqual(['bar', 'foo'], sorted(column.attributes))
 def test_get_skip_blanks(self):
     columns = [Column.parse(tag) for tag in ['#sector', '#org', '#org']]
     row = Row(columns=columns, values=['Health', '', 'WFP'])
     # Test that row.get() returns first non-blank value
     self.assertEqual('WFP', row.get('org'))
 def setUp(self):
     columns = []
     for column_number, tag in enumerate(TestRow.TAGS):
         columns.append(Column.parse(tag))
     self.row = Row(columns=columns, values=self.CONTENT, row_number=self.ROW_NUMBER)
class TestRow(unittest.TestCase):

    ROW_NUMBER = 5
    TAGS = ['#sector+list', '#org', '#country']
    CONTENT = ['Health, Education', 'WFP', 'Liberia'];

    def setUp(self):
        columns = []
        for column_number, tag in enumerate(TestRow.TAGS):
            columns.append(Column.parse(tag))
        self.row = Row(columns=columns, values=self.CONTENT, row_number=self.ROW_NUMBER)

    def test_row_number(self):
        self.assertEqual(TestRow.ROW_NUMBER, self.row.row_number)

    def test_data(self):
        self.assertEqual(TestRow.CONTENT, self.row.values)

    def test_iteration(self):
        expectedLength = len(TestRow.TAGS)
        actualLength = 0;
        for value in self.row:
            actualLength = actualLength + 1
        self.assertEqual(expectedLength, actualLength)

    def test_append(self):
        column_number = len(TestRow.TAGS)
        oldLength = len(self.row.values)
        self.row.append('Lofa County')
        self.assertEqual(oldLength + 1, len(self.row.values))

    def test_get(self):
        self.assertEqual('WFP', self.row.get('#org'))

    def test_list(self):
        self.assertEqual('Health, Education', self.row.get('#sector'))
        self.assertEqual(['Health', 'Education'], self.row.get('#sector', parsed=True))
        self.assertEqual(['WFP'], self.row.get('#org', parsed=True))

    def test_get_skip_blanks(self):
        columns = [Column.parse(tag) for tag in ['#sector', '#org', '#org']]
        row = Row(columns=columns, values=['Health', '', 'WFP'])
        # Test that row.get() returns first non-blank value
        self.assertEqual('WFP', row.get('org'))

    def test_get_all(self):
        result = self.row.get_all('#org')
        self.assertTrue(type(result) is list)
        self.assertEqual(1, len(result))

    def test_dictionary(self):
        self.assertEqual({
            '#country': 'Liberia',
            '#org': 'WFP',
            '#sector+list': 'Health, Education'
        }, self.row.dictionary)

    def test_outofrange(self):
        # what happens when a row is too short?
        self.row.values = self.CONTENT[0:1]
        self.assertEqual(None, self.row.get('#country'))
        self.assertEqual([], self.row.get_all('#country'))

    def test_parse_simple(self):
        column = Column.parse('#tag')
        self.assertEqual('#tag', column.tag)

    def test_parse_attributes(self):
        # Single attribute
        specs = ['#tag+foo', '#tag +foo', ' #tag +foo   ']
        for column in [Column.parse(spec) for spec in specs]:
            column = Column.parse('#tag+foo')
            self.assertEqual('#tag', column.tag)
            self.assertEqual(['foo'], sorted(column.attributes))

        # Multiple attributes
        specs = ['#tag+foo+bar', '#tag +foo +bar', ' #tag +bar+foo   ']
        for column in [Column.parse(spec) for spec in specs]:
            self.assertEqual('#tag', column.tag)
            self.assertEqual(['bar', 'foo'], sorted(column.attributes))