Exemplo n.º 1
0
 def table_validation(self):
     """Return a list of issues with the table or None if everything is okay."""
     try:
         return get_validation_list(self)
     except Exception:
         current_app.logger.exception('Error performing table validation')
         raise
Exemplo n.º 2
0
def test_multiple_invalid_errors(pathological_table):
    validation_list = validation_schema.dump(
        get_validation_list(pathological_table), many=True)
    assert validation_list == [{
        'context': 'column',
        'column_index': 0,
        'type': 'invalid-primary-key',
        'data': "Contains NaN's",
        'title': 'Invalid identifier',
        'severity': 'error'
    }, {
        'context': 'row',
        'row_index': 0,
        'type': 'invalid-header',
        'data': "Contains NaN's",
        'title': 'Invalid header',
        'severity': 'error'
    }, {
        'context': 'column',
        'column_index': 1,
        'type': 'invalid-group',
        'data': 'Contains empty values',
        'title': 'Invalid group',
        'severity': 'error'
    }]
Exemplo n.º 3
0
def test_multiple_missing_errors(pathological_table):
    pathological_table.rows[0].row_type = TABLE_ROW_TYPES.MASK

    pathological_table.columns[0].column_type = TABLE_COLUMN_TYPES.MASK
    pathological_table.columns[1].column_type = TABLE_COLUMN_TYPES.MASK

    db.session.add_all(pathological_table.rows)
    db.session.add_all(pathological_table.columns)
    db.session.add(pathological_table)
    db.session.commit()

    validation_list = validation_schema.dump(
        get_validation_list(pathological_table), many=True)

    assert validation_list == [{
        'severity': 'error',
        'type': 'primary-key-missing',
        'title': 'No identifer column',
        'context': 'table'
    }, {
        'severity': 'error',
        'type': 'header-missing',
        'title': 'No header row',
        'context': 'table'
    }, {
        'severity': 'error',
        'type': 'group-missing',
        'title': 'No group column',
        'context': 'table'
    }]
Exemplo n.º 4
0
def test_no_group(csv_file):
    group_column = csv_file.columns[1]
    group_column.column_type = TABLE_COLUMN_TYPES.MASK
    db.session.add(group_column)
    db.session.commit()

    validation_list = validation_schema.dump(get_validation_list(csv_file),
                                             many=True)
    assert validation_list == [{
        'context': 'table',
        'severity': 'error',
        'title': 'No group column',
        'type': 'group-missing'
    }]
Exemplo n.º 5
0
def test_no_header(csv_file):
    header_row = csv_file.rows[0]
    header_row.row_type = TABLE_ROW_TYPES.MASK
    db.session.add(header_row)
    db.session.commit()

    validation_list = validation_schema.dump(get_validation_list(csv_file),
                                             many=True)
    assert validation_list == [{
        'context': 'table',
        'severity': 'error',
        'title': 'No header row',
        'type': 'header-missing'
    }]
Exemplo n.º 6
0
def test_no_index(csv_file):
    index_column = csv_file.columns[0]
    index_column.column_type = TABLE_COLUMN_TYPES.MASK
    db.session.add(index_column)
    db.session.commit()

    validation_list = validation_schema.dump(get_validation_list(csv_file),
                                             many=True)
    assert validation_list == [{
        'context': 'table',
        'severity': 'error',
        'title': 'No identifer column',
        'type': 'primary-key-missing'
    }]
Exemplo n.º 7
0
def test_invalid_group(valid_table):
    column = valid_table.columns[0]
    column.column_type = TABLE_COLUMN_TYPES.GROUP
    db.session.add(column)
    db.session.commit()

    validation_list = validation_schema.dump(get_validation_list(valid_table),
                                             many=True)
    assert validation_list == [{
        'context': 'column',
        'severity': 'error',
        'title': 'Invalid group',
        'type': 'invalid-group',
        'column_index': 0,
        'data': 'Contains empty values'
    }]
Exemplo n.º 8
0
def test_invalid_index(valid_table):
    column = valid_table.columns[0]
    column.column_type = TABLE_COLUMN_TYPES.INDEX
    db.session.add(column)
    db.session.commit()

    validation_list = validation_schema.dump(get_validation_list(valid_table),
                                             many=True)
    assert validation_list == [{
        'context': 'column',
        'severity': 'error',
        'title': 'Invalid identifier',
        'type': 'invalid-primary-key',
        'column_index': 0,
        'data': "Contains NaN's"
    }]